1.全局描述符表(Global Descriptor Table):
GDT表项指向LDT。
GDT对所有进程均可用。
GDT记录OS使用的内存区域的段描述符。
整个系统只定义一个GDT,其中存放有允许多个进程共同访问的那些段的描述符。
2.局部描述符表(Local Descriptor Table):
每个进程的局部空间的段的所有段描述符集中存放在一张表中,这张表为该进程的局部描述符表(LDT)。
每个进程的LDT通常存放在核心空间中,系统也将它看成是一个段,因此也需要一个段描述符来给出其在内存的基址、长度等信息,这类描述符被称为LDT描述符,它们被存放在GDT中。
当前正在执行的进程,其在GDT中的LDT描述符位置,由CPU的LDTR寄存器指出。
3.中断描述符表(Interrupt Descriptor Tabel):
各类中断的中断处理程序的相关信息,是通过一个控制段描述符来描述的,该描述符叫中断门,其描述符类型为E。
所有中断门集中保存在一张表中,该表即中断描述符表IDT,其作用类似于实模式下的中断向量表。
CPU寄存器IDTR中存放有IDT的限长和物理基址,从而可以找到系统使用的IDT。
4.任务状态段(Task State Segment):
每个任务都有一个任务状态段TSS,描述任务状态段的描述符称为TSS描述符(类型 = 1、3、9、 B)
所有任务的TSS描述符均被存放在GDT中。
系统可通过TR寄存器在GDT中找到正在执行的任务的TSS描述符,从而找到相应任务的TSS。
任务状态段TSS中包含:
1.任务的CPU现场(通用寄存器、段选择寄存器、指令指针、标志寄存器等);
2.特权级分别为0、1、2时的堆栈段选择符和栈顶指针;
3.该任务被调用时,前一个任务TSS的返回连接选择符;
4.I/O允许位图等。
参考自梁老师的PPT