Skip to the content.

最終更新日:2026年8月4日

まず結論

内部割込みと外部割込みは、何がきっかけで発生したかで見分けます。

実行中の命令やプログラムが原因
→ 内部割込み

タイマーや入出力装置など、命令とは独立した原因
→ 外部割込み

基本情報技術者試験では、次の対応を押さえると判断しやすいです。

発生原因 分類
0除算 内部割込み
未定義命令 内部割込み
不正なメモリアクセス 内部割込み
ページフォールト 内部割込み
システムコール 内部割込み
タイマー満了 外部割込み
入出力装置の処理完了 外部割込み
ウォッチドッグタイマーのタイムアウト 外部割込み
電源異常・ハードウェア異常 外部割込み

特に、ウォッチドッグタイマーは外部割込みとして判断します。

直感的な説明

割込みは、CPUが今の処理をいったん止めて、先に対処すべき処理へ切り替える仕組みです。

例えば、通常のプログラムを実行している途中でキーボード入力があった場合、CPUは入力を処理してから元のプログラムへ戻ります。

通常の処理を実行
↓
割込みが発生
↓
現在の処理状態を保存
↓
割込み処理を実行
↓
元の処理へ戻る

内部割込みと外部割込みの違いは、割込みの原因です。

内部割込みのイメージ

プログラム自身が、実行中に問題や要求を発生させます。

0で割る
未定義命令を実行する
存在しないメモリ領域へアクセスする

CPUが命令を実行した結果として発生するため、内部割込みです。

外部割込みのイメージ

CPUの処理とは別に、外部装置やタイマーから通知が来ます。

タイマーが満了する
入出力処理が完了する
ウォッチドッグタイマーがタイムアウトする

命令の実行結果ではなく、非同期のイベントとして発生するため、外部割込みです。

定義・仕組み

割込みとは

割込みは、CPUが実行中の処理を一時停止し、優先して処理すべき事象に対応する仕組みです。

割込みが発生すると、一般には次のような処理が行われます。

1. 実行中の命令を区切りのよい位置まで処理する
2. プログラムカウンタやレジスタの内容を保存する
3. 割込み処理ルーチンへ移る
4. 必要な処理を実行する
5. 保存した状態を戻す
6. 元のプログラムを再開する

割込みを使うことで、CPUは外部装置を常に監視し続けなくても、必要なときだけ処理できます。

内部割込み

内部割込みは、実行中の命令やプログラムを原因として発生する割込みです。

代表例は次のとおりです。

内容
0除算 除数が0の演算を実行した
オーバーフロー 表現可能な範囲を超えた
未定義命令 CPUが解釈できない命令を実行した
不正メモリアクセス 許可されていない領域などへアクセスした
ページフォールト 必要なページが主記憶に存在しない
システムコール プログラムがOSの機能を要求した
命令を実行した
↓
CPUが異常や要求を検出した
↓
内部割込み

内部割込みは、例外やトラップと呼ばれる場合もあります。

外部割込み

外部割込みは、実行中の命令とは独立した外部要因で発生する割込みです。

代表例は次のとおりです。

内容
タイマー割込み 一定時間の経過を通知する
入出力割込み 入出力装置の処理完了などを通知する
ウォッチドッグタイマー システム異常をタイムアウトで検出する
機械チェック割込み ハードウェア異常を通知する
電源異常割込み 電源低下や停電などを通知する
装置やタイマーでイベント発生
↓
CPUへ通知
↓
外部割込み

物理的にタイマーがCPU内部に組み込まれていても、FE試験では、命令とは独立して発生する非同期イベントとして外部割込みに整理します。

同期と非同期という見方

内部割込みと外部割込みは、同期・非同期という観点でも整理できます。

分類 発生タイミング
内部割込み 特定の命令実行に伴って同期的に発生する
外部割込み 実行中の命令とは独立して非同期に発生する

例えば、同じプログラムを同じ入力で実行すれば、0除算は同じ命令位置で発生します。

一方、キーボード入力やタイマー満了は、どの命令を実行しているときに発生するかが決まっていません。

このテーマは、基本情報技術者試験の「コンピュータ構成要素」や「オペレーティングシステム」と関係する内容です。公式の出題範囲やシラバスは、IPA:基本情報技術者試験から確認できます。

科目Aでどう出る?

科目Aでは、割込みの発生原因を見て、内部割込みか外部割込みかを選ぶ問題が出題されます。

判断手順

問題文を見たら、次の順で考えます。

1. 実行中の命令が原因か
2. プログラム自身の異常や要求か
3. タイマー・入出力装置・電源などからの通知か

対応は次のとおりです。

命令やプログラムが原因
→ 内部割込み

装置・タイマー・ハードウェアが原因
→ 外部割込み

選択肢を切るキーワード

問題文の手掛かり 判断
0で除算した 内部割込み
未定義命令を実行した 内部割込み
存在しないメモリ領域へアクセスした 内部割込み
OSの機能を呼び出した 内部割込み
タイマーが満了した 外部割込み
入出力が完了した 外部割込み
ウォッチドッグタイマーがタイムアウトした 外部割込み
電源異常を検出した 外部割込み

判断例

次のうち、外部割込みに分類されるものを考えます。

  • 0除算
  • ウォッチドッグタイマーのタイムアウト
  • 未定義命令
  • 不正なメモリアクセス

0除算、未定義命令、不正なメモリアクセスは、いずれも実行中のプログラムが原因です。

一方、ウォッチドッグタイマーは、プログラムの正常動作を監視するタイマーからの通知です。

ウォッチドッグタイマーのタイムアウト
→ 命令そのものが原因ではない
→ 外部割込み

どんな場面で使う?

入出力処理

CPUが入出力装置の完了を何度も確認する方法をポーリングといいます。

CPU:終わった?
装置:まだ
CPU:終わった?
装置:まだ

割込み方式では、装置の処理が完了した時点でCPUへ通知します。

CPUは別の処理を実行
↓
入出力完了
↓
装置から割込み
↓
完了処理を実行

CPU時間を有効に使いやすいのが利点です。

タイムシェアリング

OSはタイマー割込みを使い、一定時間ごとに実行するプログラムを切り替えます。

プログラムAを実行
↓ タイマー割込み
プログラムBへ切替え
↓ タイマー割込み
プログラムCへ切替え

これにより、複数のプログラムが同時に動いているように見えます。

ウォッチドッグタイマー

ウォッチドッグタイマーは、組込みシステムや機械制御で、プログラムの停止や暴走を監視するために使います。

正常なプログラムは、一定時間内にウォッチドッグタイマーをリセットします。

正常動作
→ 定期的にタイマーをリセット

プログラムが無限ループなどで停止すると、リセットが行われません。

異常発生
↓
リセット信号が来ない
↓
タイムアウト
↓
割込みまたはシステムリセット

ウォッチドッグタイマーは、処理中の命令が直接発生させるものではないため、外部割込みです。

システムコール

アプリケーションがファイル操作や入出力などのOS機能を利用する場合、システムコールを使います。

アプリケーション
↓ システムコール
OSの処理へ切替え

プログラムが意図的に命令を実行して発生させるため、内部割込みとして整理されます。

よくある誤解・混同

ハードウェアが検出したら外部割込み

0除算や未定義命令も、CPUというハードウェアが検出します。

しかし、分類するときに見るのは、誰が検出したかではありません。

誰が検出したか
ではなく
何が原因か

実行中の命令が原因なら、内部割込みです。

メモリアクセス異常はメモリ装置が原因

存在しない領域や許可されていない領域へアクセスする原因は、実行中のプログラムです。

そのため、内部割込みに分類します。

タイマーがCPU内部にあるなら内部割込み

内部割込みの「内部」は、部品の物理的な配置だけを指すものではありません。

FE試験では、命令実行に同期して発生するか、命令とは独立したイベントとして発生するかで判断します。

命令実行が原因
→ 内部割込み

命令とは独立したタイマーイベント
→ 外部割込み

システムコールは外部のOSを呼ぶので外部割込み

システムコールは、実行中のプログラムが意図的に発生させます。

そのため、内部割込みとして扱います。

ページフォールトは障害だから外部割込み

ページフォールトは、プログラムが参照したページが主記憶にないときに発生します。

特定の命令実行に伴って発生するため、内部割込みです。

なお、ページフォールトは必ずしもプログラムの誤りではありません。仮想記憶では、必要なページを補助記憶から読み込むための通常の仕組みとしても使われます。

外部割込みはすべて予測不能

外部割込みには、一定周期のタイマー割込みのように発生時刻をある程度予測できるものもあります。

重要なのは、発生原因が実行中の命令そのものではないことです。

まとめ(試験直前用)

  • 割込みは、実行中の処理を一時停止して優先処理へ切り替える仕組み
  • 内部割込みは、実行中の命令やプログラムが原因
  • 0除算、未定義命令、不正メモリアクセス、ページフォールトは内部割込み
  • システムコールもプログラムをきっかけにする内部割込み
  • 外部割込みは、タイマーや入出力装置など命令とは独立した原因
  • タイマー割込み、入出力割込み、電源異常は外部割込み
  • ウォッチドッグタイマーのタイムアウトは外部割込み
  • 「誰が検出したか」ではなく「何が原因か」で判断する
  • 命令に同期するなら内部、命令とは独立するなら外部

© 2024-2026 stemtazoo. All rights reserved.