勵志

勵志人生知識庫

全局描述符表

全局描述符表(Global Descriptor Table,簡稱GDT)是計算機體系結構中的一個概念,特別是在x86和x86_64架構的保護模式下起著重要作用。GDT是一個數據結構,用於定義記憶體段的屬性,如基地址、界限、許可權等。在保護模式下,對記憶體的訪問仍然使用段地址加偏移地址的方式,但每個段在訪問前必須先在GDT中定義。

GDT由多個描述符組成,每個描述符占用8個位元組。描述符中包含了段的基本信息,如基地址(Base)、段界限(Limit)、是否存在(P)、特權等級(DPL)、段類型(S和TYPE)等。GDT在記憶體中有一個起始線性地址,這個地址由GDTR(Global Descriptor Table Register)暫存器提供。GDTR暫存器分為兩部分:32位的線性基地址和16位的表界限。表界限在數值上等於表的大小(總位元組數)減去1。理論上,GDT可以包含最多8192個描述符,但實際上數量會根據需要而定。

GDT的基地址和表界限由GDTR暫存器提供,而這個暫存器在處理器剛上電時默認為0。在保護模式初始化過程中,必須給GDTR載入一個新值。GDT可以放在記憶體中的任何地方,但通常定義在1MB以下的記憶體範圍中,以便在進入保護模式前定義。在實際套用中,可以在進入保護模式後重新定義GDT的位置。

總結來說,GDT是一個在x86和x86_64架構保護模式下用於定義記憶體段屬性的表,它由多個描述符組成,每個描述符包含段的基本信息。GDT的位置由GDTR暫存器指定,而這個暫存器在處理器初始化時需要被載入正確的值。