关于 GDT 和流程

about GDT and processes

GDT 是如何反映在进程的线性 space 上的(如果我理解正确,GDTR 包含页面和偏移量)。? 或这个问题的另一个版本: GDTR 对于每个进程都是唯一的。?

只有一个GDTR寄存器,它指向线性地址space中的一个位置。它通常不会针对每个进程进行更改。相反,如果不同的进程需要不同的选择器,则 LDTR 寄存器会被更改。对于大多数现代操作系统,情况并非如此,所有进程都共享相同的选择器。

这意味着GDTtable存在于所有进程的虚拟地址space中的相同位置。通常构成 table 的页面都被标记了,因此它们只能在管理员模式下访问,因此用户模式代码无法访问它们。