每个进程都有自己的页表吗?

Posted

技术标签:

【中文标题】每个进程都有自己的页表吗?【英文标题】:Does every process have its own page table? 【发布时间】:2011-05-21 20:18:45 【问题描述】:

每个进程都有自己的页表,还是只是将其页条目添加到一个大页表中?

【问题讨论】:

顺便说一下,如果您开始了解翻译后备缓冲区,如果您知道在上下文切换时为当前进程重新加载翻译后备缓冲区,则不会那么混乱。跨度> 【参考方案1】:

是的,每个进程都有自己的页表。它们可能与父进程(写入时复制)或其他进程(共享内存)共享。但总的来说,每个过程都有自己的。

【讨论】:

假设内核空间通常不超过 1GB,因为所有页表都需要在内核内存中,因此系统将如何处理运行大量进程(这并不罕见)? @chamibuddhika 相信每个进程的页表都在进程的用户空间中。为什么你认为所有的页表都应该在内核内存中?全局页框结构是一个巨大的数组,位于内核空间中。对于流程,我不这么认为。【参考方案2】:

是的,除非您使用 倒排页表 see this answer。因为倒排页表是全局的,所以每个条目还必须包含它属于哪个进程。

【讨论】:

以上是关于每个进程都有自己的页表吗?的主要内容,如果未能解决你的问题,请参考以下文章

腾讯一面:内存满了,会发生什么?

腾讯一面被问到内存满了,会发生什么?

Linux 线程及进程总结

linux内存管理

Linux虚拟内存相关知识

linux内存管理(repost)