驅動程序
英文名為“Device Driver”,全稱為“設備驅動程序”,它是一種特殊的程序。首先其作用是将硬件本身的功能告訴操作系統,接下來的主要功能就是完成硬件設備電子信号與操作系統及軟件的高級編程語言之間的互相翻譯。當操作系統需要使用某個硬件時,比如:讓聲卡播放音樂,它會先發送相應指令到聲卡驅動程序,聲卡驅動程序接收到後,馬上将其翻譯成聲卡才能聽懂的電子信号命令,從而讓聲卡播放音樂。
所以簡單的說驅動程序提供了硬件到操作系統的一個接口以及協調二者之間的關系,而因為驅動程序有如此重要的作用,所以人們都稱“驅動程序是硬件的靈魂”、“硬件的主宰”,同時驅動程序也被形象的稱為“硬件和系統之間的橋梁”。
硬件和軟件計算機資源分為硬件資源和軟件資源,硬件資源包括cpu,内存,顯卡,網卡,聲卡,硬盤等等。軟件資源包括各種程序。每個硬件完成特定的功能,比如顯卡完成在顯示設備上顯示圖形,聲卡實現聲音的處理。再比如,你用qq發送一段文字給一個同學,那麼網卡會将信息發送給網絡。
系統軟件和應用軟件系統軟件就是包各種硬件驅動程序,它們的任務就是用來驅動各種硬件,使硬件完成正常的功能。比如網卡發送數據,聲卡播放聲音等。驅動程序提供給應用程序接口,供應用程序調用接口來使用硬件。應用軟件接受用戶的請求,再通過驅動程序來驅動相關的硬件來實現相關的功能。如下圖:
圖1
沒有引入操作系統得問題, 一個計算機上會有很多硬件,所以會有很多的硬件驅動,每個硬件對應的驅動也會不一樣,一個應用程序會和很多驅動程序對接,大大加重了應用程序員的編程負擔。
同時,一個系統上面會同時又幾個應用程序運行,比如qq和音樂,這兩個應用都會使用顯示屏來顯示,都要使用内存來運行程序,但是硬件資源總是有限的。所以需要使用某種機制來使用和分配資源。設計的時候,這種機制要麼放在應用程序中來實現,要麼放在驅動程序中來實現。但是無論哪一種,都會增減程序員的負擔。
引入了操作系統之後應用程序員隻想關心應用程序的開發,而不想花費時間在資源管理和分配上,也不想花時間在區分不同的驅動程序接口上。驅動程序開發人員隻想關心開發驅動程序去驅動硬件,不想花費時間在資源管理上。那麼久需要引進操作系統了,如下圖:
如圖可以看到,操作系統的作用是管理各類資源(軟件和硬件),并将硬件驅動程序的接口抽象,形成一套簡單一直的接口給上層的應用程序應用。因此,應用程序隻需要知道這套操作系統提供的編程接口(API)就行了。前面提到系統軟件就是各種驅動程序。而我們這裡認為系統軟件是操作系統。實際上,驅動程序是嵌入到操作系統裡面去的,所以操作系統是包括驅動程序的。這就大大加大了驅動程序開發人員的開發難度,因為他們不僅需要熟悉手頭硬件的工作原理,更重要的是他們要确保他們寫的驅動能夠嵌入到操作系統裡面去。就這要求他們必須熟悉操作系統提供的用來嵌入驅動程序的接口。
,