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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

GDT,LDT,GDTR,LDTR 详解

發布時間:2023/12/18 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GDT,LDT,GDTR,LDTR 详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 基本概念

??所謂工作模式,是指CPU的尋址方式、寄存器大小、指令用法和內存布局等。

  • 實模式
    ??段基址:段內偏移地址”產生的邏輯地址就是物理地址,即程序員可見的地址完全是真實的內存地址。

  • 保護模式
    ??在保護模式中,內存的管理模式分為兩種——段模式和頁模式。其中頁模式也是基于段模式的。也就是說,保護模式的內存管理模式事實上是:純段模式和段頁式。進一步說,段模式是必不可少的,而頁模式則是可選的——如果使用頁模式,則是段頁式,否則這是純段模式。

  • GDT
    ??全局描述符表GDT(Global Descriptor Table)在整個系統中,全局描述符表GDT只有一張(一個處理器對應一個GDT),GDT可以被放在內存的任何位置,但CPU必須知道GDT的入口,也就是基地址放在哪里,Intel的設計者門提供了一個寄存器GDTR用來存放GDT的入口地址,程序員將GDT設定在內存中某個位置之后,可以通過LGDT指令將GDT的入口地址裝入此寄存器,從此以后,CPU就根據此寄存器中的內容作為GDT的入口來訪問GDT了。GDTR中存放的是GDT在內存中的基地址和其表長界限。

  • GDTR

??存放GDT的入口地址。

  • 段選擇子
    ??GDTR訪問全局描述符表是通過“段選擇子”(實模式下的段寄存器)來完成的。段選擇子是一個16位的寄存器(同實模式下的段寄存器相同)里面有描述符索引(index)、TI、請求特權級(RPL)。
  • index(描述符索引)部分表示所需要的段的描述符在描述符表的位置
  • 段選擇子中的TI值只有一位0或1,0代表選擇子是在GDT選擇,1代表選擇子是在LDT選擇。
  • 請求特權級(RPL)則代表選擇子的特權級,共有4個特權級(0級、1級、2級、3級)。
    • 局部描述符表LDT(Local Descriptor Table)
      ??局部描述符表可以有若干張,每個任務可以有一張。我們可以這樣理解GDT和LDT:GDT為一級描述符表,LDT為二級描述符表。如圖

      ??LDT和GDT從本質上說是相同的,只是LDT嵌套在GDT之中。LDTR記錄局部描述符表的起始位置,與GDTR不同,LDTR的內容是一個段選擇子。由于LDT本身同樣是一段內存,也是一個段,所以它也有個描述符描述它,這個描述符就存儲在GDT中,對應這個表述符也會有一個選擇子,LDTR裝載的就是這樣一個選擇子。

    2 實例

    2.1 訪問GDT

    當TI=0時表示段描述符在GDT中,如上圖所示:
    ①先從GDTR寄存器中獲得GDT基址。
    ②然后再GDT中以段選擇器高13位位置索引值得到段描述符。
    ③段描述符符包含段的基址、限長、優先級等各種屬性,這就得到了段的起始地址(基址),再以基址加上偏移地址yyyyyyyy才得到最后的線性地址。

    2.2 訪問LDT

    當TI=1時表示段描述符在LDT中,如上圖所示:

    ①還是先從GDTR寄存器中獲得GDT基址。
    ②從LDTR寄存器中獲取LDT所在段的位置索引(LDTR高13位)。
    ③以這個位置索引在GDT中得到LDT段描述符從而得到LDT段基址。
    ④用段選擇器高13位位置索引值從LDT段中得到段描述符。
    ⑤段描述符符包含段的基址、限長、優先級等各種屬性,這就得到了段的起始地址(基址),再以基址加上偏移地址yyyyyyyy才得到最后的線性地址。

    參考資料:

    GDT,LDT,GDTR,LDTR 詳解,包你理解透徹
    實模式與保護模式

    總結

    以上是生活随笔為你收集整理的GDT,LDT,GDTR,LDTR 详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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