檔案系統概念理解

來源:互聯網
上載者:User

   最近一直在學LINUX,但是從沒有真正的理解檔案系統含義和作用,最近整理了一些關於檔案系統的資料:        

來自百度百科:

     VFS是一個異構檔案系統之上的軟體粘合層(註:有時也把VFS稱為可堆疊的檔案系統(Stackable Filesystem),因為VFS可以無縫地使用多個不同類型的檔案系統,就像把多個檔案系統堆疊在一起一樣,故而得名)。通過VFS,可以為訪問檔案系統的系統調用提供一個統一的抽象介面。  VFS最早由Sun公司提出以實現NFS(Network FileSystem,網路檔案系統)。但是現在很多Unix系統都採用了VFS(包括Linux、FreeBSD、Solaris等)。  Linux下的VFS:  VFS的作用就是採用標準的Unix系統調用讀寫位於不同物理介質上的不同檔案系統。VFS是一個可以讓open()、read()、write()等系統調用不用關心底層的儲存介質和檔案系統類型就可以工作的粘合層。在古老的DOS作業系統中,要訪問本地檔案系統之外的檔案系統需要使用特殊的工具才能進行。而在Linux下,通過VFS,一個抽象的通用提供者屏蔽了底層檔案系統和物理介質的差異性,每一種類型的檔案系統代碼都隱藏了實現的細節。因此,對於VFS層和核心的其它部分而言,每一種類型的檔案系統看起來都是一樣的,在Linux中,VFS採用的是物件導向的編程方法。

以下是來自csdn論壇:

編譯進核心,就是直接在vmlinuz裡面有代碼了。在引導的時候就可以直接使用。

如果是模組的話,在引導的時候需要藉助initrd那個虛擬檔案進行預先載入,然後給核心引導用。

同時模組還可以在核心已經運行了的情況下insmod和modprobe或者進行操作。就如同Windows中的驅動類似,但是免除了重啟這個繁瑣的步驟。

檔案系統這個詞理解比較混淆,其實應該分兩個部分:一部分是軟體,就是如何識別和操作特定的檔案系統格式,這部分一般來說是在核心裡面,比如你如果要支援FAT32,你就要把FAT32的支援編譯到核心裡面。

另外一部分是硬體或者說介質,即按照某個檔案系統的格式把一些資料放到介質的某個地區,比如以儲存在記憶體裡面的cramfs的根檔案系統為例,需要在記憶體的某個地區按照cramfs的格式把根檔案系統放在那裡,同時通過命令列或者其它方式告訴核心記憶體的那個地區儲存有cramfs的資料,核心就會用cramfs對應的軟體(就是第一部分)來解釋和操作這些資料。

就整個嵌入式系統而言,可以分為三個部分1.uboot 2.kernel 3.檔案系統。其中kernel中以VFS去支援各種檔案系統,如yaffs,ext3,cramfs等等。所謂的yaffs,就個人理解為一種管理物理介質的系統,如NAND FLASH,而在核心中以VFS來屏蔽各種檔案系統的介面不同,以VFS向kernel提供一個統一的介面。如開啟一個檔案時統一使用open,寫時採用write,而不用去考慮是那種檔案系統,也不用去考慮檔案系統是如何將資料寫入物理介質的。其中 kernel中的配置,只是讓VFS支援這種介面。以上是個人理解,如有錯誤請各位指教。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.