一个段可以有多个段描述符吗?

Can there be multiple segment descriptors for one segment?

是否可以为单个段使用多个段描述符,以便在该段中为不同的特权级别提供单独的权限?例如,允许环 2 通过一个描述符读取或写入数据段,然后允许环 3 通过另一个描述符对该段进行只读访问?

您基本上是在询问不同段的 base/limit 是否可以重叠。是的,他们当然可以,就像在实模式下一样。拥有不同的特权级别并不是障碍。

完全重叠是32位平面内存模型中的正常情况,其中CS是覆盖整个0..4GB的代码段,而DS=ES对于覆盖相同的段有不同的描述符内存范围。

这与让多个页表将相同的物理页框映射到不同的虚拟地址没有什么不同。


x86 保证当一个物理地址可以通过多个 segment:offset 或虚拟地址访问时不存在缓存别名问题。

大多数 x86 微体系结构使用 VIPT L1 缓存,所有索引位都在页面偏移量以下,因此它们的行为类似于 PIPT 缓存。 (其他级别的缓存都是PIPT)。所以缓存和内存消歧是基于物理地址,或者至少是线性地址,这对硬件来说不是问题。