前引
本篇笔记记录王道操作系统第二章内存管理中博主觉得困难的点
一. 二级页表
有一台计算机,地址为32位,页面(进程的块)大小为4KB,页表项大小为4B。
从这条信息中我们可以得到的信息:
- 页面数量:
2^32/2^12 = 2^20个, 显然,页表项个数应与页面个数相同 - 页表大小:
4B*2^20 =2^22= 4MB,占用页面数量:4MB/4KB = 1K个,一个页面可以存储4KB/4B =1K个页表项
显然页表过大,浪费了内存资源
由此引入二级页表(仅有一个页面的页表,所以二级页表项个数为1K个),二级页表的页表项同样表示页面对应的物理块号(页框),但这里的页面是指用于存放一级页表的页面,所以一共有1K个这样的页面。显然,这也就是说,一个二级页表项对应了1K个一级页表项,则一个二级页表对应了1K*1K=2^20个页表项,即全部页表项,一个二级页面就指明了所有页表项的位置,且只占有了一页的内存空间。所以在进程执行时,只需把二级页表(占一个页面)调入内存,而不需要把所有一级页表项(占十个页面)调入内存(在需要用时再调入),节约了百分之90的内存。

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


395

被折叠的 条评论
为什么被折叠?



