情報処理試験を勉強していると、「ディスパッチってスケジューリングと何が違うの?」と混乱しがちです。この記事では、ディスパッチの意味をタスクの状態遷移と合わせて整理し、試験で得点できる状態を目指します。
対象試験と出題頻度
ディスパッチは、基本情報技術者・応用情報技術者で出題されるテーマです。
OS(オペレーティングシステム)のタスク管理に関する問題の中で、スケジューリングやプリエンプションとの違いを正確に区別できるかが問われます。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★☆☆☆
ランクC(応用)余裕があれば覚える
用語の定義
ディスパッチ(Dispatch)とは、一言で言うと
「実行可能状態のタスクにCPUの使用権を割り当てる、OSの制御機能」
のことです。
イメージとしては、「窓口の順番待ちで、次の人を呼び出す受付係」です。
銀行の窓口で番号札を持って待っている人たちの中から、受付係が「○番の方、2番窓口へどうぞ」と呼び出す。この「呼び出して窓口(CPU)に案内する」動作がディスパッチに当たります。
順番を決めること自体は受付係の仕事ではなく、順番決めのルール(スケジューリング)は別に存在します。
📊 ディスパッチの基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Dispatch |
| 分類 | OSのタスク管理における制御機能 |
| 実行主体 | ディスパッチャ(Dispatcher) |
| 状態遷移 | 実行可能状態 → 実行状態 |
| 対になる概念 | プリエンプション(実行状態 → 実行可能状態) |
解説
マルチタスクOSでは、複数のタスクが同時にCPUを使いたがります。
しかし、CPUは1つのコアで同時に1つのタスクしか処理できません。そこでOSはタスクを3つの状態で管理し、切り替えながら効率的に処理を進めます。
タスクの3状態とディスパッチの位置づけ
タスクは「実行可能状態」「実行状態」「待ち状態」の3つの状態を遷移します。
ディスパッチは、このうち「実行可能状態 → 実行状態」への遷移を引き起こす操作です。
タスクの状態遷移図
実行可能状態
(READY)
実行状態
(RUNNING)
待ち状態
(WAIT)
※ 待ち状態から直接「実行状態」へ遷移することはない
スケジューリングとの役割の違い
混同しやすいのが「タスクスケジューリング」との関係です。
スケジューリングは「どのタスクを次に実行するか、順番を決めるルール」であり、ディスパッチは「決まったタスクに実際にCPUを渡す動作」です。つまりスケジューリングが方針決定、ディスパッチがその実行にあたります。
| 用語 | 役割 | 状態遷移 |
|---|---|---|
| スケジューリング | 実行可能状態のタスクの中から、次に実行するタスクの順番を決定する | 状態遷移そのものではない(方針決定) |
| ディスパッチ | スケジューリングで選ばれたタスクにCPUの使用権を割り当てる | 実行可能状態 → 実行状態 |
| プリエンプション | 実行中のタスクからCPUの使用権を強制的に取り上げる | 実行状態 → 実行可能状態 |
ディスパッチャとコンテキストスイッチ
ディスパッチを実際に行うOSのプログラムを「ディスパッチャ」と呼びます。
ディスパッチャはタスクを切り替える際、現在のタスクのレジスタ値やプログラムカウンタなどの実行情報(コンテキスト)を退避し、次のタスクのコンテキストを復元します。
この一連の入れ替え処理が「コンテキストスイッチ」です。
💡 ディスパッチの核心を3行で
・実行可能状態のタスクにCPUの使用権を割り当てる操作
・スケジューリング(順番決め)とは別の概念で、ディスパッチは「実際にCPUを渡す」動作
・逆方向の操作がプリエンプション(CPUの使用権を強制回収)
では、この用語が試験でどのように出題されるか見ていきましょう。
試験ではこう出る!
ディスパッチは、FE・APの午前問題で「タスクのディスパッチの説明として適切なものを選べ」という形式で出題されています。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| FE H31春期 午前 問16 |
タスクのディスパッチの説明として適切なものを選ぶ問題。 | ・「実行可能なタスクに対してプロセッサの使用権を割り当てること」が正解 ・スケジューリング、TCB、マルチタスクの説明がひっかけ |
| AP H23秋期 午前 問19 |
同じくディスパッチの説明を選ぶ問題(FEへ流用された元問題)。 | ・「あるタスクの実行中に、別のタスクに切り替え、かつ実行権を渡すこと」が正解 ・FEとAPで同一テーマの問題が流用される典型 |
📝 IPA試験での出題パターン
パターン:「ディスパッチの説明を選べ」
4つの説明文が並び、ディスパッチに該当するものを選ぶ形式です。ひっかけとして「各タスクの実行順序を決定すること」(=スケジューリング)、「タスクの実行に必要な情報であるコンテキスト」(=TCB)、「複数のタスクを同時に実行しているかのように見せかけた状態」(=マルチタスク)が紛れ込みます。
ここだけは確実に押さえてください。「CPUの使用権を割り当てる」「実行権を渡す」というフレーズが出てきたらディスパッチです。試験ではここまででOK。コンテキストスイッチの細かい手順まで深追いする必要はありません。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. OSのタスク管理における「ディスパッチ」の説明として、最も適切なものはどれでしょうか?
- A. 各タスクの実行順序を、優先度やアルゴリズムに基づいて決定すること。
- B. 実行中のタスクからCPUの使用権を強制的に取り上げ、別のタスクに切り替えること。
- C. 実行可能状態のタスクに対してCPUの使用権を割り当て、実行状態へ遷移させること。
正解と解説を見る
正解:C
解説:
ディスパッチは、実行可能状態(READY)のタスクにCPUの使用権を割り当て、実行状態(RUNNING)へ遷移させるOSの制御機能です。前述のタスク状態遷移図での「実行可能状態 → 実行状態」の矢印がまさにこの操作に当たります。
選択肢Aはタスクスケジューリングの説明です。スケジューリングは実行順序の「方針決定」であり、CPUを渡す動作そのものではありません。選択肢Bはプリエンプションの説明です。プリエンプションはディスパッチの逆方向の操作で、実行状態のタスクからCPUの使用権を強制的に剥奪して実行可能状態に戻す処理を指します。
よくある質問(FAQ)
Q. ディスパッチとコンテキストスイッチは同じものですか?
同じではありません。ディスパッチは「タスクにCPUの使用権を割り当てる」という論理的な操作を指します。一方、コンテキストスイッチは「現在のタスクのレジスタ値やプログラムカウンタを退避し、次のタスクの情報を復元する」という具体的なハードウェアレベルの処理です。ディスパッチを実行する過程でコンテキストスイッチが発生する、という関係にあります。
Q. マルチコアCPUの場合、ディスパッチはどうなりますか?
マルチコア環境では、各コアに対してそれぞれディスパッチが行われます。つまり、4コアのCPUなら最大4つのタスクが同時に実行状態になります。ただし、IPA試験の範囲ではシングルコアを前提とした出題が大半なので、マルチコアのディスパッチまで踏み込んで覚える必要はありません。
Q. 「ノンプリエンプティブ方式」ではディスパッチはいつ起きますか?
ノンプリエンプティブ方式(非プリエンプティブ方式)では、実行中のタスクが自発的にCPUを手放す(完了するか、I/O待ちになる)までディスパッチは発生しません。タスクの途中でOSが強制的に切り替えることがないため、リアルタイム性が求められるシステムではプリエンプティブ方式が採用されるのが一般的です。
Q. TCB(タスク制御ブロック)とディスパッチはどう関係しますか?
TCBは各タスクのID、優先度、状態、レジスタの退避情報などを保持するデータ構造です。ディスパッチャはTCBを参照して次に実行すべきタスクのコンテキストを復元し、CPUの使用権を渡します。過去問ではTCBの説明がディスパッチのひっかけ選択肢として登場するため、「情報を保持する仕組み」(TCB)と「CPUを渡す動作」(ディスパッチ)の違いを区別しておくと安心です。