以下Wikibooks page状态:
GDT包含指向每个LDT的指针。
我目前正在学习分段,这意味着存在多个LDT。据我所知只有一个:我读过的多个引用都指向“ LDT”,这意味着只有一个。所引用页面的含义正确吗?这是“ LDT输入”的意思吗?
答案 0 :(得分:3)
LDTR一次包含一个活动LDT的地址。 GDT可以包含多个LDT的条目,并根据需要一次将其加载到LDTR中。
答案 1 :(得分:3)
用于建立GDT的lgdt
指令采用m16&32/64
作为操作数,而lldt
指令采用r/m16
操作数。
破译行话意味着lgdt
会使用指向保存GDT
大小和基地址的结构的指针。
另一方面,lldt
使用一个段选择器-该段选择器必须将TI
(表格指示器)字段设置为0,以指向{{ 1}} 。
长话短说,GDT
的基础地址和大小不像LDT
,而是在GDT中设置了段描述符-因此它取决于GDT
。
由段选择器指定给GDT
的段类型必须为 LDT 类型(十进制值2)。
如果以上任何条件失败,则会引发#GP。
对于给定的硬件线程和给定的时间点,只能有一个lldt
和一个LDT
活动。
但是,操作系统可以稍后根据其自己的策略(例如,针对特定进程)更改活动的GDT
或LDT
(稀有)。
但是,操作系统很少会完全更改GDT
,通常会用所需的所有段描述符(包括所有必要的GDT
)预先填充它。
无论如何,LDT
可以容纳多个GDT
段描述符-但在每个给定的时间,每个硬件线程只有一个处于活动状态。