2017-08-03 4 views
0

copy_to_user関数でページ違反が発生した場合、例外テーブルが使用されることがわかりました。
しかし、ほとんどすべての修正は戻り値を設定し、ページフォールトをトリガーした後の次の命令にジャンプすることがわかりました。
カーネルはユーザー空間アドレスのマッピングをどこで行いますか?
少なくとも、カーネルがページテーブルを変更する場所があることを意味します。copy_to_userのページフォルト、どのようにカーネルがユーザー空間アドレスのページをマップしていますか?

答えて

0

あなたの質問はcopy_to_userは基本的にユーザ空間カーネル空間からデータをコピーするための機能である、非常に不明です。主にセキュリティ上の理由から、カーネルのデータ構造やカーネルスペースへのユーザアクセスを望まないためです。ですから、私たちにこのデータを与えるためにカーネルに要求する仕組みが必要です。

本当に新しいマッピングがページテーブルに追加されます。マッピングはが存在する kernel-spaceで行われます。

関連する問題