勵志

勵志人生知識庫

局部描述符表

局部描述符表LDT,Local Descriptor Table)是80386微處理器中的一種數據結構,用於存儲和組織任務相關的段描述符。每個任務都有自己的局部描述符表,它包含了該任務自己的代碼段、數據段和堆疊段的描述符,以及該任務所使用的一些門描述符,如任務門和調用門描述符等。當任務切換時,系統會切換當前的局部描述符表。

在80386中,描述符表通常被組織成線性表,這種線性表稱為描述符表。全局描述符表(GDT,Global Descriptor Table)和中斷描述符表(IDT,Interrupt Descriptor Table)在整個系統中只有一張,而局部描述符表可以有若乾張,每個任務可以有一張。

為了在GDT中找到LDT的描述符,系統使用一個被稱為「段選擇符」(Segment Selector)的16位數,這個段選擇符在GDT中用於尋找LDT描述符。LDT的段基址和段限由LDT描述符表示,而這個描述符本身也存放在全局描述符表中。

每個任務的局部描述符表LDT本身形成一個特殊的數據段,這樣的特殊數據段最多可包含8K(8192)個描述符。通過LDT,可以使各個任務私有的各個段與其它任務相隔離,從而達到受保護的目的。通過GDT,可以使各任務都需要使用的段能夠被共享。例如,任務A和任務B可以通過各自的局部描述符表LDTALDTB隔離它們所私有的代碼段和數據段,但它們通過全局描述符表GDT共享代碼段和數據段。