虚拟地址空间和物理 RAM

虚拟地址空间和物理 RAM

在 Ubuntu 上,当我查看 meminfo 时,我注意到虚拟地址空间总数远大于物理 RAM 总数:

/proc $ cat meminfo
MemTotal:        6113156 kB
...
VmallocTotal:   34359738367 kB

我以为虚拟地址空间直接映射到 RAM 地址空间。那么它怎么会大这么多呢?

答案1

处理器保存虚拟页面到物理页面的映射。这是事实。

由于当进程尝试访问不应该访问的页面中的内存时会发生异常(意味着调用内核),内核可以利用此事实来交换存储在磁盘上的页面,然后从中断的地方恢复进程,而不仅仅是对进程进行分段错误。

因此,通过这种方式,您可以获得一个交换文件,其中的页面实际上已完全“交换出”RAM,并且不存在于 RAM 中。这实际上不是 MMU 硬件设计的一部分,但它涉及内核在用户空间进程的后台物理执行交换。

相关内容