歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

Linux設備驅動程序模型

第1章 Linux設備驅動程序模型
Linux系統中包含字符設備、塊設備、網路設備三類基本的設備驅動程序。隨著技術的不斷進步,Linux驅動程序體系的拓撲結構越來越復雜,Linux 2.4內核已經不能適應這種形勢的需求。為此2.6內核開發了全新的設備模型,它采用Sysfs文件系統,該文件系統是一個類似於proc文件系統的特殊文件系統,用於將系統中的設備組織成層次結構,並向用戶態程序提供詳細的內核數據結構信息。該模型在智能電源管理、熱插拔以及與用戶空間交互等方面具有明顯的優勢。本章主要介紹Linux內核中的驅動程序模型,包括三類設備的驅動程序、proc文件系統、Sysfs文件系統、Kobject等內容。
1.1 設備驅動程序基礎
1.1.1 驅動程序的概念
所謂設備驅動程序就是控制與管理硬件設備數據收發的軟件,它是應用程序與硬件設備溝通的橋梁。從本質上講設備驅動程序主要負責硬件設備的數據讀寫、參數配置與中斷處理。設備驅動程序是操作系統的一部分,通常運行在內核層。應用層通過系統調用進入內核層,內核層根據系統調用號來調用驅動程序對應的接口函數。圖1-1說明了Linux驅動程序的運行原理。


圖1-1 設備驅動程序的原理Linux中的大部分驅動程序,是以內核模塊的形式編寫的。內核模塊是Linux內核向外部提供的一個接口,其全稱為動態可加載內核模塊(Loadable Kernel Module,LKM)。Linux內核本身是一個單內核(monolithic kernel),具有效率高的優點,也具有可擴展性和可維護性差的缺陷。模塊機制就是為了彌補這一缺陷而設計的。內核模塊可以被單獨編譯,它在運行時被鏈接到內核,作為內核的一部分在內核空間運行。要讓內核支持可加載模塊,需要配置內核的【Enable
loadable module support】選項,如圖1-2所示。
Copyright © Linux教程網 All Rights Reserved