MMU对段和页面进行保护,对段和页面进行保护是由几个因素造成的。它由域的访问控制字段和一级描述符或二级描述符中的AP字段,以及C1寄存器的S(表示system),R(表示rom)控制位来共同决定的。
MMU中的域是指的一些段,大页或者小页的集合。ARM支持最多16个域,每个域的访问控制特性由CP15中的寄存器C3中的两位来控制。CP15中的寄存器C3的格式如下:
其中每两位控制一个域的访问控制特性,其编码及对应的含义如下:
当控制位为00时,此域是没有访问权限的;
当控制位为01时,此时域的属性为“用户”域;
当控制位为11时,此时域的属性为“系统”域。
当其域为“系统”域时,AP,S,R的值将会忽略,CPU(无论cpu运行在用户级还是在特权级)可以直接访问存储内容,将不进行存储权限检查。
当其域为“用户”域时,存储访问权限控制由AP,S,R来决定。
当域为“用户”域时,AP,S,R控制访问权限的具体规则如下:
对上图的应该这样理解:
当域为“用户”域时,当CPU运行在“特权级”或“用户级”时,AP,S,R控制段或页的存储访问权限;
比如:
当域为“用户”域时,当CPU运行在“用户级”时,AP=00,S=1,R=0,查表可知,这时CPU没有访问权限;
当域为“用户”域时,当CPU运行在“特权级”时,AP=00,S=1,R=0,这里CPU只能读存储内容,但不能写,如果写的话将产生错误;
注意:AP,S,R的决定访问权限的作用只用是在其域为“用户”域的状态。