システムコールとは何か

ryichk
·

システムコールとは、プロセスがカーネルに処理を依頼するための方法である。

新規プロセス生成やハードウェア操作など、カーネルの助けが必要な場合に使う。

システムコールの例:

  • プロセス生成、削除

  • メモリ確保、解放

  • 通信処理

  • ファイルシステム操作

  • デバイス操作

システムコールは、CPUの特殊な命令を実行することによって実現している。

プロセスはユーザモードで実行しているが、カーネルに処理を依頼するためにシステムコールを発行すると、CPUにおいて例外というイベントが発生する。

これをきっかけとして、CPUのモードがユーザモードからカーネルモードに遷移し、依頼内容に応じたカーネルの処理が動き始める。

カーネル内のシステムコール処理が終了したら再びユーザモードに戻ってプロセスの動作を継続する。

システムコール処理の冒頭で、カーネルはプロセスからの要求が正当なものかどうかをチェックしており、不正な要求であればシステムコールを失敗させる。

プロセスからシステムコールを介さずに直接CPUのモードを変更する方法はない。

もしあったらカーネルの存在意義がない。

参照

[試して理解]Linuxのしくみ ―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】

@ryichk
wanna be a good hacker.