X86 是否有多个LDT?

X86 是否有多个LDT?,x86,x86-64,hardware,intel,gdt,X86,X86 64,Hardware,Intel,Gdt,下列国家: GDT包含指向每个LDT的指针 我目前正在学习分割,这意味着有多个LDT。就我所知只有一个:我读过的多个参考文献都提到了LDT,这意味着只有一个。引用页面的含义是否正确?它是指LDT条目吗?LDTR一次包含单个活动LDT的地址。GDT可以包含多个LDT的条目,这些条目根据需要一次加载到LDTR中。LDTR一次包含单个活动LDT的地址。GDT可以包含多个LDT的条目,这些LDT根据需要一次加载到LDTR中。用于设置GDT的指令采用m16和32/64作为操作数,而指令采用r/m16操作数

下列国家:

GDT包含指向每个LDT的指针


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

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

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

用于设置GDT的指令采用m16和32/64作为操作数,而指令采用r/m16操作数

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

由给定给lldt的段选择器选择的段类型必须为LDT decimal value 2类型

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

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

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

当用于设置GDT的指令采用m16&32/64作为操作数时,该指令采用r/m16操作数

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

由给定给lldt的段选择器选择的段类型必须为LDT decimal value 2类型

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

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

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

操作系统可以为系统中每个正在运行的任务或正在运行的线程指定单独的LDT。如果由于性能原因不建议使用硬件任务切换,CPU甚至会跟踪任务切换上的LDT保存/恢复操作系统可以为系统中的每个正在运行的任务或正在运行的线程指定单独的LDT。如果由于性能原因不建议使用硬件任务切换,CPU甚至会跟踪任务切换上的LDT保存/恢复值得一提的是,使用分页的主流操作系统通常不会使用单独的LDT。内核对所有任务都使用相同的共享LDT,因此不必在上下文切换中更改它。值得一提的是,使用分页的主流操作系统通常不会使用单独的LDT。内核对所有任务使用相同的共享LDT,因此不必在上下文切换中更改它。