0
我瞭解到,當copy_to_user
函數中發生頁面錯誤時,將使用異常表。
但是我發現幾乎所有的修復都會設置返回值並跳轉到觸發頁面錯誤之後的下一條指令。
內核在哪裏做用戶空間地址的映射工作?
我的意思是至少有一些地方內核會修改頁表。copy_to_user中的頁面錯誤,內核如何爲用戶空間地址映射頁面?
我瞭解到,當copy_to_user
函數中發生頁面錯誤時,將使用異常表。
但是我發現幾乎所有的修復都會設置返回值並跳轉到觸發頁面錯誤之後的下一條指令。
內核在哪裏做用戶空間地址的映射工作?
我的意思是至少有一些地方內核會修改頁表。copy_to_user中的頁面錯誤,內核如何爲用戶空間地址映射頁面?
你提的問題是非常不清楚,一個copy_to_user
基本上是從內核空間將數據複製到用戶空間功能。主要是出於安全原因,因爲我們不想讓用戶訪問內核數據結構和內核空間。所以我們需要一個機制來請求內核給我們提供這些數據。
確實會在頁表中添加新的映射。該映射在page-tables
所在的 kernel-space
中完成。