天天看點

虛拟記憶體與頁面檔案的關系

虛拟記憶體與頁面檔案的關系

近日和朋友講到大記憶體可以禁用頁面檔案的事情。他跟我講Windows的許多核心功能和有些程式都要使用到虛拟記憶體,不應禁用虛拟記憶體。

網上搜尋了下,幾乎所有的人都認為禁用頁面檔案等于禁用虛拟記憶體。

在Windows中是不可能禁用虛拟記憶體的。(早期的DOS除外)

禁用頁面檔案不等于禁用虛拟記憶體。

系統屬性——進階——性能——設定——進階——虛拟記憶體——更改——無分頁檔案——設定——重新開機

OK 頁面檔案檔案為0了

打開任務管理器 程序——檢視——選擇列——選上“虛拟記憶體大小”——确定——再看程序,看你運作的這些程序有沒有占用虛拟記憶體?

除了核心虛拟的系統空閑程序外,所有的程序都要使用虛拟記憶體。

涉及到windows的記憶體管理,所有程式所見到的記憶體,都是虛拟記憶體,程式是看不到實體位址的。每個程序都有自己的虛拟位址空間,32位程序這個空間的最大值是4GB。任務管理器的虛拟記憶體大小就是為程序保留的私有虛拟位址空間的大小。

微軟官方技術白皮書上講:頁面檔案和實體記憶體或 RAM 構成虛拟記憶體。

是以系統屬性——進階——性能——設定——進階——虛拟記憶體——更改——無分頁檔案 隻改變了虛拟記憶體的一部分

那麼禁用磁盤頁面檔案後,任務管理的PF使用率又是怎麼回事呢?(聰明人一定會這麼問)

微軟官方定義:PF使用率是正被系統使用的頁面檔案的量。

耶?頁面檔案不是為0了嗎?

PF使用率到底是什麼?我們再來看看procexp裡的記憶體資訊

與pf使用率相同,但這裡的名稱改為了commit(送出,執行)

明确的表達了PF使用率是送出實體存儲器的空間總合=所有程序的虛拟記憶體空間+核心記憶體空間 (我以為pf在這裡使用有些誤導,也有可能微軟當時的構思是不區分開實體記憶體和頁面檔案,實際使用中virtualalloc送出實體存儲器的時候也是不區分這個關系的)

虛拟記憶體 是涉及到系統核心方面一種技術。磁盤分頁檔案是采用硬碟上建立一個交換檔案來當作記憶體使用。是以分頁檔案是可以禁止的。也就是強制不讓作業系統把硬碟當作記憶體來進行程序程式記憶體上的配置設定排程。但是虛拟記憶體是禁止不了的。因為這牽涉到核心設計以及程序程式記憶體配置設定排程的方式。這是一個作業系統的基本。不可能說我不要讓硬碟來做虛拟記憶體,那麼整個系統的程序程式記憶體配置設定排程方式就來個大的變化,完全采用另外一套配置設定排程方式。這是不可能的。是以盡管我們禁止了硬碟上的分頁交換檔案,但是其實系統核心的機制上面還是依照使用虛拟記憶體這個概念來排程程序程式之間的記憶體配置設定的(當然這個時候虛拟記憶體的概念就不是使用硬碟上的分頁檔案了)嚴格上來講硬碟上的分頁檔案是系統中虛拟記憶體這個機制的一種表現形勢。

是以羅,記憶體大于1GB的話,一般沒有使用磁盤頁面檔案的必要。但如果你要使用記憶體整理之類的軟體完全整理記憶體,是要把實體記憶體中的内容轉移到磁盤頁面檔案中。不過我以為,大記憶體一般不需要深度整理記憶體。

繼續閱讀