是否有多个 LDT?



以下维基教科书页面指出:

GDT 包含指向每个 LDT 的指针。

我目前正在学习细分,这意味着有多个 LDT。据我所知,只有一个:我读过的多个参考文献都提到了"LDT",这意味着只有一个。引用的页面的含义是否正确?它的意思是"LDT条目"吗?

lgdt指令(用于设置 GDT(将m16&32/64作为操作数,而lldt指令采用r/m16操作数。

破译行话,这意味着lgdt会获取指向保存GDT大小和基址的结构的指针。 另一方面,lldt采用区段选择器 - 此区段选择器必须将TI(表指示器(字段设置为 0 以指向GDT
长话短说,LDT不是像GDT那样使用基址和大小设置的,而是在 GDT 中使用段描述符 - 因此这取决于GDT

由提供给lldt的段选择器选择的段的类型必须为LDT(十进制值 2(。

如果上述任何条件失败,则会引发 #GP。


对于给定的硬件线程和给定的时间点,只能有一个LDT和一个GDT处于活动状态。
但是,操作系统可以根据自己的策略(例如,针对特定进程(更改活动LDTGDT(很少(。

但是,操作系统很少完全更改GDT,通常它会用所需的所有段描述符(包括所有必要的LDT(预先填充它。
在任何情况下,GDT都可以容纳多个段描述符LDT但每个硬件线程在任何给定时间只有一个处于活动状态。

LDTR 一次包含一个活动 LDT 的地址。GDT 可以包含多个 LDT 的条目,这些条目根据需要一次加载一个到 LDTR 中。

相关内容

  • 没有找到相关文章

最新更新