如果出於內核和用戶空間隔離考慮,這里應該不能共享的。共享就會讓用戶進程能感知到內核的內存布局,不知道會導致什么問題,但是感覺內核的內存布局用戶進程應該不能訪問。
通過查一些資料,現在linux這樣做的原因是為了性能考慮,解決在用戶態和內核態之間切換時可能導致的性能問題。
這位阿里內核開發的回答:
問題1:為什么內核空間頁表各進程內容是完全一樣,還需要每個進程獨立一份
我認為是出於性考慮,如果所有進程在內核態都使用同一份頁表,CPU從用戶態進入內核態的所有場景(系統調用,硬中斷),首先做的一個事情就是切頁表,然后得刷TLB等事情,開銷較大,不可接受,所以采用每個進程進入內核態進不需要切換頁表的方案。
作者:海楓
鏈接:https://www.zhihu.com/question/24916947/answer/138032365
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。