Linux设备驱动程序和设备文件
Linux設備驅(qū)動程序和設備文件
設備驅(qū)動程序
一個設備驅(qū)動程序是一個管理著系統(tǒng)與某種特定硬件之間交互作用的程序。驅(qū)動程序在設備可理解的硬件指令和內(nèi)核使用的固定編程接口之間起轉(zhuǎn)換作用。驅(qū)動程序?qū)拥拇嬖谟兄趦?nèi)核合理地保持設備獨立性。
在大多數(shù)情況下,設備驅(qū)動程序是內(nèi)核的組成部分,它們不是用戶進程。不過,一個驅(qū)動程序可以從內(nèi)核里,也可以從用戶空間進行訪問。對設備的用戶級訪問往往要通過位于/dev目錄下的特殊設備文件。內(nèi)核把對這些文件操作映射到對驅(qū)動程序代碼的調(diào)用上面。
設備文件
基本概念
大多數(shù)硬件設備都在/dev目錄中有一個對應的設備文件,網(wǎng)絡設備除外。在/dev中的每個文件都有與之相關(guān)的主設備號和一個次設備號。內(nèi)核用這些設備號把對一個設備文件的引用映射到相應的驅(qū)動程序上。主設備號標明與文件相關(guān)的驅(qū)動程序(換句話說是設備類型)。次設備號常常是指定某種給定設備類型的特定實例,次設備號有時被稱為單元號。
用ls -l可以看到一個設備文件的主設備號和次設備號:
設備文件分兩種類型:
一個塊設備文件每次讀取或者寫入一塊數(shù)據(jù)(一組字節(jié),通常是521的倍數(shù)),我們熟知的磁盤就是塊設備,在/dev中對應的設備文件就是塊設備文件。塊設備文件在用ls -l查看時文件類型為b。
字符設備每次讀取或者寫入一個字節(jié)。磁盤和磁帶可以是塊設備也可以是字符設備,而終端和打印機不行。字符設備文件在用ls -l查看時文件類型為c。
創(chuàng)建設備文件
在Linux下,一般不需要手動創(chuàng)建設備文件,因為在Linux下設備文件的創(chuàng)建有專門的udev系統(tǒng)來管理,當系統(tǒng)有新的設備出現(xiàn)(或者消失),會動態(tài)地管理設備文件的創(chuàng)建和刪除。守護進程udevd監(jiān)聽內(nèi)核傳來的有關(guān)設備狀態(tài)變化的消息。根據(jù)/etc/udev 和/lib/udev兩個目錄的配置信息,在找到設備或者斷開設備的時候,udevd能夠自動采取相應措施。在默認情況下,它只創(chuàng)建/dev里的設備文件。手動創(chuàng)建設備文件用mknod命令來創(chuàng)建,語法為:
mknod filename type major minor- filename:要創(chuàng)建的設備文件名;
- type:設備類型,c代表一個字符設備,b代表一個塊設備;
- major:主設備號;
- minor:次設備號;
參考文獻
Unix/Linux系統(tǒng)管理手冊|第13章
CSDN博客|主設備號和次設備號
總結(jié)
以上是生活随笔為你收集整理的Linux设备驱动程序和设备文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人工智能 一种现代方法 第2章 智能Ag
- 下一篇: WinRAR 5.60 无广告正式版