今天看到部落格園的雲端運算之路http://www.cnblogs.com/cmt/archive/2013/05/24/3096201.html提到了“記憶體頁面分頁檔”這個東西,特把以前看到一篇文章轉載下.
實體記憶體,顧名思義,就是實實在在存在的那個東西,插在你電腦主板上的記憶體條所提供的空間。
分頁檔,這個是硬碟上的一塊空間,在Windows下表現為一個檔案。這個分頁檔存在的意義就是在實體記憶體被佔用滿以後,將實體記憶體中的東西移動到硬碟上的這個空間,騰出實體記憶體給需要的應用程式來使用。
交換區,這個是實體記憶體和分頁檔空間的總和,“交換”的含義,則是指在硬碟檔案、CPU和其它IO之間進行資料的傳遞和暫存(這句話對於瞭解電腦運行基本流程的人來說應該可以理解)。
虛擬記憶體,這個概念恐怕是目前為止最為含混不清的一個東西了,會有很多種不同的含義。在這裡,我先說一下在一個程式猿眼中的虛擬記憶體是個啥。
很顯然,這個世界上的電腦配置是五花八門,可用的實體記憶體數量也是分為很多等級的。作為一個苦逼的程式猿,我們不可能在考慮程式邏輯的時候還要去考慮客戶的機器有多少記憶體可以用,也不可能去詳細調查實際的實體記憶體地址是多少到多少,好在OS會為我們完成這些工作。每一個啟動並執行進程,都會獲得一個4G的記憶體位址空間,這就是所謂的虛擬記憶體,這裡面的所有地址都是虛擬,和實體記憶體啥的並不直接掛鈎。而在作業系統那頭,這些虛擬位址所映射到的實際地址,可以是實體記憶體地址,也可以是分頁檔的地址。如果是實體記憶體小於這個虛擬位址的範圍的話,映射的實體記憶體還可能是重複的實體記憶體地址片段,使用的時候可以通過清空記憶體資料,將記憶體資料寫入分頁檔這樣的方式進行實體記憶體的重新利用,以提高實體記憶體的利用效率。
而不少人,尤其是對Windows剛有所瞭解的人,所理解的虛擬記憶體,往往是指分頁檔。這也是微軟的意見,他們在自己的作業系統中就是這麼寫的,見:
而在Aida64,或者說是曾經的Everest中,虛擬記憶體是交換區。老實說,我並沒有理解這個的概念是什麼。
其實上述虛擬記憶體的說法都沒有什麼問題,都是約定俗成的說法,關鍵是要搞清楚什麼時候的“虛擬記憶體”是指什麼,概念不混淆就可以。
順便吐個槽,我發現Win7的記憶體調度很詭異,實體記憶體不是邊佔用邊釋放的,總是等到佔用率很高(接近滿)的時候,來個集中釋放,也就是寫入分頁檔。我的筆記本硬碟硬碟效能不咋樣,給這麼一搞整個就會卡死半天,而下載軟體開時間長一點的話很容易就把實體記憶體佔滿。據說是這Superfetch(拼錯沒?)的效果,關了以後記憶體佔用率確實上升的慢了一點,不過佔用率感覺還是偏高,看著真不爽。
原文網址:http://www.guokr.com/blog/62218/