1、虛擬核心檔案系統(Virtual Kernel File Systems),是指那些是由核心產生但並不存在於硬碟上(存在於記憶體中)的檔案系統,
2、虛擬檔案系統,雖然它們出現在根檔案系統中,但它裡面的內容卻無法在任何外部存放裝置中找到,因為它們都在記憶體中。
3、proc是一個重要虛擬檔案系統,通過它裡面的一些檔案,可以擷取系統狀態資訊並修改某些系統的配置資訊。
proc檔案系統本身不佔用磁碟空間,它僅存在於記憶體之中,為作業系統本身和應用程式之間的通訊提供了一個安全的介面。
當我們在核心中添加了新功能或裝置驅動時,經常需要得到一些系統狀態的資訊,一般這樣的功能可能需要經過一些象ioctl()
這樣的系統調用來完成。系統調用介面對於一些功能性的資訊可能是適合的,因為應用程式必須將這些資訊讀出後再做一定的處理。
但對於一些即時性的系統資訊,例如記憶體的使用狀況,或者是驅動裝置的統計資料等,我們更需要一個比較簡單易用的介面來取得它們。
proc檔案系統就是這樣的一個介面,我們可以簡單的用cat、strings程式來查看這些資訊。例如,執行下面的命令:
cat /proc/filesystems //作業系統支援的檔案系統類型
cat /proc/meminfo //記憶體的即時資訊,記憶體大小等
cat /proc/partitions //儲存空間分區資訊
cat /proc/cpuinfo //查看cpu資訊
同樣的,free、df、top、ps等程式的功能實現,強烈依賴於proc檔案系統,為了使用那些程式,一定要使核心支援proc檔案系統,
並將其掛接到根檔案系統的/proc目錄下。
4、sysfs檔案系統與proc檔案系統類似,也是一個不佔有任何磁碟空間的虛擬檔案系統。它通常被掛接在/sys目錄下。
sysfs檔案系統是Linux2.6核心引入的,它把串連在系統上的裝置和匯流排組織成為一個分級的檔案,使得它們可以在使用者空間存取。
其實sysfs是從proc和devfs中劃分出來的。
一、devfs
linux下有專門的檔案系統用來對裝置進行管理,devfs和sysfs就是其中兩種。
在2.6核心以前一直使用的是devfs,devfs掛載於/dev目錄下,提供了一種類似於檔案的方法來管理位於/dev目錄下的所有裝置,
我們知道/dev目錄下的每一個檔案都對應的是一個裝置,至於當前該裝置存在與否先且不論,而且這些特殊檔案是位於根檔案系
統上的,在製作檔案系統的時候我們就已經建立了這些裝置檔案,因此通過操作這些特殊檔案,可以實現與核心進行互動。
但是devfs檔案系統有一些缺點,例如:不確定的裝置映射,有時一個裝置映射的裝置檔案可能不同,例如我的隨身碟可能對應sda
有可能對應sdb;沒有足夠的主/輔裝置號,當裝置過多的時候,顯然這會成為一個問題;/dev目錄下檔案太多而且不能表示
當前系統上的實際裝置;命名不夠靈活,不能任意指定等等。
二、sysfs
正因為上述這些問題的存在,在linux2.6核心以後,引入了一個新的檔案系統sysfs,它掛載於/sys目錄下,跟devfs一樣它也是一個
虛擬檔案系統,也是用來對系統的裝置進行管理的,它把實際串連到系統上的裝置和匯流排組織成一個分級的檔案,使用者空間的程式同
樣可以利用這些資訊以實現和核心的互動,該檔案系統是當前系統上實際裝置樹的一個直觀反應,它是通過kobject子系統來建立這個
資訊的,當一個kobject被建立的時候,對應的檔案和目錄也就被建立了,位於/sys下的相關目錄下,既然每個裝置在sysfs中都有唯
一對應的目錄,那麼也就可以被使用者空間讀寫了。使用者空間的工具udev 就是利用了sysfs提供的資訊來實現所有devfs的功能的,
但不同的是udev運行在使用者空間中,而devfs卻運行在核心空間,而且udev不存在 devfs那些先天的缺陷。很顯然,sysfs將是未來
發展的方向。
5、