[解決済み] Linuxカーネルのcopy_from_userは、内部でどのように動作しているのでしょうか?
2022-03-01 10:23:46
質問
具体的にはどのように
copy_from_user()
関数は、内部でどのように動作しているのでしょうか?カーネルがユーザーメモリ空間にアクセスする権限を持っていることを考えると、バッファを使用したり、メモリマッピングを行ったりするのでしょうか?
解決方法は?
の実装は
copy_from_user()
は、アーキテクチャに大きく依存します。
x86とx86-64では、ユーザー空間のアドレスから直接読み込み、カーネル空間のアドレスに書き込むだけで、SMAP(Supervisor Mode Access Prevention)が設定されていれば一時的に無効化する。 これのやっかいなところは
copy_from_user()
のコードは特殊な領域に配置され、その領域で障害が発生したときにページ障害ハンドラが認識できるようになっています。 メモリ保護フォールトは
copy_from_user()
は、他のプロセスコンテキストのコードによって引き起こされた場合のようにプロセスを殺すことも、割り込みコンテキストで発生した場合のようにカーネルをパニックにすることもなく、単に
-EFAULT
を呼び出し元に返します。
関連
-
[解決済み] ls -al 出力列フィールド
-
[解決済み] 次のコマンドの -print0 の意味を教えてください。
-
[解決済み] ls: 読み込みディレクトリ .: 入出力エラー [閉じた].
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] Linux で grep を使ってファイル名だけを表示するにはどうしたらいいですか?
-
[解決済み] Cプリプロセッサはなぜ "linux "という単語を定数 "1 "と解釈するのですか?
-
[解決済み] php.iniはどこにありますか?
-
[解決済み] Linuxカーネルのprocess/unlikelyマクロはどのように動作し、どのような利点があるのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] at&tアセンブリの「push」と「pushq」の違いは何ですか?
-
[解決済み] insmod エラー: './hello.ko' を挿入: -1 無効なモジュール形式".
-
[解決済み] 共有ライブラリの読み込み中にエラーが発生しました: libncurses.so.5:
-
[解決済み] mvで移動先のディレクトリが存在しない場合、作成させる方法はありますか?
-
[解決済み] モスキートクライアントの取得が接続を拒否
-
[解決済み] lsコマンドの出力をフィルタリングして、2月に作成されたファイルのみを表示させるにはどうすればよいですか?
-
[解決済み] PowerShellで文字数、単語数、行数を数える
-
[解決済み] LinuxでXcodeを動かせるか?
-
[解決済み] bashの「#$」はどういう意味ですか?
-
[解決済み] Vimを保存して終了するにはどうしたらいいですか?