割込みシステムとは?実行中のプログラムを一時中断してイベントを処理するしくみ

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

割込みシステムとは(全体像)

割込みは、何かのイベントが起きたとき、実行中のプログラムをいったん止めてそちらを処理し、終わったら元に戻るしくみのこと。

身近にたとえると、仕事中に電話が鳴るのが割込みだ。今の作業を中断して電話に出て、終わったらまた作業に戻る。コンピュータも、キーボード入力やタイマなどが起きるたびに、この「中断して処理して戻る」をくり返している。

押さえたいのは、割込みはエラーではなく、ふつうのしくみだということ。キーボード入力やネットワーク受信なども、すべて割込みで処理されている。


詳しく:2つの分け方とNMIだけ覚えれば戦える

ここが記事の心臓部。割込みは2つの軸で分けられる。

割込みの2つの分け方

分け方種類意味
発生源外部割込みI/O・タイマなど。プログラムと無関係なタイミング(非同期
内部割込み(例外)0除算など。実行中の命令で発生(同期
マスク可否マスク可能(IRQ)CPUの設定で一時的に止められる
マスク不可(NMI)必ず処理される(電源異常など非常時用)

ここで取り違えやすいのがNMI(マスク不可割込み)。ふつうの割込み(IRQ)はCPUの設定で一時的に止められるが、NMIは止められず、必ず処理される。電源異常など、見逃せない非常事態のためのものだ。

処理の流れも押さえよう。

割込み処理の流れ

やること
割込み信号がCPUに届く
割込みベクタテーブル(処理担当の住所表)を見る
担当の処理(ISR)を実行する
終わったら元のプログラムに戻る

割込みには優先度があり、より高い優先度の割込みは、低い優先度の処理を中断して割り込む(プリエンプト)。つまり、緊急度の高いものが先に処理される、というわけだね。

わかりやすく言い換えると

要するに、割込みは「中断して、対応して、戻る」しくみだ。

外部割込み … 電話が鳴る(いつ来るか分からない・非同期)。I/Oやタイマ

内部割込み(例外) … 計算間違いにその場で気づく(同期)。0除算など

NMI … 火災報知器(どんなときも反応する・止められない最優先)

「割込みはエラーではなく通常のしくみ」「NMIは止められない」だけは取り違えやすい。


試験のツボ

🔴 一番出る:外部(非同期)と内部(同期)

①外部割込みはI/Oやタイマ(非同期)

②内部割込み(例外)は0除算など(同期)

🔴 次に出る:NMIはマスク不可

①ふつうの割込み(IRQ)は一時的に止められる

②NMIは止められず必ず処理される(非常時用)

🟡 押さえると安定:流れと割込みはエラーではない

①信号→ベクタテーブル→ISR→元に戻る

②割込みは通常のしくみ。キーボード入力なども割込み


よくある間違い

「すべての割込みは止められる(マスクできる)」→ ✗  NMIは止められず、必ず処理される。止められるのはIRQ。

「割込みはエラーが起きたときだけのしくみ」→ ✗  割込みは通常のしくみ。キーボード入力やタイマなども割込み。

「外部割込みはプログラムの特定の命令で同期して起きる」→ ✗  外部割込みは非同期(いつ来るか分からない)。同期なのは内部割込み(例外)。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(外部と内部)

📝 オリジナル問題 1 外部割込みと内部割込み

割込みの種類に関する次の記述のうち、正しいものはどれか。

  1. 外部割込みは命令の実行中に同期して起き、内部割込みはいつ来るか分からず非同期だ
  2. 外部割込みはI/Oやタイマで非同期、内部割込み(例外)は0除算など同期で起きる
  3. 外部割込みも内部割込みもまったく同じもので、発生のしかたに違いはないものとされる
  4. 内部割込みはキーボードなどの外部装置からのみ起き、計算とは無関係であるとされる
ネトスパ
ネトスパ 解答・解説

解答は 2 である。

外部割込みはI/Oやタイマで非同期に起き、内部割込み(例外)は0除算など同期で起きるのだ。電話と計算間違いの違いなるぞ。

選択肢1は外部と内部が逆。選択肢3の「同じ」、選択肢4の「内部は外部装置から」も誤りである。

選択肢判定理由
1外部と内部が逆
2外部=非同期・内部=同期
3発生のしかたが違う
4内部は命令の実行で起きる

オリジナル問題2(NMI)

📝 オリジナル問題 2 マスク不可割込みNMI

NMI(マスク不可割込み)に関する次の記述のうち、正しいものはどれか。

  1. NMIはふつうの割込みと同じで、CPUの設定で自由に止められるものとされている
  2. NMIはエラー専用で、キーボード入力などの通常処理にはいっさい関わらないものだ
  3. NMIは止められず必ず処理される割込みで、電源異常など非常時のために使われる
  4. NMIは優先度が最も低く、ほかの割込みがあると後回しにされるものとされている
ネトスパ
ネトスパ 解答・解説

解答は 3 である。

NMIは止められず必ず処理される割込みで、電源異常など非常時のために使われるのだ。火災報知器のごとく止められぬなるぞ。

選択肢1の「止められる」、選択肢2の「エラー専用」、選択肢4の「優先度が最も低い」はどれも誤りである。

選択肢判定理由
1NMIは止められない
2非常時用で最優先
3止められず必ず処理される
4最優先で扱われる

オリジナル問題3(割込みの位置づけと流れ)

📝 オリジナル問題 3 割込みの位置づけ

割込みの位置づけと流れに関する次の記述のうち、正しいものはどれか。

  1. 割込みは通常のしくみで、信号→ベクタテーブル→処理(ISR)→元に戻る流れで動く
  2. 割込みはエラーが起きたときだけの特別なしくみで、通常のI/Oには使われないものだ
  3. 割込みが起きると元のプログラムには二度と戻らず、そのまま終了するものとされている
  4. 割込みには優先度がなく、どの割込みも順番に同じ扱いで処理されるものとされている
ネトスパ
ネトスパ 解答・解説

解答は 1 である。

割込みは通常のしくみで、信号→ベクタテーブル→処理(ISR)→元に戻る流れで動くのだ。キーボード入力なども割込み経由なるぞ。

選択肢2の「エラーだけ」、選択肢3の「戻らない」、選択肢4の「優先度がない」はどれも誤りである。

選択肢判定理由
1通常のしくみ・処理後に戻る
2通常のI/Oも割込み
3処理後に元へ戻る
4優先度がある

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る