勵志

勵志人生知識庫

段描述符表

全局描述符表(GDT)和局部描述符表(LDT)是x86和x86_64架構中用於存儲段描述符的特殊記憶體段。段描述符用於告訴處理器段的基地址、界限、屬性等信息。

全局描述符表(GDT):

存放全局段描述符,如作業系統核心的代碼段和數據段、局部描述符表的段描述符、任務狀態段TSS的段描述符、以及一些門的描述符。

GDT在整個系統中是唯一的,使用GDTR暫存器來存放其線性基地址和段界限。

當需要使用LDT或TSS等時,可以通過選擇子來訪問GDT,並將相應的描述符載入到LDTR或TR暫存器中。

局部描述符表(LDT):

存放局部段描述符,即任務私有部分的段的描述符。

每個任務可以有自己的LDT,處理器在GDT中安裝每個LDT的描述符以便追蹤。

使用LDT時,通過選擇子訪問GDT來獲取LDT的描述符,然後將其載入到LDTR暫存器。

段描述符的類型由S位決定,S=0時表示系統段或門描述符,S=1時表示代碼段或數據段描述符。系統段和門描述符的TYPE域規定與代碼段和數據段描述符的TYPE域規定不同。

在系統初始化過程中,最初提供的和使用的選擇子是TI位為0的,即索引GDT的選擇子。系統初始化完成後,載入和重定位用戶程式時,會使用TI位為1的選擇子,即索引LDT的選擇子。