情報処理試験を勉強していると、「割込みって結局どういう仕組み?内部と外部の違いは?」と混乱しがちです。この記事では、割込みの基本から内部割込み・外部割込みの分類、試験での出題パターンまでを一気に整理します。

対象試験と出題頻度

割込みは、基本情報技術者・応用情報技術者で出題されるテーマです。

CPUの動作原理に直結する分野であり、「内部割込みと外部割込みの具体例を正しく分類できるか」が繰り返し問われます。

詳細をクリックして確認
対象試験:
基本情報技術者
応用情報技術者
出題頻度:
★★★☆☆
ランクB(標準)覚えておくと有利

用語の定義

割込み(Interrupt)とは、一言で言うと

 「CPUが実行中のプログラムを一時停止し、緊急度の高い事象を優先的に処理する仕組み

のことです。

イメージとしては、授業中に鳴る非常ベルです。

授業(=実行中のプログラム)の途中で非常ベルが鳴ったら、先生も生徒もまず避難行動(=割込み処理)を最優先で行います。

避難が完了したら、中断していた授業の続きに戻ります。CPUもこれと同じ流れで動いています。

📊 割込みの基本情報

項目 内容
英語名 Interrupt
大分類 内部割込み(ソフトウェア割込み)と外部割込み(ハードウェア割込み)
目的 緊急の事象(エラー、I/O完了、タイマー通知など)に即座に対応する
関連キーワード 割込みハンドラ、割込みベクタ、PSW(プログラムステータスワード)

解説

CPUはプログラムの命令を順番に取り出して実行しますが、現実のコンピュータでは「キーボード入力があった」「計算中にゼロ除算が発生した」「タイマーが満了した」など、今すぐ対処すべきイベントが頻繁に発生します。

これらに対応するために、CPUには「今やっている処理を中断して、別の処理を優先実行する」仕組みが備わっています。この仕組みが割込みであり、発生源の違いによって内部割込みと外部割込みに分類されます。

割込み発生時の処理フロー

割込みが発生すると、CPUは以下の順序で処理を行います。

割込み発生時の処理フロー

① プログラムを実行中
⬇ 割込み発生
② 実行中の状態(PSW・レジスタ)を退避
③ 割込みベクタから割込みハンドラのアドレスを取得
④ 割込みハンドラ(割込み処理ルーチン)を実行
⑤ 退避していた状態を復帰し、元のプログラムに戻る

※ PSW(Program Status Word)はプログラムカウンタや条件コードなどCPUの状態を保持するレジスタ

内部割込みの種類

内部割込みは、実行中のプログラム自身が原因でCPU内部から発生する割込みです。プログラム割込みとSVC割込みの2系統があります。

🔵 内部割込みの分類

種類 発生原因 具体例
プログラム割込み 命令実行中に発生する異常やエラー ゼロ除算、オーバーフロー、特権命令違反、不正な命令コード
SVC割込み
(スーパーバイザコール)
ユーザープログラムがOSの機能を呼び出す命令を実行 システムコール(ファイル操作、メモリ確保の要求など)
ページフォールト 仮想記憶管理で、アクセス先のページが主記憶上に存在しない 存在しないページへのアクセス

外部割込みの種類

外部割込みは、実行中のプログラムとは無関係にCPU外部のハードウェアから発生する割込みです。

🟠 外部割込みの分類

種類 発生原因 具体例
入出力割込み I/O装置がデータ転送の完了をCPUに通知 ディスク読み込み完了、プリンター出力完了
タイマー割込み インターバルタイマーが設定時間の経過を通知 OSのタイムスライス制御(タスク切替)
コンソール割込み オペレーターが手動でCPUに介入 コンソールからの強制停止操作
機械チェック割込み ハードウェアの物理的な障害を検知 メモリパリティエラー、電源異常

図解:内部割込みと外部割込みの全体像

2つの分類と代表的な種類を1枚のマップで整理します。ここだけは確実に押さえてください。

割込みの分類マップ

内部割込み
(実行中のプログラムが原因)
プログラム割込み
ゼロ除算 / オーバーフロー / 特権命令違反 / 不正命令コード
SVC割込み
システムコール命令の実行
ページフォールト
主記憶に存在しないページへのアクセス
外部割込み
(CPU外部のハードウェアが原因)
入出力割込み
I/O動作の完了通知
タイマー割込み
インターバルタイマーの時間経過
コンソール割込み
オペレーターの手動介入
機械チェック割込み
メモリパリティエラー / 電源異常

▲ 判別基準は「実行中のプログラム自身が原因か否か」。これだけで分類できる

では、この分類が試験でどのように問われるか見ていきましょう。

💡 割込みの核心を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命令を発行してカーネルモードに切り替えます。プログラムが自ら発行する命令なので内部割込みに分類されます。