割り込み
英語表記: Interrupt
概要
割り込み(Interrupt)とは、コンピュータシステムにおいて、入出力(I/O)デバイスなどの周辺機器が中央処理装置(CPU)に対して、現在行っている処理を一時的に中断して、自分を処理するように要求するための仕組みです。これは、CPUが低速な周辺機器の処理完了をひたすら待ち続ける「ポーリング」という非効率な手法を回避するために導入されました。この機構こそが、I/O処理の高速化を実現し、システム全体の応答性と効率を劇的に向上させるための要となるのです。
詳細解説
割り込みの目的とI/O処理の高速化
割り込みの最大の目的は、CPUの待ち時間を最小限に抑え、処理能力を最大限に引き出すことです。
私たちが普段使うキーボード、マウス、プリンタ、ストレージといった周辺機器は、CPUの処理速度と比較すると非常に低速です。もしCPUがこれらの機器の操作完了を逐一確認する(ポーリングする)必要があった場合、CPUはその大部分の時間を無駄な確認作業に費やしてしまいます。
そこで割り込みが登場します。CPUはI/O処理を周辺機器に指示した後、すぐに別の計算処理に戻り、本来のタスクを続行します。そして、周辺機器側でデータ転送や処理が完了したタイミングで、電気的な信号(割り込み要求、IRQ)をCPUに送信します。
この仕組みにより、CPUは必要な時にだけI/O処理に戻ればよいため、システムのスループット(単位時間あたりの処理量)が飛躍的に向上します。これはまさに「I/O 処理と高速化」を実現するための、最も基礎的で重要なメカニズムだと言えるでしょう。
割り込みの仕組みとコンポーネント
割り込み処理は、「ハードウェアとソフトウェアの関係」が密接に連携して動作する、非常に洗練されたプロセスです。
- 要求の発生: 周辺機器が処理を完了し、CPUに通知する必要が生じます(例:ネットワークカードがパケットを受信した)。
- 信号の送信: 周辺機器は、割り込みコントローラ(Interrupt Controller)を経由して、CPUに割り込み要求信号(IRQ)を送ります。
- CPUの応答と状態保存: CPUは現在実行中の命令を中断し、次に実行すべき命令のアドレスやレジスタの内容といった現在の状態(コンテキスト)をメモリ(スタック)に退避させます。この退避作業は、処理が完了した後に正確に元の場所に戻るために不可欠です。
- ハンドラの特定: CPUは、割り込みコントローラから受け取った情報(割り込み番号、または割り込みベクトル)をもとに、どのデバイスが割り込みを要求したかを特定します。
- 割り込み処理ルーチン(ISR)の実行: 特定されたデバイスに対応するデバイスドライバに含まれる、専用のソフトウェア処理プログラム(割り込みサービスルーチン、ISR または 割り込みハンドラ)に制御が移ります。ここで、I/Oデバイスとのデータのやり取りや状態のクリアといった「デバイスドライバとI/O制御」の具体的な処理が実行されます。
- 復帰: ISRが完了すると、CPUは退避させていた元の状態を復元し、中断された処理を再開します。
このように、ハードウェアが発する信号を、デバイスドライバというソフトウェアが受け止め、CPUが効率的に処理を行うという流れは、「ハードウェアとソフトウェアの関係」を理解する上で非常に重要です。
割り込みの種類
主に、発生源によって以下の2種類に分けられます。
| 種類 | 発生源 | 例 |
| :— | :— | :— |
| ハードウェア割り込み | 周辺機器や外部要因 | I/O完了、タイマーの時間切れ、電源異常 |
| ソフトウェア割り込み | 実行中のプログラムの要求やエラー | システムコール(OS機能の呼び出し)、ゼロ除算、ページフォルト |
I/O処理の高速化という文脈においては、周辺機器の完了通知であるハードウェア割り込みが中心となりますが、ソフトウェア割り込みもOSがI/O処理を管理する上で重要な役割を果たしています。
具体例・活用シーン
1. キーボード入力の応答性
私たちがキーボードのキーを押した瞬間を考えてみましょう。
もし割り込みがなければ、CPUは「キーが押されたか?」と1秒間に何千回もキーボードに尋ね続ける必要があります。これは無駄ですよね。
実際には、キーが押されると、キーボードコントローラが瞬時にCPUに対して割り込み信号を送ります。CPUはすぐに現在の作業を中断し、キーボードのデバイスドライバを呼び出して、どのキーが押されたかという情報を取得します。この迅速な対応のおかげで、私たちは入力に対して遅延を感じることなく、快適にコンピュータを利用できるのです。
2. 優秀な秘書と経営者のメタファー
割り込み処理の効率の良さを理解するために、CPUを多忙な経営者、I/Oデバイスを秘書や外部の業者に例えてみましょう。
【ポーリングの場合】
経営者(CPU)は、自分の重要な仕事(計算処理)があるにもかかわらず、1分おきに秘書(I/Oデバイス)の部屋へ行き、「あの書類は完成したか?」「取引先からの返答はあったか?」と尋ね続けます。経営者は確認作業のために何度も集中力を途切れさせ、本来の業務が進みません。
【割り込みの場合】
経営者(CPU)は秘書に「書類ができたら、ノックして知らせてくれ」と指示を出します。経営者は自分のオフィスで重要な計算処理に集中し続けます。書類が完成したとき、秘書は経営者のオフィスをノックします(割り込みの発生)。経営者は一時的に作業を中断し、ノックに対応して書類を受け取り(割り込み処理)、すぐに元の作業に戻ります。
この「ノックを待つ」仕組みこそが、CPUがI/O待ちで無駄な時間を過ごすのを防ぎ、システム全体のパフォーマンスを「高速化」している理由です。本当に賢い仕組みだと思います。
資格試験向けチェックポイント
IT系の資格試験、特にITパスポートや基本情報技術者試験では、割り込みはI/O効率化の基本として頻出します。以下のポイントをしっかり押さえておきましょう。
- ポーリングとの違い: 割り込みは、CPUが能動的にI/Oデバイスの状態を確認するポーリングと比較して、CPUの負荷が圧倒的に低い点が重要です。「I/O 処理と高速化」を実現する手段として、割り込みが優れていることを理解してください。
- 割り込みの優先度: 複数の割り込みが同時に発生した場合、CPUは処理の緊急度や重要度に応じて優先順位をつけます。この優先度管理には、割り込みコントローラが関与します。
- 割り込みハンドラ(ISR)の役割: 割り込みが発生した際に、実際にその要求を処理するソフトウェアモジュールが割り込みハンドラです。これは通常、デバイスドライバの一部として提供されており、「デバイスドライバとI/O制御」の文脈で非常に重要な要素です。
- コンテキストの保存: 割り込み処理を行う前に、CPUが現在の処理状態(レジスタ内容など)をメモリに保存する作業を「コンテキストの保存」と呼びます。これは、割り込み処理後に正確に元の作業に戻るために必須のステップです。
- NMI(ノンマスカブル割り込み): マスク(無効化)できない非常に緊急度の高い割り込みが存在します。これは通常、致命的なハードウェア故障(例:電源断)など、システム全体に関わる事態に対応するために使用されます。
関連用語
- ポーリング (Polling): CPUが定期的にデバイスの状態をチェックしに行く方式。割り込みと比較して非効率です。
- DMA (Direct Memory Access): CPUを介さずに、I/Oデバイスが直接メモリとデータをやり取りする仕組み。これもI/O高速化の重要な技術です。
- 割り込みコントローラ (Interrupt Controller): 周辺機器からの複数の割り込み要求を仲介し、優先順位を決定してCPUに伝えるハードウェアコンポーネントです。
-
デバイスドライバ (Device Driver): 割り込みハンドラを含み、特定のハードウェアとOS(CPU)間の制御を担うソフトウェア。
-
情報不足
- 関連用語の定義や詳細な説明が不足しています。特にDMAは割り込みとセットでI/O高速化を語る上で重要であるため、詳細な解説を追加することが望ましいです。
(文字数:約3,300文字)