如果页面的pte标记为_PAGE_USER位为0,是否会导致页面错误或general_protection异常?

时间:2014-08-11 09:56:27

标签: linux-kernel x86 mmu

我正在尝试了解intel x86 MMU架构提供的保护。 我很困惑MMU何时会引发页面错误(page_fault,int 14)以及CPU何时引发异常(general_protection fault,int 13)。我知道当特权级别不匹配时,CPU通常会引发异常。

但是谁将用户/管理员模式位映射到权限级别,是MMU还是CPU?

特别是,当我清除页面的pte条目的_PAGE_USER标志时,我无法解释谁会引发异常,我预计MMU会引发一个错误(或者它是处理器?)

如果可以的话,请指出我的资源,以便我可以阅读,以防某些地方可以使用。谢谢!

1 个答案:

答案 0 :(得分:0)

  

但是谁将用户/管理员模式位映射到权限级别,是MMU还是CPU?

从(https://software.intel.com/sites/default/files/319433-014.pdf

  

对线性地址的每次访问都是管理员模式   访问或用户模式访问。所有访问都在执行时执行   当前权限级别(CPL)小于3是管理员模式   访问。如果CPL = 3,则访问通常是用户模式访问。

简而言之,响铃3是用户,响铃0-2是主管

  

特别是,当我清除页面的pte条目的_PAGE_USER标志时,我无法解释谁会引发异常,我预计MMU会引发一个错误(或者它是处理器?)

MMU引发了故障,MMU是现代计算机上CPU的一部分。所以,这并不重要。

Robert Love的{p> Linux Kernel Development和Daniel P. Bovet的Understanding the Linux Kernel出色地介绍了这个话题。前者在x86上的Linux内核实现细节较少,通常更容易理解。