目录
分页存储管理的引入:解决分区管理方案由于需要连续地址空间进行分区靠拢比较耗费系统时间的问题。
相关概念:
页:将一个进程的地址空间划分为若干大小相等的区域。
块/页框:将主存空间划分成与页相同大小的若干个物理块。
页表:系统为保证在主存中可以找到进程要访问的页面所对应的物理块,为每个进程建立的一张页面映射表。每个页在页表中占一个表项,表项记录了该页在主存中对应的物理块号。
系统在为进程分配主存时,会将进程中若干页分别装入主存中若干个不相邻接的块中。
分页存储的地址结构:页号+页内地址,类似如下的形式
一、纯分页存储
为了能将用户地址空间中的逻辑地址变换为内存空间中的物理地址,在系统中必须设置地址变换机构。该机构的基本任务是实现从逻辑地址到物理地址的转换。实际上是将用户程序中的页号变换成主存中的物理块号。根据逻辑页号找到物理块号,然后与页内地址进行拼接即可得到物理地址。纯分页的地址变换示意图如下:
例:某页式存储系统的地址变换过程如下图所示。假定页面的大小为8K,图中所示的十进制逻辑地址9612经过地址变换后,形成的物理地址a应为十进制多少呢?
分析:页面大小为8K,而8K=,所以页面地址有13位,逻辑地址9612转换成二进制数,得到10 0101 1000 1100,共14位,则第一位为页号1,后面13位为页内地址。页号1对应物理块号为3,对应二进制数为11,与页内地址进行拼接得到的就是物理地址110 0101 1000 1100,转换为十进制得到结果25996。
二、快表
页式存储至少需要访问两次内存,降低了访问速度。第一次访问页表得到物理地址,第二次存取数据。为了提高访问主存的速度,可以在地址映射机构中增加一个小容量的由一组高速存储器组成的联想存储器,用来存放当前进程最活跃的少数几页物理块号。
查找联想存储器的查找和页表的查找类似,程序访问数据时,根据逻辑页号在联想存储器中查找对应的物理块号,如果找到则与页内地址拼接得到物理地址,如果没有找到,还是从主存页表里查找,并将物理块号填入联想存储器的空闲单元中。没有空闲单元时,先淘汰一页然后再填入。为了快速访问,查找联想存储器和查找主存页表并行进行。
三、两级页表
纯页表存储中每个进程最多都要占用数兆连续的主存空间 ,现实中比较难满足。为了减少页表占用的连续主存空间,可以将页表进行分页,并离散地将各个页面分别存放在不同的物理块中来加以解决。其中每个页面的大小与主存物理块大小相同。为这些页面建立一张页表,称为外层页表。外层页表是页的目录表,其中的每个表目存放页表的物理地址。内层页表的每个表目存放的是页的物理块号。示意图如下所示:
可以看出,内层页表的每个表项中存放的是进程的某页在内存中的物理块号,如第0页页表中0页存放在1号物理块中,这一点跟单个分页的方式是一样的。外层页表的每个页表项中存放的是内层页表的物理地址,如第1页页表的物理地址为1078。
声明:由于时间原因,文章中部分图片来源于网络。