基本情報技術者 2014年 秋期 午前(科目A) 問10
問題文
内部割込みに分類されるものはどれか。
選択肢
ア:商用電源の瞬時停電などの電源異常による割込み
イ:ゼロで除算を実行したことによる割込み(正解)
ウ:入出力が完了したことによる割込み
エ:メモリパリティエラーが発生したことによる割込み
内部割込みに分類されるものはどれか。【午前2 解説】
要点まとめ
- 結論:命令の実行中にCPUが検出する例外(ゼロでの除算など)が内部割込みに当たり、イが正解です。これは同期的に発生し命令フローに依存します。
- 根拠:内部割込みは「命令の実行に伴う同期例外」であり、ゼロ除算・算術オーバーフロー・不正命令などが典型で、I/O完了や電源異常は外部割込みです。
- 差がつくポイント:「同期(命令依存)か非同期(外部起因)か」を基準に判断し、発生源がCPU内か外部デバイスかを見極めて下さい。
正解の理由
ゼロで除算を実行したことによる割込み(イ)は、命令実行そのものが原因でCPUが例外を検出するため内部割込みに該当します。内部割込み(例外)は命令の実行時に同期的に発生し、プロセッサが直ちに制御を移して例外処理ルーチンに入ります。したがって選択肢の中で最も典型的な内部割込みはゼロ除算です。
よくある誤解
- メモリパリティエラー(エ)を内部割込みと誤判定する:メモリエラーはハードウェア側(メモリコントローラ等)が検出する非同期事象として扱われることが多く、外部起因と判断されます。
- 入出力完了(ウ)を「CPUの処理による」と誤解する:I/O完了割込みは周辺機器が生成する非同期割込みで外部割込みです。
- ソフトウェア割込み(trap)と内部割込みを混同する:ソフトウェア割込みはプログラムが意図的に発生させるもので分類が異なる(ソフトウェア→トラップ/システムコール等)。
解法ステップ
- 「内部割込み(内部例外)」の定義を思い出す:命令実行時にCPUが検出する同期例外。
- 各選択肢が「命令実行による同期的な原因」か「外部ハードウェア由来の非同期的原因」かを判定する。
- 同期的原因に該当する選択肢を選ぶ(今回の場合はゼロ除算)。
選択肢別の誤答解説
- ア: 商用電源の瞬時停電などの電源異常による割込み
- 説明:電源異常は外部ハードウェアイベントであり非同期。外部割込み(またはNMIなどの特別な外部割込み)に該当します。
- イ: ゼロで除算を実行したことによる割込み
- 説明:命令実行中にCPUが検出する典型的な内部例外(内部割込み)で正解です。
- ウ: 入出力が完了したことによる割込み
- 説明:周辺機器が完了を通知するために生成する非同期割込みであり外部割込みです。
- エ: メモリパリティエラーが発生したことによる割込み
- 説明:メモリのパリティエラーはメモリサブシステムやコントローラが検出するハードウェアイベントで、実務や試験では外部発生事象(非同期)として扱われることが一般的です(※アーキテクチャによっては機械チェック例外として扱われる場合もありますが、本問の分類では外部扱い)。
補足コラム
- 用語整理:内部割込み=例外(Exception)、同期的に発生。外部割込み=ハードウェアイベントやタイマ等による非同期割込み。ソフトウェア割込み=プログラムが発生させる割込み(trap/system call)。
- UNIX系の例:ゼロ除算はカーネルに渡されSIGFPE(浮動小数点例外)等としてプロセスに通知されます。
- 注意点:一部のハードウェア(機械チェック、NMI)は「内部的なエラー検出」でも特殊扱いされるため、教科書や出題範囲に沿って分類することが重要です。
簡単な例(C言語):
#include <stdio.h>
int main(void){
int a = 1;
int b = 0;
int c = a / b; // 実行時にゼロ除算の例外が発生(SIGFPE 等)
printf("%d\n", c);
return 0;
}
FAQ
Q1: ページフォルト(ページ割り込み)は内部割込みですか?
A1: はい。ページフォルトは命令やメモリアクセスが原因で同期的に発生する例外で、内部割込み(例外)として扱われます。
A1: はい。ページフォルトは命令やメモリアクセスが原因で同期的に発生する例外で、内部割込み(例外)として扱われます。
Q2: NMI(Non-Maskable Interrupt)は内部か外部か?
A2: 通常は外部的・非同期的なハードウェアイベント(例えば電源障害やハードウェア故障)として扱われます。特殊で強制的に処理される割込みです。
A2: 通常は外部的・非同期的なハードウェアイベント(例えば電源障害やハードウェア故障)として扱われます。特殊で強制的に処理される割込みです。
Q3: 「ソフトウェア割込み」と「内部割込み」をどう区別すればよいですか?
A3: ソフトウェア割込みは命令(例:INT命令)により意図的に発生させるもので分類は別です。内部割込み(例外)はプログラムの実行結果としてCPUが検出するエラーや条件です。
A3: ソフトウェア割込みは命令(例:INT命令)により意図的に発生させるもので分類は別です。内部割込み(例外)はプログラムの実行結果としてCPUが検出するエラーや条件です。
関連キーワード: 内部割込み、外部割込み、例外、同期割込み、非同期割込み、ゼロ除算、トラップ、NMI、パリティエラー、割込み分類

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

