この記事では、「割り込み」と「ポーリング」の違いを分かりやすく説明していきます。
「割り込み」とは?
「割り込み」とは、「ハードウェアで外部の状態が変わっていないかどうかを検知して、変化があればCPUに割り込み信号を伝達する方法」を意味しています。
「割り込み」は、「常に定期的に変化をチェックしつづけるポーリングの持つ、シングルタスクになりがちな欠点を改良した方法」になります。
割り込み信号が送られてきた場合には、現在やっているタスクを一時的に中断して、「割り込みハンドラ・割り込みサービスルーチン(ISR)」と呼ばれる関数によって特異的な処理を行います。
前もって予測される変化のイベントに対応する「割り込みハンドラ」を用意しておくことによって、「自動的なマルチタスク」を実現できるという強みがあるのです。
「ポーリング」とは?
「ポーリング」とは、「ソフトウェアが外部の状態が変わっていないかどうか知るために定期的にチェックする方法」を意味しています。
「ポーリング」はCPUやメモリに配置された「ポート」に状態の変化が知らされた後に、ソフトウェアで「期待(予測)される状態になったかどうかの判断」が行われます。
ソフトウェア構造はシンプルに設計できる長所があるのですが、「定期的に変化をチェックしつづけるループ構造」によってCPU資源を使いすぎる短所(=他の作業もする複雑なマルチタスクには不向きの問題)もあります。
「割り込み」と「ポーリング」の違い
「割り込み」は「ハードウェアによる変化の検知」であり、「ポーリング」は「ソフトウェアによる変化のチェック」であるという基本の違いがあります。
「割り込み」は「何らかのイベントが起こった時」にだけ、CPUに割り込み信号を送って割り込みハンドラで個別の処理をします。
それに対して、「ポーリング」は「定期的・常態的な監視」によって、状態が変わっているか否かをチェックする仕組みである違いを指摘できます。
「ポーリング」と比較すると「割り込み」のほうが、「マルチタスク+リアルタイムの変化に応じた処理」に適している点も異なっています。
「割り込み」では「通知に合わせた各種の割り込みハンドラ」を前もって準備しておくことで、「状況に応じて自動的に処理するマルチタスク」を実現できます。
一方で、「ポーリング」は複数の仕事の同時処理はできず、「定期的な監視のシングルタスク」になる違いを挙げられます。
全般的に「割り込み」による処理のほうが優れている部分が多いのですが、「ポーリング」にも「ハードウェアの種類・性能に依存せずソフトウェアだけで実現できる良さ」もあります。
まとめ
「割り込み」と「ポーリング」の違いについて分かりやすく説明しましたが、いかがでしたか? 「割り込み」とは、「ハードウェアに依拠した状態変化のその都度の検知と個別処理」を意味しています。
「ポーリング」は、「ソフトウェアに依拠して常時監視するような形で状態変化をチェックするやり方」を意味している違いがあります。
「割り込み」と「ポーリング」の違いについて詳しくリサーチしたいときは、この記事の解説を確認してみてください。