二级页表理解与计算 |
您所在的位置:网站首页 › 计算机一级和一级b一样吗 › 二级页表理解与计算 |
二级页表
为什么要二级页表? 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 |