メインコンテンツへ
ソフトウェアOS実践

コンピュータシステムにおける割り込みの優先度制御について、正しいものはどれか。

ア.すべての割り込みは必ず同一の優先度で処理され、発生順に処理される
イ.割り込みは優先度が設定できるが、現在処理中の割り込みを中断させることはできない
ウ.ソフトウェア割り込みは常にハードウェア割り込みより高い優先度を持つ
エ.高優先度の割り込みは低優先度の割り込みハンドラを中断して割り込むことができ(割り込みのネスト)、CPUは優先度マスクで制御する正解

解説

割り込みの優先度制御は「救急病院のトリアージ」みたいなもの。通常患者(低優先度割り込み)の診察中に重篤患者(高優先度割り込み)が来たら、通常患者を一時中断して重篤患者を先に治療する。そして優先度マスクは「この優先度以下の患者は今は受け付けません」という受付制限!

なぜ エ が正解か

割り込み優先度制御のメカニズム:①割り込みコントローラ(PIC/APIC)が各割り込み源に優先度を割り当て②CPUの割り込みマスクレジスタで「この優先度以下の割り込みは受け付けない」を設定③高優先度割り込み発生時→現在処理中の低優先度ハンドラを一時停止→コンテキスト保存→高優先度ハンドラ実行(割り込みネスト)④これにより重要なリアルタイムイベント(タイマー、緊急I/O)を遅延なく処理可能。

なぜ ア は間違いか

同一優先度・発生順処理はシンプルなシステムの設計方針であり、現代のOSや組み込みシステムでは優先度制御が標準。「必ず」は誤り。

なぜ イ は間違いか

現在処理中の低優先度割り込みハンドラを高優先度割り込みで中断することは、多くのアーキテクチャで可能(割り込みネスト)。「中断させることはできない」は誤り。

なぜ ウ は間違いか

一般にハードウェア割り込み(タイマー、I/O)の方がソフトウェア割り込み(システムコール)より高優先度で設計される。逆の関係を述べており誤り。

出典: AI生成問題(学習用)