ARM存储管理系统MMU
空间的段首地址,1M大小对齐
AP: 访问控制位Access Permission
域: 标明了当前段属于哪个域。Domain与AP配合使用,对访问权限进行检查
C: 如下表所示
B: 如下表所示
00:相应1M的虚拟空间并没有被映射到物理空间,因此访问该存储空间将会产生地址变换失效信号,所以bits[31:2]的内容无效
10:这是一个一级映射的地址变换,所以存储的是要访问的物理段基地址
01:这是一个二级映射的地址变换,所以存储的是粗粒度的二级页表的基地址(后面会讲)11:这是一个二级映射的地址变换,所以存储的是细粒度的二级页表的基地址(后面会讲)
域标明了当前段属于哪个域。然后该段便具有了和该域一样的访问权限。
CP15的寄存器C3:
310 | |||||||||||||||
D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
在CP15的C3寄存器中,划分了16个域,每个区域由两位构成,这两位说明了当前内存的检查权限:
00:当前级别下,该内存区域不允许被访问,任何的访问都会引起一个domain fault,这时 AP位无效
01:当前级别下,该内存区域的访问必须配合该内存区域的段描述符中AP位进行权检查
10:保留状态(我们最好不要填写该值,以免引起不能确定的问题)
11:当前级别下,对该内存区域的访问都不进行权限检查。这时AP位无效
所以只有当相应域的编码为 01时,才会根据AP位和协处理器CP15中的C1寄存器的S,R位进行权限检查
b、二级映射
当使用二级映射时,一级页表L1仍然存在,但是一级页表中不再存放物理段基地址了,而是存放了二级页表的基地址,也就是二级页表的首地址。
一级页表要表示4G的地址范围,一共4096项,每一项都表示1M的大小。二级页表相当于对一级页表这1M的范围作更详细的划分,所以每个二级页表要表示1M的地址范围。
对这1M地址范围进行分页,有三种分法:
大页:将这1M地址范围分成单位为64KB大小
小页:将这1M地址范围分成单位为4KB大小
极小页:将这1M地址范围分成单位为1KB大小
注:二级页表分为两类:粗粒度的二级页表和细粒度的二级页表。
粗粒度的二级页表:
当二级页表为粗粒度时,一级页表中一项的内容如下表所示:
因为不论是一级页表还是二级页表,页表中的每一项都是四个字节,所以页表中每一项的地址都是字对齐的,也就是最低两位的值都为0。所以因为粗粒度的二级页表的基地址为22位,而偏移量只能为8位,则粗粒度的二级页表中只能有256个项,大小为1KB。而这256个项要表示1M大小,所以粗粒度二级页表中的每个项要表示4KB的物理空间范围。
细粒度的二级页表:
当二级页表为细粒度时,一级页表中一项的内容如下表所示:
因为不论是一级页表还是二级页表,页表中的每一项都是四个字节,所以页表中每一项的地址都是字对齐的,也就是最低两位的值都为0。所以因为细粒度的二级页表的基地址为20位,而偏移量只能为10位,则细粒度的二级页表中能有1024个项,大小为4KB。而这1024个项要表示1M大小,所以细粒度二级页表中的每个项要表示1KB的物理空间范围。
首先讨论粗粒度的二级页表:分页方式为大页64KB。上面已经说了一个粗粒度的二级页表中每一项能表示的物理地址范围只能为4KB,那么64KB的地址范围怎么表示呢?这时其实已经把4KB的地址范围变为了64KB的地址范围,也就是页表中的一项能表示64KB的地址范围。这时物理地址偏移量要占用二级页表索引号的bits[15:12] ,这样才能表示64KB的物理地址范围。
因为现在二级页表的一项中存放的是64KB地址范围的物理基地址,则物理地址偏移量使用的是bits[15:0](占用了二级页表索引号的bits[15:12]),所以bits[15:12]在0b0000—0bFFFF范围变化时,物理基地址仍然相同。但是随着bits[15:12]的变化,二级索引号也会发生变化,那么得到的项的地址就会变化。所以为了让物理基地址相同,必须在连续16个项中都存放相同的内容,这样根据二级页表索引号所找到的连续16个项地址虽然不同,但每一个项中的物理基地址都相同。再与物理地址偏移量(虚拟地址的bits[15:0])相加,就会得到物理地址。
所以当当分页方式为大页64KB时,粗粒度二级页表用16个项对应一页,
粗粒度二级页表中一项的详细内容如下表:
大页基地址:就是64KB页的首地址
一个大页分为4个子页:
AP0子页1的访问控制权限位
AP1 子页2的访问控制权限位
AP2子页3的访问控制权限位
AP3子页4的访问控制权限位
C: 如下表所示
B: 如下表所示
bits[1:0] :当前页表的分页方式:01:大页 10:小页 11:极小页
当分页方式为小页4KB时,粗粒度二级页表的一项正好对应一页。其地址变换方式和一级映射相似。
当
ARM存储管理系统MM 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)