システムコールとは、プロセスがカーネルに処理を依頼するための方法である。
新規プロセス生成やハードウェア操作など、カーネルの助けが必要な場合に使う。
システムコールの例:
プロセス生成、削除
メモリ確保、解放
通信処理
ファイルシステム操作
デバイス操作
システムコールは、CPUの特殊な命令を実行することによって実現している。
プロセスはユーザモードで実行しているが、カーネルに処理を依頼するためにシステムコールを発行すると、CPUにおいて例外というイベントが発生する。
これをきっかけとして、CPUのモードがユーザモードからカーネルモードに遷移し、依頼内容に応じたカーネルの処理が動き始める。
カーネル内のシステムコール処理が終了したら再びユーザモードに戻ってプロセスの動作を継続する。
システムコール処理の冒頭で、カーネルはプロセスからの要求が正当なものかどうかをチェックしており、不正な要求であればシステムコールを失敗させる。
プロセスからシステムコールを介さずに直接CPUのモードを変更する方法はない。
もしあったらカーネルの存在意義がない。