FE EXAM

タスクの状態遷移(3状態モデル)

タスクが実行可能・実行中・待機の3状態を移り変わる仕組み。

INTERACTIVE VISUALIZATION
実行可能
実行中
待機
フェーズ
idle
現在の状態
実行可能
遷移
3状態の全体像
シナリオ
ステップ1 / 7
STEP 1/73つの状態を確認するタスク(=実行させたい仕事の単位)は、生成されてから終了するまで3つの状態を行き来します。実行可能(ready)・実行中(running)・待機(waiting)の3つです。まずはこの3つの箱と、それらをつなぐ矢印(遷移)の全体像をながめてください。
ディスパッチタイムスライス満了I/O要求I/O完了実行可能ready実行中running待機waiting
解説

📌
タスクの状態遷移とは

実行可能実行中待機

タスクの状態遷移とは、タスク(=実行させたい仕事の単位)が、生成されてから終了するまでの間に、いくつかの状態を行き来する仕組みのことです。基本となるのが実行可能・実行中・待機の3状態モデルです。

身近な例で考えると、1台のレジに並ぶ客に似ています。列に並んで待つ(実行可能)、レジで会計する(実行中)、商品を取りに売り場へ戻る(待機)のように、客は状況に応じて立場を移り変わります。

上のツールで▶ボタンを押すと、タスクが「実行可能→実行中→待機→実行可能」と状態を移り変わり、どの矢印(遷移)をたどるのかを順番に確認できます。

🔵
3状態の意味

実行可能割当て待ち実行中CPU使用中待機I/O完了待ち

3つの状態には、それぞれ次のような意味があります。
実行可能(ready):いつでも動けるが、CPU(=中央処理装置)の割当てを待っている状態
実行中(running):CPUを使って、実際に処理を実行している状態
待機(waiting/blocked):I/O(=入出力、ディスクやネットワークのやり取り)などの完了を待っている状態

ポイントは、実行中になれるタスクは一度に1つだけという点です。CPUが1つなら、同時に処理できるタスクも1つだからです。残りのタスクは実行可能(順番待ち)か、待機(I/Oの完了待ち)のどちらかにいます。

実行可能と待機はどちらも「いま実行していない」状態ですが、違いは「すぐ動けるかどうか」です。実行可能はCPUさえ空けばすぐ動けますが、待機はI/Oが終わるまで動けません。上のツールでは、状態ごとに色を変えてあるので見分けられます。

➡️
遷移条件

状態と状態をつなぐ矢印(遷移)には、それぞれ「どんなときに移るか」という条件があります。
実行可能 → 実行中:ディスパッチ(=CPUの割当て)が行われたとき
実行中 → 実行可能:タイムスライス満了・プリエンプション(=持ち時間切れで横取りされたとき)
実行中 → 待機:I/O要求などで処理を一時停止したとき
待機 → 実行可能:待っていたI/Oが完了したとき

ここで特に注意したいのが、実行可能から待機への直接の遷移は無いという点です。待機に入れるのは「実行中のタスクがI/Oを要求したとき」だけだからです。まだ動いてもいないタスクが、いきなりI/Oの完了を待つことはありません。

同じく、待機からいきなり実行中へも移りません。I/Oが完了したらまず実行可能へ戻り、順番待ちに並び直します。CPUは1つしかないので、空くまで待つ必要があるからです。上のツールの矢印をたどると、どの遷移が「ある」か「無い」かを確かめられます。

練習問題

🎯
基本情報技術者 練習問題

Q1.タスクの3つの状態の組み合わせとして正しいものはどれか。
A.実行可能・実行中・待機
B.起動・停止・休止
C.送信・受信・確認
D.入力・処理・出力
Q2.実行中のタスクがディスクの読み書き(I/O)を要求したときの状態遷移として正しいものはどれか。
A.実行中 → 実行可能
B.実行中 → 待機
C.待機 → 実行中
D.実行可能 → 待機
Q3.タスクの状態遷移について正しいものはどれか。
A.I/O完了後は待機から直接実行中へ移る
B.実行可能から待機へ直接移ることができる
C.I/O完了後は待機から実行可能へ移り、順番待ちに並び直す
D.実行中から実行可能へは決して移らない

関連コンテンツ