1. 程式人生 > >記憶體地址空間的概念

記憶體地址空間的概念

首先要釐清三種地址(即程式或程序的虛擬和邏輯地址;CPU的線性地址;實際實體地址)

a. 虛擬地址:是指同程式產生的,由段選擇符和段內偏移地址兩個部分組成的地址(對於X86系列就16位的段識別符號;32位段內偏移)

因為這兩部分組成的地址並沒有直接用來訪問實體記憶體,而是需要通過分段地址變換機制處理或對映後才對應到實體記憶體地址上,因此

稱此地址為虛擬地址。

邏輯地址: 是指由程式產生的與段相關的偏移地址部分;應用程式設計師公需與邏輯地址打交道,而分頁和分段機制對其是完全透明,僅由系統程式設計人員涉及。

不過有些資料不區分邏輯與虛擬地址

b. 線性地址: 是虛擬地址到物理學地址變換之間的中間層,是處理器可定址的記憶體空間(稱為線性地址空間)中地址。程式程式碼會產生邏輯地址,或者說是段中的偏移地址,加上相應段的基地址就生成一個線性地址。

c. 實體地址: 是指出現在CPU處部地址總線上的定址實體記憶體的地址訊號,是地址變換的最終結果地址。如果啟用了分頁機制,那線性地址就會使用頁目錄和頁表中的項變換成實體地址。如果沒啟用分頁機制,則線性地址即是實體地址。