如果您对 Intel CPU 的工作有任何疑问,请查阅手册,而不是任何随机的互联网页面1。
分页访问权限在 4.6 节中描述。
CPU区分地址的特权和访问(对地址)的特权,每个特权要么是用户模式要么是管理员模式(其中管理员模式旨在获得更多特权)。
访问方式
对线性地址的每次访问要么是主管模式访问,要么是用户模式访问。对于所有指令提取和大多数数据访问,这种区别由当前特权级别 (CPL) 决定:当 CPL < 3 时进行的访问是主管模式访问,而当 CPL = 3 时进行的访问是用户模式访问。
一些操作隐式地访问具有线性地址的系统数据结构;对这些数据结构的最终访问是主管模式访问,与 CPL 无关。
[...]
所有这些访问都称为隐式主管模式访问,而与 CPL 无关。调用 CPL < 3 时进行的其他访问显式主管模式访问。
所以当一个程序访问一个内存位置时,它的 CPL 决定了访问模式,用户程序在 CPL = 3 时运行,因此它们只执行用户模式访问。
内核在 CPL = 0 时运行,而是执行主管模式访问。
地址模式
访问权限也由控制线性地址转换的分页结构条目指定的线性地址模式控制。如果在至少一个分页结构条目中的 U/S 标志(位 2)为 0,则该地址是管理模式地址。否则,地址是用户模式地址。
SUP位,正式名称为U/S,然后确定地址的模式。
由于它也存在于 PDE 中(不仅在 PTE 上),因此想法是采用更具限制性的设置,因此在任何级别的一个条目中设置U/S足以使地址成为主管模式之一。
访问权限
用户模式对主管模式地址的访问总是被禁止的,并且在尝试时会产生异常。
通常允许访问相同的模式地址2和较低的模式地址3 ,但它们不等于4,并且有多种标志会改变 CPU 5的行为。
这个想法是主管模式访问可以做任何他们想做的事情,并且为了减少攻击者可用的表面攻击,有一些机制可以降低访问权限。
1包括这个。
2用户模式访问用户模式地址,主管模式访问主管模式地址。
3超级用户模式访问用户模式地址。
4主管访问可以写入只读页面。
5例如,CR0.WP标志禁用对主管访问的只读页面的写访问,NXE位禁用从设置了XD的页面获取。