虛擬記憶體(virtual memory)是windows管理所有可用記憶體的方式。對於32位windows系
統,每個程序所用到的虛擬記憶體位址從0到2^32-1,總容量4gb,其中2gb是與作業系統以
及其他所有程序所共享,另外2gb分派給程序獨佔(這就是常說的32位windows中乙個進
程最多能用2g記憶體的由來)。
4gb虛擬位址空間(virtual address space,vas)中,2gb的程序獨佔vas是程序隔離
的,換句話說,每個程序都可以從ram或者硬碟上對映到屬於自己的2gb vas。所以雖然
32位windows每個程序最多只能獲得4gb可用虛擬記憶體,但是所有程序總和可以使用總量
超過4gb的虛擬記憶體。可惜xp只支援4gb ram,也就是說超出部分一定得靠頁面檔案補
足;而比如2003企業版通過pae支援32gb ram,可以減少頁面檔案的用量。(但單個程序
最多仍然只有4gb虛擬記憶體位址空間,而不是32gb)
所以,乙個簡單的計算示例:三個程序最多能用掉多少vas?
2gb(共享)+2gb(獨佔)×3=8gb
這4gb的虛擬位址空間,按照4kb的大小進行分頁(page),然後以頁為單位對映到實際
儲存單元中,包括:
·物理記憶體(ram)
·頁面檔案(page file,在win9x中稱為交換檔案swap file,即win386.swp)
·其他檔案自身(比如一些長時間未活動的程序的exe檔案自身)
可見,通常人們所說的虛擬記憶體實際上只是指其中的頁面/交換檔案而已,這是對虛擬內
存的乙個錯誤的理解。虛擬記憶體≠頁面檔案
ram中除了儲存最近讀寫的檔案快取(file cache,相當於win9x中的vcache)主要用來
儲存正在使用的程式**和資料,當ram資源緊張,或者有程式碼或資料長時間未使用
時,xp通常會將非活躍程式碼所在的位址頁對映回程式檔案(exe、dll等),將資料所
在的位址頁對映到頁面檔案(pagefile.sys)中並拷貝資料,然後將它們本來占用的ram
空間釋放。這個過程稱為頁出(page out)。
當系統讀取某個虛擬記憶體位址,而該位址所在的頁不在ram中時,將產生乙個頁面錯誤
(page fault)中斷,告訴系統從頁面檔案或者程式檔案中取回包含該位址的虛擬記憶體
頁,即將內容拷回到ram並建立新的虛擬位址對映,並將頁面檔案中對應部分標記為未使
用,這個過程就是頁入(page in)。頁入成功的話就是乙個valid page fault,否則就
是invalid page fault。前者非常普遍,(可以在任務管理器的程序頁監視到)而後者
是由程式或硬體錯誤引起,如果發生在程序上會導致非法操作,如果是系統自身則很可
能藍屏。
虛擬記憶體應用
虛擬記憶體的重要性體現在下面幾個方面 1 虛擬記憶體可以對映到硬碟,以達到擴充套件記憶體的作用,這樣系統在物理記憶體已經用滿的情況下,就不會因為沒有記憶體可用,而導致系統崩潰。2 虛擬記憶體是以程序空間為定址空間的,一般情況,程序使用者模式下的定址空間 是2g,為了避免記憶體的碎片,可以把2g程序空...
虛擬記憶體使用
虛擬記憶體使用一 簡介windows 提供了3 中進行記憶體管理的方法,包括 虛擬記憶體 一般用來管理大型資料結構,受到硬碟調頁檔案的支援 記憶體對映檔案 常用來管理大型資料流和多程序共享。記憶體堆 最適合用來管理大量的小物件。二 虛擬記憶體的使用 1 我們可以在程序的位址空間中保留乙個區域 pvo...
虛擬記憶體 概述
1 所謂虛擬記憶體 頁面檔案 即拿出一部分硬碟空間來充當記憶體使用,當記憶體占用完時,電腦就會自動呼叫硬碟來充當記憶體,以緩解記憶體的緊張。2 c盤是預設的系統盤,硬碟讀寫最頻繁的就是系統檔案和頁面檔案 虛擬記憶體 硬碟讀寫時最耗時的操作是磁頭定位,同一分區內的磁頭定位無疑要比跨分割槽的遠距離來回定...