memory management - paged - 邏輯地址和物理地址之間的區別?



memory-management memory-address (6)

我正在閱讀操作系統概念,我在第8章! 但是,我可以使用一些澄清,或者保證我的理解是正確的。

邏輯地址:根據本書,CPU生成邏輯地址。 這到底是什麼意思? (在執行生成的地址系統中..)我假設在為程序編譯代碼時,程序知道代碼將在何處加載到內存中。 所有編譯器都會設置程序佈局的一般草圖以及圖像的佈局方式,但不會為其分配任何實際地址。 當程序執行時,CPU獲取編譯器生成的這個佈局圖像,並將一些地址(邏輯1)分發給從代碼生成的地址。

物理地址:直到CPU生成一組邏輯地址(由基地址和偏移量組成)之後才生成物理地址。 邏輯地址通過MMU或其他設備,沿著線路的某處,邏輯地址映射到物理RAM地址。

那麼實際差異是什麼? 我可以看到一個好處。 使用邏輯地址可以為應用程序提供更多自由。 如果物理地址是硬編碼的,那麼程序的成功將在很大程度上取決於物理計算機,可用的RAM地址等。

轉換為物理地址的邏輯地址的使用是否會產生兩個步驟而不是一對一,因此更多地超過頭部?

然後邏輯地址在生成後駐留在哪裡? 當CPU處理進程時,它們可能存在於CPU的寄存器中,但在它之前和之後,它們在哪裡? 我理解這是依賴於實現的。 我假設它們可能存儲在CPU上的某些特殊寄存器空間或緩衝區中,例如TLB,對嗎? 如果沒有,那麼表可能存在於實際的RAM本身中,而CPU只保存一個指針/地址到RAM中表的基地址,對嗎?

看起來保持RAM中的地址對邏輯存儲器地址的目的是有效的。 我只能認為我的理解不正確。

https://ffff65535.com


  1. 由CPU生成的地址通常稱為邏輯地址。 程序生成的所有邏輯地址集稱為邏輯地址空間。 然而,存儲器單元所看到的地址 - 即加載到存儲器的存儲器地址寄存器中的地址 - 通常被稱為物理地址。 與邏輯地址對應的所有物理地址的集合稱為物理地址空間。
  2. 編譯時和加載時地址綁定方法生成相同的邏輯和物理地址。 但是,在執行時地址綁定方案中,邏輯和物理地址空間不同。
  3. 用戶程序永遠不會看到物理地址。 程序創建一個指向邏輯地址的指針,例如346,將其存儲在內存中,對其進行操作,將其與其他邏輯地址進行比較 - 全部為數字346.只有當邏輯地址用作內存地址時,它才會重新定位到內存地址。基地/搬遷登記冊。 稱為存儲器管理單元(MMU)的存儲器映射硬件設備將邏輯地址轉換為物理地址。
  4. 邏輯地址範圍從0到最大。 生成邏輯地址的用戶程序認為該進程在0到max的位置運行。 邏輯地址在使用之前必須映射到物理地址。 對於基址/重定位寄存器值R,物理地址的範圍從(R + 0)到(R + max)。
  5. 例: 使用內存管理單元(MMU)和重定位/基址寄存器從邏輯地址映射到物理地址重定位/基址寄存器中的值被添加到用戶進程生成的每個邏輯地址,在它被發送到內存時,生成相應的物理地址。 在上圖中,基礎/重定位值是14000,然後用戶訪問位置346的嘗試被映射到14346。

在我的記憶中,物理地址是顯式的,在內存中設置為石頭地址,而邏輯地址由基指針和偏移組成。

原因是你基本上已經指定了。 它不僅允許將程序和進程分段為線程和數據,而且還允許動態加載這些程序,並允許至少偽並行,而不需要在存儲器中進行任何實際的指令交織。


邏輯Vs物理地址空間

由CPU生成的地址通常被稱為邏輯地址,而存儲器單元所看到的地址,即加載到存儲器的存儲器地址寄存器中的地址,通常被稱為物理地址。編譯時間和加載時間地址綁定生成相同的邏輯和物理地址。但是,執行時地址綁定方案導致不同的邏輯和物理地址。

程序生成的所有邏輯地址集稱為邏輯地址空間,而與這些邏輯地址對應的所有物理地址集都是物理地址空間。現在,從虛擬地址到物理地址的運行時映射是通過硬件設備稱為內存管理單元。在映射基址寄存器的情況下稱為重定位寄存器。重定位寄存器中的值被添加到用戶進程發送到內存時生成的地址。讓我們理解在這種情況下借助於示例:如果基址寄存器包含值1000,則用戶嘗試尋址位置0被動態地重新定位到位置1000,對位置346的訪問被映射到位置1346。

用戶程序永遠不會看到真實的物理地址空間,它總是處理邏輯地址。因為我們有兩種不同類型的地址邏輯地址在範圍內(0到最大)和物理地址在範圍內(R到R + max)其中R是重定位寄存器的值。用戶只生成邏輯地址,並認為進程在0到max的位置運行。從上面的文本可以清楚地看出用戶程序只提供邏輯地址,這些邏輯地址必須映射使用前的物理地址。


邏輯地址是對存儲器位置的引用,與當前分配給存儲器的數據無關。 物理地址或絕對地址是主存儲器中的實際位置。

這是Stallings的第7.2章。


邏輯地址是項目(存儲器單元,存儲元件,網絡主機)從執行的應用程序的角度看起來駐留的地址。


邏輯地址: - CPU生成的邏輯地址。 當我們將問題提交給計算機時,我們的計算機通過邏輯地址將問題傳遞給處理器,我們沒有看到這個地址稱為邏輯地址。

物理地址: - 當我們的處理器創建進程並解決問題時,我們通過稱為物理地址的地址將數據存儲在輔助存儲器中