割り込みとトラップの違い
割り込みとトラップ
どのコンピュータでも、プログラムの通常の実行中にCPUが一時的に停止するイベントが発生する可能性があります。これらのイベントは割り込みと呼ばれます。割り込みは、ソフトウェアまたはハードウェアのいずれかの障害によって引き起こされる可能性があります。ハードウェア割り込みは(単純に)割り込みと呼ばれ、ソフトウェア割り込みは例外またはトラップと呼ばれます。例外は自動的に生成されるソフトウェア割り込みですが、トラップはプログラマによって開始されるソフトウェア起動割り込みです。割り込み(ソフトウェアまたはハードウェア)が発生すると、制御は割り込みによって発生した条件を処理できるISR(割り込みサービスルーチン)と呼ばれる特別なサブルーチンに転送されます。
<! --1 - >割り込みとは何ですか?
「割り込み」という用語は、通常、ハードウェア割り込み用に予約されています。 これは、外部ハードウェアイベントによって引き起こされるプログラム制御の中断です。ここで、外部はCPU の外部にある。 ハードウェア割り込みは、通常、タイマチップ、周辺機器(キーボード、マウスなど)、I / Oポート(シリアル、パラレルなど)、ディスクドライブ、CMOSクロック、拡張カードカード、ビデオカードなど)。これは、実行中のプログラムに関連する何らかのイベントのためにハードウェア割り込みがほとんど発生しないことを意味します。例えば、ユーザがキーボードをキー入力するようなイベントや、内部のハードウェアタイマーがタイムアウトすると、この種の割り込みが発生し、特定のデバイスに注意が必要であることをCPUに知らせることができます。 CPUが何をしているのかを停止する(すなわち、現在のプログラムを一時停止する)ような状況では、デバイスが必要とするサービスを提供し、通常のプログラムに戻る。ハードウェア割込みが発生し、CPUがISRを開始すると、他のハードウェア割込みは無効にされる(例えば、80×86マシン)。 ISRの実行中に他のハードウェア割り込みが必要な場合は、割り込みフラグ( sti 命令)をクリアすることで明示的に行う必要があります。 80×86のマシンでは、割り込みフラグのクリアはハードウェア割り込みにのみ影響します。
int
命令を使用してトラップを開始することができます。トラップは常に無条件であるため、コントロールは常にトラップに関連付けられたサブルーチンに転送されます。トラップを処理するためのルーチンを呼び出す正確な命令は、明示的な命令がトラップを指定するために使用されるので容易に識別される。