目次
問題文
ユーザープログラムの実行中に割込みが発生した場合のプロセッサの処理として,適切なものはどれか。
①プログラムレジスタ(プログラムカウンター)などの退避
②ユーザーモードから特権モードへの移行
③割込み処理ルーチンの開始番地の決定
④割込み処理ルーチンの実行
ア ①→③→④→②
イ ②→①→③→④
ウ ②→③→④→①
エ ③→④→①→②
解説
解答
イ

まずは問題のポイントを押さえましょう。
ここでは「ユーザープログラム実行中に割込みが発生したとき、CPUが内部で何をどの順番で行うか」を理解しているかが問われています。
割込み処理の流れは、「安全に作業を中断し、割込み処理に移行し、終わったら元に戻る」という筋書きです。



正しい処理の流れで何が起こっているのかを理解しましょう。
② ユーザーモードから特権モードへの移行
割込み処理はハードウェアやOSの中枢に関わる命令を実行する必要があるため、権限の低いユーザーモードでは実行できません。
割込みが発生すると、まず特権モード(カーネルモード)に切り替えます。
これにより、メモリ保護を解除し、I/Oやハードウェア制御が可能になります。
① プログラムレジスタ(PC)などの退避
割込み発生時点でCPUが実行していた命令のアドレス(プログラムカウンタ:PC)や、その他の必要なレジスタの値を保存します。
これをしないと、割込み処理が終わったあとに元のプログラムに正しく戻れません。
③ 割込み処理ルーチンの開始番地の決定
割込み要因(例:キーボード入力、タイマー、I/O完了)に応じて、対応する処理ルーチン(関数)の開始アドレスを決定します。
この情報は「割込みベクタテーブル」という領域に格納されていて、CPUはそこから読み出します。
④ 割込み処理ルーチンの実行
決定された開始番地から割込み処理を開始します。
例:キーボードの入力データを読み込む、タイマーをリセットする、など。
正しい順序が「イ」になる理由
- ② 割込みが起きた瞬間、まず特権モードに移行(安全に処理するための準備)
- ① 現在のプログラムの状態(PCなど)を保存(後で戻るため)
- ③ 割込みの種類に応じて処理ルーチンの開始番地を決定
- ④ 割込み処理ルーチンを実行
まとめ
- 割込み処理の最初はモード切替(ユーザー→特権)が先
- 次に実行中プログラムの状態を保存してから処理ルーチンへ移る
- 終わったら状態を復元してユーザープログラムに戻る

