1. 程式人生 > >[作業系統]虛擬記憶體和swap分割槽

[作業系統]虛擬記憶體和swap分割槽

轉自:http://www.cnblogs.com/nerrissa/p/4237179.html

首先,這兩個概念分別對應windows和linux,即:
windows:虛擬記憶體
linux:swap分割槽

windows即使實體記憶體沒有用完也會去用到虛擬記憶體,而Linux不一樣 Linux只有當實體記憶體用完的時候才會去動用虛擬記憶體(即swap分割槽)

swap類似於windows的虛擬記憶體,不同之處在於,Windows可以設定在windows的任何碟符下面,預設是在C盤,可以和系統檔案放在一個分割槽裡。而linux則是獨立佔用一個分割槽,方便由於記憶體需求不夠的情況下,把一部分內容放在swap分割槽裡,待記憶體有空餘的情況下再繼續執行,也稱之為交換分割槽,交換空間是其中的部分
windows的虛擬記憶體是電腦自動設定的
Linux的swap分割槽是你裝系統的時候分好的

tmpfs:

linux下面VM的大小由RM(Real Memory)和swap組成,RM的大小就是實體記憶體的大小,而Swap的大小是由你自己決定的。Swap是通過硬碟虛擬出來的記憶體空間,因此它的讀寫速度相對RM(Real Memory)要慢許多,我們為什麼需要Swap呢?當一個程序申請一定數量的記憶體時,如核心的vm子系統發現沒有足夠的RM時,就會把RM裡面的一些不常用的資料交換到Swap裡面,如果需要重新使用這些資料再把它們從Swap交換到RM裡面。 如果你有足夠大的實體記憶體,根本不需要劃分Swap分割槽。通過上面的說明,你該知道tmpfs使用的儲存空間VM是什麼了吧? 前面說過VM由RM+Swap兩部分組成,因此tmpfs最大的儲存空間可達(The size of RM + The size ofSwap)。 但是對於tmpfs本身而言,它並不知道自己使用的空間是RM還是Swap,這一切都是由核心的vm子系統管理的。

df命令:

tmpfs大小小於實際記憶體大小(共享記憶體基於它實現,有待進一步研究):

 VM由RM+Swap兩部分組成,因此tmpfs最大的儲存空間可達(The size of RM + The size of Swap)。 但是對於tmpfs本身而言,它並不知道自己使用的空間是RM還是Swap,這一切都是由核心的vm子系統管理的。
tmpfs預設的大小是RM的一半,假如你的實體記憶體是1024M,那麼tmpfs預設的大小就是512M
一般情況下,是配置的小於實體記憶體大小的。
tmpfs配置的大小並不會真正的佔用這塊記憶體,如果/dev/shm/下沒有任何檔案,它佔用的記憶體實際上就是0位元組;如果它最大為1G,裡頭放有100M檔案,那剩餘的900M仍然可為其它應用程式所使用,但它所佔用的100M記憶體,是不會被系統回收重新劃分的。
當刪除tmpfs中檔案,tmpfs 檔案系統驅動程式會動態地減小檔案系統並釋放 VM 資源。

裸盤 lsscsi命令檢視