Linux2.6.29裝置模型分析-概述
1 裝置模型概述
從2.6版本開始,Linux開發團隊便為核心建立起一個統一的裝置模型。在以前的核心中沒有獨立的資料結構用來讓核心獲得系統整體配合的資訊。儘管缺乏這些資訊,在多數情況下核心還是能正常工作的。然而,隨著拓撲結構越來越複雜,以及要支援諸如電源管理等新特性的需求,向新版本的核心明確提出了這樣的要求:需要有一個對系統結構的一般性抽象描述,即裝置模型。
目的
I 裝置、驅動、匯流排等彼此之間關係錯綜複雜。如果想讓核心執行流暢,那就必須為每個模組編碼實現這些功能。如此一來,核心將變得非常臃腫、冗餘。而裝置模型的理念即是將這些程式碼抽象成各模組共用的框架,這樣不但程式碼簡潔了,也可讓裝置驅動開發者擺脫這本讓人頭痛但又必不可少的一劫,將有限的精力放於裝置差異性的實現。
II 裝置模型用類的思想將具有相似功能的裝置放到一起管理,並將相似部分萃取出來,使用一份程式碼實現。從而使結構更加清晰,簡潔。
III 動態分配主從裝置號,有效解決裝置號的不足。裝置模型實現了只有裝置在位時才為其分配主從裝置號,這與之前版本為每個裝置分配一個主從裝置號不同,使得有限的資源得到合理利用。
IV 裝置模型提供sysfs檔案系統,以檔案的方式讓本是抽象複雜而又無法捉摸的結構清晰可視起來。同時也給使用者空間程式配置處於核心空間的裝置驅動提供了一個友善的通道。
V 程式具有隨意性,同一個功能,不同的人實現的方法和風格各不相同,裝置驅動亦是如此。大量的裝置亦若實現方法流程均不相同,對以後的管理、重構將是難以想象的工作量。裝置模型恰是提供了一個模板,一個被證明過的最優的思路和流程,這減少了開發者設計過程中不必要的錯誤,也給以後的維護掃除了障礙。
任務
與使用者空間通訊
sysfs的實現與裝置模型密切相關,並且向外界展示了它所表述的結構。向使用者空間所提供的系統資訊,以及改變操作引數的介面,將越來越多地通過sysfs實現,也就是說,通過裝置模型實現。
熱插拔裝置
越來越多的計算機裝置可被動態的熱插拔了,也就是說,外圍裝置可根據使用者的需要安裝與解除安裝。核心中的熱插拔機制可以處理熱插拔裝置,特別是能夠與使用者空間進行關於熱插拔裝置的通訊,而這種機制也是通過裝置模型管理的。
裝置型別
系統中的許多部分對裝置如何連線的資訊並不感興趣,但是它們需要知道哪些型別的裝置是可以使用的。裝置模型包括了將裝置分類的機制,它會在更高的功能層上描述這些裝置,並使得這些裝置對使用者空間可見。
物件生命週期
上述許多功能,包括熱插拔支援和sysfs,使得核心中建立和管理物件的工作更為複雜。裝置模型的實現需要建立一系列機制以處理物件的生命週期、物件之間的關係,以及這些物件在使用者空間中的表示。
電源管理和系統關機
完成這些工作需要一些 對系統結構的理解。比如一個USB宿主介面卡,在處理完所有與其連線的裝置前是不能被關閉的。裝置模型使得作業系統能夠以正確的順序遍歷系統硬體。
圖例
我們以USB滑鼠為例,初識裝置模型。如圖1-1(來自LDD3)所示。圖中以簡化方式顯示了與USB滑鼠相關聯的裝置模型的一小部分。在圖的中央,可以看到核心“Devices”樹的一部分,它表明了滑鼠是如何連線到系統的。“Buses”樹跟蹤了連線到每個匯流排的裝置,在“Classes”下的子樹更關心裝置所提供的功能,而不是裝置是如何連線的。
圖1-1:裝置模型的一小片段
相關文章
- Linux裝置模型(3)Linux模型
- 生產裝置5大模型大模型
- Linux裝置模型(一) 概覽Linux模型
- Linux 2.6核心的裝置模型(轉)Linux模型
- 字元裝置、塊裝置、裸裝置、RAW裝置 .字元
- 用資料分析來管理裝置
- linux裝置模型之mmc,sd子系統Linux模型
- 字元裝置、塊裝置與裸裝置字元
- Linux裝置樹的傳遞及Kernel中對裝置樹的分析Linux
- HTML+CSS編寫靜態網站-36 裝置適配概述HTMLCSS網站
- 行業分析| 智慧無人自助裝置行業
- 裝置指紋不只能看裝置全貌,更是風控決策、模型建設的重要支撐模型
- JVM分析工具概述JVM
- 分析函式概述函式
- 裸裝置、字元裝置、塊裝置不全面比較字元
- 基於知識庫的介面自動化測試——結果模型化方法與裝置的分析模型
- 《Linux裝置驅動開發詳解(第2版)》——第1章Linux裝置驅動概述及開發環境構建1.1裝置驅動的作用Linux開發環境
- Android逆向分析概述Android
- 機器學習 第6篇:線性模型概述機器學習模型
- 深度學習模型壓縮方法概述深度學習模型
- [小工匠說CSS]-盒子模型-概述CSS模型
- Java NIO1:I/O模型概述Java模型
- 《HTML5觸控介面設計與開發》——第1章 移動裝置概述1.1 觸控裝置和桌面裝置之間的差異HTML
- 可穿戴裝置的應用與產業鏈分析產業
- MobileBERT:一個在資源有限裝置上使用的BERT模型模型
- Android與物聯網裝置通訊-網路模型分層Android模型
- 物聯網裝置殭屍網路趨勢分析
- SQL Server資料庫中轉儲裝置的分析SQLServer資料庫
- SAP 訂單模型的編排方式概述模型
- 技術分享 | 雲原生多模型 NoSQL 概述模型SQL
- 俄羅斯套娃 (Matryoshka) 嵌入模型概述模型
- 字元裝置與塊裝置的區別字元
- 裸裝置與塊裝置的區別
- CountDownLatch 概述和原始碼分析CountDownLatch原始碼
- 字元裝置驅動 —— 字元裝置驅動框架字元框架
- linux平臺匯流排驅動裝置模型之點亮LEDLinux模型
- CCData:2021年家庭智慧投影裝置市場分析
- iPhone X獲取裝置網路型別錯誤分析iPhone型別