割込み発生時のプロセッサの処理手順はどれか。
① プログラムレジスタ(プログラムカウンタ)などの退避
② ユーザモードから特権モードへの移行
③ 割込み処理ルーチンの開始番地の決定
④ 割込み処理ルーチンの実行
正答3
解説
正解は3です。
割込みが発生したときに、プロセッサがどの順序で処理するかを問う問題です。
割込み処理はOSの特権的な処理なので、まず特権モードに移行します。
【選択肢別解説】
1:× 最初にレジスタを退避するのではありません。
また、特権モードへの移行が割込み処理ルーチンの実行後に来るのも誤りです。
2:× 開始番地を決める前に割込み処理ルーチンを実行することはできません。
モード移行の位置も誤りです。
3:○ まず②で特権モードに移行します。
次に①でプログラムカウンタなどを退避し、中断した処理を後で再開できるようにします。
そのあと③で割込みの種類から処理ルーチンの開始番地を決め、④でルーチンを実行します。
4:× レジスタの退避を最後に行うと、実行中だったプログラムの状態が割込み処理で失われます。
退避はルーチンの実行前に行います。
【ポイント】
割込みの流れは「モード切替え、状態の退避、開始番地の決定、ルーチンの実行」の順です。
処理が終わると退避した状態を復元し、元のプログラムを再開します。