在英特尔x86中,LDT和GDT的使用有何不同?

在英特尔x86中,LDT和GDT的使用有何不同?,x86,gdt,X86,Gdt,我知道这两个表都包含段描述符,提供每个段的访问详细信息,包括基址、类型、长度、访问权限等 看看这一点,我们可以将差异描述如下: 1.GDT在系统中只有一个副本,而LDT可以有多个副本 2.GDT在执行期间可能不会更改,而LDT在任务切换时经常更改 3.LDT的条目保存在GDT中。GDT和LDT中的条目具有相同的结构 系统在实际程序中如何以不同方式使用这些结构?GDT用于存储包含监控代码的内存块,如中断/异常处理程序,以及内核本身使用的块,因此它们是系统范围的 OTOH,多任务操作系统必须将组成特

我知道这两个表都包含段描述符,提供每个段的访问详细信息,包括基址、类型、长度、访问权限等

看看这一点,我们可以将差异描述如下: 1.GDT在系统中只有一个副本,而LDT可以有多个副本 2.GDT在执行期间可能不会更改,而LDT在任务切换时经常更改 3.LDT的条目保存在GDT中。GDT和LDT中的条目具有相同的结构


系统在实际程序中如何以不同方式使用这些结构?

GDT用于存储包含监控代码的内存块,如中断/异常处理程序,以及内核本身使用的块,因此它们是系统范围的

OTOH,多任务操作系统必须将组成特定任务的内存块存储在内存中的位置。为此,每个任务可以使用单独的LDT。切换过程涉及将不同的LDT加载到LDTR寄存器中


每个任务都可以看到其描述符在当前LDT或GDT中引用的内存块。对于用户模式内存访问,它将使用本地描述符。对于系统调用,它可以使用各种技术,例如INT指令。此指令有效地从GDT跳转到驻留在描述符中的代码。我不记得调用门是特定于GDT的,还是也可以用于LDT。

我们能理解GDT是分页系统中内核映射的等价物吗?