32位Windows操作系統支持32位尋址,因此2的32次方就等於4GB,每個程序在運行時都會被映射進4GB空間的內存空間,這4GB空間不全是用戶可以使用的,其中0x7fffffff-0xffffffff是2GB的內核空間,這部分用來保存內核的數據,用戶程序是無法直接訪問的。
進程空間的地址是一個邏輯地址,它首先通過分段機制的段選擇子和偏移地址計算出一個線性地址,再由分頁機制分解線性地址,最終找到實際的物理地址上的數據。
下圖中32位系統的進程虛擬內存空間佈局:
64位Windows操作系統的進程虛擬內存空間佈局是不一樣的,就不詳細解釋了: