从逻辑地址转换为物理地址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从逻辑地址转换为物理地址相关的知识,希望对你有一定的参考价值。

我有一个家庭作业问题,我有点困惑如何开始。我必须将逻辑地址0,4,9,15,30转换为它们的物理地址。我看过网上但没能找到类似的例子。我找到了问题但是给出了很多不同的给定信息(例如给我每个逻辑地址的页面索引和偏移量)。下面是问题,我确实做了第1部分,它给了我m = 32和n-3。正确方向的帮助会很棒!

答案

几乎不可能想出上面的表格结构,它没有提供必要的细节。虽然我会尽力帮助你。但是,我会假设这些值是物理地址(可能是它们)。

我们必须考虑以下细节: 地址空间:32个字节 总页数:4 页面大小:8个字节 寻址:1个字节

页表条目:6 8 0 1

严格地说,我们必须索引页表项,并因此得到它的偏移量。 因此,我们只需要2位来索引页表项(4个条目),而6位到页面中的偏移量(8个字节 - 64位)。 此外,我们应该假设一个字节的寻址。

Virtual address:    (8 bits) - Total
0 0                 (2 bits) - Page table entry.
    0 0 0 0 0 0     (6 bits) - Offset into page. 

接下来的问题是将逻辑转换为物理:0,4,9,15,30(将这些数字转换为二进制格式总是更好)

One example:
     PTE      OFFSET
0 = (0 0) (0 0 0 0 0 0)

It indexes the first page table entry which physical address is 6,
and the offset is 0.
So 6 + 0 = 6 (Physical address)
Another example:
     PTE      OFFSET
4 = (0 0) (0 0 0 1 0 0)

It indexes the first page table entry which physical address is 6, 
and the offset is 4.
So 6 + 4 = 10 (Physical address)

我希望它会对你有所帮助。此致,Raphael S.Carvalho

另一答案

(1)逻辑空间的大小为32,使用5位,页面大小为8,使用3位。

问题陈述“必需”,我认为这意味着使用的最小位。那么较高阶需要5-3 = 2位而较低阶需要3位。

由于我们使用一个字节寻址,如果我们使用5-3 = 2位来表示页码,那么我们可以发现地址格式不能用于物理地址格式。所以我们可以使用8-3 = 5位的高阶表示页码,其余3位表示页面偏移。

(2)。例如,对于逻辑地址4.它的页码是0,页面偏移是4.根据表,页面0被映射到第6帧。因此,它的物理地址应该是

(00110) (100) = 6 * 8 + 4 =54

另一答案
  • 逻辑地址:5比特(2 ^ 5 = 32字节)和偏移(低阶部分)总是一页的大小,即3比特(2 ^ 3 = 8字节)。那么第一个顺序是5 - 3 = 2位
  • 翻译应该是这样的 获取页码(较高部分)和逻辑/虚拟地址的偏移量。在我们的例子中,例如,页面编号3(11)和偏移6(110)的逻辑地址为30(二进制为11110)。 查找页面表的第3页,因此这里的页面框架是1.它引导我们物理地址的基础是1 << 3 = 8(向左移位3位=偏移位)。 物理地址= base + offset = 8 + 6 = 14

希望它可以帮助。

以上是关于从逻辑地址转换为物理地址的主要内容,如果未能解决你的问题,请参考以下文章

LVM物理卷、卷组、逻辑卷管理

什么是逻辑地址,什么是物理地址,它们之间有什么关系

内存

linux下内存

如何从 Linux 内核模块中的逻辑地址获取物理地址?

如何将页表的虚拟地址转换为其实际物理地址?