割り込みとは、あるプロセスやイベントが緊急の注意を必要とするときに、ハードウェアやソフトウェアから発せられる信号のことである。 これは、現在の作業プロセスの中断を必要とする優先度の高いプロセスをプロセッサに警告するものです。 I/Oデバイスでは、バス制御線の1つがこの目的専用で、ISR(Interrupt Service Routine)と呼ばれます。
デバイスが例えばプロセスiに割り込みを発生させると、プロセッサはまず命令iの実行を完了させ、プログラムカウンタ(PC)をISRの最初の命令のアドレスでロードする。 プログラムカウンタにアドレスをロードする前に、割り込み命令のアドレスは一時的な場所に移動されます。 したがって、割り込みを処理した後、プロセッサは処理i+1を続けることができます。
プロセッサが割り込みを処理している間、デバイスが割り込み要求信号の送信を停止するように、その要求が認識されたことを通知する必要があります。 また、中断した処理を将来復元できるようにレジスタを保存するため、割り込みを受信してからISRの実行開始までの遅延時間が長くなる。 これをインタラプト・ラテンシーといいます。
ハードウェア割り込み:
ハードウェア割り込みでは、すべてのデバイスが割り込み要求線に接続されています。 1本のリクエストラインをすべてのn個のデバイスに使用します。 割り込みを要求するためには、デバイスは関連するスイッチを閉じます。
IRQの処理に関わるイベントのシーケンス:
- デバイスはIRQを上げる。
- プロセッサは現在実行中のプログラムに割り込む。
- デバイスはそのリクエストが認められたことを通知されてリクエスト信号を非活性化する。
- 要求された動作が実行されます。
- 割り込みが有効になり、割り込まれたプログラムが再開されます。
複数のデバイスの処理:
複数のデバイスが割り込み要求信号を発生した場合、最初に考慮するデバイスを決定するには追加の情報が必要です。 どのデバイスを選択するかを決定するために、以下の方法が使用されます。 ポーリング、ベクトル型割り込み、割り込みネストです。
- ポーリング:
ポーリングでは、IRQビットがセットされている最初のデバイスが最初にサービスされるデバイスとなります。 適切なISRが呼び出され、同じサービスが提供されます。 - ベクトル割り込み:
ベクトル割り込みでは、割り込みを要求するデバイスは、バス上でプロセッサに特別なコードを送信することによって直接自分自身を識別する。 これにより、プロセッサは割り込みを発生させたデバイスを識別することができます。 - 割り込みネスト:
この方法では、I/Oデバイスは優先順位構造で編成されています。 そのため、優先度の高いデバイスからの割り込み要求は認識され、優先度の低いデバイスからの要求は認識されない。 これを実現するために、各プロセス/デバイス(プロセッサも含む)があります。 プロセッサは自分より優先順位の高いデバイス/プロセスからの割り込みしか受け付けない。
プロセッサの優先順位は、PS(プロセス・ステータス・レジスタ)の数ビットにエンコードされている。 PSに書き込むプログラム命令によって変更することができます。 プロセッサはOSルーチンを実行している間だけ監視モードとなります。 アプリケーションプログラムを実行する前にユーザモードに切り替わる。 今、学ぶことを止めないでください。 学生向けの価格でCS理論コースでSDEの面接のための重要なCS理論のすべての概念を取得し、業界レディになる