主な違いは、割り込みハンドラーが (通常) 周辺ハードウェアによって呼び出されることです。実際のハードウェア信号は周辺機器によって生成され、プロセッサ内のハードウェアは、割り込みの前に実行されていたコードによるアクションなしで、制御を適切なハンドラーに転送します。 . 関数とは異なり、呼び出しはありません。実行は、プロセッサ ハードウェアによって中断されたコードから取り除かれます。
マルチスレッド/プロセスをサポートする OS では、関数呼び出しは、呼び出し元と同じプロセス/スレッド コンテキスト内で行われます。割り込み OTOH には、スレッドまたはプロセス コンテキストがありません。Word 文書の編集中に、バックグラウンドでの BitTorrent ダウンロードに起因するネットワーク割り込みが発生する可能性があるため、ハンドラーができることは非常に限られています。バインドされているプロセス/スレッドに属する事前に割り当てられたバッファーとの間でデータをロードしたり、セマフォを通知したり、OS イベントフラグを設定したりできます。それはそれについてです。
多くの場合、割り込みハンドラーは割り込みリターンを直接実行するため、中断されたコードの実行はそれ以上の干渉なしに続行できます。複雑な OS なしで組み込みコードを実行することが多い yopur 8051 のような単純なコントローラーでは、これが利用可能な唯一のコースです。プリエンプティブなマルチスレッド OS では、割り込みハンドラーには、OS コードを介して割り込みからの復帰を実行する追加オプションがあり、スケジューラーが実行されます。これにより、割り込みハンドラーは、割り込みを待機していたスレッドを実行可能にし、場合によっては実行することができます (したがって、最初に中断されたスレッドをプリエンプトする可能性があります)。これにより、そのようなシステムは、ポーリングなしで優れた I/O パフォーマンスを実現できます。
ハードウェア割り込みソースは、プロセッサ チップに組み込まれた周辺機器 (ネットワーク コントローラー、ディスク コントローラー、ディスプレイ コントローラー、DMA コントローラー、USB コントローラー、コア間通信コントローラー (複数のコアを搭載したプロセッサー上))、タイマーなど、または割り込み要求ピン/パッケージの s を使用して、外部ハードウェア ソース (プッシュボタン、キーボード、キーパッド、タッチスクリーン ハードウェアなど) から割り込みを生成できます。