页表的大小和可用的物理地址
问题描述:
我们假设我们有4 GiB的RAM,并且我们使用4 kiB的页表大小和32位地址。页表的大小和可用的物理地址
我的计算后,我得到了:
- 我们只能解决2^32个地址的最大;
- 每页表共有2^20个条目;
- 总共有4 GiB/4 kiB = 1048576页。
但我不明白的是,如果一个页表有2^20个条目,我们已经用这个页表覆盖了所有可能的地址。 如果每个进程都有自己的页面表,可能性如何?那么应该可以在多个页面表上使用相同的物理地址,这可能导致严重问题,或者我错过了什么?
非常感谢您的帮助。
答
每个进程在理论上可以映射所有内存,但实际上,进程地址空间中的大部分页面都没有映射,为其他进程留下了大量内存。
此外,将同一页映射到两个不同的地址空间并不一定会导致问题。它用于进程间通信的共享库,内核页面和内存之间共享。
(内核页面可以被映射到每一道工序,这样内核可以从任何过程的系统调用期间访问自己的页面,这些页面已经被保护,使他们无法通过应用程序代码进行访问。)