【新人エンジニア向け】AMDのCPUとは?RyzenやEPYCの特徴をやさしく解説!

割込みとは?初心者エンジニアのためのやさしい解説

こんにちは。ゆうせいです。

まずはこの記事のタイトルを提案します:


【図解でわかる】割込みとは?エラーとの違いや外部割込みの具体例までやさしく解説!


エンジニアとしてプログラムを書いていると、「割込み(わりこみ)」という言葉に必ず出会います。

でも、これが意外とわかりにくいんですよね。

「なんとなく、プログラムの流れが変わるんだよね?」
「エラーとは違うの?」
「外部って何のこと?」

そんな疑問を持っているあなたに向けて、今回はそもそも「割込み」とは何か?というところから、外部割込みの原因まで、図と例を交えてていねいに解説していきます!


割込みとは?:CPUの作業に「ちょっと待って!」と言う仕組み

まず、「割込み」とは簡単に言うと…

CPU(コンピュータの頭脳)が今やっている作業を中断して、別の処理を優先して行うことです。

たとえ話で理解しよう!

たとえば、あなたが数学の宿題をしているとします。そこに電話が鳴ったらどうしますか?

ほとんどの人は、宿題を中断して電話に出ますよね。そして用件が終わったら、また宿題に戻ります。

この「電話が鳴って、宿題を中断し、また戻る」という一連の流れが、まさに割込みの仕組みです!


割込みの種類は大きく分けて2つ!

割込みには大きく分けて2種類あります:

分類内容
内部割込みCPUの内部で何か異常が起こったときに発生する0で割ろうとした、存在しない命令を実行
外部割込み外部のデバイスやタイマーからの信号により発生するキーボード入力、タイマー通知、電源異常

数式のように整理!

内部割込み = プログラム内の異常
外部割込み = 外部からの信号

つまりこういうことです:

割込み = 内部割込み + 外部割込み
        = プログラム内部の異常 + 外部装置からの要求

問題を一緒に解いてみよう!

外部割込みの原因となるものはどれか。
ア:ゼロによる除算命令の実行
イ:存在しない命令コードの実行
ウ:タイマーによる時間経過の通知
エ:ページフォールトの発生

一つずつ見ていきましょう!

ア:ゼロによる除算命令の実行

0で割るとどうなるでしょうか?
数学では「未定義」とされており、プログラム的には「内部エラー」になります。

→ これは 内部割込み の原因です。

イ:存在しない命令コードの実行

CPUが理解できない命令を受け取った場合、これは明らかな異常です。
これもプログラムの中で起こる問題ですね。

→ よって、これも 内部割込み

ウ:タイマーによる時間経過の通知

これは、CPUとは別に動いているタイマー装置が「時間だよ」と知らせてくる仕組みです。
つまり、外からやってくる信号です!

→ これは 外部割込み の典型例!

エ:ページフォールトの発生

これは、仮想メモリに関する問題です。プログラムが必要なデータをメモリから読もうとして、実際にはそのデータがメモリ上にないときに起こります。

→ OSが関与する内部処理なので、内部割込みに分類されます。


正解は?

正解:ウ(タイマーによる時間経過の通知)

これは外部装置(タイマー)からの信号による「外部割込み」です!


図で整理しよう!

下の図は、割込みの分類と代表例をまとめたものです。

割込み
├── 内部割込み(例:0除算、命令エラー、ページフォールト)
└── 外部割込み(例:キーボード入力、タイマー通知、電源トラブル)

今後の学習のポイント!

割込みは、OSやCPUの基本を理解するために欠かせない概念です。

次のステップとしては:

  • 割込みハンドラとは何か(割込みが起きたときにどんな処理が呼ばれるか)
  • 割込みの優先順位(重要な割込みが先に処理される仕組み)
  • 割込みと例外(Exception)の違い

こうした内容に進んでみましょう!

興味が出てきたら、Linuxなどのオペレーティングシステムで実際に割込み処理がどうなっているのかを見てみると、より理解が深まりますよ。

どんどん疑問を持って、ひとつずつ解決していきましょう!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。