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