入出力制御方式とは(全体像)
CPUとI/O装置がデータをやり取りするとき、CPUがどれだけ手をかけるかで4つの方式がある。CPUが手をかけるほど、本来の計算が止まって遅くなる。
身近にたとえると、電子レンジで温めを待つやり方だ。
- プログラム制御 … レンジの前でずっと待つ(他のことができない)。
- 割込み制御 … レンジが「ピー」と知らせてくれる(その間ほかの作業ができる)。
- DMA制御 … ロボットが料理を運んでくれる(指示と完了確認だけ)。
- チャネル制御 … 専属シェフが全部やってくれる(ほぼ任せきり)。
下にいくほどCPUの負担が軽く、速くなる。
詳しく:4方式とCPU負担の順だけ覚えれば戦える
ここが記事の心臓部。4方式を、CPU負担の重い順に並べよう。
入出力制御の4方式(CPU負担の重い順)
| 方式 | やり方 | CPU負担 | 用途 |
|---|---|---|---|
| プログラム制御 | CPUがループで「終わった?」と見張る | 大(低速) | 単純な組込み機器 |
| 割込み制御 | 完了時に装置がCPUに知らせる | 中 | 一般のPC |
| DMA制御 | CPUを介さず直接転送(完了だけ通知) | 小(高速) | 現代の主流 |
| チャネル制御 | 専用のチャネルが並行して処理する | 最小 | メインフレーム |
ここで取り違えやすいのがプログラム制御。「プログラム」という名前が能動的に見えるが、CPUがずっと見張りに張りつくので、他の処理ができず低速になる。名前にだまされないこと。
もう1つ、チャネル制御は「古い方式」と思われがちだが、今もメインフレームや大型ストレージで現役だ。
つまり、プログラム制御(遅い)→割込み→DMA→チャネル(速い・CPU負担小)の順で、CPUの負担と速さが改善していく、というわけだね。
わかりやすく言い換えると
要するに、4方式は「CPUがどれだけ手をかけるか」の違いだ。
①プログラム制御 … レンジの前でずっと待つ(CPU占有・低速)
②割込み制御 … 「ピー」で知らせてくれる(他の作業ができる)
③DMA制御 … ロボットが運ぶ(指示と完了確認だけ・高速・現代主流)
④チャネル制御 … 専属シェフに任せる(メインフレームで現役)
「プログラム制御は名前と違い低速」「チャネル制御は今も現役」だけは取り違えやすい。
試験のツボ
🔴 一番出る:4方式とCPU負担の順
①プログラム制御(重い・低速)→割込み制御(中)
②DMA制御(軽い・高速)→チャネル制御(最小)
🔴 次に出る:プログラム制御は名前と違い低速
①CPUがずっと見張りに張りつく(占有)
②他の処理ができず遅くなる
🟡 押さえると安定:DMAとチャネル
①DMAは現代の主流(CPUを介さず直接転送)
②チャネル制御は今もメインフレームで現役
よくある間違い
①「プログラム制御は名前のとおり高速」→ ✗ CPUがずっと見張るので他の処理ができず、むしろ低速。
②「チャネル制御は古い方式で、もう使われていない」→ ✗ 今もメインフレームや大型ストレージで現役。
③「DMA制御はCPUがデータを1つずつ運ぶ方式」→ ✗ DMAはCPUを介さず直接転送し、完了だけ通知する。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(4方式とCPU負担)
入出力制御方式に関する次の記述のうち、正しいものはどれか。
- CPU負担はDMA制御が最も重く、プログラム制御が最も軽いという順になっている
- CPU負担はプログラム制御が重く、割込み・DMA・チャネルの順に軽くなっていく
- 入出力制御の方式は1種類しかなく、プログラム制御以外は存在しないものとされる
- どの方式もCPU負担はまったく同じで、速さにも違いはないものとされているものだ
解答は 2 である。
CPU負担はプログラム制御が重く、割込み・DMA・チャネルの順に軽くなっていくのだ。下にいくほど速くなるなるぞ。
選択肢1はDMAとプログラム制御が逆。選択肢3の「1種類」、選択肢4の「同じ」も誤りである。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | プログラム制御が最も重い |
| 2 | ✓ | プログラム制御→割込み→DMA→チャネル |
| 3 | ✗ | 4方式ある |
| 4 | ✗ | 負担も速さも違う |
オリジナル問題2(プログラム制御)
プログラム制御に関する次の記述のうち、正しいものはどれか。
- プログラム制御はCPUがずっと見張りに張りつくため、他の処理ができず低速になる
- プログラム制御はCPUを介さず直接転送するため、4方式の中で最も高速とされている
- プログラム制御はCPUがいっさい関わらず、CPU負担がゼロになるものとされている
- プログラム制御は専用のチャネルが並行処理する、メインフレーム向けの方式である
解答は 1 である。
プログラム制御はCPUがずっと見張りに張りつくため、他の処理ができず低速になるのだ。名前は能動的だが遅いなるぞ。
選択肢2の「最も高速」、選択肢3の「CPU負担ゼロ」、選択肢4の「チャネル」はどれも誤りである。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | CPU占有で低速 |
| 2 | ✗ | 直接転送はDMA |
| 3 | ✗ | CPUを占有する |
| 4 | ✗ | それはチャネル制御 |
オリジナル問題3(DMAとチャネル)
DMA制御とチャネル制御に関する次の記述のうち、正しいものはどれか。
- DMA制御はCPUがずっと見張る方式で、チャネル制御はもう使われていないものだ
- DMA制御もチャネル制御もCPU負担が最も重く、4方式で最も遅いものとされている
- DMA制御はCPUを介さず直接転送する現代の主流、チャネル制御は今も現役である
- チャネル制御は単純な組込み機器専用で、メインフレームには使えないものとされる
解答は 3 である。
DMA制御はCPUを介さず直接転送する現代の主流、チャネル制御は今もメインフレームで現役なのだ。どちらもCPU負担が軽いなるぞ。
選択肢1の「DMAは見張る」、選択肢2の「最も重い」、選択肢4の「組込み専用」はどれも誤りである。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | DMAは直接転送・チャネルは現役 |
| 2 | ✗ | CPU負担は軽い |
| 3 | ✓ | DMAは主流・チャネルは現役 |
| 4 | ✗ | チャネルはメインフレーム向け |
まとめ
押さえどころ
- 🔴 4方式とCPU負担 = プログラム制御(重い・低速)→割込み→DMA→チャネル(軽い・高速)。
- 🔴 プログラム制御は低速 = CPUがずっと見張りに張りつくので、他の処理ができず遅い。
- 🟡 DMAとチャネル = DMAは現代の主流、チャネル制御は今もメインフレームで現役。
次に学ぶ
執筆: SikakuQuest編集部