プロセスの状態(実行可能状態・実行状態・待ち状態)(process state)

分類
テクノロジ系 ソフトウェア
出る試験
基本情報応用情報
重要度
★★★★☆

CPUをもらえる順番待ちが実行可能状態、もらっている最中が実行状態、入出力の終わりを待っているのが待ち状態。

もう少し詳しい説明

CPUは、一度に1つの処理しか進められません。それでも何十個ものプログラムが同時に動いているように見えるのは、OSが短い時間で切り替えているからです。

切り替えるには、いま走っているのはどれで、順番を待っているのはどれかを区別する必要があります。この区別がプロセスの状態です。

ディスパッチ時間切れ入出力を頼む入出力が終わった開始実行可能実行待ち
丸が状態、矢印に書いてあるのが変わるきっかけです。待ち状態から実行状態へ直に戻る矢印が無いことを確かめてください。入出力が終わっても順番待ちの列に戻るだけで、CPUをもらえるかどうかは別の話です。左端の「開始」と書かれた短い矢印は、どの状態から始まるかを示す、決まった書き方です。
状態どんなありさまか
実行可能状態(ready)いつでも動ける。CPUの順番を待っている
実行状態(run)いまCPUをもらって動いている
待ち状態(wait)動けない。入出力やほかの資源の終わりを待っている

実行可能状態と待ち状態の違い

どちらも「待っている」ので混ざりますが、待っているものが違います。

スーパーのレジにたとえます。レジがCPUにあたります。

探し物が見つかった客は、レジの列の最後尾に並びます。見つかった瞬間にレジへ通されるわけではありません。

状態が変わる4つのきっかけ

向ききっかけ呼び名
実行可能 → 実行OSがそのプロセスを選んだディスパッチ
実行 → 実行可能割り当てられた時間を使い切ったタイムアウト(プリエンプション)
実行 → 待ち入出力などを頼んだ—
待ち → 実行可能頼んだものが終わった—

実行可能 → 実行を選ぶのは、OSの中のディスパッチャです。どれを選ぶかの決め方がスケジューリング方式で、到着順、処理時間の短い順、優先度順などがあります。

待ち状態から実行状態へは移らない

試験でいちばん狙われるのがここです。

入出力が終わったプロセスは、実行状態ではなく実行可能状態へ移ります。

入出力が終わったことと、CPUが空いていることは別の話です。終わった瞬間にほかのプロセスが走っていれば、やはり列に並びます。

状態遷移図に、待ちから実行へ向かう矢印は引かれません。 選択肢に「待ち状態から実行状態へ移る」と書いてあれば、それが誤りです。

時間を使い切ると、追い出される

実行状態のプロセスは、自分から譲らなくても外に出されます。

OSはプロセスにCPUを渡すとき、使える時間をあらかじめ決めて渡します。この持ち時間をタイムクウォンタム(タイムスライス)と呼びます。使い切ると割込みが入り、実行可能状態へ戻されます。

この取り上げを、プリエンプションと呼びます。 取り上げるしくみを持つものがプリエンプティブ方式、プロセスが自分から譲るまで待つものがノンプリエンプティブ方式です。

取り上げがないと、1つのプロセスが長い計算を始めた時点で、ほかが全部止まります。 時間で区切るのは、そうならないための決まりです。

休止状態と終了状態

3つの状態に、2つを足した図で出ることもあります。

スワップアウトスワップイン主記憶の中実行可能・実行・待ち補助記憶へ追い出された休止状態
主記憶が足りなくなると、OSはプロセスごと補助記憶へ追い出します。追い出されているあいだが休止状態です。追い出すことをスワップアウト、連れ戻すことをスワップインと呼びます。

休止状態

主記憶(いま使うプログラムとデータを置いておく記憶装置)が足りなくなると、OSはプロセスを丸ごと補助記憶へ追い出します。追い出されているあいだが休止状態(サスペンド)です。

言葉向き
スワップアウト主記憶から補助記憶へ追い出す
スワップイン補助記憶から主記憶へ連れ戻す

ロールアウト・ロールインという呼び方も、同じ動きを指します。

追い出されても、プロセスは消えていません。続きをやるための情報は保存されていて、連れ戻されたところから再開します。

仮想記憶のページ単位の入れ替えと混ざりやすいところです。スワッピング(プロセスを丸ごと補助記憶へ出し入れすること)はプロセス丸ごと、ページングはページ単位という違いがあります。

終了状態

処理が終わったプロセスが入る状態です。終わったことは記録されますが、使っていた資源は返されています。

試験ではこう出る

科目A(旧・午前)では、状態遷移図を示して、矢印のどれかを答えさせる形がよく出ます。

出やすい聞き方は、次のとおりです。

聞かれ方答え
入出力が終わったプロセスはどの状態へ移るか実行可能状態
実行可能状態から実行状態へ移すことを何と呼ぶかディスパッチ
実行状態から実行可能状態へ戻るきっかけは何か持ち時間を使い切った(割込み)

ディスパッチとスケジューリングの区別も問われます。どれを選ぶかを決めるのがスケジューリング、選んだものに実際にCPUを渡すのがディスパッチです。

応用情報では、プリエンプティブかノンプリエンプティブかで、終わる順番がどう変わるかを数えさせる問題として出ます。到着時刻と処理時間の表を渡され、処理時間の短い順などの方式で並べ替えることになります。

関連する用語

プロセスとスレッド
状態を持つ単位そのもの。スレッドにも同じ3つの状態がある
割込み
実行状態から外へ出されるきっかけになるしくみ
セマフォ
資源が空くまで待たせる道具。待ち状態を作る側
仮想記憶
主記憶が足りないとき、ページ単位で入れ替えるしくみ
デッドロック
互いに待ち合って、どのプロセスも待ち状態から出られなくなった状態

ミニクイズ

入出力の完了を待っていたプロセスが、その入出力を終えたときに移る状態はどれか。

正解は 4番:実行可能状態

入出力が終わると、待っていた理由が消えるので待ち状態からは出ます。ただし、そこで移るのは実行可能状態です。CPUは1つの処理しか同時に進められないので、ほかに動いているプロセスがいれば、順番待ちの列に並ぶことになります。実行状態へ入るのは、OSの中のディスパッチャがそのプロセスを選んだときです。待ち状態から実行状態へ直に移る矢印は、状態遷移図には引かれません。休止状態は、主記憶から補助記憶へ追い出されている状態で、入出力の完了とは関係がありません。

間違えた用語の復習リストを見る →

この分野をまとめて解く → システム構成要素とソフトウェアのミニテスト(全28問)

最終更新:2026-10-20