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

时间:2018-09-05 22:41:14

标签: x86 x86-64 hardware intel gdt

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

1 个答案:

答案 0 :(得分:4)

您基本上是在问不同细分的底数/限额是否可以重叠。是的,他们当然可以,就像在实模式下一样。拥有不同的特权级别并不构成障碍。

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

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


x86保证当可以通过多个段(偏移量或虚拟地址)访问一个物理地址时,不会出现缓存混淆问题。

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