1. 程式人生 > >tmpfs:一種基於記憶體的檔案系統

tmpfs:一種基於記憶體的檔案系統

tmpfs是一種基於記憶體的檔案系統,

tmpfs有時候使用rm(實體記憶體),有時候使用swap(磁碟一塊區域)。根據實際情況進行分配。

rm:實體記憶體。real memery的簡稱? 真實記憶體就是電腦主機板上那塊記憶體條,叫做真實記憶體不為過。

swap:交換分割槽。是硬碟上一塊區域

tmpfs最大可使用的大小為什麼是rm+swap。

SWAP就是LINUX下的虛擬記憶體分割槽,它的作用是在實體記憶體使用完之後,將磁碟空間(也就是SWAP分割槽)虛擬成記憶體來使用.  它和Windows系統的交換檔案作用類似,但是它是一段連續的磁碟空間,並且對使用者不可見。

疑惑:window作業系統經常叫的虛擬記憶體和linux作業系統中的交換分割槽(swap)有什麼區別?

一聽說,虛擬記憶體,我常常就知道含義了。因為在學校使用window,我們可以自己設定虛擬記憶體的大小。可以隨時調。實際上虛擬記憶體就是window系統下的一個這樣的檔案,如下:

每次看到交換分割槽,就一時不知道什麼東西了。

現在整理一下

實際上,在window系統上叫做虛擬記憶體。而在linux作業系統的概念中叫做交換分割槽。實際上本質都是一樣,都是虛擬記憶體。

後來看資料說,兩個作業系統對於什麼時候使用虛擬記憶體,是不同的。明顯,linux的效能更好。

window平時也會使用虛擬記憶體。而linux只有在記憶體不足的時候才會用到虛擬記憶體?

原理基本都是一樣的 區別就是windows即使實體記憶體沒有用完也會去用到虛擬記憶體而Linux不一樣。

​Linux只有當實體記憶體用完的時候才會去動用虛擬記憶體(即swap分割槽)這就是兩者的區別。。。

windows的虛擬記憶體是電腦自動設定的

Linux的swap分割槽是我們裝系統的時候分好的區,大小是固定了的(難怪叫做交換區,把它當成一個分割槽的概念了)

看設計思想的不同:

Linux 只不過是把交換檔案設計為可以用分割槽而已,Linux 也可以用檔案的。他們的區別就是實現方式不同而已。
Windows 的虛擬記憶體檔案好處是可以動態變動大小,這個歸系統自己管理的。

Windows 的虛擬記憶體設定預設好像是 50%-100% 記憶體在 C 盤上動態分配。Linux 沒有這個自動的設計,但分割槽時安裝程式會根據習慣自動分割槽出一個適合大小的 SWAP 分割槽。

Windows 的虛擬記憶體交換檔案壞處是混在系統分割槽裡面使用,檔案碎片問題和容量變動問題都會影響交換檔案的效率,Linux 因為是獨立的分割槽,所以沒有檔案碎片和容量變動的問題。

Windows 其實也可以借用 Linux 的 SWAP 理念,單獨分一個分割槽,只用來放 Windows 的虛擬記憶體交換檔案。

總結:虛擬記憶體和交換分割槽,本質都是同一個東西,都是解決記憶體不夠用時候,把硬碟當記憶體來使用。怎麼個使用機制,window和linux稍微有不同。

tmpfs 的另一個主要的好處是它閃電般的速度。因為典型的 tmpfs 檔案系統會完全駐留在 RAM 中,讀寫幾乎可以是瞬間的。即使用了一些交換分割槽,效能仍然是卓越的,當更多空閒的 VM 資源可以使用時,這部分 tmpfs 檔案系統會被移動到 RAM 中去。讓 VM 子系統自動地移動部分 tmpfs 檔案系統到交換分割槽實際上對效能上是好的,因為這樣做可以讓 VM 子系統為需要 RAM 的程序釋放空間。這一點連同它動態調整大小的能力,比選擇使用傳統的 RAM 磁碟可以讓作業系統有好得多的整體效能和靈活性。

我可以這麼理解:tmpfs是一種檔案系統,這種檔案系統的特殊性在於,其有時候使用ram,有時候使用vm(虛擬記憶體,磁碟上的交換分割槽)

mount -t 檔案型別 -o option  哪個裝置  掛節點

mount  -t tmpfs -o size=20m  tmpfs  /mnt/tmp

mount tmpfs /dev/shm -t tmpfs -o size=32m 

裝置:就是將哪個裝置掛接到linux某個目錄去。這裡是將tmpfs裝置掛接到 /mnt/tmp中去。

這樣操作/mnt/tmp目錄實際上就是操作tmpfs裝置了。

tmpfs為什麼變成一個裝置了呢?

vm子系統做管理工作。虛擬記憶體。

參考光碟檔案的掛接加深理解:

光碟映象檔案的掛接(mount)
 #mkdir /mnt/vcdrom
 注:建立一個目錄用來作掛接點(mount point)

#mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom
 注:使用/mnt/vcdrom就可以訪問盤映象檔案mydisk.iso裡的所有檔案了。

可以這裡理解掛節點:linux上的一個目錄,就是掛節點,要把一個裝置掛接到掛節點上。