分页存储中的两级页表
一、页面与页表
1、页与帧
在分页存储的管理方式中,将进程的逻辑地址空间分为若干大小相等的片,称为页面或页;相应地,将物理内存空间分为与页面大小相等的块,称为物理块或帧。
2、页表
现在已经将逻辑地址空间分为了若干个页,将物理内存空间分为了若干个帧,那么是如何将某一页与某一帧对应起来的呢?这就是页表所要完成的任务。页表,又称为页面映像表,所要完成的任务就是将进程地址空间中的页与物理内存中的帧对应起来,通过查找这张表,我们就可以知道某一页所对应的帧。
二、两级页表
1、为什么不能使用一级页表
考虑这样一种情况,对于一个32位逻辑地址空间的分页系统,规定每一页的大小为4KB即B,那么一共会产生M个表项,每个表项占用1B,则这个页表需要占用1MB的内存空间,而且这段空间必须连续。显然这样的要求对于寸土寸金的内存空间来说太奢侈了,那么有没有什么好方法来解决这个问题呢?答案肯定是有的,两级页表与多级页表的出现正是为了解决这个问题。
2、两级页表
两级页表采用离散分配的方式,将页表进行分页,然后将各个页面分别存储在不同的物理块中以解决连续存储的问题。现在问题又来了,一级页表被分成了若干个页面分别存储在不同的物理块中,那么我们怎么知道哪个页面是存储在哪个物理块中的呢?别急,都说了是两级页表,不是还有一级没说嘛。另外一级页表又叫做外层页表,它是用来存储刚刚所划分的各个页面的首地址,通过它我们就可以知道各个页面所处的位置。
以32位逻辑地址空间的分页系统为例,如果采用一级页表,那么页表所占用的内存空间是1MB,而且必须是连续的。现在我们将页表等分成1024份,即产生了1024个页面,并且每个页面有1024个表项(每个表项1B,即每个页面1KB),存储的是页号与物理块号的映射关系;然后我们建立外层页表,由于有1024个页面,所以外层页表有1024个表项(每个表项1B,外层页表1KB),存储的是各个页面的首地址。这样我们就实现了一个两级页表,由于两级页表采用了离散分配的方式,外层页表和每个表项所对应的页面分别存储在不同的物理块中,解决了需要连续存储的问题。