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

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

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

作成日: 更新日:

読み方

日本語表記

わりこみ (ワリコミ)

英語表記

interrupt (インタラプト)

用語解説

割り込みとは、コンピュータのCPUが現在実行している処理を一時的に中断し、別の緊急性の高い処理に切り替えるメカニズムを指す。これは、CPUが外部デバイスや内部イベントからの要求に応答し、効率的かつリアルタイムにシステムを動作させるために不可欠な機能である。例えば、キーボード入力、マウス操作、ディスクへのデータ書き込み完了、ネットワークからのデータ受信といった、CPUとは独立して動作する周辺機器からの通知や、プログラム実行中に発生するエラー、タイマーによる時間経過の通知などが割り込みの主な発生源となる。割り込みの目的は、CPUが常に周辺機器の状態を監視し続ける「ポーリング」と呼ばれる非効率な手法を避けることで、CPUのリソースをより有効活用し、システム全体の応答性を高めることにある。

割り込みの仕組みは、CPUが外部または内部からの割り込み要求を受け付けた際に発動する。まず、CPUは現在のプログラムが実行している位置(プログラムカウンタの値)や、処理に必要な一時的なデータ(レジスタの内容)といった、現在の実行コンテキストをメインメモリ上の特定の領域(スタックなど)に保存する。この保存処理により、割り込み処理が終了した後に元の処理を中断した時点から正確に再開できるようになる。

次に、CPUはどの種類の割り込みが発生したかを特定し、その割り込みに対応する専用の処理ルーチン、通称「割り込みハンドラ」または「割り込みサービスルーチン(ISR: Interrupt Service Routine)」のアドレスを割り込みベクタテーブルと呼ばれる場所から取得する。割り込みベクタテーブルは、発生した割り込みの種類ごとに対応するハンドラの開始アドレスを格納している。CPUはこのアドレスへ処理をジャンプさせ、割り込みハンドラの実行を開始する。割り込みハンドラは、割り込みの原因となったイベントに対して必要な処理を実行する。例えば、キーボードからの割り込みであれば、押されたキーの情報を読み取り、バッファに格納する。ディスクからの割り込みであれば、データ転送の完了をOSに通知する。タイマー割り込みであれば、OSのタスクスケジューリング処理を実行するといった具体的な作業を行う。割り込みハンドラの処理は、可能な限り短時間で完了させることが望ましい。これは、割り込み処理中は他の割り込みが一時的に禁止されたり、システム全体のリアルタイム性が損なわれたりする可能性があるためである。割り込みハンドラの処理が完了すると、CPUは保存しておいた元の実行コンテキストをスタックから復元し、プログラムカウンタを元の値に戻すことで、中断されていたプログラムの実行を再開する。この一連の流れにより、CPUは効率的に複数のタスクを切り替え、様々なイベントに即座に対応できる。

割り込みには、その発生源や性質によっていくつかの種類がある。ハードウェア割り込みは、I/Oデバイス(キーボード、マウス、ディスクドライブ、ネットワークカードなど)やタイマー、またはシステム内部のエラー(メモリパリティエラーなど)によって発生する。これらの割り込みは、CPUの外部からの信号によってトリガーされることが多い。一方、ソフトウェア割り込みは、実行中のプログラムが意図的に発生させる割り込みであり、主にOSの機能(システムコール)を利用するために用いられる。例えば、プログラムがファイルを開いたり、画面に文字を表示したりする際に、OSに処理を依頼するためにソフトウェア割り込みを発生させる。また、プログラム実行中のゼロ除算や不正なメモリアクセスといった例外も、一種のソフトウェア割り込みとして扱われ、エラーハンドリングのための処理が実行される。

割り込みは、その緊急度に応じて優先順位が付けられることが多い。優先度の高い割り込みは、現在実行中の優先度の低い割り込み処理を中断して、先に処理されることがある。これにより、システム全体の信頼性と応答性がさらに向上する。割り込みマスクと呼ばれる仕組みを使えば、特定の割り込みを一時的に無効にすることも可能であり、重要な処理中に他の割り込みによって邪魔されることを防ぐことができる。現代のコンピュータシステムにおいて、割り込みはOSの基盤となる極めて重要な機能である。マルチタスク処理、デバイスドライバの実装、リアルタイム処理、さらにはエラー検出と回復など、あらゆる側面で割り込みが不可欠な役割を果たしている。割り込みの存在なくして、今日のような効率的で応答性の高いコンピュータシステムは実現不可能である。システムエンジニアにとって、割り込みの概念とその動作原理を理解することは、OSの内部動作やハードウェアとソフトウェアの連携を深く理解するための第一歩となる。

関連コンテンツ

関連ITニュース