虚拟内存地址转换

时间:2012-03-02 22:21:45

标签: memory-management operating-system kernel computer-science

我正在阅读虚拟内存内存管理如何在操作系统中运行。我理解每个进程如何拥有自己的连续逻辑地址空间。该地址空间不需要在物理存储器中连续。为此,使用分页。页表用于执行从逻辑地址到物理地址的映射。逻辑地址分为两部分,第一部分给出逻辑页码,使用页表转换为物理页码,第二部分偏移到该页。因此,检索内存中的内容 虚拟内存是其中的扩展,其中所有页面不需要在主内存中,并且可以通过页面错误带到那里。

根据我的理解,我解决了此页面上的第4个问题:www.ics.uci.edu/~bic/courses/JaverOS/ch8-ex.pdf

我的答案错了,我不知道正确的答案是什么。 这就是我这样做的方式:

From the diagram in the question, Page table for Process P1 will look like this according to me:
0-4
1-5
2-6
3-7

So when process P1 makes a reference to 0 i.e is 0000 in 4 bit binary, we divide 
it as 00|00. 
Thus logical page no = 00 and offset = 00.
From the page table, we can see 0 is mapped to 4th physical frame. 
Offset is also 00 here. So I get the 0th entry(offset) in the 4th frame. 
The content at this memory location(i.e Frame No. 4, offset 0) is 0.

为什么这是错的? 有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

我将从虚拟地址8开始,它应该更好地说明事情。

8 = 2×4 + 0.物理地址存储在过程第2页的偏移0处。我们查看第二页。对于P1,第2页的地址存储在PA 4 + 2,它是28.我们查找PA 28的内容,得到值0.对于P2,第2页的地址存储在PA 12 + 2,它是24 ,PA 24的内容为5。

现在使用虚拟地址15,它说明了例外情况。

15 = 3×4 + 3.物理地址存储在过程页面3的偏移3处。对于P1,第3页的地址存储在PA 4 + 3,其中包含-2。符号位表示页面位于物理内存之外,这意味着将出现硬页面错误(操作系统处理异常情况,但不是错误)。对于P2,第3页的地址存储在PA 12 + 3,其中一些特殊机制(毒性值,外部帧表?)告诉我们无效。这是一个错误,并报告为分段错误。

VA 7和P1的最后一个例子来解释偏移:

7 = 1×4 + 3.物理地址存储在P1第1页的偏移3处。页面1位于PA 8,第1页的偏移3位于PA 8 + 3。

答案 1 :(得分:0)

我假设图表显示左侧的物理内存和物理地址。让p1和p2直接访问他们自己和彼此的页表是没有意义的。

鉴于此,对于虚拟地址0,您从p1的页面帧1获取-45,为p2从页面帧3获取0。

对于VA = 1,您分别获取8和-12。

对于VA = 4,你没有任何东西,因为它在p1和p2的定义页表之外(这就是我解释“每页和页表的大小是4”和“p1的页表从地址开始” 4; p2的页表从地址12开始。“;如果我的解释错误,那么问题陈述也是错误的)。与其余的VAs同样如此,因为它们大于或等于4并且也超出了定义的页面表。

然后您可以从这里找出最终答案。