ARM存储管理(二)

ARM 116浏览

4:二级描述符

每个二级粗表项对应4KB虚拟地址的映射,而二级细表项对应1KB虚拟地址映射。每一项都是一个页描述符,分别可以描述一块大于4KB1KB大小的页,此时同一个描述符会被多次使用,以确保不同虚拟地址都访问相同的物理页。根据二级描述符的最低两位:

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]  Cachablebufferable标志位

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的控制位。