第 14 章 Linux 設(shè)備模型

2018-02-23 16:24 更新

第?14?章?Linux 設(shè)備模型

在 2.5 開發(fā)循環(huán)中一個(gè)聲明的目標(biāo)是為內(nèi)核創(chuàng)建一個(gè)統(tǒng)一的設(shè)備模型. 之前的內(nèi)核沒有單一的數(shù)據(jù)結(jié)構(gòu), 使它們可以來獲取關(guān)于系統(tǒng)如何整合的信息. 盡管缺乏信息, 有時(shí)事情也進(jìn)行的不錯(cuò). 新系統(tǒng), 帶有它們的更加復(fù)雜的技術(shù)并且需要支持諸如電源管理等特性, 但是, 清楚地要求需要一個(gè)通用的描述系統(tǒng)結(jié)構(gòu)的抽象.

2.6 設(shè)備模型提供了這個(gè)抽象. 現(xiàn)在它用在內(nèi)核來支持廣泛的任務(wù), 包括:

電源管理和系統(tǒng)關(guān)機(jī)
這些需要一個(gè)對(duì)系統(tǒng)的結(jié)構(gòu)的理解. 例如, 一個(gè) USB 宿主適配器不可能被關(guān)閉, 在處理所有的連接到這個(gè)適配器的設(shè)備之前. 這個(gè)設(shè)備模型使能了一個(gè)按照正確順序的系統(tǒng)硬件的遍歷.

與用戶空間的通訊
sysfs 虛擬文件系統(tǒng)的實(shí)現(xiàn)被緊密地捆綁進(jìn)設(shè)備模型, 并且暴露它所代表的結(jié)構(gòu). 關(guān)于系統(tǒng)到用戶空間的信息提供和改變操作參數(shù)的旋紐正越來越多地通過 sysfs 和 通過設(shè)備模型來完成.

可熱插拔設(shè)備
計(jì)算機(jī)硬件正更多地動(dòng)態(tài)變化; 外設(shè)可因用戶的一時(shí)念頭而進(jìn)出. 在內(nèi)核中使用的來處理和(特別的)與用戶空間關(guān)于設(shè)備插入和拔出的通訊, 是由設(shè)備模型來管理.

設(shè)備類別
系統(tǒng)的許多部分對(duì)設(shè)備如何連接沒有興趣, 但是它們需要知道什么類型的設(shè)備可用. 設(shè)備模型包括一個(gè)機(jī)制來分配設(shè)備給類別, 它在一個(gè)更高的功能性的級(jí)別描述了這些設(shè)備, 并且允許它們從用戶空間被發(fā)現(xiàn).

對(duì)象生命期
許多上面描述的功能, 包括熱插拔支持和 sysfs, 使在內(nèi)核中創(chuàng)建和操作對(duì)象復(fù)雜了. 設(shè)備模型的實(shí)現(xiàn)要求創(chuàng)建一套機(jī)制來處理對(duì)象生命期, 它們之間的關(guān)系, 和它們?cè)谟脩艨臻g的表示.

Linux 設(shè)備模型是一個(gè)復(fù)雜的數(shù)據(jù)結(jié)構(gòu). 例如, 考慮圖設(shè)備模型的一小部分, 它展示了(用簡(jiǎn)單的形式)和 USB 鼠標(biāo)關(guān)聯(lián)的設(shè)備模型結(jié)構(gòu)的微小片段. 圖中心的下方, 我們看到核心"設(shè)備"樹, 展示了鼠標(biāo)如何連接到系統(tǒng). "bus"樹跟蹤什么連接到每個(gè)總線, 而在"classes" 下的子樹涉及設(shè)備提供的功能, 不管它們是如何連接的. 設(shè)備模型樹即便在一個(gè)簡(jiǎn)單的系統(tǒng)中也包含幾百個(gè)節(jié)點(diǎn), 如同在圖中展示的那些; 它是一個(gè)難于整個(gè)呈現(xiàn)的數(shù)據(jù)結(jié)構(gòu).

圖?14.1.?設(shè)備模型的一小部分

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)