两级页表

知识总览

在这里插入图片描述

单级页表存在的问题

在这里插入图片描述
问题1:页表必须连续存放,因此当页表很大时,需要占用很多个连续的页框。
问题2:由程序的局部性原理,进程在一段时间内只需要访问某几个页面就可以正常运行了。因此没必要让整个页表都常驻内存。

如何解决单级页表的问题

在这里插入图片描述

两级页表的原理、地址结构

页面大小4KB=4x1024=212,即页内地址12位。
剩余的32-12=20位就是页号。
12位就是页内偏移的数量,20位就是有多少页。
进程最多有220个页面,如果都连续存放的话太大了。由于每个页面大小4KB,每个页表项4B,则每页可以放下1K=1024项,最左边的图就是把每页都分开放,就不需要连续的很大的内存了。
在这里插入图片描述
页目录表用来存每个二级页表的序号和它对应的块号:
二级页表像一个中间商
两级页表结构的逻辑地址结构:一级页号有10位,共1024个,对应0-1023(最左边的图),二级页号同理。
在这里插入图片描述

如何实现地址变化

在这里插入图片描述
到此,第一个问题:连续存放会占太多空间的问题已经解决了:
第二个问题的解决方法之后再说。
在这里插入图片描述

需要注意的细节

各级页表的大小不能超过一个页面:
在这里插入图片描述
但是,两级页表要3次访存,空间利用率高了,时间就慢了。

总结

在这里插入图片描述

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐