閱讀英文

共用方式為


虛擬位址空間

處理器會在讀取或寫入記憶體位置時使用虛擬位址。 在這些作業期間,處理器會將虛擬位址轉譯為實體位址。

使用虛擬位址存取記憶體有幾個優點:

  • 程式可以使用連續的虛擬位址範圍來存取物理記憶體中大型的非連續記憶體緩衝區。

  • 程式可以使用一系列虛擬位址來存取大於可用物理記憶體的記憶體緩衝區。 當物理記憶體不足時,記憶體管理員會將物理記憶體頁面(通常大小為 4 KB)儲存至磁碟檔案。 系統會視需要在物理記憶體與磁碟之間移動數據或程式代碼的頁面。

  • 不同進程所使用的虛擬位址會隔離。 一個進程中的程式代碼無法改變另一個進程或作系統所使用的物理記憶體。

行程可用的虛擬位址範圍稱為行程 虛擬位址空間。 每個 使用者模式進程 都有自己的私人虛擬位址空間。

  • 32 位程序的虛擬位址空間通常位於2 GB範圍內,地址從0x00000000到0x7FFFFFFF。

  • 64 位 Windows 上的 64 位進程具有虛擬地址空間,其範圍在 0x000'00000000 到 0x7FFF'FFFFFFFF 之間,共 128 TB。

虛擬位址的範圍有時稱為虛擬記憶體 範圍。 如需詳細資訊,請參閱 記憶體和地址空間限制

下圖說明虛擬位址空間的一些主要功能。

圖表顯示兩個 64 位進程的虛擬位址空間,Notepad.exe 和 MyApp.exe。

此圖顯示兩個 64 位進程的虛擬位址空間:Notepad.exe 和 MyApp.exe。 每個進程都有自己的虛擬位址空間,範圍從 0x000『0000000 到 0x7FF』FFFFFFFF。 每個陰影區塊都代表虛擬或物理記憶體的一頁(大小為 4 KB)。 記事本程式使用三個連續的虛擬位址頁面,從 0x7F7『93950000 開始。 不過,這三個連續的虛擬位址頁面會對應到物理記憶體中的非連續頁面。 此外,這兩個進程都會使用從 0x7F7『93950000 開始的虛擬記憶體頁面,但這些虛擬頁面會對應至不同的物理記憶體頁面。

用戶空間和系統空間

Notepad.exe 和 MyApp.exe 等程式會在使用者模式中執行。 核心作業系統元件和許多驅動程式會以更高許可權的核心模式運行。 如需處理器模式的詳細資訊,請參閱 使用者模式和核心模式

每個使用者模式行程都有自己的私人虛擬位址空間,但在核心模式中執行的所有程式代碼都會共用稱為 系統空間的單一虛擬位址空間。 使用者模式行程的虛擬位址空間稱為 使用者空間

在 32 位 Windows 中,可用的虛擬地址空間總計為 2^32 個字節(4 GB)。 通常,較低的 2 GB 用於用戶空間,而前 2 GB 則用於系統空間。

圖表說明了如何將 32 位元 Windows 中的可用虛擬位址空間劃分為使用者空間和系統空間。

在 32 位 Windows 中,您可以指定 (在開機時間) 超過 2 GB 可供用戶空間使用。 不過,這表示系統空間可用的虛擬位址較少。 您可以將使用者空間的大小增加到 3 GB,只保留 1 GB 的系統空間。 若要增加使用者空間的大小,請使用 BCDEdit /set increaseuserva

在64位 Windows 中,虛擬位址空間的理論數量是 2^64 個字節(16 個字節),但實際上只會使用 16 個字節範圍的一小部分。

在使用者模式中執行的程式代碼可以存取用戶空間,但無法存取系統空間。 這項限制可防止使用者模式程式代碼讀取或改變受保護的作系統數據結構。 在核心模式中執行的程式代碼可以存取使用者空間和系統空間。 也就是說,在核心模式中執行的程式代碼可以存取目前使用者模式進程的系統空間和虛擬位址空間。

以核心模式運行的驅動程式在直接讀取或寫入使用者空間中的位址時必須小心。 下列案例說明原因。

  1. 使用者模式程式會發出從裝置讀取某些資料的請求。 程式會提供緩衝區的起始位址來接收數據。

  2. 在核心模式中執行的裝置驅動程式例程會啟動讀取作業,並將控制權傳回給呼叫端。

  3. 稍後,裝置會中斷目前正在執行的線程,以指出讀取作業已完成。 核心模式驅動程式例程會處理這個屬於任意程序的任意線程上的中斷。

  4. 此時,驅動程式不得將數據寫入步驟 1 中提供之使用者模式程式的起始位址。 此位址位於起始要求之進程的虛擬位址空間中,這與目前進程可能不同。

分頁集區和非分頁集區

在使用者空間中,所有物理記憶體頁面可以根據需求被分頁至磁碟檔案。 在系統空間中,有些實體頁面可以被換出,有些則無法被換出。 系統空間有兩個區域可動態配置記憶體:分頁集區和非分頁集區。

分頁集區中配置的記憶體可以根據需要分頁到磁碟檔案。 在非分頁集區中配置的記憶體永遠無法切換到硬碟。

顯示分頁集區記憶體配置差異的圖表。

裝置節點和裝置堆疊

使用者模式和核心模式