设备类型分类
《深入淺出XScale嵌入式系統》讀書筆記
1、字符設備是Linux最簡單的設備,可以像文件一樣訪問。初始化字符設備時,它的設備驅動程序向Linux登記,并在字符設備向量表中增加一個device_struct數據結構條目,這個設備的主設備號用來做這個向量表的索引。向量表中的每一個條目,一個device_struct數據結構包括兩個元素:登記設備驅動程序名稱的指針和指向一組文件的操作的指針。
設備注冊機構,內核提供一個字符設備注冊表,用于登記字符設備的相關信息。該數據結構在文件fs/device.C中定義,定義形式如下:
struct decice_struct{
? const char *name ?設備名稱
? struct file_operation * fops ?設備相關文件操作
}
字符設備登記表,負責登記各種字符設備的名字和對應的操作
static struct device_struct chrdevs[MAX_CHRDEV]={{NULL,NULL},}
2、快設備
塊設備是文件系統的基礎,它也可以像文件一樣被訪問。Linux用blkdevs向量表維護已經登記的塊設備文件。它像chrdevs向量表一樣,使用設備的主設備號作為索引。它的條目也是數據結構。與字符設備不同的是,塊設備分為SCSI和IDE類;向Linux內核登記并向核心提供文件操作。
3、塊設備與字符設備的主要區別:
對字符設備發出讀、寫請求時,實際的硬件I/O一般緊接著就發生了。塊設備則不然,它利用一塊系統內存作為緩沖區,當用戶進程對設備的請求能滿足用戶的要求時,就返回請求的數據,如果不能,就調用請求函數來進行實際的I/O操作。
4、Linux將設備看成文件,系統支持的所有設備都必須以特殊文件的形式出現在文件系統中。說是“特殊文件”,是因為這些文件只有文件名而沒有正文。這是因為,這種“文件”所要運載和提供的信息只有三項,即目標設備所屬的類(塊設備和字符設備)及其主設備號和次設備號,而這些信息完全可以放在文件的“目錄項”中。
打開文件的過程就可以大致描述如下:
1、根據約定的設備文件名,在文件系統中找到目錄文件的目錄項,從中取得目標設備的主/次設備號。
2、在本進程的file結構數組中分配一個空閑的file結構數組,其下標即為“打開文件號”。如前所述,打開文件號只對本進程有意義。
3、根據目標設備的類別和主設備號找到相應的file_operations結構,并將其地址記錄在file結構中。同時,把與目錄項有關的數據結構的地址也記錄在file結構中,以便獲得其次設備號。
總結
- 上一篇: Linux中 安装一些实用小软件总结
- 下一篇: 容器安全加固