2016-11-14 89 views
0

我一直在研究(在SO和其他地方)虛擬地址和物理地址之間的關係。如果有人能確認我對這個概念的理解是否正確,我將不勝感激。我對虛擬地址和物理地址之間關係的理解是否正確?

頁表被分類爲'虛擬空間',幷包含每個頁面的虛擬地址。然後它映射到包含每個頁面的物理地址的「物理空間」。

維基百科圖讓我更清楚地解釋:

https://upload.wikimedia.org/wikipedia/commons/3/32/Virtual_address_space_and_physical_address_space_relationship.svg

是我對這個概念的理解是否正確?

謝謝。

回答

1

不完全正確。

每個程序都有自己的虛擬地址空間。從技術上講,只有一個地址空間即物理隨機存取存儲器。因此它被稱爲「虛擬」,因爲用戶程序看起來好像它有自己的地址空間。

現在,取指令mov 0x1234, %eax(AT & T)或MOV EAX, [0x1234](英特爾)爲例:

  1. 該CPU發送虛擬地址0x1234它的部件中的一箇中,MMU。
  2. MMU從頁表中獲取相應的物理地址。調整地址的過程也被稱爲「按摩」。
  3. CPU從物理地址引用的RAM位置檢索數據。

具體的翻譯過程在很大程度上取決於實際的架構和CPU。

+0

我的道歉;在接受你的回答之前,我忘了問相關的問題。關於3,我是否可以正確地說CPU可以從輔助存儲中檢索數據,假設這是物理地址所指的地方? –

+0

@ handler'shandle號CPU只能直接尋址主存儲器。輔助存儲由控制器「尋址」,並與驅動程序一起將數據從輔助存儲器加載到主存儲器。然後,CPU可以訪問它。在x86架構中,尋呼可用於:如果傳遞給MMU虛擬地址沒有在頁表和一個相應的標誌相對應的物理存儲器地址被設置,輔助存儲器被諮詢和數據從那裏複製到主這使得程序可以訪問比主存儲提供的地址更多的地址。 – Downvoter

0

頁表被分類爲'虛擬空間',幷包含每個頁面的虛擬地址。然後它映射到包含每個頁面的物理地址的「物理空間」。

這是不正確的。頁表定義了一個由頁面組成的邏輯地址空間。頁表將邏輯頁面映射到物理頁面框架,它們表明頁面框架尚未存在於內存中,在這種情況下,您有虛擬映射。當使用磁盤空間模擬內存時,頁面爲VIRTUAL。

在過去的日子裏,頁表總是建立一個虛擬地址空間。現在越來越普遍(例如嵌入式系統)使用不具有虛擬存儲器(尋呼)的邏輯地址轉換。因此,術語「虛擬內存」和「邏輯內存」經常被混淆。

物理地址空間只存在於操作系統。該進程只能看到一個邏輯地址空間。

這是一個過分簡化的過程,因爲進程成爲異常或中斷後的操作系統,並且內核在公共邏輯地址範圍內運行。但是,操作系統內核必須在一定程度上管理物理內存。

例如,頁表的某些方面必須使用物理地址。如果頁表使用了所有的邏輯地址,那麼在地址轉換中會出現雞和蛋的問題。各種硬件系統以不同的方式解決了這個問題。

最後,您鏈接到該圖是一個非常貧窮的例證。

相關問題