gpt4 book ai didi

x86 - LDT 和 GDT 在 intel x86 中的使用有何不同?

转载 作者:行者123 更新时间:2023-12-02 05:42:20 32 4
gpt4 key购买 nike

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

看着这个blog差异描述如下:
1. GDT在系统中只有一份,而LDT可以有多个
2. GDT在执行过程中可能不会改变,LDT在任务切换时经常改变
3. LDT的条目保存在GDT中。 GDT 和 LDT 中的条目具有相同的结构。

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

最佳答案

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

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

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

关于x86 - LDT 和 GDT 在 intel x86 中的使用有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34243432/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com