マスカブル割り込み(マスカブルわりこみ)とは | 意味や読み方など丁寧でわかりやすい用語解説
マスカブル割り込み(マスカブルわりこみ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
マスク可能割り込み (マスクカノウワリコマミ)
英語表記
Maskable interrupt (マスケーブル インタラプト)
用語解説
マスカブル割り込みとは、CPUがその処理を一時的に許可したり禁止したりできる、制御可能な割り込みの一種である。システムが何らかの重要な処理を行っている最中に、外部からの割り込み要求が発生しても、CPUがその要求を一時的に無視し、現在の処理を優先して続行できるよう設計されている。これは「マスク可能」という言葉が示す通り、割り込みを「覆い隠す」ように一時的に無効化できる特性を持つ。
コンピュータシステムにおいて、割り込みとは、CPUが現在実行中の処理を一時的に中断し、外部からの特別なイベント(例えば、キーボード入力、ディスクI/Oの完了、ネットワークデータの受信、タイマーの満了など)に対応するためのメカニズムである。これにより、CPUは複数のタスクを効率的に処理し、システム全体の応答性を高めることができる。
マスカブル割り込みの動作原理は、CPU内部の割り込み制御機構によって実現される。多くのCPUアーキテクチャでは、「割り込み許可フラグ」と呼ばれる特別なレジスタビットや、「割り込みマスクレジスタ」と呼ばれる特定のレジスタが存在する。システムソフトウェア(特にOSのカーネルやデバイスドライバ)は、これらのフラグやレジスタを操作することで、特定の割り込みや全ての割り込みを一時的に無効化(マスク)したり、有効化(アンマスク)したりできる。
具体的には、割り込みをマスクするには、割り込み許可フラグをクリアしたり、割り込みマスクレジスタ内の該当するビットを設定したりする。この状態では、たとえ外部から割り込み要求信号がCPUに送られてきても、CPUはその信号を認識せず、現在実行中の命令の処理を続ける。割り込み要求は通常、割り込みコントローラなどのデバイスによって保留され、CPUが割り込みをアンマスクした時点で、保留されていた割り込み要求が処理される。アンマスクとは、割り込み許可フラグをセットしたり、マスクレジスタのビットをクリアしたりして、割り込み処理を再び許可する操作のことである。
マスカブル割り込みは、システムの安定性やデータの一貫性を保つ上で極めて重要な役割を果たす。その主要な用途の一つは「クリティカルセクションの保護」である。クリティカルセクションとは、複数のタスクやプロセスが共有するデータ構造やリソースにアクセスする、一連の処理のことである。このクリティカルセクションの実行中に割り込みが発生し、割り込みハンドラが同じデータ構造にアクセスしようとすると、データが破壊されたり、不正な状態になったりする可能性がある。このような問題を避けるため、クリティカルセクションに入るときに割り込みをマスクし、クリティカルセクションを抜けるときに割り込みをアンマスクするという手法がよく用いられる。これにより、共有データへのアクセスが一貫性を持って行われることが保証される。
また、タイマー割り込みや多くの周辺機器からの割り込みもマスカブル割り込みに分類される。例えば、OSがタスクのスケジューリングを行うために定期的に発生させるタイマー割り込みは、CPUが非常にデリケートなカーネル処理を行っている間は一時的にマスクされることがある。キーボード入力やディスクI/O完了といった周辺機器からの割り込みも、通常はマスカブルであるため、システムが優先度の高い処理を行っている間はマスクされ、その処理が完了した後にまとめて処理されることが多い。割り込みコントローラを利用することで、個々のデバイスからの割り込みを独立してマスクしたり、異なる優先度を設定したりすることも可能である。
これに対し、「ノンマスカブル割り込み(NMI)」と呼ばれる割り込みも存在する。NMIは、CPUがいかなる状況であってもその処理を中断し、直ちにサービスルーチンを実行しなければならない、極めて緊急性の高い割り込みである。例えば、メモリのパリティエラー、ハードウェア障害、電源異常など、システムの動作に致命的な影響を与える可能性のあるイベントに対してNMIが使用される。NMIは、マスカブル割り込みのようにソフトウェアによって一時的に無効化することはできない。この違いが、マスカブル割り込みが通常のシステム運用において柔軟な制御を可能にする一方で、NMIがシステムの危機管理に特化している理由である。
マスカブル割り込みの適切な利用は、システムの効率性、応答性、そして安定性を向上させる。しかし、割り込みをマスクする期間が長すぎると、システムが外部イベントへの応答性を失い、フリーズしたように見えたり、重要なイベントを取りこぼしたりするリスクもある。そのため、割り込みのマスクは必要最小限の期間に留め、できるだけ早くアンマスクすることが、高性能で安定したシステムを設計する上での重要な原則となる。