サンプル問題 科目A 問10

問題

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

出典:基本情報技術者試験 サンプル問題

外部割り込み?

外部割り込みと内部割り込みがあるのだと思いますが、その境界が良くわからないので調べてみました。

CPUの割り込みは、大きく分けてハードウェア割り込み(外部割り込み)とソフトウェア割り込み(内部割り込み)に分類できる。
割り込みには以下のような種類が存在する。
・ハードウェア割り込み - 割り込み要求端子の変化によりCPU外部から発生する
・ソフトウェア割り込み - CPU内部の要因で発生する
 - 狭義のソフトウェア割り込み ー CPUの割り込み命令によって発生する
 - 例外、トラップ - 割り込み命令以外の要因で発生する

Wikipedia

これによると、割り込み要因がCPU内部にあるか、外部にあるかで判断するようです。

選択肢を見てみる

問題の選択肢を見ていきます。

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

これは、CPUが除算命令を実行して発生する割り込みなので、CPU内部の要因で発生するので、内部割り込みでしょう。

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

これは、CPUが命令を実行しようとしたが知らない命令コードだった、ということでCPU内部の要因で発生するので、内部割り込みでしょう。

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

タイマはCPU外にあり、割り込み要求端子があるかどうかはシステムによりますが、CPU外部にあるタイマの要因で発生する割り込みなので、明らかにこれは外部割り込みでしょう。

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

ページフォールトは、私の理解ではメモリ管理ユニット(MMU)の要因で発生する割り込みですが、このMMUはCPUの内部か外部か微妙な気がします。

この問題の答えとしては明らかにウが外部割り込みなので、ページフォールトは内部割り込みなのでしょう。

おまけ

さらに内部割り込みについて調べていると、こういう解説がありました。

内部割り込みとは、実行中の処理を中断して強制的に指定された処理を実行させる割り込み処理の一つで、実行中のプログラム自身に起因するもの。

(IT用語辞典 e-Words

プログラムを実行することにより発生する割り込みでプログラム自身に起因するものは内部割り込み、ということで、こちらの方が私には理解しやすいですね。ページフォールトも、プログラムを実行したときに発生する割り込みで、プログラムがページフォールトが発生するアドレスにアクセスしたことが原因なので、内部割り込みです。

Wikipediaに書かれている「CPU内部の要因」というのも、こういうことを言っているのかも知れません。

答え

ウ  タイマーによる時間経過の通知、が外部割り込みです。

答えと関係ないところで時間がかかりましたが、理解が深まったのでヨシ。