据我所知,两个表都包含段描述符,它们为每个段提供访问详细信息,包括基址,类型,长度,访问权限等。
查看此blog描述的差异如下:
1. GDT在系统中只有一个副本,而LDT可以有多个副本
2.执行期间GDT可能不会改变,当任务切换时LDT经常会改变
3.输入LDT保存在GDT中。 GDT和LDT中的条目具有相同的结构。
系统如何在实际程序中以不同方式使用这些结构?
答案 0 :(得分:3)
GDT用于存储包含管理程序代码的内存块,例如中断/异常处理程序,以及内核本身使用的块,因此它们是系统范围的。
每个任务都可以看到其描述符的内存块,在当前LDT中引用,或者在GDT中引用。对于用户模式内存访问,它将使用本地描述符。对于系统调用,它可以使用各种技术,例如INT指令。该指令有效地跳转到驻留在GDT描述符中的代码。我不记得调用门是否特定于GDT,或者它们也可以在LDT中使用。