让我们假设我们有4 GiB的RAM,我们使用4 kiB的页表大小,32位地址。
经过我的计算,我得到了:
但我无法理解的是,如果一个页表有2 ^ 20个条目,我们已经用这个页表覆盖了所有可能的地址。 如果每个进程都有自己的页表,怎么可能?那么应该可以在多个页面表上使用相同的物理地址,这可能会导致严重的问题,或者我错过了什么?
非常感谢您的帮助。
答案 0 :(得分:0)
理论上,每个进程都可以映射所有内存,但实际上,进程地址空间中的大多数页面都没有映射,为其他进程留下了大量内存。
此外,将相同的页面映射到两个不同的地址空间不一定会导致问题。它是针对进程间通信的进程之间共享的共享库,内核页面和内存完成的。
(内核页面可以映射到每个进程,以便内核可以在任何进程的系统调用期间访问自己的页面。这些页面受到保护,因此应用程序代码无法访问它们。)