首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >os161中的地址空间和页表是什么关系?

os161中的地址空间和页表是什么关系?
EN

Stack Overflow用户
提问于 2013-07-15 05:11:39
回答 1查看 1.4K关注 0票数 1

地址空间和页表是什么关系?我知道每个进程都应该有一个在虚拟地址到物理地址之间映射的页表。但是地址空间有什么作用呢?在os161中,地址空间如下所示:

代码语言:javascript
复制
struct addrespace {
    vaddr_t as_vbase1;
    paddr_t as_pbase1;
    size_t as_npages1;
    vaddr_t as_vbase2;
    paddr_t as_pbase2;
    size_t as_npages2;
    paddr_t as_stackpbase;
}

我们使用以下命令将虚拟地址( vaddr )转换为物理地址:(假设vaddr在段1中)

代码语言:javascript
复制
paddr = vaddr - as_vbase1 + as_pbase1

似乎我们可以使用addrespace从虚拟地址中获取物理地址。如果我们可以使用addrespace进行虚拟内存到物理内存的映射,那么为什么我们还需要页表呢?

期待您的帮助!谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-24 03:40:24

首先,非常感谢你提出这个问题。尽管我仍然是OS161的新手,正在努力理解代码,但我会告诉你我到目前为止所理解的东西。请随时纠正我。

我们需要一个页表来跟踪分配给我们的进程的所有页面,这不仅仅是因为我们需要从虚拟地址到物理地址的转换。

如果页面在内存中,以及所需的页面是否在磁盘上,页表还会跟踪这些页面,这将触发页面错误。在这种情况下,我们应该分配一个新页,从磁盘加载一个页,更新页表,并更新TLB条目。

任何页面都会经历不同的状态,如空闲、脏(应写入磁盘)等。某些页面永远不会被换出,它们始终保留在内存中。页表也会跟踪这些状态。

甚至这篇文章也可能对你有所帮助..Why one page table per process

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

https://stackoverflow.com/questions/17643809

复制
相关文章

相似问题

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