プログラミング第三

4/8/2013

UNIXシステムコール(1)

プロセスとは実行中のプログラムのこと
OSはプロセスにメモリ、CPU、IOなどの計算資源を与える
OSは時分割等でプロセスを切替える
プロセスの優先度を切替えることで複数のプロセスを並列処理しているように見せている
プロセスはシステムコール経由でOSのサービスを受ける
プロセスはシステムコールfork()で生成される

プロセス管理表
psコマンドで/bin/psにあるOSがプロセスを管理するための情報を表示する
プロセススケジューリング
preemption(横取り)とは、一定時間でOSが強制的にプロセスの実行をスイッチすること
ブロックとは、入出力などのイベント待ちで実行を一時中断すること
カーネルはブロックしたプロセスを「待ち状態(blocked)」にして、別プロセスを実行する
横取りやブロックでプロセス切り替えが起こる
スケジューリングとは、実行可能な複数のプロセスから、次に実行するものを選ぶこと
ブロックするプログラムは、getchar.c、sleep.cなど

プロセス生成に関連するシステムコールとして
fork() : プロセスの生成
exec : プロセスの変身 (execve()、execlp()など)
exit() : プロセスの終了
wait() : 子プロセスを持つ

fork()
<unistd.h> pid_t fork(void)
実行中のプロセスのコピーを作る
UNIXでは新しいプロセスをコピーから作る
プログラム例: fork.c forktest.c
最終更新:2013年04月12日 22:37