操做系統——Linux內核徹底註釋011c-3.0

4.2保護模式和內存管理(80X86)

4.21 內存尋址

物理內存

計算機的物理內存是字節的線型數組,每一個字節具備一個惟一地物理地址。html

地址總線32位,共2^32個不一樣的物理地址。即內存物理地址空間有4G,總共能夠尋址4G字節的物理內存。數組

 

小端法

 

段尋址技術

爲了進行內存尋址,80X86使用了段尋址技術。尋址經過段地址+段內偏移地址spa

段地址:16位,由端選擇符指定操作系統

段內偏移地址:32位,故一個段最大長度可達4G。htm

程序中由16位的段和32位的段偏移構成48位地址,稱爲一個邏輯地址(虛擬地址)。它惟一肯定了一個數據對象的段地址和段內偏移地址。對象

 

6個存放段選擇符的段寄存器

CS、DS、ES、SS、FS、GSblog

CS:代碼段,在任何指定時刻由CS尋址的段稱爲當前代碼段。此時EIP寄存器中包含當前代碼段內下一條要執行指令的段內偏移地址。所以要執行指令的地址可表示爲CS:[EIP]。內存

段間控制轉移指令能夠被用來爲CS、EIP賦新值,將執行爲之改到其餘代碼段,實現不一樣段中程序的控制傳遞。get

SS:堆棧段,棧頂由ESP寄存器指定,所以堆棧頂地址SS:[ESP]。it

另外4個段寄存器是通用段寄存器,當指令中沒有指定所操做數據的段時,DS做爲默認的數據段寄存器。

 

指令尋址方式

通俗講就是指令中尋找操做數地址的方式。

指令的偏移量由三部分相加組成:基地址寄存器、變址寄存器和一個偏移常量。即:

偏移地址 = 基地址 + (變址 * 比例因子)+偏移常量

8086指令尋址方式的介紹:http://www.javashuo.com/article/p-wvaxbakd-gx.html

4.2.2 地址變換

保護

防止一個任務訪問另外一個任務或操做系統的內存區域。地址變換能夠讓某些地址不被任何邏輯地址映射,因此地址變換過程也提供內存保護功能。

 

地址變換

程序中的地址是由兩部分構成的邏輯地址,不能直接用於訪問物理內存。

須要將邏輯地址轉爲物理地址。

 

將邏輯地址轉爲物理地址——分段和分頁機制

分段機制和分頁機制是兩種普遍使用的地址變換技術。

都使用駐留在內存中的表來指定變換信息,這些表只能由操做系統訪問,以防應用程序篡改。

映射過程:

第一階段:分段機制。邏輯地址→處理器可尋址內存空間(稱爲線性地址空間)中的地址

第二階段:分頁機制。線性地址→物理地址

  • 注:第二階段是選用的,若是無第二階段,則第一階段直接將邏輯地址映射爲物理地址。

  • 物理地址空間:地址總線能產生的地址範圍

 

 

 

相關文章
相關標籤/搜索