【问题标题】:How do I determine the page number from the virtual address?如何从虚拟地址确定页码?
【发布时间】:2020-12-06 22:18:57
【问题描述】:

我正在寻求以下家庭作业问题的帮助:

假设一个程序有1200字的虚拟空间。考虑以下一系列虚拟地址:

60; 222; 160; 910; 450; 345; 412; 10; 180; 20; 443; 766; 812.

给出引用页码的顺序,假设每页有 200 个单词。

总虚拟空间与 200 字的页面有何关系?这是否意味着内存有 6 页?如何从虚拟地址确定页码?

只是寻求帮助以了解这些步骤,而不是完整的解决方案,谢谢!我浏览了许多示例,并且很难找到一种可重复的公式化方式来做到这一点。我无法理解长文本块并且更喜欢数学公式,但可用的答案似乎有非常冗长的解释。

我正在考虑第 1 页上的虚拟地址 #60,因为它小于 200。然后,自 ceiling(222/200) = 2 以来,222 将在第 2 页上。

  1. 正确吗? ceiling(virtual address/page size) 是正确的做法吗?

  2. 我对 1200 有何看法?对于这么大的虚拟空间,虚拟地址 1201 是否无效?

【问题讨论】:

  • 您不是在寻找完整的答案,但您的理解似乎基本上是正确的,并且没有什么可以添加到完整的答案中。但在大多数环境中,页码和地址编号将从 0 开始,因此使用 floor 而不是 cieling。

标签: memory fifo lru virtual-address-space page-fault


【解决方案1】:

对于使用位置表示法(从零开始)的系统,公式是下限(虚拟地址/页面大小),对于从 1 开始(从 1 开始)的系统,公式是上限(虚拟地址/页面大小)。

【讨论】:

    猜你喜欢
    • 2011-06-13
    • 1970-01-01
    • 2014-05-18
    • 2011-08-20
    • 2011-01-11
    • 2018-07-09
    • 2016-01-13
    • 2016-09-26
    • 2019-02-28
    相关资源
    最近更新 更多