割込み優先度とは

割り込み(割込み)とは、コンピューターが現在実行している通常の処理を一時的に中断し、急に発生した別の緊急の処理(割り込み処理)を最優先で実行させる仕組みのことです。「割込み優先度(割り込みプライオリティ)」は、複数の割り込み処理が同時に発生した際、どの処理を一番優先して実行させるかという「緊急度の順位付け」を指します。優先度の高い割り込みが発生すると、実行中だったそれよりも優先度の低い割り込み処理は一時中断され、より重要な処理が先に実行されます。
具体例
工場のロボットアーム制御システムを考えてみましょう。通常は「モーターを一定の速度で回す」という通常処理を行っていますが、もし「非常停止ボタンが押された」という割り込みと、「センサーが少しの傾きを検知した」という割り込みが同時に発生した場合、より人命や設備の安全に関わる「非常停止ボタンの処理」の優先度を最大に設定しておくことで、即座に安全に停止させます。
【割込み優先度の動作イメージ】\n1. 通常の処理を実行中 (例: データの記録)\n2. レベル2の割り込み発生 (例: 温度調整の指示) ➔ データを一時保存して温度調整へ\n3. レベル5(最優先)の割り込み発生 (例: 非常停止) ➔ 温度調整を直ちに中断し、システム停止処理を実行!\n4. 停止処理完了後、安全な状態で終了もう少し詳しく
割り込み(Interrupt)は、ハードウェアのピンに電気信号が入ることでCPUに直接通知される「ハードウェア割り込み(外部割り込み/内部割り込み)」と、プログラムの実行中に特定の命令や異常(ゼロ除算など)によって発生する「ソフトウェア割り込み」に大別されます。割込み優先度(Interrupt Priority)の管理は、主にCPUの「割り込みコントローラ(NVICやGICなど)」と呼ばれる専用のハードウェアチップが担当します。複数の割り込み要求が同時に発生した場合、コントローラは割り込み優先度レジスタに設定された数値を比較し、最も優先度の高い要求の「割り込みベクトル(処理プログラムのアドレス)」をCPUに渡します。また、実行中の割り込み処理よりも、さらに高い優先度の割り込みが割り込むことを「多重割り込み(ネストされた割り込み)」と呼びます。多重割り込みが発生すると、CPUは現在の処理状態(レジスタ値など)を「スタック領域」と呼ばれるメモリ空間に退避させ、より優先度の高い処理を実行した後に、スタックからデータを復元(ポップ)して元の割り込み処理に戻ります。この管理が適切に行われないと、スタックオーバーフローや処理遅延を引き起こす原因となります。
試験でのポイント
応用情報技術者試験では、割り込みの分類と、割り込みが発生した際のCPUの内部動作手順が頻出のポイントです。外部割り込み(タイマ割り込み、入出力終了割り込み、機械チェック割り込みなど)と内部割り込み(プログラム割り込み、SVC(スーパーバイザコール)など)を明確に分類できるようにしてください。また、割り込みの優先度制御について、「高優先度の割り込みは低優先度の割り込み処理を中断して実行できる(多重割り込み)」ことや、「割り込みが受け付けられた際、CPUはプログラムカウンタ(PC)や各種レジスタの状態をスタック領域に退避させる」という具体的な手順が選択肢として問われます。割り込み発生時のシステム全体のオーバーヘッド(退避や復帰にかかる時間)を意識したシステム設計の問題も、記述式試験で問われやすい重要な観点です。
関連する用語
CPUのレジスタ情報を一時保存するスタック領域、割り込みの発生源や処理の対応表である割り込みベクトル、およびプログラムの実行エラーによって発生するプログラム割り込みがあります。これらを体系的に整理することで、コンピューターアーキテクチャの制御フローを深く理解できます。