- 存儲(chǔ)技術(shù)原理分析
- 敖青云著
- 2018-12-27 02:38:17
第2章
Linux驅(qū)動(dòng)模型
2.1 概述
Linux核心開(kāi)發(fā)團(tuán)隊(duì)在2.5內(nèi)核的開(kāi)發(fā)過(guò)程中,引入了Linux驅(qū)動(dòng)模型(Linux Driver Model),有時(shí)也被稱(chēng)作Linux設(shè)備模型(Linux Device Model),主要目的是解決之前版本存在的以下問(wèn)題。
? 沒(méi)有一種統(tǒng)一的機(jī)制表達(dá)驅(qū)動(dòng)和設(shè)備之間的關(guān)系。
? 沒(méi)有通用的熱插拔機(jī)制。
? 沒(méi)有通用的電源管理機(jī)制。
? procfs文件系統(tǒng)過(guò)度混亂,包含了許多不是進(jìn)程的信息。
Linux驅(qū)動(dòng)模型的示意如圖2-1所示。

圖2-1 Linux驅(qū)動(dòng)模型
Linux內(nèi)核基于kobject內(nèi)核對(duì)象機(jī)制將系統(tǒng)中的總線(xiàn)類(lèi)型、設(shè)備和驅(qū)動(dòng)分別用bus_type、device和device_driver等對(duì)象描述,并將其組織成一個(gè)層次結(jié)構(gòu)的系統(tǒng),統(tǒng)一管理各種類(lèi)別(class)的設(shè)備及其接口(class_interface),同時(shí)借助sysfs文件系統(tǒng)將內(nèi)核所見(jiàn)設(shè)備系統(tǒng)展示給用戶(hù)空間,提供了一個(gè)完全層次結(jié)構(gòu)的用戶(hù)視圖。
Linux驅(qū)動(dòng)模型的核心內(nèi)容可以綜合如下。
? 以?xún)?nèi)核對(duì)象為基礎(chǔ)。內(nèi)核對(duì)象用kobject結(jié)構(gòu)表示,相當(dāng)于其他對(duì)象的基類(lèi),是建構(gòu)Linux驅(qū)動(dòng)模型的關(guān)鍵。具有相同類(lèi)型的內(nèi)核對(duì)象構(gòu)成內(nèi)核對(duì)象集,用kset結(jié)構(gòu)表示,內(nèi)核對(duì)象集也包含自己的內(nèi)核對(duì)象,從而組織成層次化的結(jié)構(gòu)。
? 用sysfs文件系統(tǒng)導(dǎo)出到用戶(hù)空間。內(nèi)核中的所有內(nèi)核對(duì)象組織成樹(shù)狀,以對(duì)象屬性為葉子。通過(guò)sysfs文件系統(tǒng),將用戶(hù)空間對(duì)文件的讀/寫(xiě)操作轉(zhuǎn)化為對(duì)內(nèi)核對(duì)象屬性的顯示和保存方法。從而導(dǎo)出內(nèi)核對(duì)象信息,并提供配置接口。
? 將Linux子系統(tǒng)表達(dá)為總線(xiàn)類(lèi)型/驅(qū)動(dòng)/設(shè)備/類(lèi)/接口的關(guān)系,分別用bus_type、device、device_driver、class和class_interface結(jié)構(gòu)表示。每個(gè)子系統(tǒng)有自己的總線(xiàn)類(lèi)型,它有一條驅(qū)動(dòng)鏈表和一條設(shè)備鏈表,用來(lái)鏈接已加載的驅(qū)動(dòng)和已發(fā)現(xiàn)的設(shè)備,驅(qū)動(dòng)加載和設(shè)備發(fā)現(xiàn)的順序可以是任意的。每個(gè)設(shè)備可以被綁定到最多一個(gè)驅(qū)動(dòng),被綁定了驅(qū)動(dòng)的設(shè)備可以正常工作。除此以外,每個(gè)設(shè)備可以屬于某個(gè)唯一的類(lèi),在類(lèi)上包含多個(gè)接口,接口的方法被作用于設(shè)備,不管是先添加接口,還是先發(fā)現(xiàn)設(shè)備。
- 課課通計(jì)算機(jī)原理
- 人工智能超越人類(lèi)
- PostgreSQL 11 Server Side Programming Quick Start Guide
- 基于LabWindows/CVI的虛擬儀器設(shè)計(jì)與應(yīng)用
- 大數(shù)據(jù)專(zhuān)業(yè)英語(yǔ)
- Dreamweaver CS3網(wǎng)頁(yè)制作融會(huì)貫通
- AWS:Security Best Practices on AWS
- 空間機(jī)器人遙操作系統(tǒng)及控制
- Visual FoxPro 6.0數(shù)據(jù)庫(kù)與程序設(shè)計(jì)
- 大數(shù)據(jù)時(shí)代的數(shù)據(jù)挖掘
- Expert AWS Development
- 大數(shù)據(jù)技術(shù)入門(mén)(第2版)
- Hands-On Linux for Architects
- PVCBOT機(jī)器人控制技術(shù)入門(mén)
- 從零開(kāi)始學(xué)C++