首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >虚拟内存地址转换

虚拟内存地址转换
EN

Stack Overflow用户
提问于 2012-03-02 22:21:45
回答 2查看 2.2K关注 0票数 1

我读到了虚拟内存内存管理是如何在操作系统中工作的。我理解每个进程如何拥有自己的连续逻辑地址空间。此地址空间在物理内存中不需要连续。为此目的,使用分页。页表用于执行从逻辑地址到物理地址的映射。逻辑地址分为两部分,第一部分给出逻辑页码,利用页面表将其转换为物理页号,第二部分偏移到该页。因此,从内存中检索内容。

虚拟内存是这个的扩展,其中所有的页面都不需要在主内存中,并且可以通过页面错误被带到那里。

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

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

代码语言:javascript
复制
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.

为什么这样做不对?有人能帮忙吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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处。

票数 3
EN

Stack Overflow用户

发布于 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,并且也在定义的页面表之外。

然后你可以从这里算出最后的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9541184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档