地址空间和页表有什么关系?我知道每个进程都应该有一个在虚拟地址到物理地址之间映射的页表。但是地址空间有什么作用呢?在 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 来做虚拟到物理内存的映射,为什么我们需要页表呢?
期待您的帮助!谢谢!