4:二级描述符
每个二级粗表项对应4KB虚拟地址的映射,而二级细表项对应1KB虚拟地址映射。每一项都是一个页描述符,分别可以描述一块大于4KB或1KB大小的页,此时同一个描述符会被多次使用,以确保不同虚拟地址都访问相同的物理页。根据二级描述符的最低两位:
l 位[1:0]=0b00: 此时所关联的虚拟地址不映射
l 位[1:0]=0b01: 此时该项为大页描述符,描述64KB的虚拟地址。在一个二级细表中,大页描述符必须重复64次,而在二级粗表中,大页描述符要重复16次,以此确保其所关联的所有虚拟地址都被描述。
l 位[1:0]=0b10: 此时该项为小页描述符,描述4KB的虚拟地址。在一个二级细表中,小页描述符必须重复4次,而在二级粗表中,小页描述符只要一个。
l 位[1:0]=0b11: 此时该项为微页描述符,描述1KB的虚拟地址。
4.1大/小/微页描述符
l 位[1:0] 页类型标志位
l 位[3:2] Cachable与bufferable标志位
l 位[11:4]/[11:4]/[5:4] 访问允许。
l 位[15:12] /[ ]/[9:6]未定义,为0
l 位[31:16] /[31:12]/[31:10]对应的物理地址
4.1.1 访问允许
AP0—AP3用于对相应的子页进行访问允许的编码。从上表可以看出:
大页64KB地址,可以对四个子页进行保护,所以可以管理16KB单位的空间。
小页4KB,四个子页,以1KB为单位。
微页1kB,没有子页。
注意:到此可以看出,粗/细的描述是针对一级页表的,而大/小/微的描述针对二级页表,二者的组合构成不同的访问方式,如:粗表大页访问指一级页表为粗表,二级为大页表。
五:大页访问
粗表大页访问与细表大页访问类似,需要注意的是:由于线性地址中,页内索引部分的前四位与二级页表索引的后四位相互重叠,因而一个大页需要重复16次访问粗表。(粗表维护4KB空间,而大页有64KB,所以很显然需要16个粗表组成一个大页描述块)
六:访问允许
描述符中的访问允许位控制对相应地址空间的访问,CP15寄存器1的(S)位和(R)位与描述符的AP位一同进行访问允许管理。
七:域
一个域是许多段,大小页的集合,ARM支持16个域,域访问控制寄存器(CP15的寄存器3)每两位控制对一个域的访问。这种机制可以快速允许或禁止对整个域的访问,使其相应的内存空间可以高效的被交换出虚拟内存。有两种类型的域访问:
Clients: 用户访问(运行的程序和访问的数据),由每个段或页的访问允许所保护。
Managers:域的维护(域所包含段、页与访问方式),不由每个段或页的访问允许所保护。
一个程序可以是一些域的用户,和另一些域的管理者,并且不允许访问其余的域。这种机制使得内存保护和数据访问可以具有高度伸缩性。下表是CP15寄存器3的控制位。