主記憶體:配置、連結與分段
實體位址(a physical address)
如果邏輯位址是劇本裡的頁碼,那麼實體位址就是真實劇院裡真正的座位號碼——那個真實、具體的位置。實體位址是會行走在記憶體匯流排上、送到 RAM 晶片、並選定硬體裡某一個特定儲存格的號碼。它是某個位元組真正所在之處。
具體來說,實體位址從 0 一直到安裝的 RAM 總量(減一),而且在整台機器中是唯一的:實體位址 100000 處剛好就只有一個位元組。記憶體單元——真正的晶片——永遠只看到實體位址;它完全不知道邏輯位址是什麼。所以程式所做的每一次記憶體存取,都必須先把它的邏輯位址轉譯成實體位址,晶片才能回應。在基底暫存器方案中這是一次加法;在分頁中則是一次表格查詢,但目的地永遠是一個實體位址。
為什麼重要:把實體位址對程式隱藏起來,正是讓安全共用成為可能的關鍵。程式從不直接指名實體位址,所以它無法刻意或意外地伸進另一個程式的真實記憶體;只有作業系統與位址轉譯硬體會處理實體位址。這也是為什麼同一個程式每次執行都可以被載入到不同的實體位置,而程式本身完全不需要更動。
一台機器有 8 GB 的 RAM,所以它的實體位址從 0 到 8 x 2^30 減一。當執行中的程式要求邏輯位址 1000、而基底暫存器存的是 90000 時,晶片實際收到的是實體位址 91000。
晶片只看到轉譯後的實體位址,永遠看不到邏輯位址。
一個常見的混淆:「載入位址 1000」裡的 1000 是邏輯的,不是實體的。實體位址是它經過轉譯後變成的那個值,而程式通常永遠看不到它。
又称
另见