为什么所有的进程页表要共享内核页表?

如果出于内核和用户空间隔离考虑,这里应该不能共享的。共享就会让用户进程能感知到内核的内存布局,不知道会导致什么问题,但是感觉内核的内存布局用户进程应该不能访问。

通过查一些资料,现在linux这样做的原因是为了性能考虑,解决在用户态和内核态之间切换时可能导致的性能问题。

这位阿里内核开发的回答:

问题1:为什么内核空间页表各进程内容是完全一样,还需要每个进程独立一份
我认为是出于性考虑,如果所有进程在内核态都使用同一份页表,CPU从用户态进入内核态的所有场景(系统调用,硬中断),首先做的一个事情就是切页表,然后得刷TLB等事情,开销较大,不可接受,所以采用每个进程进入内核态进不需要切换页表的方案。


作者:海枫
链接:https://www.zhihu.com/question/24916947/answer/138032365
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
      
posted @ 2020-12-17 11:17  Birding  阅读(1340)  评论(0编辑  收藏  举报