2017-05-14 84 views
0

我们假设我们有4 GiB的RAM,并且我们使用4 kiB的页表大小和32位地址。页表的大小和可用的物理地址

我的计算后,我得到了:

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

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

非常感谢您的帮助。

回答

0

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

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

(内核页面可以被映射到每一道工序,这样内核可以从任何过程的系统调用期间访问自己的页面,这些页面已经被保护,使他们无法通过应用程序代码进行访问。)

相关问题