応用情報技術者 2009年 春期 午前2 問10
問題文
外部割込みの要因となるものはどれか。
選択肢
ア:仮想記憶管理における存在しないページにアクセスしたときのページフォールト
イ:システム管理命令を一般ユーザモードで実行したときの特権命令違反
ウ:ハードウェア異常などによるマシンチェック(正解)
エ:浮動小数点演算命令でのオーバフローなどの演算例外
🔒 解説は解答すると表示されます
外部割込みの要因【午前2解説】
正解の理由
外部割込みとは、CPU外部のハードウェア要因によって非同期に発生する割込みを指します。ハードウェア故障やシステムバス・メモリの致命的異常など、CPUの命令実行とは独立して発生する事象が該当します。選択肢のうちハードウェア異常に起因するものであるため、ウが該当します。
他の選択肢(ページフォールト、特権命令違反、演算オーバーフロー)はいずれも実行中の命令やソフトウェアの振る舞いに同期して発生する「内部例外(例外/トラップ/フォルト)」であり、外部割込みとは分類が異なります。
他の選択肢(ページフォールト、特権命令違反、演算オーバーフロー)はいずれも実行中の命令やソフトウェアの振る舞いに同期して発生する「内部例外(例外/トラップ/フォルト)」であり、外部割込みとは分類が異なります。
解法ステップ
- 「外部割込み(外部起因かどうか)」か「内部例外(命令実行に同期)」かを区別する基準を確認する。
- 外部割込み:I/O、タイマ、機械的故障などCPU外部からの非同期信号。
- 内部例外:命令実行に伴うエラーや条件(ページフォールト、演算例外、特権違反など)。
- 各選択肢がどちらに該当するかを判定する。
- ア:ページフォールト → 命令実行時にメモリ参照で発生する内部例外(フォルト)。
- イ:特権命令違反 → ユーザモードからの不正命令による内部例外(例外/トラップ)。
- ウ:ハードウェア異常(マシンチェック) → 外部ハードウェア起因の非同期割込み。
- エ:浮動小数点のオーバーフロー → 演算例外として内部例外。
- 外部由来のものを選ぶ → ウ。
選択肢別の誤答解説
-
ア(ページフォールト)
ページフォールトは命令がメモリ参照を行ったときに発生する「フォルト」と呼ばれる内部例外です。ハードウェアが不足しているわけではなく、仮想記憶管理の結果として発生するため外部割込みではありません。処理後に命令を再実行できる(復旧可能な)点がフォルトの特徴です。 -
イ(特権命令違反)
特権命令を一般ユーザモードで実行するとCPU内部で例外(例:特権違反例外)が発生します。これは命令実行に同期する内部例外であり、ソフトウェアが明示的に発生させる「ソフトウェア割込み」とは区別されます(ソフトウェア割込みは意図的に発生させるもの:例 syscall/INT 命令)。したがって外部割込みではありません。 -
ウ(ハードウェア異常によるマシンチェック)
ハードウェアの故障やメモリの信頼性問題など、CPU外部またはシステムハードウェアが検出する非同期な異常は外部割込み(あるいは外部からのハードウェア割込み)に分類されます。非同期かつCPU外部起因であるため外部割込みの代表例です。 -
エ(浮動小数点演算のオーバーフロー)
浮動小数点のオーバーフローは演算命令の結果に基づく内部例外(演算例外)です。命令の実行に同期して発生するため、外部割込みではありません。
よくある誤解
- 特権命令違反を「ソフトウェア割込み(ソフトウェア起因の割込み)」と混同する。
→ 特権違反はCPUが命令実行中に検出する内部例外であり、ソフトウェア割込み(例:INT命令やシステムコールでソフトウェアが明示的に発生させる割込み)とは性質が異なります。 - 「割込み」と「例外」を同義で扱う。
→ 実務・教科書では「割込み(外部)/例外(内部)」と区別して説明されることが多い。発生源(外部ハードウェアか命令実行か)で分けて考えると誤答が減ります。 - 機械チェックは常に内部例外だと思う。
→ 機械チェックはハードウェア側で検出される非同期な異常で、外部割込み扱いになることが多い点に注意。
補足コラム
割込み・例外の分類(簡潔)
- 外部割込み(外部割込み): ハードウェア装置やタイマ、NMI(Non-Maskable Interrupt)、マシンチェックなど。非同期。
- 内部例外(例外/トラップ/フォルト): 命令の実行に伴う事象。さらにフォルト(再試行可、例: ページフォールト)、トラップ(命令完了後に処理、例: システムコールを除くデバッグ割込み)、アボート(回復不能、例: 致命的CPUエラー)に分類されます。
- ソフトウェア割込み: ソフトウェアが明示的に発生させる割込み(例:ソフトウェア割込み命令やシステムコール)。
例:ページフォールト発生時の挙動はフォルト処理でメモリを用意した後に命令を再実行するが、外部割込みは実行の途中で割り込まれ、復帰時は割込み前の状態を保存してから復帰する、といった違いがあります。
FAQ
Q: マシンチェックは常に「外部割込み」として扱ってよいですか?
A: 試験上はハードウェア起因で非同期に発生する事象として外部割込みに分類されることが一般的です。実装により名称や細部は異なりますが、問題文の意図はハードウェア異常=外部起因です。
A: 試験上はハードウェア起因で非同期に発生する事象として外部割込みに分類されることが一般的です。実装により名称や細部は異なりますが、問題文の意図はハードウェア異常=外部起因です。
Q: ソフトウェア割込みと内部例外はどこで見分ければよいですか?
A: 発生原因を確認します。ソフトウェア割込みは命令やAPIによって明示的に発生されるもの(同期的かつ意図的)。内部例外は命令実行時にCPUやメモリ管理が検出するエラーや条件です。
A: 発生原因を確認します。ソフトウェア割込みは命令やAPIによって明示的に発生されるもの(同期的かつ意図的)。内部例外は命令実行時にCPUやメモリ管理が検出するエラーや条件です。
Q: ページフォールトは外部デバイス(ディスク)アクセスで発生するので外部では?
A: ページフォールトのトリガはディスクI/Oの結果に関連している場合もありますが、発生そのものは命令のメモリアクセスに同期する内部例外(フォルト)として扱います。
A: ページフォールトのトリガはディスクI/Oの結果に関連している場合もありますが、発生そのものは命令のメモリアクセスに同期する内部例外(フォルト)として扱います。
関連キーワード: 割込み、外部割込み、内部例外、機械チェック、ページフォルト、特権命令違反、演算例外

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

