对驱动的理解:
任何计算机系统的运行都是系统中软硬件相辅相成的结果,应用软件工程师需要看到是一个没有硬件的纯粹的软件世界,硬件必须被透明的呈现给他,这个关键的任务就有驱动设备来完成,
设备驱动是一种在应用程序和硬件设备之间通信的特殊程序,相当于硬件的接口,应用程序通过它识别硬件,通过向该接口发送、传达命令,对硬件进行操作。设备驱动对应用程序而言,透明化了硬件设备,存在于应用程序和实际设备之间的软件层,是硬件设备和应用软件之间的沟通纽带,应用软件只需要调用系统软件的应用编程接口,而不用详细的了解硬件设备的性能,参数等就可以让硬件去完成要求的工作。
并非任何一个计算机都需要运行操作系统,例如功能比较简单的计算机系统,用单任务构架完全可以很好的支持工作,并不需要多任务调度,文件系统,内存管理等复杂功能。这样的系统虽然不存在操作系统,但是设备驱动必须存在,在编写驱动的时候,需要直接操作寄存器,控制中断等。在没有操作系统的情况下,设备驱动的接口直接提交给应用软件工程师,应用软件没有跨越任何层次就可以直接访问设备驱动的接口,驱动包含的接口函数也与硬件的功能直接吻合。一般地说在无操作系统的时,整个计算机系统中的硬件资源、设备驱动和应用软件的关系如图所示:
无操作系统时,硬件,驱动,和应用软件的关系
在存在操作系统时,1,无操作系统时的设备驱动的硬件操作仍然是必不可少的,也就是说在无操作系统时驱动所做的工作,在有操作系统时也是要做的。
2,还需要将设备驱动融入操作系统内核,应用程序是通过调用操作系统的API来实现对硬件的操作。所以设备驱动需要融入到内核中,为了实现这种融合,必须在所有的设备驱动中设计面向操作系统内核的接口。
当系统中存在操作系统时,设备驱动编程了链接硬件和内核的桥梁,操作系统的存在使得单一的“驱动硬件设备工作”变为操作系统与硬件交互的模块,它对外呈现为操作系统API,不在给应用软件工程师直接提供接口。
硬件,驱动,操作系统和应用程序的关系