一个两级页表集合存储在内存中用来控制地址转换,权限检查,内存区域属性。
MMU使用一个转换查找缓冲(TLB)来缓存页表. 地址转换映射可分为页表映射和区域映射。
* 大页映射
* 小页映射
* 极小页映射
* 段(section) 映射
段映射只要一级转换, 页映射需要2级转换.
段描述符: 提供1M内存块的基址, 即一个描述符描述1M的内存空间.
bits 31........................20 19.....12 11 10 9 8...........5 4 3 2 1 0
Section base address SBZ AP 0 Domain 1 C B 1 0
Bit[1:0] 表示描述符类型: 10=段描述符, 01=粗页描述符, 10=小页描述符, 00=错误
1. ARM的mmu权限设置由描述符中的AP字段和DOMAIN字段以及DOMAIN寄存器组合描述的.
2. DOMAIN(CP15 c3)寄存器提供了16个域(一个域占2bit), 每个域可以有3种权限可供选择:
==00 : 没有访问权限
==01 : 访问时检查权限(检查section或者page描述符的AP字段 --- client mode)
==10 : Reserved
==11 : 不检查访问权限(kernel mode)
读写domain寄存器操作如下:
MRC p15, 0, <Rd>, c3, c0, 0 ; read domain access permissions
MCR p15, 0, <Rd>, c3, c0, 0 ; write domain access permissions