スポンサーリンク

【応用情報技術者試験】割込み処理ルーチン

割込み処理ルーチンは、割込みの原因に応じて実行するプログラムです。ISR(Interrupt Service Routine)や割込みハンドラとも呼ばれます。通知を受ける仕組みと、実際に処理するコードを分けて考えましょう。

1.処理を切り替えるときに必要な状態を保存する

必要な状態を保存し、ハンドラを実行し、復帰できる場合は状態を復元して再開する
必要な状態を保存し、ハンドラを実行し、復帰できる場合は状態を復元して再開する

割込み要求を受け付けると、実行に必要な状態を保存し、対応する処理へ移ります。どの状態をハードウェアが保存し、どのレジスタをハンドラが保存するかはアーキテクチャやOSに依存します。

2.ハンドラは原因に応じた仕事を行う

装置の状態確認、必要なデータの処理、割込み原因への対応などを行います。タイマー・入力・I/O完了など、すべてが「最優先の緊急事態」というわけではありません。優先度やマスクの設定によって受付けも変わります。

3.例外とソフトウェア割込みを混同しない

装置からの通知などは非同期に発生する外部割込み、実行した命令に起因するゼロ除算・不正命令などは同期的な例外として扱います。明示した命令によるOS呼出し等と、命令の実行で検出された異常も区別してください。呼称や分類はCPU・教材によって異なります。

復帰できる場合は保存した状態に基づいて実行を再開します。ただし異常の種類によっては、同じプログラムへ戻らず終了させる場合もあります。

理解を確かめる確認問題

割込み処理ルーチンは、割込みが起きたときに実行するコードと、データ保存専用の記憶装置のどちらでしょうか。

解答・解説を見る

割込みの原因に応じて実行するコードです。状態保存そのものとは役割を分けて考えます。

まとめ:通知・状態保存・原因への処理を分ける

処理の切替えと、ハンドラの担当する仕事を順番に追いましょう。

参考:Intel:割込み・例外処理を含むアーキテクチャマニュアル

コメント