【问题标题】:what's the relationship between address space and page table in os161?os161中的地址空间和页表有什么关系?
【发布时间】:2013-07-12 16:50:34
【问题描述】:

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

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)

paddr = vaddr - as_vbase1 + as_pbase1

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

期待您的帮助!谢谢!

【问题讨论】:

    标签: operating-system os161


    【解决方案1】:

    首先,非常感谢这个问题。尽管我还是 OS161 的新手并且很难理解代码,但我会告诉你我到目前为止所理解的。请随时纠正我。

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

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

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

    即使这篇文章也可能对您有所帮助.. Why one page table per process

    【讨论】:

    • 谢谢。对不起,我丢失了我的帐户一段时间。但是非常感谢您的时间和帮助。
    猜你喜欢
    • 2016-12-12
    • 1970-01-01
    • 2021-10-06
    • 2019-07-03
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 2020-02-19
    相关资源
    最近更新 更多