我是这样理解驱动程序的,驱动程序是连接操作系统和网卡硬件设备的中间枢纽,本来网卡和操作系统互不认识,但经过操作系统这个中间人,这两者之间能很好的交流了。
至于怎么理解这个不认识? 是不是我的网卡的一些参数,操作系统不知道,比如我的网卡哪个地址是控制字,哪个地址是状态字,哪个地址是存放的是需要发送的数据之类,哪些地址是要存放的是需要接受的数据之类的,而操作系统也提供了一些接口,分配一些内存空间,这些内存空间就是所谓的接口,如果应用程序要向网卡发数据,就把这些数据写到这个内存空间里,然后驱动程序将这些内存里的数据拿来,再将其送到网卡的那个数据接口地址里,(这个时候需要同时将控制字中的“写”控制字变为1,)接受网卡数据的时候,就将网卡那个接受数据地址里面的数据接受到接受内存里,以供应用程序使用?(这个时候需要同时将控制字中的“读”字变为1)。
那是不是操作系统该很多很多的板卡都预留了接口,作为操作系统,我只要负责把数据放到某一个内存空间就可以了,至于其它的事情就是驱动程序的事情了,而把这些写到内存空间里面的数据是操作系统完成的,还是应用程序完成的呢?
你可以这样理解:
你就是操作系统,你买的电视机就是设备。说明书就是驱动啦。
谢谢,但你说的理解只是初级理解,我想了解的是内核问题,关于如何控制的,驱动程序如何起到中间枢纽的作用的?
驱动程序只是负责通过中断与硬件联系,实现了一些抽象了的功能。
比如光驱的驱动,你在窗口里点了弹出光盘的命令, shell通知操作系统,执行光驱驱动的弹出舱门动作函数,
这个函数应该是在操作系统启动时加载了光驱驱动后得知的。
该函数记载着向哪个硬件中断地址发送什么二进制控制信息,发送后,会通过南桥ide控制芯片发到光驱,
光驱上内置的bios会解析这些信号,然后执行相应的内部微操作。