理解OS分页式存储管理中的顶级页表


前引

本篇笔记记录王道操作系统第二章内存管理中博主觉得困难的点


一. 二级页表

有一台计算机,地址为32位,页面(进程的块)大小为4KB,页表项大小为4B

从这条信息中我们可以得到的信息:

  1. 页面数量:2^32/2^12 = 2^20个, 显然,页表项个数应与页面个数相同
  2. 页表大小:4B*2^20 =2^22= 4MB,占用页面数量:4MB/4KB = 1K个,一个页面可以存储 4KB/4B =1K个页表项

显然页表过大,浪费了内存资源

由此引入二级页表(仅有一个页面的页表,所以二级页表项个数为1K个),二级页表的页表项同样表示页面对应的物理块号(页框),但这里的页面是指用于存放一级页表的页面,所以一共有1K个这样的页面。显然,这也就是说,一个二级页表项对应了1K个一级页表项,则一个二级页表对应了1K*1K=2^20个页表项,即全部页表项,一个二级页面就指明了所有页表项的位置,且只占有了一页的内存空间。所以在进程执行时,只需把二级页表(占一个页面)调入内存,而不需要把所有一级页表项(占十个页面)调入内存(在需要用时再调入),节约了百分之90的内存。
在这里插入图片描述

显然,逻辑地址中,高十位的一级页号用于指向二级页表中的页表项,中间十位的二级页号用于指向一级页表中的页表项。为什么均是十位?因为二级页表的页表项个数为2^10,一级页表的页表项个数同样为2^10,所以均十位。

把一级页号也叫做页目录号,在二级页表/页目录中,每一个表项指向一个页表的开始地址

那CPU是具体怎么实现访问的呢?
我的理解:CPU由逻辑地址的高十位找到二级页表项,进而由逻辑地址的中间十位找到一级页表项,最后找到页面对应的页框(物理块号),在这过程中,地址变换机构起了重要作用,王道的书上有详细的一级页表地址变换过程。

为什么顶级页表只能占有一个页面?
我的理解:顶级页表只能有一页,如果有两页,那么就有相同页号,那就区分不出选的是哪一个顶级页表,进而也无法找到正确的低级页表

参考:
基本页表和二级页表的思路和比较 -CSDN

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值