虛擬記憶體與虛擬位址空間

虛擬記憶體與虛擬位址空間

我知道虛擬記憶體是電腦用來在硬碟上儲存運行進程的一部分 RAM 的分頁檔案。但虛擬位址空間有何不同?是RAM還是硬碟還是兩者都有?

答案1

虛擬位址空間是單一程式在執行時看到的空間。根據程式的配置方式,該位址空間將與作業系統支援的最大位址空間一樣大。

然後,作業系統核心負責將 vas 中的位址對應到實體記憶體(RAM 或系統頁面檔案)。

透過這種設計,程式本身不知道資源和實際位址,並且可以像它們自己擁有所有系統記憶體一樣運行,或者至少是單個進程可以使用的最大記憶體。

簡而言之,程式與 VAS 一起工作,作業系統負責將 VAS 映射到實際存儲,以便這對於正在運行的程式是不可見的。正在運行的程式只能看到它的VAS。

答案2

虛擬位址空間是對程式可以尋址的記憶體大小的限制。

這在外部邊界受到指標樣式的限制 - 理論上,純 32 位元指標可以尋址 4GB 的虛擬空間。實際界限取決於作業系統設計,因為它使用了地址空間的很大一部分旁邊使用者空間。

在Win32下,預設設定是允許2GB的虛擬位址空間作為使用者空間。

64 位指標可以尋址更多,實際上通常允許 48 位,並且有很多詳細信息這個超級使用者的回答

理論上,有人可以建立一台具有足夠RAM 的實體計算機,使得2GB 用戶空間可以直接映射到實體記憶體(可能至少需要3GB 實體記憶體),這樣您就可以擁有32 位元進程,而虛擬記憶體並不是非常虛擬。

答案3

虛擬位址空間是進程所看到的。例如,您的電子郵件位於一個大小為 25GB 的收件匣中。那是你的虛擬位址空間。

虛擬位址空間是為了區分,並不是每個虛擬位址空間對應一個身體的地址空間。假設您有 20 個電子郵件用戶,收件匣空間為 25GB。但您的伺服器上只有 100GB 的磁碟空間。那麼,您可以獲得舊電子郵件並將其存檔,只將最近的電子郵件保留在您的伺服器上,因為人們通常只檢查最新的電子郵件。

將電子郵件從伺服器存檔到磁帶磁碟機類似於電腦將 RAM 的分頁部分儲存到磁碟。當有人查看舊電子郵件時,您只需將舊電子郵件從磁帶「尋呼」回您的伺服器即可。電子郵件使用者永遠不會知道其中的差異。

同樣的,你機器上的每個行程都有XX * number of processes虛擬位址空間,即使您的實體記憶體可能少於該空間。

虛擬記憶體就是這樣。虛擬位址空間。但虛擬記憶體只是您正在使用的虛擬位址空間。

相關內容