>系统采用 48 位虚拟地址,页面大小为 4KB,页表项大小为 8B,假设系统使用纯页式存储,则要采用()级页表。
首先,由页面大小 4KB = 2¹²,可以得知偏址位数为 12,所以 48 位虚拟地址由 12 位偏址 + 36 位页号构成,也即页面个数为 2³⁶。
每个页面可以存放的页表项个数为 4KB/8B = 512 = 2⁹,则要采用 36/9 = 4 级页表。
这里唯一有疑问的应该就是 36/9 是怎么来的,请继续往下看。
这里,我首先大致说一下多级页表的概念,举个不太恰当的例子,书都有目录,我们可以把书的整体的目录看作是最高一级页表,目录下面的章节看作次级页表,依次类推,章节下面还有小节等等。
接下来,我们就以题中数据为例,先来看一下一级页表:由前面计算我们已经得出每个页面可以存放的页表项个数为 2⁹,一个页表项就代表一个页面,那也就是说一级页表的情况下,最多有 2⁹ 个页面,如下图:
一级页表接下来,我们再来看一下二级页表:从下图可以看出,二级页表中的每一个页表项对应的页面存放的也是页表项,也就是 1 个页表项对应的页面也存有 2⁹ 个页表项与页面一一对应,那么二级页表 2⁹ 个页表项对应的页面个数即为 2⁹×2⁹
多级页表由上面我们就得知,k 级页表存放的页表项对应的页面个数为 29k,那么题目的答案也就是 29k = 236,即 k = 4。
学会了上面的题后,我们来看一道逆用的题。
>系统采用 64 位地址,采用虚拟页式存储管理,假设页面的大小是 4KB,每个页表项的长度是 4B,必须采用三级页表结构,每级页表结构中的每个页面都必须存放在一个物理页面中,请问在这种情形下,如何实现地址的映射?
页面的大小是 4KB = 2¹²,即偏址的位数为 12。
每个页面可以存放的页表项个数为 4KB/4B = 2¹⁰,采用三级页表结构,也就是 210×3 = 230,即页号的位数为 30。
综上,有效地址共 42 位,其中 30 位为页号,12 位为偏址。
网友评论