割り込みとトラップの違い

Anonim

割り込みとトラップ

どのコンピュータでも、プログラムの通常の実行中にCPUが一時的に停止するイベントが発生する可能性があります。これらのイベントは割り込みと呼ばれます。割り込みは、ソフトウェアまたはハードウェアのいずれかの障害によって引き起こされる可能性があります。ハードウェア割り込みは(単純に)割り込みと呼ばれ、ソフトウェア割り込みは例外またはトラップと呼ばれます。例外は自動的に生成されるソフトウェア割り込みですが、トラップはプログラマによって開始されるソフトウェア起動割り込みです。割り込み(ソフトウェアまたはハードウェア)が発生すると、制御は割り込みによって発生した条件を処理できるISR(割り込みサービスルーチン)と呼ばれる特別なサブルーチンに転送されます。

<! --1 - >

割り込みとは何ですか?

「割り込み」という用語は、通常、ハードウェア割り込み用に予約されています。 これは、外部ハードウェアイベントによって引き起こされるプログラム制御の中断です。ここで、外部はCPU の外部にある。 ハードウェア割り込みは、通常、タイマチップ、周辺機器(キーボード、マウスなど)、I / Oポート(シリアル、パラレルなど)、ディスクドライブ、CMOSクロック、拡張カードカード、ビデオカードなど)。これは、実行中のプログラムに関連する何らかのイベントのためにハードウェア割り込みがほとんど発生しないことを意味します。例えば、ユーザがキーボードをキー入力するようなイベントや、内部のハードウェアタイマーがタイムアウトすると、この種の割り込みが発生し、特定のデバイスに注意が必要であることをCPUに知らせることができます。 CPUが何をしているのかを停止する(すなわち、現在のプログラムを一時停止する)ような状況では、デバイスが必要とするサービスを提供し、通常のプログラムに戻る。ハードウェア割込みが発生し、CPUがISRを開始すると、他のハードウェア割込みは無効にされる(例えば、80×86マシン)。 ISRの実行中に他のハードウェア割り込みが必要な場合は、割り込みフラグ( sti 命令)をクリアすることで明示的に行う必要があります。 80×86のマシンでは、割り込みフラグのクリアはハードウェア割り込みにのみ影響します。

トラップとは?トラップは、プログラマによって開始される制御の転送として識別することができる。トラップという用語は、例外(自動的に発生するソフトウェア割り込み)という用語と互換的に使用されます。しかし、トラップは単なる特別なサブルーチン呼び出しであると主張する人もいます。したがって、ソフトウェアによって呼び出される割り込みのカテゴリに分類されます。たとえば、80×86のマシンでは、プログラマは

int

命令を使用してトラップを開始することができます。トラップは常に無条件であるため、コントロールは常にトラップに関連付けられたサブルーチンに転送されます。トラップを処理するためのルーチンを呼び出す正確な命令は、明示的な命令がトラップを指定するために使用されるので容易に識別される。

割り込みとトラップの違いは何ですか?

割り込みはハードウェア割り込みであり、トラップはソフトウェア起動割り込みです。ハードウェア割り込みの発生は通常、他のハードウェア割り込みを無効にしますが、これはトラップには当てはまりません。トラップが提供されるまでハードウェア割り込みを禁止する必要がある場合は、明示的に割り込みフラグをクリアする必要があります。通常、コンピュータの割り込みフラグはトラップではなく(ハードウェア)割り込みに影響します。つまり、このフラグをクリアしてもトラップは防げません。トラップとは異なり、割り込みはCPUの以前の状態を保持する必要があります。