OS 页表级数计算

>系统采用 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 位为偏址。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2.1 主存储器 主存储器是计算机系统中的一个主要部件,用于保存进程运行时的程序和数据,CPU的控制部件只能从主存...
    溪的风阅读 1,375评论 0 0
  • 本文是在基本分页存储管理的基础上对分页管理的优化。在上篇文章中说到,操作系统会为每个进程建立一张页表,实现页号和内...
    HRADPX阅读 29,448评论 5 20
  • 假设是按字节编址 连续分配方式的缺点 考虑支持多道程序的两种连续分配方式 固定分区分配:缺乏灵活性,会产生大量的内...
    幺姨母阅读 933评论 0 0
  • 虚拟存储器又叫做虚拟内存,我们现在的操作系统普遍都支持了虚拟内存,这样做是因为我们同时运行着太多的程序了,就目前我...
    唐鱼的学习探索阅读 5,115评论 1 25
  • 操作系统基本概念 操作系统是计算机科学研究基石之一。 功能 管理硬件(如设备驱动:实现用户提出的I/O操作请求,完...
    Hengtao24阅读 4,572评论 2 14