[操作系统笔记]两级页表

内容系听课复习所做笔记,图例多来自课程截图

在这里插入图片描述

单级页表存在的问题

某计算机系统按字节寻址,支持32位的逻辑地址,采用分页存储管理、页面大小为4KB,页表项长度为4B。

可推知:

  • 页面大小 4 K B = 2 12 B 4KB=2^{12}B 4KB=212B,故页内地址12位
  • 页号有32-12=20位,即最多 2 20 2^{20} 220页,对应 2 20 2^{20} 220个页表项
  • 2 20 2^{20} 220个页表项需要 2 22 2^{22} 222B存储(页表项长度4B)
  • 2 20 2^{20} 220个页表项需要 2 10 2^{10} 210个页框( 2 22 / 2 12 2^{22}/2^{12} 222/212

需要连续的 2 10 2^{10} 210大小的空间来存储页表,这样的“连续分配”与离散分配的思想相悖

根据局部性原理可知,很多时候,进程在一段时间内只需要访问某几个页面就可以正常运行了。因此没有必要让整个页表都常驻内存。

解决方案

可将长长的页表进行分组,使每个内存块刚好可以放入一个分组(比如上面的例子中,页面大小4KB,每个页表项4B,每个页面可存放1K个页表项,因此每1K个连续的页表项为一组,每组刚好占一个内存块,再讲各组离散地放到各个内存块中)

然后再以离散分配的每组页表为单位,建立一张页表,称为页目录表,或称外层页表,或称顶层页表

在这里插入图片描述

查询过程

在这里插入图片描述

  1. 按照地址结构将逻辑地址拆分成三部分
  2. 从PCB中读出页目录表始址,再根据一级页号查页目录表,找到下一级页表在内存中的存放位置
  3. 根据二级页号查表,找到最终想访问的内存块号4结合页内偏移量得到物理地址
  4. 结合页内偏移量得到物理地址

页面未必非得全在内存中(用到再调入也不是不行),给页表加一项,记录是否在页面中就可以了。若想访问的页面不在内存中,则产生缺页中断(内中断),然后将目标页面从外存调入内存

题目

各级页表大小均不得超过一个页面

没有快表的情况下,n级页表访问内存次数为n+1次

在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值