日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实模式与保护模式详解二:地址映射

發布時間:2025/6/17 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实模式与保护模式详解二:地址映射 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

論8086如何尋址1MB物理空間

  • 8086內部的寄存器都是16位的,但它有20位地址總線,可以尋址1MB的物理空間
  • 將1MB的儲存器按64KB分段,為什么按64KB分是因為16位最大的尋址范圍就是下216B=64KB。
  • 設置4個段寄存器CS,DS,SS,ES(一開始只有四個段寄存器),保存當前可使用段的段首址,如果各段的段首址都是16的倍數,那么這些段首址的后四位都為0,則段首址的高16位正好裝入一個段寄存器中
  • 訪問儲存單元時,CPU根據操作的性質和要求,選擇合適的段寄存器,將里面的內容左移4位,恢復了段首址原來的值,在于本段中某一待訪問儲存單元的偏移地址相加,則得到該單位的20位物理地址
  • 實模式下的地址映射

    在實模式下,32CPU與8086一樣,只能尋址1MB物理儲存空間并采用分段使用的方式,每段大小不超多64KB,段首地址和段內偏移地址都是用16位表示。這樣1MB的儲存空間最少可分為16段,每段最多64KB。
    在某一時刻,CPU可以訪問6個段:代碼段,數據段,堆棧段,和三個附加數據段,對應的段寄存器分別為CS,DS,SS,ES,FS,GS

    在實模式下,邏輯地址與物理地址是一一對應的,用戶程序與系統程序是在同一狀態下的


    注意:

  • 程序中的每個段大小不定,但不可以超過64KB,具體位置由操作系統決定
  • 分段不是唯一的,一片儲存單元可以屬于一個段也可以屬于多個段
  • 匯編程序中,用戶要將數據段首址置入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中的位置。

    TI域(Table Indicator)
    TI=1,從LDT中選擇相應描述符, TI=0,從GDT中選擇描述符。

    特權級別域(Request Privilege Level) 請求者最低特權級的限制。 只有請求者特權級高于或等于DPL,對應段才能被存 取,實現段的保護。

    保護模式下物理地址的形成

  • 根據段寄存器中描述符的引索值、TI、以及RPL值,從描述符表中選擇出描述符,檢查合格后,將描述符送入對應的描述符高速緩存寄存器,以后對該段的訪問均通過此寄存器進行
  • 當需要對該段的儲存單元進行訪問時,從描述符高速緩存寄存器中取出段基址,與存放在EIP,ESP或某一指示器中的偏移地址相加,形成32位線性地址
  • 如果不選擇分頁,線性地址即為物理地址,如果選擇分頁,通過分頁計制,將線性地址映射為物理地址
  • 總結

    以上是生活随笔為你收集整理的实模式与保护模式详解二:地址映射的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。