割込み(interrupt)
- テクノロジ系
- コンピュータ構成要素
- 基本情報
- 応用情報
- 重要度 ★★★☆☆
実行中の処理をいったん中断して別の処理を行い、終わったら元の処理に戻る仕組み。
もう少し詳しい説明
割込みは、やっている作業をいったん中断して別の用事を片づけ、終わったら元の続きに戻る仕組みです。
書類を書いている最中に電話が鳴ったときを思い浮かべてください。書きかけの書類を置いて電話に出て、用件が済んだらまた書類に戻ります。
このとき大事なのが、席を立つ前に「どこまでやったか」をメモに残しておくことです。これを忘れると、戻ってきたときに続きが分からなくなります。
コンピュータの中でも、まったく同じことをしています。対応はこうです。
| たとえ | コンピュータでは |
|---|---|
| 書類を書いている人 | CPU(計算や処理を受け持つ部品) |
| 書きかけの内容・どこまで書いたか | レジスタ(CPUがいま使っている値を置いておく小さな入れ物)とプログラムカウンタ(次にどの命令を実行するかを覚えている場所) |
| メモに残す | 退避(中身を安全な場所へ移しておく) |
割込みが起きると、CPUはレジスタとプログラムカウンタの中身を退避します。これが「メモを残す」にあたります。用が済んだら退避した中身を戻し、中断したところから再開します。
なぜこんな仕組みがあるのか
もし割込みがなければ、CPUは「印刷が終わったか」を自分で何度も確認しに行くしかありません。その間、他の仕事は止まります。
割込みがあれば、CPUは印刷のことを忘れて別の仕事を進められます。終わったときに向こうから「終わりました」と声をかけてもらえるからです。待ち時間を無駄にしないための仕組みだと考えると、目的がつかめます。
内部と外部
割込みは、原因がどこにあるかで2つに分かれます。試験ではここの分類がそのまま問われます。
内部割込みは、実行中のプログラム自身が引き起こすものです。
- 0で割ってしまった(0除算)
- 計算結果が入れ物に収まらなかった(オーバフロー)
- 使ってはいけないメモリを触った
- 必要なデータがメモリになかった(ページフォールト)
外部割込みは、プログラムの外側の事情で起きるものです。
- 入出力が完了した
- タイマの時間が来た
- 電源に異常があった
- オペレータが操作した
自分のせいか、外からの事情かで振り分けると迷いません。0除算とオーバフローが内部、入出力完了・タイマ・電源異常が外部。この4つを覚えておけば、たいていの問題には対応できます。
優先度
複数の割込みが重なることもあります。そのため割込みには優先度が決められていて、高いものから処理されます。
電話中にさらに火災報知器が鳴ったら、電話を置いて先に逃げる。緊急度の高いものを先にする、という当たり前の話です。
試験ではこう出る
科目A(旧・午前)では、割込みの種類を分類させる問題が定番です。「内部割込みに分類されるものはどれか」という形で、0除算・オーバフロー・入出力完了・タイマ・電源異常などを並べ、自分が原因か外部が原因かで振り分けさせます。応用情報では、割込みが起きたときにCPUが何をどの順で行うか(実行中の情報を退避して割込み処理へ移り、終わったら復帰する)まで踏み込んで問われます。計算が要らないので、点の取りやすい分野です。 0除算とオーバフローが内部、入出力完了とタイマと電源異常が外部。この振り分けを覚えておけばほぼ対応できます。
関連する用語
- ポーリング
- CPUが定期的に用はあるかと見に行く方式。割込みは相手から知らせが来る
- DMA
- CPUを通さずに入出力装置と主記憶が直接やり取りする仕組み。終わりは割込みで知らせる
- 例外
- 内部割込みとほぼ同じ意味で使われる言葉。呼び方が違うだけのことが多い
- プロセスとスレッド
- OSが管理する処理の単位。割込みのあと、どれを動かすかを決めるのはOS
- キャッシュメモリ
- CPUのすぐそばに置く小さくて速い置き場
ミニクイズ
内部割込みに分類されるものはどれか。
正解は 3番:0による除算が発生した
実行中のプログラム自身が原因で起きるものが内部割込みで、ほかにオーバフローや不正なメモリ参照があります。残りの3つは、いずれもプログラムの外側の事情で起きる外部割込みです。「誰のせいで起きたか」を、自分か外かで分けるのが見分け方です。
最終更新:2026-09-14