Q.
システムコールとは何か説明せよ。
またシステムコールの代表的な関数名を挙げよ
A.
システムコールはユーザーが実行したい操作をユーザーの代わりに実行するように、OSのカーネルに対して要求する手段です。
下図はOSを簡略化した図だが、のUser mode から、Kernel Mode にする依頼をシステムコールという。
上図のように何故、User modeを介してKarnel にアクセスするかと言えば、
1、Karnel(カーネル)を直接操作しないことによってOSのカーネルを直接操作するのは困難という事と、Karnelのプログラムを書き換えない為という事ができる。
代表的なシステムコールの関数には下記の関数がある。
- fork() : 新たなプロセスを生成
- execve() : 子プロセスにコマンドラインで指定したコマンドを実行させる
- wait() : 親プロセスは子プロセスの終了を待つ
- write
- read
上記の関数を使う際にシステムコールが発生する。
例えばwrite 関数の第2引数で標準出力(standart output)する。
これはポインタで渡されまた'' "に囲われた文字はアスキーコード表の対応番号に割り振られ、文字列として出力されるとうことだ。