2016-11-30 177 views
-1

我知道用戶程序會生成邏輯地址。假設C中有一個小代碼片段。當打印地址時,地址是虛擬地址。我的問題是從哪裏獲取這些地址?在哪裏準確地執行分配的值和變量留在主存儲器或輔助存儲器中?如果主存儲器爲什麼有物理地址?邏輯地址在哪裏?

+0

您應該閱讀關於虛擬內存的WP文章。 –

回答

0

用戶模式程序只能看到邏輯地址。只有操作系統(內核模式)才能看到物理內存。

我的問題是從哪裏取得這些地址?

這些是由程序加載器廣告鏈接器分配的邏輯地址。

確切分配的值和變量保持在哪裏?在主存儲器還是輔助存儲器中?

在虛擬內存系統中,它可能位於主存儲器或輔助存儲器中。

如果主存儲器那麼爲什麼有物理地址?

它是一個使用頁表映射到物理地址的邏輯地址。

+0

假設邏輯地址是#23xyz(一個隨機地址)。如果用戶程序生成邏輯地址,那麼這個地址指向哪裏存儲?哪個存儲器是存儲相應變量的值? –

+0

@AjaySadanand我建議你開始閱讀關於頁面表。 – babon

+0

操作系統定義了CPU用於將邏輯頁面映射到物理頁面框架的每個進程的頁面表。翻譯對過程透明。 – user3344003

0
  1. 我是一種新的計算機體系結構和操作系統, 但我會盡力回答我的問題。至於我有 瞭解邏輯地址(我仍然有困難 瞭解,從哪裏它是從哪裏獲取或從哪裏存儲的。我的意思是這些地址(數字)得存儲在某處, 否則CPU可以'它自己生成它,對嗎?),這些地址 由CPU或處理器分配並取決於CPU 體系結構。每個進程分配一個虛擬/邏輯 地址。並且該邏輯地址被CPU(MMU)的存儲器管理單元轉換爲物理地址 。

  2. 分配的值和變量究竟保留在哪裏?正如user3344003所說,它可能在主內存或輔助存儲中。

  3. 如果主內存然後爲什麼有物理地址?原因在於虛擬內存的概念中有 。每個進程都有自己的虛擬 地址和一個頁表。進程的邏輯地址通過此頁表映射到 到物理內存(RAM)。無論那個邏輯地址是什麼,它都被映射到物理地址。如果物理內存已滿,則操作系統會將一些較少使用的 或未使用的進程轉移到輔助存儲,並將所需進程 放入RAM中。這樣多個進程可以同時運行。 每個進程都假定它們自己擁有RAM中的所有空間,僅爲 。如果不是用於虛擬內存,那麼物理內存將會充滿,進程可能會崩潰,並且可能會關閉操作系統。

希望它有幫助。我還在學習,如果我對邏輯地址和虛擬內存的理解是錯誤的,那麼請評論。