本頁使用了標題或全文手工轉換

虛擬記憶體

維基百科,自由的百科全書
前往: 導覽搜尋
VirtualMem01.png

虛擬記憶體是電腦系統記憶體管理的一種技術。它使得應用程式認為它擁有連續可用的記憶體(一個連續完整的位址空間),而實際上,它通常是被分隔成多個實體記憶體碎片,還有部分暫時儲存在外部磁碟記憶體上,在需要時進行資料交換。與沒有使用虛擬記憶體技術的系統相比,使用這種技術的系統使得大型程式的編寫變得更容易,對真正的實體記憶體(例如RAM)的使用也更有效率。

注意:虛擬記憶體不只是「用磁碟空間來擴充功能實體記憶體」的意思——這只是擴充記憶體級別以使其包含硬碟機而已。把記憶體擴充功能到磁碟只是使用虛擬記憶體技術的一個結果,它的作用也可以通過覆蓋或者把處於不活動狀態的程式以及它們的資料全部交換到磁碟上等方式來實現。對虛擬記憶體的定義是基於對位址空間的重定義的,即把位址空間定義為「連續的虛擬記憶體位址」,以藉此「欺騙」程式,使它們以為自己正在使用一大塊的「連續」位址。

現代所有用於一般應用的作業系統都對普通的應用程式使用虛擬記憶體技術,例如文書處理軟體,電子製表軟體,多媒體播放器等等。老一些的作業系統,如DOS和1980年代的Windows,或者那些1960年代的大型電腦,一般都沒有虛擬記憶體的功能——但是AtlasB5000蘋果公司Lisa都是很值得注意的例外。[1]

那些需要快速存取或者反應時間非常一致的嵌入式系統,和其他的特殊應用的電腦系統,可能會為了避免讓運算結果的可預測性降低,而選擇不使用虛擬記憶體。

Windows作業系統的虛擬記憶體[編輯]

對於32位元行程,其邏輯記憶體空間為4G。Windows API提供了一套函式操縱行程的虛擬記憶體:

  • VirtualAlloc(PVOID開始位址,SIZE_T大小,DWORD記憶體類型,DWORD保護屬性)。 記憶體類型有MEM_RESERVE(保留)、MEM_RELEASE(釋放)和MEM_COMMIT(提交)。保留是指占用一塊邏輯位址空間,但未實際分配實體記憶體;提交是實際分配實體記憶體。MEM_RESET用於把記憶體清零。 保護屬性為: PAGE_NOACCESS、PAGE_READONLY、PAGE_READWRITE、PAGE_EXECUTE、PAGE_EXECUTE_READ、PAGE_EXECUTE_READWRITE。
  • VirtualProtect(PVOID基位址,SIZE_T大小,DWORD新保護屬性,DWORD舊保護屬性)。更改保護屬性。
  • VirtualFree(PVOID基位址,SIZE_T大小,DWORD記憶體類型)。頁面釋放。記憶體類型是MEM_DECOMMIT或者MEM_RELEASE
  • VirtualLock
  • VirtualUnlock
  • VirtualQuery

參見[編輯]

參考資料[編輯]

  1. ^ Windows Version History. Microsoft. Last Review: July 19, 2005 [2008-12-03].