虛擬位址空間

2021-06-19 13:08:35 字數 1239 閱讀 4250

當處理器讀或寫入記憶體位置時,它會使用虛擬位址。作為讀或寫操作的一部分,處理器將虛擬位址轉換為實體地址。通過虛擬位址訪問記憶體有以下優勢:

程序可用的虛擬位址範圍稱為該程序的「虛擬位址空間」。每個使用者模式程序都有其各自的專用虛擬位址空間。 對於 32 位程序,虛擬位址空間通常為 2 gb,範圍從 0x00000000 至 0x7fffffff。對於 64 位程序,虛擬位址空間為 8 tb,範圍從 0x000'00000000 至 0x7ff'ffffffff。一系列虛擬位址有時稱為一系列「虛擬記憶體」。

此圖說明了虛擬位址空間的一些重要功能。

在 32 位 windows 中,可用的虛擬位址空間共計為 2^32 位元組(4 gb)。通常較下的 2 gb 用於使用者空間,較上的 2 gb 用於系統空間。

bcdedit /set increaseuserva

在 64 位 windows 中,虛擬位址空間的理論大小為 2^64 位元組(16 百億億位元組),但實際上僅使用 16 百億億位元組範圍的一小部分。範圍從 0x000'00000000 至 0x7ff'ffffffff 的 8 tb 用於使用者空間,範圍從 0xffff0800'00000000 至 0xffffffff'ffffffff 的 248 tb 的部分用於系統空間。

在核心模式下執行的驅動程式必須在直接從使用者空間位址中讀取或寫入這些位址時非常小心。此方案說明了原因。

使用者模式程式發起從裝置讀取某些資料的請求。程式提供緩衝區的起始位址以接收資料。

在核心模式下執行的裝置驅動程式例程啟動讀取操作並將控制權返回到其呼叫程式。

然後,裝置中斷了當前執行的任何執行緒以顯示讀取操作完成。 中斷由在此任意執行緒上執行的核心模式驅動程式例程進行處理,該例程屬於任意程序。

此時,驅動程式不得將資料寫入使用者模式程式在步驟 1 中提供的開始位址。此位址位於發起請求的程序的虛擬位址空間,該程序可能很大程度上不同於當前程序。

在使用者空間中,所有物理記憶體頁面都可以根據需要進行分頁至磁碟檔案。在系統空間中,某些物理頁面可以分頁,而其他頁面不能。系統空間具有用於動態分配記憶體的兩個區域:頁面緩衝池和非頁面緩衝池。在 64 位 windows 中,頁面緩衝池為 128 gb 的虛擬位址,範圍從 0xffffa800'00000000 至 0xffffa81f'ffffffff。非頁面緩衝池為 128 gb 的虛擬位址,範圍從 0xffffac00'00000000 至 0xffffac1f'ffffffff。

在頁面快取池中分配的記憶體可以根據需要分頁至磁碟檔案。在非頁面緩衝池中分配的記憶體永遠無法分頁至磁碟檔案。

虛擬位址空間

14 共 14 對本文的評價是有幫助 評價此主題 程序可用的虛擬位址範圍稱為該程序的 虛擬位址空間 每個使用者模式程序都有其各自的專用虛擬位址空間。對於 32 位程序,虛擬位址空間通常為 2 gb,範圍從 0x00000000 至 0x7fffffff。對於 64 位程序,虛擬位址空間為 8 tb,...

虛擬位址空間

1 text 段 存放程式執行的一塊記憶體區域,此區域大小在執行之前就已經確定下來了。2 data資料段 全域性初始化資料區 靜態資料區 只初始化一次,指用來存放程式中已初始化的全域性變數的一塊記憶體區域 已經初始化的全域性變數 靜態變數和常量 3 bss未初始化資料區 用來存放程式中未初始化的全域...

虛擬位址空間

大多數計算機使用8位的塊,或者叫做位元組 byte 來作為最小的可定址的儲存器單元,而不是訪問儲存器中單獨的位。機器級程式將儲存器視為乙個非常大的位元組陣列,稱為虛擬儲存器。儲存器的乙個位元組都由唯一的數字來標識,稱為它的位址 虛擬位址 所有可能虛擬位址的集合就稱作虛擬位址空間。引自 深入理解計算機...