歡迎您光臨本站 註冊首頁

文件系統概念理解 .

←手機掃碼閱讀     火星人 @ 2014-03-03 , reply:0

文件系統概念理解 .

文件系統概念理解 .

最近一直在學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支持這種介面。以上是個人理解,如有錯誤請各位指教。
《解決方案》

掃盲啦

[火星人 ] 文件系統概念理解 .已經有289次圍觀

http://coctec.com/docs/service/show-post-1565.html