プロセス管理とは(全体像)
プロセスとは、実際に動いているプログラムのこと。OSは複数のプロセスを少しずつ順番に動かし、人には同時に動いているように見せる。これを支えるのがプロセス管理だ。
身近にたとえると、工場での仕事の進み方だ。1つの仕事(プロセス)は、指示書を作る→順番待ち→作業中→部品の到着待ち→完了、と状態が移り変わる。OSは作業員(CPU)をうまく割り振り、たくさんの仕事を回していく。
押さえるのは、プロセスが5つの状態を移り変わるということ。「4状態」と覚えるのは誤りで、生成と終了を入れた5状態が正式だ。
詳しく:5状態とfork-execの流れだけ覚えれば戦える
ここが記事の心臓部。まずプロセスの5状態を整理しましょう。
プロセスの5状態
| 状態 | 意味 | 工場のたとえ |
|---|---|---|
| 生成(New) | 作成中。まだ動けない | 指示書を作成中 |
| 実行可能(Ready) | CPUの順番待ち | 作業員の手が空くのを待つ |
| 実行中(Running) | CPUで実際に動いている | 作業中 |
| 待機(Blocked) | I/Oなどの完了待ち | 部品の到着を待つ |
| 終了(Terminated) | 終了処理中 | 完了報告 |
OSは、これらの状態を移し替えながら複数のプロセスを回します。とくに「実行可能(順番待ち)」と「実行中」を行き来するのが基本の動きです。
次に、Unixでのプロセスの作り方。3つの手順でできています。
Unixのプロセス生成(fork→exec→wait)
| 手順 | 役割 |
|---|---|
| fork | 親プロセスをそっくり複製して子を作る |
| exec | 子のプログラムを別のものに置き換える |
| wait | 親が子の終了を待つ |
ここで取り違えやすいのがforkです。forkは「複製」をするだけで、新しいプログラムを動かすのはexecの役目。「fork=新しいプログラムの実行」は誤りで、複製(fork)と置換(exec)は役割が分かれています。
最後にPCB(プロセス制御ブロック)。これはプロセス1つ1つの情報をまとめた管理カードで、PID(番号)・状態・CPUの途中経過(レジスタ)・メモリの位置などを記録します。プロセスを切り替えるとき、このPCBを保存・復元するのがコンテキストスイッチです。
わかりやすく言い換えると
要するに、工場の仕事の流れで覚えるとラクです。
①5状態 … 生成→実行可能(順番待ち)→実行中→待機(部品待ち)→終了
②fork→exec→wait … 複製(fork)→中身を入れ替え(exec)→終了を待つ(wait)
③PCBとコンテキストスイッチ … 仕事ごとの進捗カード(PCB)を引き継ぐ手続き(切替)
つまり、「プロセスは5状態」「forkは複製・execで置換」、この2点が試験の急所です。
試験のツボ
🔴 一番出る:プロセスの5状態
①生成→実行可能(CPU待ち)→実行中→待機(I/O待ち)→終了
②「実行可能」と「実行中」を行き来するのが基本
🔴 次に出る:fork→exec→wait
①fork = 親を複製して子を作る/exec = 子のプログラムを置き換える
②wait = 親が子の終了を待つ(「forkで新プログラム」は誤り)
🟡 押さえると安定:PCBとコンテキストスイッチ
①PCB = プロセスごとの管理カード(PID・状態・レジスタなど)
②コンテキストスイッチ = 切替時にPCBを保存・復元する
よくある間違い
①「プロセスは4状態である」→ ✗ 生成と終了を入れた5状態が正式。簡略版で4状態とする教材もあるが正式は5状態。
②「forkは新しいプログラムを実行する」→ ✗ forkは複製するだけ。新しいプログラムに置き換えるのはexec。
③「PCBはプログラムのソースコードそのものである」→ ✗ PCBはプロセスの管理情報(PID・状態・レジスタなど)をまとめたもの。ソースコードではない。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(プロセスの5状態)
プロセスの状態に関する次の記述のうち、正しいものはどれか。
- プロセスは生成・実行可能・実行中・待機・終了という5状態を移り変わるものとされている
- プロセスは実行中の1状態しかなく、待ちや終了といった状態は存在しないものとされている
- プロセスは紙に印刷された状態だけを指し、CPUでの実行とは無関係なものとされているのだ
- プロセスはハードウェアの一種で、状態の移り変わりという考え方はないものとされているのだ
解答は 1 ですよ。
プロセスは生成・実行可能・実行中・待機・終了の5状態を移り変わりますね。4状態ではなく、生成と終了を入れた5状態が正式です。
選択肢2の「1状態だけ」、選択肢3の「紙に印刷」、選択肢4の「ハードウェア」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | 生成・実行可能・実行中・待機・終了の5状態 |
| 2 | ✗ | 待ちや終了の状態もある |
| 3 | ✗ | CPUで実行されるプログラム |
| 4 | ✗ | ソフトウェアの概念 |
オリジナル問題2(fork→exec→wait)
Unixのプロセス生成に関する次の記述のうち、正しいものはどれか。
- forkは新しいプログラムを直接実行し、execは親プロセスを複製する手順とされているのだ
- forkもexecもまったく同じ働きで、複製か置換かという役割の違いはないものとされている
- forkは親プロセスを複製して子を作り、execは子のプログラムを別のものに置き換えるのだ
- forkは紙に印刷する手順で、execは画面に表示する手順とされ、プロセスとは無関係である
解答は 3 ですよ。
forkは親プロセスを複製して子を作り、execは子のプログラムを別のものに置き換える手順ですね。複製と置換は役割が分かれています。
選択肢1のforkとexecが逆、選択肢2の「同じ働き」、選択肢4の「印刷・表示」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | forkは複製、新プログラムはexec |
| 2 | ✗ | 複製と置換で役割が違う |
| 3 | ✓ | forkは複製・execは置換 |
| 4 | ✗ | 印刷や表示の手順ではない |
オリジナル問題3(PCB)
PCB(プロセス制御ブロック)に関する次の記述のうち、正しいものはどれか。
- PCBは紙に印刷する装置のことで、プロセスの管理とは無関係なものとされているものだ
- PCBはプロセスごとのPID・状態・レジスタなどの管理情報をまとめたものとされている
- PCBはプログラムのソースコードそのもので、管理情報はいっさい持たないものとされている
- PCBはハードウェアの電源装置の一種で、プロセスの情報は記録しないものとされているのだ
解答は 2 ですよ。
PCBはプロセスごとのPID・状態・レジスタなどの管理情報をまとめたものですね。切替のときは、このPCBを保存・復元します(コンテキストスイッチ)。
選択肢1の「印刷する装置」、選択肢3の「ソースコードそのもの」、選択肢4の「電源装置」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 印刷装置ではない |
| 2 | ✓ | PID・状態・レジスタなどの管理情報 |
| 3 | ✗ | ソースコードではない |
| 4 | ✗ | 電源装置ではない |
まとめ
押さえどころ
- 🔴 プロセスの5状態 = 生成→実行可能(CPU待ち)→実行中→待機(I/O待ち)→終了。4状態ではなく5状態。
- 🔴 fork→exec→wait = forkは複製、execは置換、waitは終了待ち。「forkで新プログラム」は誤り。
- 🟡 PCBとコンテキストスイッチ = PCBはプロセスごとの管理カード。切替時にPCBを保存・復元する。
次に学ぶ
- OS(オペレーティングシステム) ── プロセス管理を担うカーネルを含む、OSの構成と役割。
- マルチプロセッサ ── 複数のCPUで複数のプロセスを並行して動かすしくみ。
執筆: SikakuQuest編集部