Linux 線性位址,邏輯位址和虛擬位址的關係?

時間 2021-06-03 00:00:36

1樓:菜鳥程式設計師

根據大學作業系統教材講的

如果是沒有使用虛擬記憶體的頁式/段式系統,沒有虛擬位址這一說法,邏輯位址一定直接可以轉換為實體地址,因為程序都在記憶體中儲存。

如果是使用了虛擬記憶體的頁式/段式系統,就有虛擬位址了,因為不一定在記憶體中儲存,得到的程序位址不一定能在記憶體上找到,因為頁表上對應的塊號可能為空。

至於線性位址,僅存在於段頁式,邏輯位址查詢段表得到線性位址,線性位址查詢頁表得到實體地址

2樓:黃小明

linux核心裡面明確說明了,虛擬位址就是線性位址。

邏輯位址的偏移量欄位的值與相應的線性位址(虛擬位址)的值總是一致的。

3樓:原建業

關於幾個位址之間的關係,最高贊已經說的很清楚了。

我指出提問中的乙個錯誤:分段和實體地址沒關係。邏輯位址經過分段單元轉換為線性位址,線性位址經過分頁單元對映為實體地址。

建議從虛向實來理解,程式中直接用的是邏輯位址,先過分段單元再過分頁單元最後轉變為實體地址。

4樓:凡柯

邏輯位址和虛擬位址是乙個意思叫法不同而已編譯器產生的位址邏輯(虛擬)位址經過分段轉化為線性位址

線性位址經過分頁轉為實體地址

在linux中從虛擬(邏輯)位址到線性位址這一過程使用的段描述符的起始位址為0

也就是說在數值上虛擬位址和轉化後的線性位址相等只是為了配合x86的硬體機制和cpu狀態轉化(使用者態和核心態即cs暫存器的後兩位表示)

計算機為什麼要設定線性位址,從邏輯位址到線性位址再到實體地址?

Sinaean Dean 首先,並不是所有的CPU都有邏輯位址。邏輯位址是段式記憶體管理單元的輸入的,有些CPU的,比如說典型的ARM是沒有段式記憶體管理單元的。所以linux為了相容所有CPU,只使用了頁式記憶體管理單元,對段式記憶體管理單元只是敷衍了一下,讓它的所有輸入與輸出相等。然後,GDT,...

各種指令定址方式,最後得來的位址是邏輯位址還是實體地址

聽說過缸中大腦麼?你如何知道你現在是醒的還是做夢中。你完全可以在做夢中再做夢。一樣的道理,計算機是可以被計算機模擬的。而 物理記憶體 也是可以用別的裝置模擬的。你完全可以在iPhone上執行乙個BOCHS,裡面執行dos windows,此時所有對於dos windows來說物理的記憶體,顯然都是虛...

能不能簡單的講解一下邏輯位址和實體地址 邏輯定址和物理定址 的區別?

趙志偉 4096B 2 12B 16位定址總共2 16B 分頁儲存。共分的頁 2 16 2 12 2 4 16 共分16頁。第0頁的位址規模 0 FFFH 第1頁的位址規模 1000H 1FFFH第2頁得位址規模 2000H 2FFFH.第11頁B000H BFFFH 第15頁F000H FFFFH...