我读到了虚拟内存和内存管理是如何在操作系统中工作的。我理解每个进程如何拥有自己的连续逻辑地址空间。此地址空间在物理内存中不需要连续。为此目的,使用分页。页表用于执行从逻辑地址到物理地址的映射。逻辑地址分为两部分,第一部分给出逻辑页码,利用页面表将其转换为物理页号,第二部分偏移到该页。因此,从内存中检索内容。
虚拟内存是这个的扩展,其中所有的页面都不需要在主内存中,并且可以通过页面错误被带到那里。
根据我的理解,我解决了这个页面上的第四个问题: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.为什么这样做不对?有人能帮忙吗?
发布于 2012-03-03 10:22:11
我将从虚拟地址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页的地址存储在PA4+ 3,其中包含-2。符号位表示页面位于物理内存之外,这意味着会出现硬页错误(操作系统异常处理的情况,但不存在错误)。对于P2,第3页的地址存储在PA 12 + 3,哪种特殊机制(毒值,外部帧表?)告诉我们无效。这是一个错误,并被报告为分段错误。
最后一个用VA 7和P1解释偏移的例子:
7= 1×4 + 3。物理地址存储在P1第1页的偏移量3处,第1页位于PA 8处,偏移量3位于PA 8+3处。
发布于 2012-03-03 04:46:34
我假设图表显示左边的物理内存和物理地址。让p1和p2直接访问他们自己和彼此的页面表是没有意义的。
考虑到这一点,对于虚拟地址0,您可以从页面框架1( p1 )获取45,从页面框架3( p2 )获取0。
对于VA =1,分别取8和-12。
对于VA =4,您什么也不获取,因为这不在为p1和p2定义的页表之外(这就是我如何解释“每个页和页表的大小为4”和“p1的页表从地址4开始;p2的页表从地址12开始”;如果我的解释是错误的,那么问题语句也是不正确的)。对于VAs的其余部分也是如此,因为它们大于或等于4,并且也在定义的页面表之外。
然后你可以从这里算出最后的答案。
https://stackoverflow.com/questions/9541184
复制相似问题