为什么所有的进程页表要共享内核页表?
如果出于内核和用户空间隔离考虑,这里应该不能共享的。共享就会让用户进程能感知到内核的内存布局,不知道会导致什么问题,但是感觉内核的内存布局用户进程应该不能访问。
通过查一些资料,现在linux这样做的原因是为了性能考虑,解决在用户态和内核态之间切换时可能导致的性能问题。
这位阿里内核开发的回答:
问题1:为什么内核空间页表各进程内容是完全一样,还需要每个进程独立一份
我认为是出于性考虑,如果所有进程在内核态都使用同一份页表,CPU从用户态进入内核态的所有场景(系统调用,硬中断),首先做的一个事情就是切页表,然后得刷TLB等事情,开销较大,不可接受,所以采用每个进程进入内核态进不需要切换页表的方案。
作者:海枫
链接:https://www.zhihu.com/question/24916947/answer/138032365
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。