1、linux設備
Linux系統中的設備可以分為字符設備、塊設備和網絡設備這3類。
(1)字符設備
字符設備是能夠像字節流一樣被訪問的設備,當對字符設備發出讀寫請求,相應的IO操作立即發生。Linux系統中很多設備都是字符設備,如字符終端、串口、鍵盤、鼠標等。在嵌入式Linux 開發中,接觸最多的就是字符設備以及驅動。
(2)塊設備
塊設備是Linux系統中進行TO操作時必須以塊為單位進行訪問的設備,塊設備能夠安裝文件系統。塊設備驅動會利用一塊系統內存作為緩沖區,因此對塊設備發出讀寫訪問,並不一定立即產生硬件I/O操作。Linux系統中常見的塊設備有如硬盤、軟驅等等。
(3)網絡設備
網絡設備既可以是網卡這樣的硬件設備,也可以是一個純軟件設備如回環設備。網絡設備由Linux的網絡子系統驅動,負責數據包的發送和接收,而不是面向流設備,因此在Linux系統文件系統中網絡設備沒有節點。對網絡設備的訪問是通過socket調用產生,而不是普通的文件操作如 open/closc和 read/write等。
2、驅動在linux中的地位
驅動是Linux系統中設備和用戶之間的橋梁,Linux系統中,訪問設備必須通過設備驅動進行操作,用戶程序是不能直接操作設備的。Linux系統中硬件、驅動和用戶程序的關系如圖2.2所示。
驅動程序運行與內核空間,用戶程序只能通過內核提供的系統調用,由經VFS 以及驅動程序才能訪問和操作硬件,硬件設備傳遞的數據也必須經過驅動、VFS和系統調用才能被用戶程序接收。所以說,設備驅動是應用程序訪問系統設備以及進行數據傳遞的橋梁和通道。