多级页表计算
页号 = 逻辑地址 / 页面长度 (取除法的整数部分)
页内偏移量 = 逻辑地址 % 页面长度(取除法的余数部分)
例如,某系统按字节编址,采用40位逻辑地址,页面大小是4KB,页表项大小是4B,假设采用纯页式存储,则采用几级页表,页内偏移量多少位
40位 = {28位页号={根据页表大小得到页号一级、二级},12位偏移量}
首先,这里的页表项大小已经给出来了,正常我们是可以自己算的,比如一块内存4GB,页面大小4KB,有多少个内存块呢,2^32 / 2^12 = 2^20 也就是我们最多要用20位才能表示一个内存块号,一般计算机都是8的整数倍,所以页表项占3B
回到题目,页内偏移量大小,就是指一个页面有几位
因为页面大小4KB 所以是12位
这里直接给出了页表项大小,一般来说知道页面大小,知道页表项有多大,就可以知道一个页面最多有多少个页表项
2^12 / 4 = 2^10 个页表项
注意各级页表的大小不能超过一个页面,超过要用多级页表
页号 = 40 - 12 = 28 位‘
因此至少分3级页表
注意,单级页表访存次数是2次,假设没有快表情况下,多级页表就是n+1