Linux內核中的各種文件系統:proc、tmpfs、devfs、sysfs


Linux內核中的各種文件系統:proc、tmpfs、devfs、sysfs

背景

剛學完proc文件系統在內核驅動 中的使用,就看到另外的sysfs的有關接口。很好奇proc文件系統和sysfs文件系統有啥區別。

原文(有刪減):https://www.cnblogs.com/simonid/p/6361906.html

proc

虛擬文件系統,在linux系統中被掛載與/proc目錄下。里面的文件包含了很多系統信息,比如cpu負載、 內存、網絡配置和文件系統等等。我們可以通過內部文本流來查看進程信息(正在運行的各個進程的PID號也以目錄名形式存在/proc目錄下)和機器的狀態。

tmpfs

虛擬內存文件系統,使用內存作為臨時存儲分區,掉電之后會丟失數據,創建時不需要使用mkfs等格式化

因為內存的訪問速度高於flash,所以tmpfs可以提高存儲效率,避免對flash頻繁讀寫(flash壽命有限)

devfs

設備文件,提供類似於文件的方法來管理位於/dev目錄下的設備

缺點:不確定的設備映射,有時一個設備映射的設備文件可能不同,假如掛載的u盤可能對應sda也可能對應sdb 沒有足夠的主/輔設備號,當設備過多的時候,顯然會成為一個問題。

sysfs

虛擬內存文件系統,2.6內核之前沒有規定sysfs的標准掛載目錄,但是在2.6之后就規定了要掛載到/sys目錄下(針對以前的 sysfs 掛載位置不固定或沒有標准被掛載,有些程序從 /proc/mounts 中解析出 sysfs 是否被掛載以及具體的掛載點,這個步驟現在已經不需要了)。

它的作用類似於proc,但除了與 proc 相同的具有查看和設定內核參數功能之外,還有為 Linux 統一設備模型作為管理之用。

相比於 proc 文件系統,使用 sysfs 導出內核數據的方式更為統一,並且組織的方式更好。

sysfs與proc的比較

結論:新設計的內核機制應該盡量使用 sysfs 機制,而將 proc 保留給純凈的“進程文件系統”。

sysfs 與 proc 相比有很多優點,最重要的莫過於設計上的清晰。

一個 proc 虛擬文件可能有內部格式,如 /proc/scsi/scsi ,它是可讀可寫的,(其文件權限被錯誤地標記為了 0444 !,這是內核的一個BUG),並且讀寫格式不一樣,代表不同的操作,應用程序中讀到了這個文件的內容一般還需要進行字符串解析,而在寫入時需要先用字符串格式化按指定的格式寫入字符串進行操作;

相比而言, sysfs 的設計原則是一個屬性文件只做一件事情, sysfs 屬性文件一般只有一個值,直接讀取或寫入。

整個 /proc/scsi 目錄在2.6內核中已被標記為過時(LEGACY),它的功能已經被相應的 /sys 屬性文件所完全取代。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM