關於「實體地址 段基址x16 段內偏移位址」

2021-07-09 19:52:55 字數 510 閱讀 4048

以8086為例。

1、段基址和段內偏移位址都是16位(8086僅有16位資料匯流排);實體地址是20位(8086有20位位址匯流排)。

2、由於段內偏移位址是16位,所以每個段最大2^16,即0xffff。

3、段基址也是16位的,它放在乙個20位的資料中,則低4位一定為0。

4、公式中以十進位制的眼光看,確實不好理解,然則以十六進製製看,再結合下圖,就易懂了

00000  |---------|

|           |

0ffff  |_____|

10000  |            |

|            |

1ffff  |---------|

以10000-1ffff為例,段基址是1000,左移4位即成了10000,加上16位的偏移位址,正好形成10000-1ffff間的某個實體地址。

用段選擇子到段描述符表中取得段基址,再加上偏移位址,得到的是線性位址(段式記憶體管理),還不是實體地址,線性位址被劃分為4k的頁,

實體地址 線性位址 虛擬位址(1)

實體地址 線性位址 虛擬位址 os充分挖掘硬體潛能。os開發者需要知道物理記憶體的位址也需要提供一套機制為應用程式設計師提供另乙個記憶體空間,這個記憶體空間的大小可以和實際的物理記憶體大小之間沒有關係。實體地址 物理記憶體條所提供的記憶體空間,每個記憶體單元的實際位址就是實體地址。線性位址 一段連續...

關於虛擬位址,線性位址,邏輯位址還有實體地址的區分

本文主要是參考linux0.11核心的32位位址區分,不過於現階段的64位位址區分差別不太大,理解linux0.11,有助於理解現階段的64位體系下位址的概念。注意x86體系是小端存放資料 理位址上 如果開啟分頁機制,還需要經過分頁才能對應上實體地址 虛擬地 位址所剩下的位址就是邏輯位址。應用程式設...

關於線性位址到實體地址的轉換緩衝

為了能將線性位址快速地轉換到實體地址,tlb translation lookaside buffer 緩衝了當前經常被使用的線性位址對應的實體地址。多個cpu的tlb不需要進行同步,因為 不同cpu上執行的是不用的程序,也就是說他們相同的線性位址對應的實體地址是不同的,所以不需要進行同步。當cpu...