二级页表理解与计算

您所在的位置:网站首页 计算机一级和一级b一样吗 二级页表理解与计算

二级页表理解与计算

2023-12-13 03:34| 来源: 网络整理| 查看: 265

二级页表

为什么要二级页表?

1.页表必须连续存放,因此当页表很大时,需要占用很多个连续的页框 2.没有必要让整个页表常驻内存,因为进程在一段时间内可能只需要访问某几个特定的页面。

页表项的大小如何计算?页表大小如何计算?

页表项大小取决于需要表示的页号 如一个页面大小是256 B,那么它需要表示的页内偏移量为 2 8 B 2^{8}B 28B,即需要8位,若系统为32位,则剩下的24位可以用来表示页号,最多可以表示 2 24 2^{24} 224页。而这24位都存放在页表项中,即一个页表项3 B。 而页表由很多页表项组成,具体多少页表项由页号决定,如有 2 20 2^{20} 220个页表项,则页表大小为 2 20 × 3 B = 3 M B 2^{20}\times3B=3MB 220×3B=3MB,即页表大小3MB

页表如何分割成更小的页表?

页表被分割的前提是当前页表很大,用来搜索很不方便,如有一本很厚目录,目录中没有大标题,而是直接指向最底层的内容,因此需要进行分割(加大标题) 假设一级页表有4MB,页面大小是4KB,页表项均为4B【给定条件,尽管可能用不到这么大】 我们将一级页表看作一个新程序,这个程序中可以分为 4 M B 4 K B = 2 10 页 \dfrac{4MB}{4KB}=2^{10}页 4KB4MB​=210页,每一个页使用一个二级页表进行二次索引,一个页能装 4 K B 4 B = 2 10 项 \dfrac{4KB}{4B}=2^{10}项 4B4KB​=210项,页内偏移量是 4 K B = 2 12 B 4KB=2^{12}B 4KB=212B,即12位。 即原来一个4MB的页表被分为了1个大小为 4 K B ( 2 12 B ) 4KB(2^{12}B) 4KB(212B)的一级页表,以及 2 10 2^{10} 210个大小为 4 K B ( 2 12 B ) 4KB(2^{12}B) 4KB(212B)的二级页表,每个二级页表指向 2 10 2^{10} 210个物理块,所有二级页表总共指向 2 10 ∗ 2 10 = 2 20 2^{10}*2^{10}=2^{20} 210∗210=220个物理块 内存地址中的32位在只有一级页表时前20位用来指引页号,后12位用来指引页内偏移量;在拥有二级页表后,前10位通过一级页表查找二级页表( 2 10 2^{10} 210个页表中的哪一个),后10位通过二级页表定位到具体哪个页号,再后12位指引页面偏移量。 假设此时程序段对应的是0号二级页表第5项,则进程的某一程序段寻找对应的内存块时,首先会问一级页表: “请问我该去哪个内存块?” 一级页表说:“让我看看你地址前10位…找到了,你去Z号内存块里0号二级页表看看。” 然后程序段再问0号二级页表:“一级页表让我来找你,请问我该去哪个内存块?” 0号二级页表说:“让我看看你地址的11~20位,你是我的第5项,你去内存块X看看吧” 然后程序段来到对应内存块X,问内存:“请问我具体在内存块哪个位置呢?” X号内存块说:“我看看你最后12位…你的偏移量是Y,去Y位置吧!” 接着程序段装入内存块,结束。

最近操作系统课程正好上到这一块,起初自己在理解的时候有些地方比较混乱,后期理清了思路后把思路写了下来,希望能对你有帮助! 动动小手给个免费的赞鼓励一下吧



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3