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模型
- Linux裝置模型(一) 概覽Linux模型
- Linux裝置樹的傳遞及Kernel中對裝置樹的分析Linux
- 行業分析| 智慧無人自助裝置行業
- Android逆向分析概述Android
- JVM分析工具概述JVM
- 裝置管理系統AI大模型應用RAG案例AI大模型
- 亮點:Apple裝置和伺服器基礎模型APP伺服器模型
- 裝置指紋不只能看裝置全貌,更是風控決策、模型建設的重要支撐模型
- 基於知識庫的介面自動化測試——結果模型化方法與裝置的分析模型
- MobileBERT:一個在資源有限裝置上使用的BERT模型模型
- Android與物聯網裝置通訊-網路模型分層Android模型
- 物聯網裝置殭屍網路趨勢分析
- 深度學習模型壓縮方法概述深度學習模型
- CountDownLatch 概述和原始碼分析CountDownLatch原始碼
- 裝置地址
- Linux 4.x MTD原始碼分析-cfi-flash裝置probe過程分析Linux原始碼
- CCData:2021年家庭智慧投影裝置市場分析
- 字元裝置驅動 —— 字元裝置驅動框架字元框架
- 俄羅斯套娃 (Matryoshka) 嵌入模型概述模型
- 技術分享 | 雲原生多模型 NoSQL 概述模型SQL
- SAP 訂單模型的編排方式概述模型
- reids(2)概述與安裝
- 服裝生產管理概述
- 網站安裝打包 概述網站
- SpringMVC原始碼分析1:SpringMVC概述SpringMVC原始碼
- 滅火器充裝裝置
- USB裝置的列舉過程分析——資料結構先行資料結構
- 使用 Frida 逆向分析 Android 應用與 BLE 裝置的通訊Android
- 裝置id openpolit
- 網路裝置
- 裝置適配
- 實用的 IEC61850 裝置裝置模擬器
- 如何透過裝置基站獲取裝置經緯度
- Netty 原始碼分析系列(一)Netty 概述Netty原始碼
- 記一次 .NET 某裝置監控系統 死鎖分析
- 【原創】Linux虛擬化KVM-Qemu分析(九)之virtio裝置Linux
- MySQL底層概述—3.InnoDB執行緒模型MySql執行緒模型
- 語言模型文字處理基石:Tokenizer簡明概述模型