外部割込みと内部割込みは発生原因で見分ける
基本情報技術者試験 平成29年度秋期 午前 問10 / コンピュータ構成要素 › プロセッサ
過去問にチャレンジ
外部割込みに分類されるものはどれか。
- ア
インターバルタイマによって,指定時間が経過したときに生じる割込み
- イ
演算結果のオーバーフローやゼロによる除算で生じる割込み
- ウ
仮想記憶管理において,存在しないページへのアクセスによって生じる割込み
- エ
ソフトウェア割込み命令の実行によって生じる割込み
会話形式の解説
講師今回は割込みの分類の問題です。割込みとは、実行中の処理を一時中断して別の処理を割り込ませるしくみのことです。外部割込みか内部割込みかは、割込みの原因が実行中のプログラム自身にあるか、プログラムの外にあるかで決まります。
受験者「外部」という言葉から、CPUの外にある装置が関係していれば外部割込み、と考えればよいでしょうか。
講師方向としては合っています。確かめるときは「この割込みは、実行中の命令が引き起こしたものか」と問いかけてみてください。命令の実行がきっかけなら内部割込み、命令とは関係なく装置の側から届くなら外部割込みです。
受験者では、オーバーフローやゼロ除算の割込みは、演算命令を実行した結果として起きるので内部割込みですね。
講師そのとおりです。プログラムが実行した演算の結果が原因なので、内部割込みの一種であるプログラム割込みに分類されます。
受験者存在しないページへのアクセスで起きる割込みは、仮想記憶というOSのしくみが関わるので、外部割込みかと少し迷いました。
講師これはページフォルトと呼ばれる割込みです。きっかけを見ると、プログラムがメモリを参照した、その命令の実行で発生しています。ですから内部割込みです。仮想記憶という言葉の印象ではなく、きっかけが命令の実行かどうかで判断します。
受験者ソフトウェア割込み命令による割込みも、プログラムがその命令を実行してわざと起こすものなので、内部割込みということでしょうか。
講師そのとおりです。OSの機能を呼び出すときなどに使われるもので、SVC割込みと呼ばれます。原因がプログラム内にあるので内部割込みです。
受験者残るインターバルタイマの割込みは、タイマという周辺装置が、プログラムがどの命令を実行しているかに関係なく、時間が来たら発生させます。だから外部割込みで、これが正解ですね。
講師正解です。タイマ割込みのほか、入出力割込みや機械チェック割込みも外部割込みの代表例です。内部割込みはプログラム割込みとSVC割込みに分けられます。
受験者「ソフトウェア」や「ページ」という言葉に引っ張られず、原因を確かめればよいのですね。
講師はい。もう一つ、内部割込みは命令の実行に合わせて起こるので同期的、外部割込みは命令の実行とは無関係なタイミングで起こるので非同期的、と整理しておくと見分けやすくなります。
まとめ
割込みは発生原因によって、内部割込みと外部割込みに分けられます。ゼロ除算やオーバーフロー、ページフォルト、ソフトウェア割込み命令(SVC割込み)は、実行中の命令がきっかけなので内部割込みです。インターバルタイマによる割込みは、プログラムの実行とは関係なく周辺装置から届くので外部割込みに当たります。判断に迷ったら「その割込みは実行中の命令が引き起こしたものか」を確かめ、同期的か非同期的かでも整理しておくと見分けやすくなります。
解答・解説
正解はアです
この問題のテーマ
割込みを発生原因で外部割込みと内部割込みに分け、外部割込みに当たる例を選ぶ問題です。
解き方の考え方
割込みが起きた原因が、実行中のプログラム自身にあるか、プログラムの外にあるかで判断します。命令の実行そのもの(演算、メモリ参照、割込み命令)が原因なら内部割込み、プログラムとは関係なく装置の側から届くなら外部割込みです。各選択肢について、この割込みは実行中の命令が引き起こしたものか、と確かめていけば答えが絞れます。
選択肢ごとの解説
- ○ア インターバルタイマによって,指定時間が経過したときに生じる割込みインターバルタイマが指定時間の経過を知らせる割込みは、タイマ割込みです。タイマは CPU の外にある周辺装置で、プログラムがどの命令を実行しているかに関係なく、時間が来れば割込みを発生させます。原因がプログラムの外にあるので、外部割込みに分類されます。
- ×イ 演算結果のオーバーフローやゼロによる除算で生じる割込みオーバーフローやゼロ除算の割込みは、プログラムが実行した演算命令の結果として起きます。原因が実行中のプログラム自身にあるため、内部割込み(プログラム割込み)です。外部割込みには当たりません。
- ×ウ 仮想記憶管理において,存在しないページへのアクセスによって生じる割込み存在しないページへのアクセスで生じる割込みはページフォルトです。プログラムがメモリを参照した、その命令がきっかけで発生するので、内部割込みに分類されます。
- ×エ ソフトウェア割込み命令の実行によって生じる割込みソフトウェア割込み命令による割込みは、プログラムがその命令を実行して、わざと起こすものです。OS の機能を呼び出すときなどに使われ(SVC 割込み)、原因がプログラム内にあるので内部割込みです。
補足
内部割込みは命令の実行に合わせて起こり(同期的)、外部割込みは命令の実行とは無関係なタイミングで起こる(非同期的)と整理すると、見分けやすくなります。
POINT
- 割込みは発生原因によって、内部割込みと外部割込みに分けられます。
- 内部割込みは実行中のプログラムが原因で起こるもので、プログラム割込み(ゼロ除算、オーバーフロー、ページフォルトなど)と SVC 割込みがあります。
- 外部割込みは実行中のプログラムと関係のない要因で起こるもので、タイマ割込み、入出力割込み、機械チェック割込みなどがあります。
- 「ソフトウェア」や「ページ」のように OS に関係しそうな言葉があっても、きっかけが命令の実行なら内部割込みです。
