天天看點

實模式與保護模式詳解二:位址映射

論8086如何尋址1MB實體空間

  1. 8086内部的寄存器都是16位的,但它有20位位址總線,可以尋址1MB的實體空間
  2. 将1MB的儲存器按64KB分段,為什麼按64KB分是因為16位最大的尋址範圍就是下216B=64KB。
  3. 設定4個段寄存器CS,DS,SS,ES(一開始隻有四個段寄存器),儲存目前可使用段的段首址,如果各段的段首址都是16的倍數,那麼這些段首址的後四位都為0,則段首址的高16位正好裝入一個段寄存器中
  4. 通路儲存單元時,CPU根據操作的性質和要求,選擇合适的段寄存器,将裡面的内容左移4位,恢複了段首址原來的值,在于本段中某一待通路儲存單元的偏移位址相加,則得到該機關的20位實體位址

實模式下的位址映射

在實模式下,32CPU與8086一樣,隻能尋址1MB實體儲存空間并采用分段使用的方式,每段大小不超多64KB,段首位址和段内偏移位址都是用16位表示。這樣1MB的儲存空間最少可分為16段,每段最多64KB。

在某一時刻,CPU可以通路6個段:代碼段,資料段,堆棧段,和三個附加資料段,對應的段寄存器分别為CS,DS,SS,ES,FS,GS

在實模式下,邏輯位址與實體位址是一一對應的,使用者程式與系統程式是在同一狀态下的

注意:

  1. 程式中的每個段大小不定,但不可以超過64KB,具體位置由作業系統決定
  2. 分段不是唯一的,一片儲存單元可以屬于一個段也可以屬于多個段
  3. 彙程式設計式中,使用者要将資料段首址置入DS或ES,FS和GS中,而CS,SS由系統自動置入

保護模式下的位址映射

特權級

保護模式下建立了四個特權級,0級最高,3級最低,程式中的每個段都有一個特權級,任何時候,CPU都在同一個特權級下運作,成為目前特權級。低特權級的程式無法通路高特權級的資料。

0級:作業系統核心

1級:作業系統服務程式

2級:系統擴充程式

3級:應用程式

描述符

在保護模式下,每個段的資訊遠遠多于實模式下的位址方式,每個段中的資訊除了段基址外,還有段的大小,段的類型,特權級,是否被執行過,是否能被讀/寫等多種資訊。系統通過8位元組的描述符來儲存這些資訊。

實模式與保護模式詳解二:位址映射

屬性的描述

P:Present,是否在記憶體中【1在】

G:段的粒度(段長計量機關)

G=0, 位元組 (段最長1M)

G=1 ,頁面4KB(段最長4G)

DPL: Descriptor Privilege Level 描述符特權級别

S: 描述符的類型

【資料段/代碼段S=1】

【系統描述符/門描述符S=0】

TYPE : 描述段的存取類型或類型(與S有關)

【讀,寫,擴充,通路标志等及其組合】

實模式與保護模式詳解二:位址映射

描述符表

描述符表是描述符的集合,存放在指定的一段記憶體中,有三種描述符表:局部描述符表,全局描述符表和中斷描述符表

局部描述符表:

每一個執行程式都有一個局部描述符表LDT,包含該程式中各段的描述符,一個LDT就是一個系統段,最大可為64KB,存放8192個描述符,由于每個程式有自己的局部描述符表,用各自的代碼和資料,是以由此實作程式之間的隔離

全局描述符表:

隻有一個,最大可謂64KB,存放8192個描述符,包含有系統各任務共享段的描述符,如作業系統所使用的代碼段,資料段,堆棧段的描述符,還有所有系統段的描述符,如各個任務LDT段的描述符

為了支援多任務來回切換,系統中的每一個任務都建有一個任務狀态段TSS,TSS也屬于系統段,該段的描述符也竄訪在全局描述符表中。TSS用于儲存任務挂起時現場的全部寄存器,堆棧,位址映射,連結狀态,I/O允許圖首址等完整印象

中斷描述符表:

中斷描述符表IDT最大可為2KB,含有指向多大256個中斷服務程式的位置的描述符

段選擇符和描述符寄存器

保護模式下,段寄存器中不在儲存段的開始位址,而是指出從描述符表中選擇相應段描述符的方式,段寄存器中此時的内容稱作段選擇符(選擇子)

選擇子(Selector):

選擇子用于選擇GDT/LDT中的某個描述符。

構成 :

  • 索引域(INDEX):13位
  • TI域(Table Indicator):1位
  • 特權級别域(Request Privilege Level):2位
實模式與保護模式詳解二:位址映射

索引域(INDEX)

給出段描述符在GDT或LDT中的位置。

保護模式下實體位址的形成

  1. 根據段寄存器中描述符的引索值、TI、以及RPL值,從描述符表中選擇出描述符,檢查合格後,将描述符送入對應的描述符高速緩存寄存器,以後對該段的通路均通過此寄存器進行
  2. 當需要對該段的儲存單元進行通路時,從描述符高速緩存寄存器中取出段基址,與存放在EIP,ESP或某一訓示器中的偏移位址相加,形成32位線性位址
  3. 如果不選擇分頁,線性位址即為實體位址,如果選擇分頁,通過分頁計制,将線性位址映射為實體位址
    實模式與保護模式詳解二:位址映射

繼續閱讀