OSでの割り込みとポーリングの違い
コンテンツ
マウス、キーボード、スキャナー、ERなど、CPUに接続されている多くの外部デバイスがあります。これらのデバイスにもCPUの注意が必要です。 CPUがPDFの表示でビジーであり、デスクトップ上のウィンドウメディアプレーヤーアイコンをクリックするとします。 CPUには、このようなイベントがいつ発生するかはわかりませんが、I / Oデバイスからのそのような入力に応答する必要があります。割り込みとポーリングは、デバイスによって生成されたイベントを処理する2つの方法です。これらのイベントは、CPUが別のプロセスの実行中にビジー状態のときにいつでも発生する可能性があります。
ポーリングと割り込みにより、CPUは現在実行中の処理を停止し、より重要なタスクに応答できます。ポーリングと割り込みは、多くの面で互いに異なります。しかし、ポーリングと割り込みを区別する基本的なポイントは ポーリング CPUは、CPUサービスが必要かどうかを定期的にI / Oデバイスをチェックし続けますが、 割り込み、I / OデバイスはCPUに割り込み、CPUサービスが必要であることをCPUに伝えます。以下の比較表で割り込みとポーリングの違いについて説明しました。ご覧ください。
- 比較表
- 定義
- 主な違い
- 結論
比較表
比較の根拠 | 割り込み | ポーリング |
---|---|---|
ベーシック | デバイスは、CPUに注意が必要であることをCPUに通知します。 | CPUは、CPUの注意が必要かどうかを常にデバイスステータスをチェックします。 |
機構 | 割り込みはハードウェアメカニズムです。 | ポーリングはプロトコルです。 |
整備 | 割り込みハンドラーは、デバイスをサービスします。 | CPUはデバイスにサービスを提供します。 |
表示 | 割り込み要求行は、デバイスがサービスを必要としていることを示します。 | コマンド準備完了ビットは、デバイスのサービスが必要であることを示します。 |
CPU | CPUが乱されるのは、デバイスにサービスが必要な場合のみです。これにより、CPUサイクルが節約されます。 | CPUは、デバイスが多くのCPUサイクルを浪費するサービスを必要とするかどうかを待機して確認する必要があります。 |
発生 | 割り込みはいつでも発生する可能性があります。 | CPUは定期的にデバイスをポーリングします。 |
効率 | デバイスがCPUに繰り返し割り込みを続けると、割り込みは非効率的になります。 | CPUがサービスの準備ができているデバイスをめったに見つけない場合、ポーリングは非効率的になります。 |
例 | ベルリングを鳴らしてドアを開け、誰が来たかを確認します。 | ドアを開け続け、誰かが来たかどうかを確認します。 |
割り込みの定義
割り込みは ハードウェアメカニズム これにより、CPUはデバイスに注意が必要であることを検出できます。 CPUにはワイヤがあります 割り込み要求行 これは、すべての単一命令の実行後にCPUによってチェックされます。 CPUが割り込み要求ラインで割り込み信号を検知すると、CPUは現在実行中のタスクを停止し、I / Oデバイスによる割り込みに制御を渡すことで応答します 割り込みハンドラ。割り込みハンドラーは、デバイスにサービスを提供することで割り込みを解決します。
CPUは、いつでも割り込みが発生する可能性があるため、いつ割り込みが発生するかを認識していませんが、発生するたびに割り込みに応答する必要があります。
割り込みハンドラーが割り込みの実行を終了すると、CPU 再開する 割り込みに応答するために停止したタスクの実行。 ソフトウェア, ハードウェア, ユーザー, プログラムの何らかのエラーなども割り込みを生成できます。 CPUの性質を処理する割り込みは、 マルチタスク、つまり、ユーザーは多数の異なるタスクを同時に実行できます。
複数の割り込みがCPUに送信される場合、割り込みハンドラーは、処理を待機している割り込みの管理に役立ちます。割り込みハンドラが取得するとき トリガーされた 割り込みの受信により、それ 優先する CPUによる処理を待機している割り込みは、 キュー サービスを受ける。
ポーリングの定義
割り込みで見たように、I / Oデバイスからの入力はいつでもCPUに処理を要求するようになります。ポーリングは プロトコル デバイスに注意が必要であることをCPUに通知します。デバイスがCPUにCPU処理が必要であることを伝える割り込みとは異なり、ポーリングではCPUが保持します 頼む I / Oデバイス。CPU処理が必要かどうか。
CPU 絶えず CPUの注意が必要なデバイスがあるかどうかを検出するために、接続されているすべてのデバイスをテストします。毎 端末 があります コマンド対応 そのデバイスのステータス、つまり、CPUによって実行されるコマンドがあるかどうかを示すビット。コマンドビットが設定されている場合 1、その後、ビットが 0、それからコマンドがありません。 CPU があります ビジービット CPUがビジーであるかどうかに関係なく、CPUのステータスを示します。ビジービットが設定されている場合 1、それからそれはあるデバイスのコマンドの実行で忙しいです、さもなければそれは 0.
ポーリングのアルゴリズム
- デバイスにCPUによって実行されるコマンドがある場合、CPUのビジービットは、クリア(0)になるまで継続的にチェックされます。
- ビジービットがクリアされると、デバイスはコマンドレジスタに書き込みビットを設定し、データ出力レジスタにバイトを書き込みます。
- これで、デバイスは(1)コマンド対応ビットを設定します。
- CPUがデバイスのコマンド準備ビットをチェックし、設定(1)すると、CPUはビジービットを設定(1)します。
- 次に、CPUはデバイスのコマンドレジスタを読み取り、デバイスのコマンドを実行します。
- コマンドの実行後、CPUはデバイスのコマンドの正常な実行を示すためにデバイスのコマンド準備ビット、エラービットをクリアし(0)、CPUが自由に実行できることを示すためにビジービットもクリアします(0)他のデバイスのコマンド。
- 割り込みでは、デバイスはCPUにサービスが必要であることを通知しますが、ポーリングでは、CPUはデバイスにサービスが必要かどうかを繰り返しチェックします。
- 割り込みは ハードウェア 機構 CPUにはワイヤがあるため、 割り込み要求行 割り込みが発生したことを示す信号。一方、ポーリングは プロトコル それはチェックし続けます 制御ビット デバイスに実行するものがあるかどうかを通知します。
- 割り込みハンドラー デバイスによって生成された割り込みを処理します。一方、ポーリングでは、 CPU 必要なときにデバイスにサービスを提供します。
- 割り込みは、 割り込み要求行。しかしながら、 コマンド対応 ビットは、デバイスにサービスが必要であることを示します。
- 割り込みでは、デバイスが割り込んだときにのみCPUが妨害されます。一方、ポーリングでは、すべてのデバイスのコマンド対応ビットを繰り返しチェックすることで、CPUは大量のCPUサイクルを無駄にします。
- 割り込みが発生する可能性があります どんな瞬間でも 一方、CPUはデバイスのポーリングを続けます 一定間隔.
- CPUがデバイスをポーリングし続け、サービスの準備ができているデバイスを見つけることがほとんどない場合、ポーリングは非効率的になります。一方、デバイスがCPU処理を繰り返し中断し続けると、割り込みは非効率的になります。
結論:
ポーリングと割り込みはどちらも、I / Oデバイスに参加するのに効率的です。ただし、前述の特定の条件では非効率になる可能性があります。