我想问一下,一个硬件设备被计算机系统控制如果必须要安装驱动程序的话,那么驱动程序是如何控制硬件的?
驱动程序相比应用程序没有什么特别的,特别只是特别在它们可以拥有一些特权指令,访问操作系统的关键区域以及特殊的地址。
硬件大致分为几类,一类是像显卡之类的硬件,本质上它们相当于一个异构的处理器,它拥有专门的独立的指令,你的驱动程序相当于上传这些代码给它,然后它自己处理。
一类是类似硬盘、网卡之类的,高速IO,这些一般使用DMA,操作起来如同读写内存,操作系统会映射地址给这些设备,你去读写,好像是写内存,其实这些地址在你和设备之间共享。
还有一类类似USB、蓝牙、打印机、COM等等,这些外设相当于外设通讯,通过端口收发数据。
严格来说,几乎所有的硬件都包含自己的cpu,当然有自己的指令,但是依照和主机连接方式的不同,并不一定需要主机传送什么指令。好比x86的计算机和arm的手机通讯,计算机并不需要了解手机的cpu用什么指令。
驱动程序不是什么翻译,它就是一个程序。
和你写的hello world本质上没有区别,只是这个程序运行在特权等级下。