【操作系统】分页储存管理方式一些计算公式以及计算例题(页表项大小,页表项,页面大小的区别)

我在学习操作系统的时候在遇到页表项大小,页表项,页面大小的的误区,百度了好久也是很迷糊,现如今恍然大悟,今天给大家分享一下,希望大家不用迷路。
之前百度到了一个这样的问题,我曾经也有过这样的问题,如图。
在这里插入图片描述
首先我来说页表项和页面大小没有特别的关系,但是还是有关系(就当做是废话哈哈)
这是我先给大家整理的分页存储里面的一些公式。

求地址:
逻辑地址=页号P+偏移量W
物理地址=某程序指定页的块号+偏移量W
其他计算:
页表项 =(题目给出的)内存 / 页面大小
页表占用内存 = 页表项 * 页表大小
页数=(页表占用的)内存 / 页面大小 = (页表项 * 页表项大小)/ 页面大小
每页页表项数=页表项 / 页数 = 页面大小 / 页表项大小
最大内存 = 页面大小 * 2^(页表项大小 /B)
从公式当中就可以看出页表项大小他们之间的关系,拿上图那个人问的问题来回答说,为什么要拿4K/4B,因为公式!!!!
每页页表项数=页表项 / 页数 = 页面大小 / 页表项大小
我当时就很模糊,现在才知道是因为公式,但是具体的操作我还没太明白。可以请大神赐教。

举一个例子来说明(有道考研里面的一道题)
页式存储(清华大学)
已知系统为32位实地址,采用48位虚拟地址,页面大小4KB,页表项大小为8B;每段最大为4GB。
(1)假设系统使用纯页式存储,则要采用多少级页表,页内偏移多少位?
(2)假设系统采用一级页表,TLB命中率为98%,TLB访问时间为10ns,内存访问时间为100ns,并假设当TLB访问失败后才访问内存,问平均页面访问时间是多少?
(3)如果是二级页表,页面平均访问时间是多少?
(4)上题中,如果要满足访问时间<=120ns,那么命中率需要至少多少?
(5)若系统采用段页式存储,则每用户最多可以有多少段?段内采用几级页表?
参考答案:

(1)首先,页面大小为4KB,故页内偏移需要12位来表示。其次,系统虚拟地址一共48位,所以剩下的48-12=36位可以用来表示虚页号。每一个页面可以容纳的页表项为:4KB/8B=29(也就是可以最多表示到9位长的页号),而虚页号的长度为36位,所以需要的页表级数为:36/9=4级。

(2)当进行页面访问时,首先应该先读取页面对应的页表项,98%的情况可以在TLB中直接得到得到页表项,直接将逻辑地址转化为物理地址,访问内存中的页面。如果TLB未命中,则要通过一次内存访问来读取页表项,所以页面平均访问时间是:

98%×(10+100)ns+2%×(10+100+100)ns=112ns

(3)二级页表的情况下:

如果TLB命中,和(2)的情况一样,如果TLB没有命中,采用二级页表需要访问3次内存,所以页面平均访问时间是:

98%×(10+100)ns+2%×(10+100+100+100)ns=114ns

(4)假设快表的命中率为p,应该满足以下式子:

p×(10+100)ns+(1-p)×(10+100+100+100)ns<=120ns

可以解得:p>=95%,所以如果要满足访问时间<=120ns,那么命中率至少为95%。总结知识点:在多级页表的情况下,如果TLB没有命中,则需要从虚拟地址的高位起,每N位(其中N就是类似于(1)中的9)逐级访问各级页表,以第(1)问为例,如果快表未命中,则需要访问5次内存才能得到所需页面。

评论 21 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页

打赏作者

花花王

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值