ramfs, tmpfs,ramdisk區別

參考資料://https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt

什麼是ramfs?
ramfs是一個簡單的文件系統,它是基於ram的動態文件系統的一種Linux硬盤緩衝機制。
一般的在Linux上所有的文件都被緩衝在內存中。內存中的數據頁在回寫後仍然會保存在內存中以防再次使用,但是回寫後的數據會被標識爲clean,這樣系統就可以用這些內容幹別的事情了。同樣的,文件數據再被回寫後也被表識爲clean,但是並沒有在內存中擦除知道虛擬內存對他再次分配。一個相似的機制也同樣適用於目錄。


對於ramfs,它沒有回寫地址。文件寫入ramfs中後和平時一樣分配目錄和頁,但是他們回寫不了。這就意味着他們的內存永遠也不能被標識爲clean,所以他們在期待回收內存的時候不會被虛擬內存釋放。

需要填充到ramfs的代碼很少,因爲大部分的工作都被Linux已有的緩存機制做了。基本上,你就如同掛載文件系統。基於此,ramfs在memuconfig不是一個可選項,由於他可以節省的空間可
以忽略。

ramfs and ramdisk
比較老的ramdisk在內存區外分配一個綜合的塊,用它作爲文件系統的回寫堆。這個塊的是固定大小的,所以掛載的文件系統也是固定的。而且額外的開銷也很大。
和ramfs對比,ramdisk浪費了空間,讓cpu做了不必要的工作,弄髒了cpu的緩存。總之,ramfs 相對來說比較簡單。
另外一個原因,ramfs被半廢除的原因是對迴環的提出。迴環提供了一個更靈活和方便的方式去產生一個塊設備,用拷貝文件代替了拷貝內存大塊。

ramfs and tmpfs
ramfs的一個確定是你可以一直向裏面寫數據,直到內存被填滿。虛擬內存不能釋放他因爲它沒有回寫地址。所以,只有root用戶纔可以被允許訪問ramfs.

ramfs的衍生物tmpfs,tmpfs產生一個大小受限,可以將數據寫入交換空間的機制。一般用戶也可以訪問tmpfs.


rootfs是一個ramfs的特殊實例,他在2.6系統中呈現。你不能卸載rootfs就如同你不能殺死init進程。他很小也很簡單去檢查確定的列表不能爲空。

如果config_tmpfs選項被啓動了,roofs將使用tmpfs代替ramfs。如果要強制使用ramfs,可以再內核的命令行使用參數rootfstype=ramfs.

what is initramfs?
2.6 linux 內核中包含了一個gzipped “cpio”格式的目錄項,在內核boot階段被加載到rootfs裏面。在被加載完成後,內核檢查rootfs中是否有init文件,如果有,就用PID爲1來執行他。init文件實現定位和掛載真正的根設備。如果沒有Init程序,內核將檢查其他的變量,如“/sbin/init”.

 

參考資料:http://askubuntu.com/questions/296038/what-is-the-difference-between-tmpfs-and-ramfs

首先ramfs和tmpfs做相同的事情但是有一些差異。ramfs 是動態的,其最大的值就是ram的空間值。
tmp不是動態增長的,在加載tmpfs時可以說明加載大小。tmpfs使用交換分區,而ramfs沒使用。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章