使用分页时DPL和RPL有关系吗?

时间:2019-04-04 05:56:42

标签: x86 operating-system memory-segmentation

我可能是错的,但是根据我所读的内容,在使用内存分段时,除CPL外,DPL和RPL还用于防止或允许进程访问某些内存区域。

但是现代操作系统(例如:Linux)不使用内存分段,而是使用分页,并且进程的页表允许您指定某些内存区域只能在CPU处于内核模式时访问(并且CPU是处于用户模式还是内核模式仅由CPL确定。

我纠正使用分页时DPL和RPL无关紧要,只有CPL才重要吗?

1 个答案:

答案 0 :(得分:2)

这是分段配置的问题。当分段和页面转换访问检查均通过(按此顺序)时,将授予内存访问权限。

的确,当今的分割很少用于其设计目的,而启用页面翻译时以某种方式不存在分割是不正确的。只是页面翻译可以更好地完成工作,因此,各段的设置方式可以使它们简单地绕开。

x86段存在几个关键问题:

  • 编译器需要支持 far 指针,这很杂乱(在16位保护模式下杂乱无章,其中段需要由应用程序和操作系统管理)
  • 它们不能具有具有不同属性的孔或子区域,并且许多段不仅难以管理,而且难以管理(GDT和LDT分别为最多8191个段描述符提供了空间)