驱动程序是如何驱动硬件的?

        设备驱动程序用来将硬件本身的功能告诉操作系统,完成硬件设备电子信号与操作系统及软件的高级编程语言之间的互相翻译。当操作系统需要使用某个硬件时,比如:让声卡播放音乐,它会先发送相应指令到声卡驱动程序,声卡驱动程序接收到后,马上将其翻译成声卡才能听懂的电子信号命令,从而让声卡播放音乐。  所以简单的说,驱动程序提供了硬件到操作系统的一个接口以及协调二者之间的关系,而因为驱动程序有如此重要的作用,所以人们都称“驱动程序是硬件的灵魂”、“硬件的主宰”,同时驱动程序也被形象的称为“硬件和系统之间的桥梁”。  驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有驱动程序,计算机中的硬件就无法工作。操作系统不同,硬件的驱动程序也不同,各个硬件厂商为了保证硬件的兼容性及增强硬件的功能会不断地升级驱动程序。如:Nvidia 显卡芯片公司平均每个月会升级显卡驱动程序2-3次。驱动程序是硬件的一部分,当你安装新硬件时,驱动程序是一项不可或缺的重要元件。凡是安装一个原本不属于你电脑中的硬件设备时,系统就会要求你安装驱动程序,将新的硬件与电脑系统连接起来。驱动程序扮演沟通的角色,把硬件的功能告诉电脑系统,并且也将系统的指令传达给硬件,让它开始工作。

        

        驱动程序相比应用程序没有什么特别的,特别只是特别在它们可以拥有一些特权指令,访问操作系统的关键区域以及特殊的地址。硬件大致分为几类,一类是像显卡之类的硬件,本质上它们相当于一个异构的处理器,它拥有专门的独立的指令,你的驱动程序相当于上传这些代码给它,然后它自己处理。
一类是类似硬盘、网卡之类的,高速IO,这些一般使用DMA,操作起来如同读写内存,操作系统会映射地址给这些设备,你去读写,好像是写内存,其实这些地址在你和设备之间共享。
还有一类类似USB、蓝牙、打印机、COM等等,这些外设相当于外设通讯,通过端口收发数据

        严格来说,几乎所有的硬件都包含自己的cpu,当然有自己的指令,但是依照和主机连接方式的不同,并不一定需要主机传送什么指令。好比x86的计算机和arm的手机通讯,计算机并不需要了解手机的cpu用什么指令。
驱动程序不是什么翻译,它就是一个程序。
和你写的hello world本质上没有区别,只是这个程序运行在特权等级下。

 

 

你可能感兴趣的:(视觉,硬件)