RAM页表中的每一个表项都是一个32位无符号数,称为页表的一个条目,也成为描述符,(描述的是虚拟地址与物理地址之间的映射)且也对应的是虚拟内存的段或页与物理内存的段或页地址映射关系,ARM页表中的描述符有:
段描述符(只需要第一级页表)
大页描述符,小页描述符,极小页描述符(需要第二级页表)
注意:页表基址是用于存放进程的页表首地址(TTB),每个进程都有页表基址寄存器
第一级页表共有4096个表项(条目,描述符)
每个描述符用来表示1mb即1section虚拟地址,1个段的虚拟内存空间:它要么存储了该虚拟地址段对应的物理内存起始地址——以duanweidanweijinxingdedizhiyingshe;要么存储了下一级页表的地址——以页为单位进行的地址映射。
一,如何找到描述符(重点)
由协处理器cp15的页表基址寄存器c2确定第一级页表的基址:
第一级页表的结构:
注意:页表中的描述符一定是字对齐的
由虚拟地址mva在第一级页表中找到该地址的所在段的描述符的方法:即找到描述符的地址
获得虚拟地址mva所在虚拟段在第一级页表中的描述符后,由描述符的内容确定该虚拟地址是以段的方式映射到物理内存中的物理段还是以页的方式映射到物理内存中的物理页
ARM一级页表中的描述符有3种类型的段描述符:
页描述符【粗页描述符,细页描述符包括(大页,小页,极小页)】
段描述符
段描述符说明该虚拟地址是以段(即1mb的大小)的方式映射到物理段(描述符中给出了该虚拟段映射到的物理段的首地址)
页描述符说明该虚拟断在划分若干个页组成的,在该虚拟段中是以页为单位,将该虚拟地址mva所在的页映射到内存中的一个页(物理页)
1,第一级页表描述符:是一个32bit数据
段描述符:
页表中的描述符最低2位【1:0】用来表示描述符的类型
【1:0】 = 00 :无效描述符(这描述符是错误的)
【1:0】 = 01:粗页描述符
【1:0】 = 10:段描述符
【1:0】 = 11:细页描述符
描述符中的AP,Domain位域是与该描述符对应的段/页的访问权限相关(存储器保护)
段描述符的高12bit【31:20】是要映射到物理内存段(1mb)的基址(即起始地址)实际上是物理段的段序号
1段即1section=1mb,每个段的起始地址的低20bit【19:0】都是全0,所以段描述中只需要记录对应物理段的起始地址高12bit【31:20】
粗页描述符:MVA的位【19:12】表示粗页表的偏移量
虚拟地址MVA所在段(1mb)在第一级页表中的描述符,如果是粗页描述符,则该段又被划分成64kb或4kb大小的页物理内存中也是一样,虚拟地址到物理地址PA的映射是以页为单位进行的
第二级页表用来管理虚拟地址MVA所在段(1MB)划分为页时,每个页的描述符,第二级页表(粗页表)共有256个描述符 256×4kb=1MB
细页描述符:MVA的位【19:10】表示细页表的偏移量
如果虚拟地址MVA所在段(1MB)在第一及页表中的描述符是细页描述符,则说明该段是被化分成页(64KB的大页,4KB的小页,1KB的极小页)同样物理空间也被划分成相同大小的页,地址映射是以页为单位进行的,在细页描述符中提供了该虚拟空间端的第二级的首地址
第二级页表中的描述符最小能表达极小页(1KB)虚拟地址与物理地址的映射关系,第二级页表中共有1024个描述符 1024×1KB=1MB
如果虚拟地址MVA所在的段在第一级页表中的描述符是粗页描述符或细页描述符时,需要通过粗页描述符或细页描述符找出该虚拟地址MVA所在的页,在第二级页表中的描述符(称为页描述符)页描述符中提供了对应的起始地址(页基址)
2,第二级页表描述符
当虚拟地址是以也为单位映射到物理内存空间时,需要使用2级页表才能实现虚拟地址到物理地址的转换,当虚拟地址是以也的方式映射到物理地址的时候,该虚拟地址所在的段在第一及页表中的描述符一定是粗页描述符或者是细页描述符,在这个粗/细页描述符中包含了第2级页表,且这个虚拟地址所在的段虚拟空间中的第2级页表的地址
在第2级页表中存放这1MB虚拟空间的所有页的描述符,而在页描述符中包含有虚拟空间对应的物理页的地址
第2级页表中的描述符有:大页描述符,小页描述符,极小页描述符
同样的,第2级页表中的描述符的末2位【1:0】用来表示描述符的类型:
【1:0】= 00:无效描述符
【1:0】= 01:大页描述符
【1:0】= 10:小页描述符
【1:0】= 11:极小页描述符
(1)大页描述符(每页为64KB)1段共有16个大页
如果大页描述符是保存在粗页描述符中的,粗页表中的每个描述符表达的是4KB的物理页,则粗页表中连续的16个描述符都保存同一个大页描述符;如果大页描述符是保存在细页表中,细页表中的每个描述符是1KB的物理页,则细页表中64个连续的描述符都是同一个大页描述符
(2)小页描述符:4KB
ARM中的小页是4KB,如果小页描述符保存在粗页描述符中,则需要一个描述符来表达4KB的物理小页;如果小页描述符是保存在细页表中的,则连续的4个描述符都是同一个小页描述符
虚拟地址所在虚拟空间的小页(4KB)对应的物理页中的小页
大页描述符和小页描述符所在的第2级页表,既可以在粗页也可以在细页表;如果第2级页表是粗页表,则是把虚拟地址所在的虚拟段划分成4KB的小页来进行地址映射的,而整个物理内存则被看成是由大小4KB的小页组成的;如果第2级页表是细页表,则是把虚拟地址所在的虚拟段划分成大小为1KB的虚拟页,而整个物理内存则看成是由1KB大小的物理页组成的。
(3)极小页描述符:用来表达一个极小页物理内存的起始地址;极小页描述符只能保存在细页表中。其格式为: