minix中的GDT,LDT,IDT和TSS

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

原文地址:https://www.cnblogs.com/jun14/p/2835637.html