情報処理試験を勉強していると、「割込みって結局どういう仕組み?内部と外部の違いは?」と混乱しがちです。この記事では、割込みの基本から内部割込み・外部割込みの分類、試験での出題パターンまでを一気に整理します。
対象試験と出題頻度
割込みは、基本情報技術者・応用情報技術者で出題されるテーマです。
CPUの動作原理に直結する分野であり、「内部割込みと外部割込みの具体例を正しく分類できるか」が繰り返し問われます。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★☆☆
ランクB(標準)覚えておくと有利
用語の定義
割込み(Interrupt)とは、一言で言うと
「CPUが実行中のプログラムを一時停止し、緊急度の高い事象を優先的に処理する仕組み」
のことです。
イメージとしては、「授業中に鳴る非常ベル」です。
授業(=実行中のプログラム)の途中で非常ベルが鳴ったら、先生も生徒もまず避難行動(=割込み処理)を最優先で行います。
避難が完了したら、中断していた授業の続きに戻ります。CPUもこれと同じ流れで動いています。
📊 割込みの基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Interrupt |
| 大分類 | 内部割込み(ソフトウェア割込み)と外部割込み(ハードウェア割込み) |
| 目的 | 緊急の事象(エラー、I/O完了、タイマー通知など)に即座に対応する |
| 関連キーワード | 割込みハンドラ、割込みベクタ、PSW(プログラムステータスワード) |
解説
CPUはプログラムの命令を順番に取り出して実行しますが、現実のコンピュータでは「キーボード入力があった」「計算中にゼロ除算が発生した」「タイマーが満了した」など、今すぐ対処すべきイベントが頻繁に発生します。
これらに対応するために、CPUには「今やっている処理を中断して、別の処理を優先実行する」仕組みが備わっています。この仕組みが割込みであり、発生源の違いによって内部割込みと外部割込みに分類されます。
割込み発生時の処理フロー
割込みが発生すると、CPUは以下の順序で処理を行います。
割込み発生時の処理フロー
※ PSW(Program Status Word)はプログラムカウンタや条件コードなどCPUの状態を保持するレジスタ
内部割込みの種類
内部割込みは、実行中のプログラム自身が原因でCPU内部から発生する割込みです。プログラム割込みとSVC割込みの2系統があります。
🔵 内部割込みの分類
| 種類 | 発生原因 | 具体例 |
|---|---|---|
| プログラム割込み | 命令実行中に発生する異常やエラー | ゼロ除算、オーバーフロー、特権命令違反、不正な命令コード |
| SVC割込み (スーパーバイザコール) |
ユーザープログラムがOSの機能を呼び出す命令を実行 | システムコール(ファイル操作、メモリ確保の要求など) |
| ページフォールト | 仮想記憶管理で、アクセス先のページが主記憶上に存在しない | 存在しないページへのアクセス |
外部割込みの種類
外部割込みは、実行中のプログラムとは無関係にCPU外部のハードウェアから発生する割込みです。
🟠 外部割込みの分類
| 種類 | 発生原因 | 具体例 |
|---|---|---|
| 入出力割込み | I/O装置がデータ転送の完了をCPUに通知 | ディスク読み込み完了、プリンター出力完了 |
| タイマー割込み | インターバルタイマーが設定時間の経過を通知 | OSのタイムスライス制御(タスク切替) |
| コンソール割込み | オペレーターが手動でCPUに介入 | コンソールからの強制停止操作 |
| 機械チェック割込み | ハードウェアの物理的な障害を検知 | メモリパリティエラー、電源異常 |
図解:内部割込みと外部割込みの全体像
2つの分類と代表的な種類を1枚のマップで整理します。ここだけは確実に押さえてください。
割込みの分類マップ
▲ 判別基準は「実行中のプログラム自身が原因か否か」。これだけで分類できる
では、この分類が試験でどのように問われるか見ていきましょう。
💡 割込みの核心を3行で
・CPUが処理を中断して緊急の事象に対応する仕組み
・内部割込み=プログラム自身が原因(ゼロ除算、SVC、ページフォールトなど)
・外部割込み=ハードウェアが原因(入出力完了、タイマー、電源異常など)
試験ではこう出る!
割込みは、FE・APの午前問題(科目A)で定番の出題テーマです。出題パターンはほぼ1つに固定されています。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| FE サンプル問題 科目A 問10 |
外部割込みの原因となるものを選ぶ | ・正解は「タイマーによる時間経過の通知」 ・ゼロ除算、存在しない命令コード、ページフォールトがひっかけ |
| FE H29秋 問10 |
外部割込みに分類されるものを選ぶ | ・正解は「インターバルタイマーによる割込み」 ・演算オーバーフロー、ページフォールト、SVC命令がひっかけ |
| FE H30春 問10 |
内部割込みに分類されるものを選ぶ | ・正解は「ゼロで除算を実行したことによる割込み」 ・電源異常、入出力完了、タイマー満了がひっかけ |
| AP H21春 午前 問10 |
外部割込みの要因を選ぶ | ・正解は「マシンチェック(ハードウェア異常)」 ・ページフォールト、特権命令違反、演算例外がひっかけ |
📝 IPA試験での出題パターン
パターン:「内部 or 外部に分類されるものを選べ」
4つの選択肢に割込みの具体例が並び、指定された分類に該当するものを1つ選ぶ形式です。選択肢は毎回ほぼ同じ顔ぶれ(ゼロ除算、タイマー、入出力完了、ページフォールト、電源異常など)が使い回されています。
最大のひっかけ:ページフォールト
「メモリ関連だからハードウェア(外部)では?」と迷う受験者が多い。しかしページフォールトは「プログラムがアクセスした結果発生する」ため内部割込みに分類されます。ここは必ず押さえてください。
試験ではここまででOKです。割込みの優先度制御やネスト(多重割込み)まで深追いする必要はありません。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. 外部割込みの原因となるものはどれか。
- A. 仮想記憶管理において、存在しないページへのアクセスによって生じる割込み
- B. ゼロによる除算命令の実行によって生じる割込み
- C. インターバルタイマーによって、指定時間経過時に生じる割込み
正解と解説を見る
正解:C
解説:
インターバルタイマーはCPU外部のハードウェアであり、設定時間の経過をCPUに通知することで発生する割込みは外部割込みに分類されます。
選択肢Aはページフォールトの説明です。プログラムが存在しないページにアクセスした結果として発生するため、内部割込みに該当します。選択肢Bはプログラム割込みの典型例です。ゼロ除算はCPUが演算命令を実行した際に検出されるエラーであり、実行中のプログラムが原因であるため内部割込みです。
よくある質問(FAQ)
Q. 割込みとポーリングはどう違いますか?
ポーリングは、CPUが定期的にI/O装置の状態を確認しに行く方式です。「用事があるか?」とCPU側から繰り返し問い合わせるため、確認のたびにCPU時間を消費します。一方、割込みはI/O装置側から「完了した」とCPUに通知する方式なので、CPUは通知が来るまで別の処理に集中できます。効率面では割込み方式が優位であり、現代のOSはほぼすべて割込みベースでI/Oを制御しています。
Q. DMA(Direct Memory Access)と割込みの関係は?
DMAは、CPUを介さずにI/O装置と主記憶の間で直接データを転送する方式です。DMA転送が完了すると、DMAコントローラがCPUに対して入出力割込み(外部割込み)を発生させます。つまりDMAと割込みは「転送方式」と「完了通知の仕組み」という別の話であり、DMAの完了通知手段として割込みが使われるという関係です。
Q. 多重割込み(割込みのネスト)とは何ですか?
割込み処理の実行中にさらに別の割込みが発生することです。OSは割込みに優先度を設定しており、現在処理中の割込みより優先度の高い割込みが発生した場合は、現在の処理を中断して新しい割込みを先に処理します。優先度が低い場合はキューに積んで後回しにします。APの午前問題ではタイムチャートを読み取らせる計算問題として出題されることがあります。
Q. SVC割込みの「SVC」は何の略ですか?
SVC は SuperVisor Call の略です。ユーザープログラムがOS(スーパーバイザ)の機能を呼び出すために、意図的に発生させる割込みです。例えばファイルの読み書きやメモリの確保など、ハードウェアに直接アクセスする処理はOS経由で行う必要があるため、SVC命令を発行してカーネルモードに切り替えます。プログラムが自ら発行する命令なので内部割込みに分類されます。