Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

割り込みベクタ(ワリコミベクタ)とは | 意味や読み方など丁寧でわかりやすい用語解説

割り込みベクタ(ワリコミベクタ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

割り込みベクタ (ワリコミベクタ)

英語表記

Interrupt Vector (インタラプトベクタ)

用語解説

「割り込みベクタ」とは、コンピュータのCPUが、ある特定の「割り込み」が発生した際に、どの処理ルーチン(プログラム)を実行すべきかを効率的に判断し、そのルーチンへ制御を移すための仕組みである。これは、いわば割り込みの種類とそれに対応する処理の「住所録」のようなもので、現代のコンピュータシステムにおけるマルチタスク処理や効率的なデバイス管理の基盤をなしている。

コンピュータは普段、実行中のプログラムを順序立てて処理している。しかし、その途中で、ハードウェア(キーボード入力、マウス操作、ディスクアクセス、ネットワーク通信、タイマの満了など)や、ソフトウェア(システムコールの要求、ゼロ除算などのエラー、不正なメモリアクセスなど)から、CPUに対して「緊急の処理が必要だ」という信号が送られることがある。この信号が「割り込み」である。割り込みが発生すると、CPUは現在実行している処理を一時的に中断し、その緊急の処理へと切り替える必要がある。この切り替えをスムーズに行うために、割り込みベクタが重要な役割を果たす。

割り込みが発生すると、まずCPUは現在のプログラムの実行状態(レジスタの内容や次に実行すべき命令のアドレスなど、いわゆる「コンテキスト」)をメモリ上の特定の領域に保存する。これは、緊急の処理が終わった後に元の処理に正確に戻るためである。次に、CPUはどの種類の割り込みが発生したかを識別するための「割り込み番号」(または割り込みタイプ、ベクタ番号などと呼ばれる)を受け取る。この割り込み番号は、発生した割り込みの種類をユニークに識別する値である。

ここで「割り込みベクタ」の登場である。コンピュータのメモリ上には、「割り込みベクタテーブル」(または割り込みディスクリプタテーブル)と呼ばれる特殊な領域が確保されている。このテーブルは、複数のエントリ(項目)から構成されており、各エントリは特定の割り込み番号に対応している。そして、それぞれのテーブルエントリには、その割り込み番号に対応する「割り込みハンドラ」(または割り込みサービスルーチン: ISR)と呼ばれる特殊なプログラムの開始アドレスが格納されている。

CPUは、受け取った割り込み番号をこの割り込みベクタテーブルのインデックス(添字)として使用し、対応するエントリから割り込みハンドラのメモリアドレスを読み出す。そして、そのアドレスへプログラムの制御を移し、割り込みハンドラの実行を開始する。割り込みハンドラは、発生した割り込みの原因を解決したり、関連するデバイスを制御したり、エラーに応答したりする役割を担う。例えば、キーボード入力の割り込みであれば、割り込みハンドラはキーボードコントローラから入力されたデータを読み取り、システムの入力バッファに格納するといった処理を行う。タイマの割り込みであれば、OSのスケジューラが次のタスクに切り替える判断を行うための処理などを実行する。

割り込みハンドラの処理が完了すると、CPUは割り込み発生時に保存しておいた元のプログラムのコンテキストをメモリから復元する。これにより、CPUはあたかも何も中断されなかったかのように、元のプログラムの処理を中断された時点から再開することができる。このコンテキストの復元と元の処理への復帰は、一般的にIRET(Interrupt Return)のような特殊なCPU命令によって行われる。

割り込みベクタの仕組みは、コンピュータシステムが様々なハードウェアやソフトウェアのイベントに迅速かつ効率的に対応するために不可欠である。もし割り込みベクタがなければ、CPUは常にすべてのデバイスやソフトウェアイベントの状態をポーリング(定期的に問い合わせて監視)し続ける必要があり、これは非常に非効率で、システム全体のパフォーマンスを著しく低下させる。割り込みベクタを用いることで、CPUは必要な時にのみ特定の処理に切り替えることができ、マルチタスク環境下での複数のプログラムの同時実行や、リアルタイム処理が必要なシステムにおいて、応答性を高く保つことが可能となる。このように、割り込みベクタは現代のオペレーティングシステムや組み込みシステムの根幹を支える、極めて重要なメカニズムなのである。

関連コンテンツ

関連IT用語