为什么每个进程(或任何地址空间)都有自己的页表?

时间:2016-01-10 14:05:18

标签: operating-system

  1. 为什么每个进程(或任何地址空间)都有自己的页表?

    • 我认为如果我们对所有进程使用单个页表,那么进程可以访问其他进程的地址空间,因此我们需要为每个进程提供单独的页表。这意味着实际属于特定进程的页面将是有效的,而属于某个其他地址空间的所有其他页面将被标记为无效。我对么?
    • 如果是,那么为什么我们不再在页表中添加一个字段作为“进程ID”来区分每个进程的地址空间?
    • 如果没有,为什么每个进程(或任何地址空间)都有自己的页表?
  2. 多级分页如何减小页表的大小?

    • 因为我们添加了一些页表(在多级分页中)作为开销,而实际的页表也在主内存中
  3. 假设我们将3级分页作为1(更接近CPU) - > 2> 3;所以我们每个级别有三个页面表。每个页面表中包含哪些信息?我担心第三级页表,其中包含数据所在的实际帧号。现在进程使用哪些页表?

    • 所有???那么包含实际帧的第3级页表应该与原始页表的大小相同(没有多级),因为它必须包含物理内存使用的所有帧的条目。

1 个答案:

答案 0 :(得分:0)

是的,你说的是单独的页表背后的原因之一是安全问题。寻呼接口由硬件暴露给操作系统。硬件不明白什么是流程?进程语义是操作系统设计的一部分。因此,我们无法向页表添加进程ID。您可以查看硬件手册以了解分页的工作原理。是的,你是对的,多级页面无助于减小页面表的大小。在我看来,硬件要求是顶级页面表必须始终映射到内存中。如果只有一个级别,那么即使不使用它们,也总是需要映射所有页面表页面。这可能是硬件公开多级页表的原因。