单级页表的几个问题
1、因为页表的特性,需要连续存放,当进程需要很多个页面,就需要很大的页表,就需要很大一块连续的区域去存放页表
2、根据局部性原理,没必要让页表常驻内存
第一个问题
因为页表太大,需要连续一大片内存的解决方法是
重新建立起对一级页表的页表,页目录表
将逻辑地址进程拆分成一级页号和二级页号
地址转换的流程
- 根据一级页号在页目录表中的位置,找到二级页表所在的内存块号
- 根据所得的内存块号和二级页号,找到真正的物理块号
- 将最终的物理块号和页内偏移量进行相加,得到最终的物理地址
第二个问题
在页目录表表项当中设置一个标志位,是否在内存中,如果不在,就发生内中断,缺页中断。最后调入页面
几个细节
二级页表的缺点:
两级页表,需要访问三次内存。
为了避免连续分配的缺点的二级页表需要更长的访问时间
n级页表需要n+1次访存