---
title: "タスクのディスパッチとは？実行可能なタスクへCPUを割り当てる仕組み【基本情報技術者試験】"
description: "タスクのディスパッチを「実行可能状態のタスクにプロセッサの使用権を割り当てること」として整理し、スケジューリング、TCB、コンテキスト、マルチタスクとの違いをFE試験向けに解説します。"
last_modified_at: "2026-07-25"
canonical_url: "https://stemtazoo.github.io/fe/task-dispatch/"
section: "fe"
---

## まず結論

タスクのディスパッチとは、**実行可能状態のタスクに、プロセッサの使用権を割り当てること**です。

基本情報技術者試験では、次のように切り分けると判断しやすくなります。

| 用語 | ざっくり意味 | 判断の合図 |
|---|---|---|
| スケジューリング | 次に実行するタスクを決める | 実行順序、優先順位 |
| ディスパッチ | 選ばれたタスクへCPUを割り当てる | CPU使用権、プロセッサ割当て |
| TCB | タスクの管理情報 | タスクID、優先度、状態、コンテキスト |
| マルチタスク | 複数タスクを同時実行のように見せる | 複数タスク、並行処理 |

特に、**CPUを割り当てる**、**プロセッサの使用権を与える** という説明が出たら、ディスパッチを疑います。

## 直感的な説明

タスクのディスパッチは、1つしかない作業席を、次の作業者に渡すイメージです。

CPUを「作業席」と考えてみます。

作業したいタスクが複数あっても、1つのCPUでは、同じ瞬間に実行できるタスクは基本的に1つです。

```text
タスクA：実行したい
タスクB：実行したい
タスクC：実行したい
```

このとき、まず「次にどのタスクを実行するか」を決めます。

これが **スケジューリング** です。

```text
次はタスクBにしよう
```

そして、選ばれたタスクBにCPUを渡して、実行状態にします。

これが **ディスパッチ** です。

```text
タスクBにCPU使用権を渡す
  → タスクBが実行状態になる
```

つまり、

```text
スケジューリング = 誰を次にするか決める
ディスパッチ = 実際にCPUを渡す
```

と考えると分かりやすいです。

## 定義・仕組み

タスクとは、OSが管理する処理の単位です。

OSは、複数のタスクを管理しながら、どのタスクにCPUを使わせるかを制御します。

タスクは、代表的に次のような状態を移ります。

| 状態 | 意味 |
|---|---|
| 実行可能 | CPUが割り当てられれば実行できる状態 |
| 実行 | CPUを使って処理している状態 |
| 待ち | 入出力完了などを待っている状態 |
| 終了 | タスクの処理が終わった状態 |

ディスパッチは、**実行可能状態のタスクを実行状態に移す操作** と考えると整理しやすいです。

```text
実行可能
  ↓ CPU割当て（ディスパッチ）
実行
```

このとき、OSの中でディスパッチを行うプログラムを **ディスパッチャ** と呼びます。

関連する用語は、次のように整理できます。

| 用語 | 意味 |
|---|---|
| スケジューラ | 次に実行するタスクを選ぶ仕組み |
| ディスパッチャ | 選ばれたタスクにCPUを割り当てる仕組み |
| TCB | タスクを管理するための情報を保持する領域 |
| コンテキスト | タスクを中断・再開するために必要なCPU状態 |

TCBには、タスクの状態、優先度、レジスタ情報、プログラムカウンタなど、タスク管理に必要な情報が保持されます。

このテーマは、基本情報技術者試験の「オペレーティングシステム」や「タスク管理」と関係する内容です。公式の出題範囲やシラバスは、[IPA：基本情報技術者試験](https://www.ipa.go.jp/shiken/kubun/fe.html) から確認できます。

## 科目Aでどう出る？

科目Aでは、ディスパッチ、スケジューリング、TCB、マルチタスクなどの説明を選ぶ問題が出やすいです。

用語を選ぶときは、説明文の中心が **決定** なのか、**CPUの割当て** なのか、**管理情報** なのかを見ます。

| 説明の中心 | 対応する用語 | 見るポイント |
|---|---|---|
| 実行順序や優先順位を決める | スケジューリング | 次にどのタスクを実行するか |
| CPU使用権を割り当てる | ディスパッチ | 選ばれたタスクを実行状態にする |
| タスクの状態や優先度を保持する | TCB | タスク管理のための情報 |
| タスク再開に必要なCPU状態を保持する | コンテキスト | レジスタ、プログラムカウンタなど |
| 複数タスクを同時実行のように見せる | マルチタスク | CPUを短時間で切り替える |

選択肢を切るときは、次の対応を使うと便利です。

```text
順番を決める      → スケジューリング
CPUを割り当てる   → ディスパッチ
管理情報を持つ    → TCB
状態を保存する    → コンテキスト
同時に見せる      → マルチタスク
```

英語で言うなら、次の感覚です。

```text
Dispatch means assigning the CPU to a ready task.
```

「ready task」は、実行可能状態のタスクという意味です。

## どんな場面で使う？

問題文では、ディスパッチという用語そのものより、タスク状態の遷移やCPU割当ての流れを読む場面で役立ちます。

例えば、次のような流れです。

```text
実行可能状態のタスクが複数ある
  ↓
スケジューラが次のタスクを選ぶ
  ↓
ディスパッチャがCPUを割り当てる
  ↓
選ばれたタスクが実行状態になる
```

また、実行中のタスクが入出力を要求すると、待ち状態へ移ることがあります。

```text
実行
  ↓ 入出力要求
待ち
  ↓ 入出力完了
実行可能
  ↓ ディスパッチ
実行
```

このように、ディスパッチは、タスク状態遷移の中で **実行可能から実行へ移る場面** と関係します。

問題文で読むときは、次の点を確認すると理解しやすくなります。

```text
1. タスクは実行可能状態か
2. CPUを割り当てる場面か
3. 実行順序を決める話か
4. タスクの状態や管理情報の話か
```

「CPUを割り当てる」ならディスパッチ、「順序を決める」ならスケジューリングです。

## よくある誤解・混同

### 誤解1：ディスパッチとスケジューリングを同じだと思う

ディスパッチとスケジューリングは近い関係ですが、役割が違います。

| 用語 | 役割 |
|---|---|
| スケジューリング | 次に実行するタスクを決める |
| ディスパッチ | 選ばれたタスクにCPUを割り当てる |

試験では、**決める** と **割り当てる** を分けて読みます。

```text
実行順序を決定する
  → スケジューリング

プロセッサの使用権を割り当てる
  → ディスパッチ
```

### 誤解2：TCBをディスパッチだと思う

TCBは、Task Control Block の略で、タスクを管理するための情報を保持する領域です。

ディスパッチは操作であり、TCBは情報を保持するものです。

| 用語 | 見るポイント |
|---|---|
| ディスパッチ | CPU使用権を割り当てる操作 |
| TCB | タスクID、状態、優先度、コンテキストなどの管理情報 |

「タスクの実行に必要な情報」とあれば、ディスパッチではなくTCBやコンテキストを考えます。

### 誤解3：マルチタスクをディスパッチだと思う

マルチタスクは、複数のタスクを並行して実行しているように見せる仕組みです。

ディスパッチは、その中で実行可能なタスクにCPUを割り当てる操作です。

```text
マルチタスク：複数タスクを同時に動いているように見せる考え方
ディスパッチ：その中でCPUを渡す操作
```

「同時に実行しているかのように見せる」とあれば、マルチタスクを疑います。

### 誤解4：コンテキストを「文章の文脈」と考えてしまう

一般的な英語では、context は「文脈」という意味です。

しかし、OSの文脈では、コンテキストはタスクを中断・再開するために必要なCPU状態を指します。

例えば、次のような情報です。

```text
レジスタの値
プログラムカウンタ
スタックポインタ
実行途中の状態
```

コンテキストを保存しておくことで、別のタスクに切り替えたあとでも、元のタスクを再開できます。

## まとめ（試験直前用）

- ディスパッチは、実行可能なタスクへCPU使用権を割り当てること
- **順番を決める** のはスケジューリング
- **CPUを渡す** のがディスパッチ
- **タスクの管理情報** はTCB
- **複数タスクを同時に見せる** のはマルチタスク
- タスク状態では、実行可能から実行へ移る場面に注目する
