linux中設備和模塊的分類介紹
2016-02-22 16:45:04
來源:北大青鳥深圳嘉華學校
[導讀] 字符設備:字符設備是能夠像字節(jié)流(類似文件)一樣被訪問的設備,有字符設備驅動程序來實現(xiàn)這種特性。字符設備驅動程序通常至少要實現(xiàn)open、close、read、write系統(tǒng)調用。字符設備可以通過文件系統(tǒng)節(jié)點來訪問,這些設備文件和普通文件之間的唯一差別在于對普通文件的訪問可以前后移動
字符設備:字符設備是能夠像字節(jié)流(類似文件)一樣被訪問的設備,有字符設備驅動程序來實現(xiàn)這種特性。字符設備驅動程序通常至少要實現(xiàn)open、close、read、write系統(tǒng)調用。字符設備可以通過文件系統(tǒng)節(jié)點來訪問,這些設備文件和普通文件之間的唯一差別在于對普通文件的訪問可以前后移動訪問位置,而大多數(shù)字符設備是一個只能順序訪問的數(shù)據(jù)通道。一個字符設備是一種字節(jié)流設備,對設備的存取只能按順序按字節(jié)的存取而不能隨機訪問,字符設備沒有請求緩沖區(qū),所有的訪問請求都是按順序執(zhí)行的。但事實上現(xiàn)在一些高級字符設備也可以從指定位置一次讀取一塊數(shù)據(jù)。
塊設備:塊設備也是通過設備節(jié)點來訪問。塊設備上能夠容納文件系統(tǒng)。在大多數(shù)unix系統(tǒng)中,進行I/O操作時塊設備每次只能傳輸一個或多個完整的塊,而每塊包含512字節(jié)(或更2的更高次冪字節(jié)的數(shù)據(jù))。linux可以讓應用程序向字符設備一樣讀寫塊設備,允許一次傳遞任意多字節(jié)的數(shù)據(jù)。因而,塊設備和字符設備的區(qū)別僅僅在于內(nèi)核內(nèi)部管理數(shù)據(jù)的方式,也就是內(nèi)核及驅動程序之間的軟件接口,而這些不同對用戶來講是透明的。在內(nèi)核中,和字符驅動程序相比,塊驅動程序具有完全不同的接口。存儲設備一 般屬于塊設備,塊設備有請求緩沖區(qū),并且支持隨機訪問而不必按照順序去存取數(shù)據(jù),比如你可以 先存取后面的數(shù)據(jù),然后在存取前面的數(shù)據(jù),這對字符設備來說是不可能的。Linux下的磁盤設備都是塊設備,盡管在Linux下有塊設備節(jié)點,但應用程序一般是通過文件系統(tǒng)及其高速緩存來訪問塊設備的,而不是直接通過設備節(jié)點來讀寫塊設備上的數(shù)據(jù)。
網(wǎng)絡設備:網(wǎng)絡設備不同于字符設備和塊設備,它是面向報文的而不是面向流的,它不支持隨機訪問,也沒有請求緩沖區(qū)。由于不是面向流的設備,因此將網(wǎng)絡接口映射到文件系統(tǒng)中的節(jié)點比較困難。內(nèi)核和網(wǎng)絡設備驅動程序間的通訊,完全不同于內(nèi)核和字符以及塊驅動程序之間的通訊,內(nèi)核調用一套和數(shù)據(jù)包傳輸相關的函數(shù)而不是read,write。網(wǎng)絡接口沒有像字符設備和塊設備一樣的設備號,只有一個唯一的名字,如eth0、eth1等,而這個名字也不需要與設備文件節(jié)點對應。
由上大致總結下字符設備與塊設備的區(qū)別:1、字符設備是面向流的,最小訪問單位是字節(jié);而塊設備是面向塊的,最小訪問單位是512字節(jié)或2的更高次冪。2、字符設備只能順序按字節(jié)訪問,而塊設備可隨機訪問。3、塊設備上可容納文件系統(tǒng),訪問形式上,字符設備通過設備節(jié)點訪問,而塊設備雖然也可通過設備節(jié)點訪問,但一般是通過文件系統(tǒng)來訪問數(shù)據(jù)的。