【问题标题】:Virtual Memory To Physical Translation?虚拟内存到物理翻译?
【发布时间】:2021-07-19 12:29:43
【问题描述】:

我的书有以下图片:

关于 L2(或 L1)中有多少 PTE 的问题,答案是 16 = 2^4,但这是为什么呢?

在问题中,每个 PTE 大小为 2 个字节,因此答案应该是 2^4/2 = 8 因为 L2 索引保存我们将指向的位置。例如,如果它是 2,那么它指向第一个 PTE 的后半部分,而不是第二个 PTE。

我在这里错过了什么?

【问题讨论】:

    标签: memory memory-management virtual-memory virtual-address-space page-tables


    【解决方案1】:

    你想多了。有 4 位用于索引 L1 页表条目,因此该索引有 2^4 个可能的值,因此有 2^4 个可能的页表条目。

    页表条目的大小与此问题无关。它问的是“有多少”,而不是“有多大”。

    【讨论】:

    • 您可以声称 0 指向第一个 PTE,1 指向第二个 PTE...因为 PTE 大小是 2 而不是 1。除非有一些外部组件将索引乘以 2 16 是错误的答案。
    • @John:页表项的index与其地址不同。要获得地址,您可以将索引乘以页表条目的大小(此处为 2 个字节,因此简单的左移 1 位)并将其添加到页表基址(通常存储在特殊寄存器中)。这是 MMU 在页面翻译中所做的一部分;不过,我不会将 MMU 称为“外部组件”。
    • 哦,MMU 做乘法?这让一切都清楚了,我的观点是,如果非在做乘法,那么这没有意义。请查看我在该领域的许多问题,因为我正在努力寻找答案以了解在网络上找不到的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 2014-05-18
    相关资源
    最近更新 更多