主要包括GDT LDT IDT 总结
描述符表(descriptor table)
描述符表主要包括GDT,LDT和IDT。保存描述符。
GDT(The global descriptor table)全局描述符表,每一个系统只能有一个,所有的程序和任务共享使用。GDT中第一个描述符不被使用,为空描述符。通过指令lgdt将GDT的入口地址加载到GDTR寄存器中。
LDT(The local descriptor tables)局部描述符表,可以定义多个,可以被隔离的任务单独定义也可以被多个任务共享。LDT在系统中作为一个段存储,通过指令lldt将段描述符加载到LDTR寄存器中,GDT必须包含LDT段的描述符。如果系统支持多个LDTs,GDT应该包含不同LDT的描述符。LDT嵌套在GDT中,如下图。
IDT(Interrupt descriptor table)中断描述符表,保存256个门描述符。门描述符包括中断门描述符、陷阱门描述符和任务门描述符,结构如下:
门描述符和段描述符的关系之怎样的呢?以调用中断处理程序为例说明,如下图:
由中断向量号在IDT里找到对应的中断门描述符,通过中断门描述符中的段选择符字段在GDT或LDT中找到存放中断处理程序代码的目的代码段的段描述符,由代码段的描述符中基地址字段和中断门描述符中偏移字段就可以访问目的代码段。
good luck!