第3章 ハードウェア割り込み
ハードウェア割り込み は、オペレーティングシステムから注意する必要があることを示すデバイスにより使用されます。一般的な例は、一連のデータブロックを読み取り、ネットワークデバイスがネットワークパケットを含むバッファーを処理しているハードディスクシグナリングです。また、割り込みは、外部ネットワークからの新規データの取得など、非同期イベントにも使用されます。ハードウェア割り込みは、割り込み管理およびルーティングデバイスの小規模ネットワークを使用して CPU に直接送信されます。本章では、さまざまなタイプの割り込みと、ハードウェアおよびオペレーティングシステムによる処理方法について説明します。また、割り込みのタイプを処理するために、Red Hat Enterprise Linux for Real Time カーネルが標準のカーネルとどのように異なるかについても説明しています。
標準システムは、定期的にメンテナンスとシステムスケジューリング決定を行う半規則的な「タイマー」割り込みを含む、運用期間中に多くの割り込みを受け取ります。NMI (Non- maskable Interrupts)や SMI (System Management Interrupts) などの特別な割り込みを受け取る場合もあります。
ハードウェア割り込みは 割り込み番号 によって参照されます。これらの番号は、割り込みを作成したハードウェアの部分にマッピングされます。これにより、システムが割り込みを作成したデバイスと、その発生時を監視できるようになります。
多くのコンピューターシステムでは、割り込みは、できるだけ迅速に処理されます。割り込みを受信すると、現在のアクティビティーが停止し、割り込みハンドラー が実行されます。ハンドラーは、その他の実行中のプログラムやシステムアクティビティーを阻止します。これにより、システム全体が遅くなり、レイテンシーが作成されます。Red Hat Enterprise Linux for Real Time は、パフォーマンスを改善するために割り込みの処理方法を変更し、レイテンシーを短縮します。
例3.1 システムにおける割り込みの表示
Linux システムで受信したハードウェア割り込みのタイプと数を確認するには、
cat コマンドで /proc/interrupts を表示します。
この出力には、さまざまなタイプのハードウェア割り込み、受信した CPU の数、割り込みのターゲットであった CPU、および割り込みを生成したデバイスが表示されます。
3.1. レベルシグナル割り込み リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
レベルシグナル割り込みは、専用割り込みラインを使用して電圧移行を提供します。
専用ラインは、バイナリー 1 または バイナリー 0 を示す 2 つの 電圧のいずれかを送信できます。このラインからシグナルが送信されると、CPU が特別にリセットされるまで、その状態のままになります。これは、CPU がラインの アサート を停止するよう生成デバイスを要求することで実行されます。これにより、複数のデバイスが 1 つの割り込み行を共有できます。CPU がラインのアサートを停止するようデバイスに指示し、かつアサートされたままの場合は、保留中の別の割り込みがあります。
レベルシグナル割り込みでは、デバイスと CPU の両方で高度なハードウェアロジックが必要になりますが、数多くの利点も提供されます。複数のデバイスで使用できるだけでなく、ほぼ完全に割り込みをミスすることができません。