ハードウェア割込みとソフトウェア割込みの大きな違いは、ハードウェア割込みが外部機器によって発生するのに対し、ソフトウェア割込みは実行中のプログラムによって発生することです。
割込みとは、CPU以外のデバイスの構成要素によって発生するイベントのことです。
CPUに対して、直ちに行動を起こすべきことを示すものです。
ネットワーク機器やタイマーなどが割り込みを発生させることがあります。
しかし、最近のコンピュータは割り込みの処理を高速に行えるものがほとんどです。
さらに、割り込みには大きく分けてハードウェア割り込みとソフトウェア割り込みの2種類があります。
ここでは、この2種類の割り込みについて説明し、それによってハードウェア割り込みとソフトウェア割り込みの違いを見分けることにします。
ハードウェア割り込みとは
ハードウェアデバイスは、ハードウェア割り込みを発生させます。
ハードディスクは、一連のデータブロックを読み込んだことを知らせるために、ハードウェア割り込みを発生させることができます。
ネットワーク機器は、データパケットを受信したことを知らせるためにハードウェア割り込みを発生させることができます。
さらに、マウスやキーボードなどの入力デバイスもハードウェア割り込みを発生させることができます。
割り込み管理装置やルーティング装置は、ハードウェア割り込みを直接CPUに送る手助けをします。
ハードウェア割り込みには2つのタイプがあります。
マスク可能な割り込み – これらの割り込みは、CPUがより高い優先順位の割り込みを受信したときに遅延させることができます。
ノンマスカブル割り込み – これらの割り込みを遅延させることは不可能です。
CPUはすぐにそれらを考慮する必要があります。
各ハードウェア割り込みは、割り込み番号と呼ばれる参照番号を持っています。
各番号は割り込みを発生させたハードウェアに対応しています。
したがって、CPUは割り込みを発生させたデバイスを容易に認識することができます。
通常、ハードウェア割り込みは非同期イベントです。
ソフトウェア割り込みとは
実行中のプログラムはソフトウェア割込みを発生させます。
カーネルと通信してシステムコールを呼び出すことができる。
例えば、あるプログラムが変数に有効な数値を要求しているのに、NULL値を取得したとします。
すると、このような状況ではソフトウェア割り込みが発生することがあります。
プログラムに無限ループがあるとします。
すると、メモリリークが発生し、プログラムが無応答状態になる可能性があります。
さらに、ある数値をゼロで割る必要があるとします。
例外が発生する可能性があり、ソフトウェア割り込みになります。
通常、ソフトウェア割り込みは解決することが可能です。
割込みが発生すると(ハードウェアでもソフトウェアでも)、CPUは現在実行中のプログラムや活動の実行を停止します。
その後、対応する割込みハンドラが実行されます。
割込みハンドラは、割込みサービスルーチンとも呼ばれます。
これは、特定の割り込み条件に関連するコードのブロックです。
割込みを処理した後、通常のプログラムが再び実行されます。
ハードウェア割り込みとソフトウェア割り込みの違い
定義
ハードウェア割込みは外部機器から発生する割込みであり、ソフトウェア割込みはプログラム中の命令によって発生する割込みの一種である。
このように、ハードウェア割込みとソフトウェア割込みの大きな違いはここです。
世代
外部機器からの割り込みはハードウェア割り込み、実行命令からの割り込みはソフトウェア割り込みとなります。
タイプ
ハードウェア割込みとソフトウェア割込みのもう一つの違いは、ハードウェア割込みが非同期イベントであるのに対し、ソフトウェア割込みは同期イベントであることです。
プログラムカウンタへの影響
また、ハードウェア割込みはプログラムカウンタを増加させませんが、ソフトウェア割込みはプログラムカウンタを増加させます。
優先順位
優先順位もハードウェア割り込みとソフトウェア割り込みの違いです。
ソフトウェア割込みはハードウェア割込みより高い優先度を得ます。
結論
割込みとは、CPUに対して、現在のタスクを中断して他のタスクを実行するように促すことです。
割り込みには、ハードウェア割り込みとソフトウェア割り込みの2種類があります。
ハードウェア割込みとソフトウェア割込みの主な違いは、ハードウェア割込みは外部装置から発生し、ソフトウェア割込みは実行中のプログラムから発生することです。