虛擬記憶體(Virtual Memory)

2021-04-20 09:17:12 字數 1371 閱讀 6395

虛擬記憶體(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盤是預設的系統盤,硬碟讀寫最頻繁的就是系統檔案和頁面檔案 虛擬記憶體 硬碟讀寫時最耗時的操作是磁頭定位,同一分區內的磁頭定位無疑要比跨分割槽的遠距離來回定...