PRoc文件系統是提供一個接口給用戶,讓用戶能夠查看系統運行的狀態信息,讓用戶能夠修改內核的一些參數,比如說打印級別sysfs是基于ram的文件系統,它是把內核的一些數據結構,以及這些數據結構中的一些屬性,以及他們之間的關系展示給用戶,暴露給用戶。linux2.6內核引入了sysfs文件系統。sysfs被看成是與proc同類別的文件系統。sysfs把連接在系統上的設備和總線組織成分級的文件,使其從用戶控件可以訪問到。Sysfs被加載到/sys/目錄下,它的子目錄包括:(1)Block:在系統中發現的每個塊設備在該目錄下對應一個子目錄,每個子目錄中又包含一些屬性文件,它們描述了這個塊設備的各方面屬性,如,設備大小。(loop塊設備是使用文件來模擬的)(2)Bus:在內核中注冊的每條總線在該目錄下對應一個子目錄,如:ide,pci,scsi,usb,pcmia。其中每個總線目錄內又包含了在整個系統中發現的屬于該總線類型的設備,driver目錄包含了注冊到該總線的所有驅動。(3)Class:將設備按照功能進行的分類,如/sys/class/net目錄下包含了所有網絡接口。(4)Devices:包含系統所有的設備(5)Kernel:內核中的配置參數(6)Module:系統中所有模塊的信息(7)Firmware:系統中的固件(8)Fs:描述系統中的文件系統(9)Power:系統中的電源選項
一個設備可能存在于3個目錄下,但是從物理上講可能是一個設備,就看怎么劃分。從功能上講是一個鼠標,從總線上講是一個USB設備KobjectKobject實現了基本的面向對象的管理機制,是構成Linux2.6設備模型的核心結構。她與sysfs文件系統緊密相連,在內核中注冊的每個kobject對象對應sysfs文件系統中的一個目錄。



、
實例分析:Kobject.c
ksetkest是具有相同類型的kobject的集合,在sysfs中體現成一個目錄,在內核中用kset數據結構表示,定義為:

熱插拔事件在Linux系統中,當系統配置發生變化時,如:添加kset到系統;移動kobject,一個通知會從內核空間發送到用戶空間,這就是熱插拔事件。熱插拔事件會導致用戶空間中相應的處理程序(如udev,mdev)被調用,這些處理程序會通過加載驅動程序,創建設備節點等來相應熱插拔事件。
這三個函數什么時候被調用?當該kset所管理的kobject和kset狀態發生變化時(如被加入,移動),這三個函數將被調用。(例:kobject_uevent調用) 。
實例分析:kset.c
總線的注冊和刪除:




實例分析:Bus_basic.c
設備:

實例分析:Bus.c,Device.c
device

驅動:















快速/慢速中斷:這兩種類型的中斷處理程序的主要區別在于,快速中斷保證中斷處理的原子性(不被打斷),而慢速中斷則不保證。換句話說,也就是“開啟中斷”標志位(處理器IF)在運行快速中斷處理程序時是關閉的,因此在服務該中斷時,不會被其他類型的中斷打斷;而調用慢速中斷處理程序時,其他類型的中斷仍可以得到服務。共享中斷:共享中斷是將不同設備掛到同一個中斷信號線上。Linux對共享的支持主要是PCI設備提供服務。

中斷處理程序:什么是中斷處理程序?有何特別之處?中斷處理程序就是普通的C代碼。特別之處在于中斷處理程序是在中斷上下文中運行的,它的行為受到某些限制;(1)不能向用戶空間發送或者接收數據;(2)不能使用可能引起阻塞的函數;(3)不能使用可能引起調度的函數。

新聞熱點
疑難解答