简单说访问控制机制就是CPU通过某种方法判断当前程序对内存的访问是否合法(是否有权限对该内存进行访问),如果当前的程序并没有权限对即将访问的内存区域进行操作,则CPU将引发一个异常,s3c2410称该异常为Permission fault,x86架构则把这种异常称之为通用保护异常(General Protection),什么情况会引起Permission fault呢?比如处于User级别的程序要对一个System级别的内存区域进行写操作,这种操作是越权的,应该引起一个Permission fault,搞过x86架构的朋友应该听过保护模式(Protection Mode),保护模式就是基于这种思想进行工作的,于是我们也可以这么说:s3c2410的访问控制机制其实就是一种保护机制。那s3c2410的访问控制机制到底是由什么元素去参与完成的呢?它们间是怎么协调工作的呢?这些元素总共有:
1.协处理器CP15中Control Register3:DOMAIN ACCESS CONTROL REGISTER 2.段描述符中的AP位和Domain位
3.协处理器CP15中Control Register1(控制寄存器1)中的S bit和R bit 4.协处理器CP15中Control Register5(控制寄存器5) 5.协处理器CP15中Control Register6(控制寄存器6)
DOMAIN ACCESS CONTROL REGISTER 是访问控制寄存器,该寄存器有效位为32,被分成16个区域,每个区域由两个位组成,他们说明了当前内存的访问权限检查的级别,如下图所示:
1.协处理器CP15中Control Register3:DOMAIN ACCESS CONTROL REGISTER 2.段描述符中的AP位和Domain位
3.协处理器CP15中Control Register1(控制寄存器1)中的S bit和R bit 4.协处理器CP15中Control Register5(控制寄存器5) 5.协处理器CP15中Control Register6(控制寄存器6)
DOMAIN ACCESS CONTROL REGISTER 是访问控制寄存器,该寄存器有效位为32,被分成16个区域,每个区域由两个位组成,他们说明了当前内存的访问权限检查的级别,如下图所示: