---
title: "割込み（Interrupt）とは？内部割込みと外部割込みの違い【基本情報技術者試験】"
description: "割込み（Interrupt）を、実行中の処理を一時中断して優先処理を行う仕組みとして整理し、内部割込み、外部割込み、タイマー割込み、ゼロ除算、ページフォールト、ソフトウェア割込みの違いをFE試験向けに解説します。"
last_modified_at: "2026-07-25"
canonical_url: "https://stemtazoo.github.io/fe/interrupt/"
section: "fe"
---

## まず結論

割込み（Interrupt）とは、**実行中の処理をいったん中断して、優先して別の処理を行う仕組み**です。

英語の `interrupt` は「割り込む」「中断させる」という意味です。

基本情報技術者試験では、まず次のように切り分けると分かりやすいです。

```text
実行中のプログラムが原因
→ 内部割込み

タイマー・入出力装置・外部信号が原因
→ 外部割込み
```

「インターバルタイマーによって、指定時間経過時に生じる割込み」と出たら、**外部割込み** と判断します。

## 直感的な説明

CPUは、プログラムを順番に実行しています。

しかし、実行中でも、すぐ対応したいことが起きる場合があります。

例えば、

```text
タイマーで一定時間が経過した
入出力装置から処理完了の通知が来た
計算中にゼロ除算が起きた
存在しないページへアクセスした
```

このようなとき、今の処理をいったん止めて、先に必要な処理を行います。

これが割込み（Interrupt）です。

ポイントは、**割込みの原因がどこにあるか** です。

```text
プログラムの実行中に、そのプログラムが原因で起きる
→ 内部割込み

プログラムの外側から通知される
→ 外部割込み
```

## 定義・仕組み

割込みは、CPUが実行中の処理を一時停止し、割込みに対応する処理を行ってから、元の処理に戻る仕組みです。

大きく分けると、内部割込みと外部割込みがあります。

| 種類 | 原因 | 例 |
|---|---|---|
| 内部割込み | 実行中のプログラムが原因 | ゼロ除算、オーバーフロー、ページフォールト、ソフトウェア割込み |
| 外部割込み | 実行中のプログラム以外が原因 | タイマー割込み、入出力装置からの通知、外部信号 |

### 内部割込み

内部割込みは、実行中のプログラムが原因で発生する割込みです。

例えば、次のような場合です。

```text
0で割ろうとした
計算結果が表せる範囲を超えた
存在しないページへアクセスした
ソフトウェア割込み命令を実行した
```

これらは、実行中の命令やプログラムの動作がきっかけになっています。

### 外部割込み

外部割込みは、実行中のプログラム以外の原因で発生する割込みです。

例えば、次のような場合です。

```text
タイマーで指定時間が経過した
入出力装置から処理完了の通知が来た
外部機器から信号が来た
```

インターバルタイマーは、CPU内部の計算ミスではなく、タイマーによる通知です。

そのため、外部割込みに分類されます。

公式の出題範囲やシラバスは、[IPA：基本情報技術者試験](https://www.ipa.go.jp/shiken/kubun/fe.html) から確認できます。割込みは、CPUやOS、コンピュータシステムの基本動作と関係が深い内容です。

## 科目Aでどう出る？

科目Aでは、割込みの例から、内部割込みか外部割込みかを選ぶ問題が出やすいです。

選択肢を切るときは、原因を見ます。

| 問題文のキーワード | 判断 |
|---|---|
| インターバルタイマー、指定時間経過 | 外部割込み |
| 入出力装置からの通知 | 外部割込み |
| オーバーフロー | 内部割込み |
| ゼロによる除算 | 内部割込み |
| 存在しないページへのアクセス | 内部割込み |
| ソフトウェア割込み命令 | 内部割込み |

例えば、次のように、

```text
インターバルタイマーによって、指定時間経過時に生じる割込み
```

とあれば、タイマーが原因です。

実行中のプログラムの計算結果や命令エラーが原因ではないので、外部割込みです。

一方、

```text
演算結果のオーバーフロー
ゼロによる除算
```

は、実行中のプログラムが原因なので内部割込みです。

## どんな場面で使う？


OSや入出力処理、タスク制御の問題では、割込みの考え方が役立ちます。

例えば、次のような説明が出たときです。

- 入出力処理が完了したのでCPUに知らせる
- タイマーで一定時間ごとに処理を切り替える
- 異常な命令実行を検出して例外処理を行う
- ページフォールトが発生して必要なページを読み込む

このときは、まず次のように見ます。

```text
外部からの通知か
プログラム実行中の異常か
```

外部からの通知なら外部割込み、プログラム実行中の異常なら内部割込みです。

## よくある誤解・混同

一番混同しやすいのは、タイマー割込みを内部割込みだと思ってしまうことです。

| 混同しやすい点 | 正しい理解 |
|---|---|
| タイマーはCPUが使うので内部割込み | タイマー通知は実行中プログラムの原因ではないので外部割込み |
| ゼロ除算は外部から起きる | ゼロ除算は実行中プログラムが原因なので内部割込み |
| ページフォールトはメモリの話なので外部割込み | 存在しないページへのアクセスは実行中プログラムが原因なので内部割込み |
| ソフトウェア割込みは外部割込み | ソフトウェア割込み命令の実行なので内部割込み |

判断に迷ったら、次の一文で考えます。

```text
実行中のプログラムが原因か？
```

原因がプログラム側にあれば内部割込みです。

原因がタイマーや入出力装置など、プログラムの外側にあれば外部割込みです。

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

- 割込み（Interrupt）は、実行中の処理を一時中断して優先処理を行う仕組み
- 実行中プログラムが原因なら **内部割込み**
- タイマー、入出力装置、外部信号が原因なら **外部割込み**
- ゼロ除算、オーバーフロー、ページフォールト、ソフトウェア割込みは内部割込み
- インターバルタイマーによる指定時間経過は外部割込み
