【问题标题】:Size of page tables and available physical addresses页表大小和可用物理地址
【发布时间】:2017-05-14 16:35:43
【问题描述】:

假设我们有 4 GiB 的 RAM,我们使用 4 kiB 大小的页表,具有 32 位地址。

经过我的计算,我得到:

  • 我们最多只能寻址 2^32 个地址;
  • 每个页表共有2^20个条目;
  • 我们总共有 4 GiB/4 kiB = 1048576 个页面。

但我不明白的是,如果一个页表有 2^20 个条目,我们已经用这个页表覆盖了所有可能的地址。 如果每个进程都有自己的页表怎么可能?那么应该可以在多个页表上拥有相同的物理地址,这可能会导致严重的问题,还是我遗漏了什么?

非常感谢您的帮助。

【问题讨论】:

    标签: mmu virtual-address-space page-tables


    【解决方案1】:

    理论上每个进程都可以映射所有内存,但实际上,一个进程的地址空间中的大部分页面都没有映射,从而为其他进程留下了大量内存。

    此外,将相同的页面映射到两个不同的地址空间并不一定会导致问题。它适用于在进程间共享的共享库、内核页面和内存,以进行进程间通信。

    (内核页面可以映射到每个进程,以便内核可以在任何进程的系统调用期间访问自己的页面。这些页面受到保护,因此应用程序代码无法访问它们。)

    【讨论】:

      猜你喜欢
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多