Linux系統(tǒng)將設備驅動分為三種類型
時間:2018-09-29 來源:未知
1)字符設備
字符設備是能夠像字節(jié)流(比如文件)一樣訪問的設備,由字符設備驅動從程序來實現(xiàn)這種特性,通過/dev下的字符設備文件來訪問。字符設備驅動程序通常至少需要實現(xiàn)open、close、read和write等系統(tǒng)調用所對應的、對該硬件進行操作的功能函數(shù)。
應用程序調用system call,將會導致操作系統(tǒng)執(zhí)行上層功能組件的代碼,這些代碼會處理內核的一些內部事務,為操作硬件做好準備,然后就會調用驅動程序中實現(xiàn)的對硬件進行物理操作的函數(shù),從而完成對硬件的驅動,然后返回操作系統(tǒng)上層功能組件的代碼,做好內核內部的善后事務,后返回應用程序。
由于應用程序必須使用/dev/目錄下的設備文件,所以該設備文件必須事先創(chuàng)建。
2)塊設備
塊設備通常是按照塊為單位來訪問數(shù)據(jù),比如一塊為512KB。
塊設備也是通過/dev目錄下的文件系統(tǒng)節(jié)點來訪問,塊設備和字符設備區(qū)別僅僅在于內核內部管理數(shù)據(jù)的方式,也就是內核和驅動程序的接口不同。
塊設備除了給內核提供和字符設備一樣的接口外,還提供了專門面向塊設備的接口,塊設備的接口必須支持掛裝文件系統(tǒng),通過此接口,塊設備能夠容納文件系統(tǒng),因此應用程序一般通過文件系統(tǒng)來訪問塊設備上的內容,而不是直接和設備打交道。
3)網(wǎng)絡設備
網(wǎng)絡設備驅動不同于字符設備和塊設備,不在/dev下以文件節(jié)點代表,而是通過單獨的網(wǎng)絡接口來代表。
任何網(wǎng)絡事務都要通過一個網(wǎng)絡接口,即一個能夠和其他主機交換數(shù)據(jù)的設備,通過接口代表一個硬件設備,但也可能是個純軟件設備。
內核和網(wǎng)絡驅動程序間的通信完全不同于內核和字符設備驅動以及塊設備前驅動程序之間的通信,內核調用一套與數(shù)據(jù)包傳輸相關的函數(shù)。

