為什么所有的進程頁表要共享內核頁表?


如果出於內核和用戶空間隔離考慮,這里應該不能共享的。共享就會讓用戶進程能感知到內核的內存布局,不知道會導致什么問題,但是感覺內核的內存布局用戶進程應該不能訪問。

通過查一些資料,現在linux這樣做的原因是為了性能考慮,解決在用戶態和內核態之間切換時可能導致的性能問題。

這位阿里內核開發的回答:

問題1:為什么內核空間頁表各進程內容是完全一樣,還需要每個進程獨立一份
我認為是出於性考慮,如果所有進程在內核態都使用同一份頁表,CPU從用戶態進入內核態的所有場景(系統調用,硬中斷),首先做的一個事情就是切頁表,然后得刷TLB等事情,開銷較大,不可接受,所以采用每個進程進入內核態進不需要切換頁表的方案。


作者:海楓
鏈接:https://www.zhihu.com/question/24916947/answer/138032365
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM