web-dev-qa-db-ja.com

割り込みコンテキストと例外コンテキストの違いは何ですか?

2つの間に大きな違いはありますか?一方で実行でき、もう一方では実行できないことはありますか?たとえば、タイマーハンドラーよりもページフォールトハンドラーを変更する場合は、さらに注意する必要がありますか?

15
Alex

割り込みは、プロセッサ命令の実行と同期していないハードウェア(Ex、I/O)によって通常生成される非同期イベントです。例外は、プロセッサが命令の実行中に事前定義された条件を検出したときに生成される同期イベントです。

割り込みハンドラは、別の割り込みハンドラなどによって中断される場合があります。割り込みハンドラーは例外ハンドラーを延期する場合がありますが、例外ハンドラーが割り込みハンドラーを延期することはありません。カーネルモードで発生する可能性がある唯一の例外は、ページフォールトです。

割り込みハンドラは、ページフォールトを引き起こし、潜在的にスケジューリングを引き起こす可能性のある操作を実行することはありません。それらがページフォールトを引き起こす場合、それはバグであることを意味します。

割り込みハンドラを作成/変更するときは注意が必要です

21
Gyan Gupta

割り込みと例外の両方がプログラムフローを変更します。 2つの違いは、割り込みは外部イベント(シリアルポート、キーボード)の処理に使用され、例外は命令障害(ゼロ除算、未定義のオペコード)の処理に使用されることです。

割り込みは、現在の命令を終了した後、プロセッサによって処理されます。割り込みピンで信号が見つかると、割り込みテーブルで割り込みハンドラのアドレスを検索し、そのルーチン制御を渡します。割り込みハンドラルーチンから戻った後、割り込み命令の後の命令でプログラムの実行を再開します。

一方、例外は3種類に分けられます。これらは、フォールト、トラップ、およびアボートです。障害は、障害が発生した命令の前にプロセッサによって検出され、処理されます。トラップは、トラップの原因となった命令の後に処理されます。ユーザー定義の割り込みはこのカテゴリに入り、トラップと言えます。これには、たとえばMS-DOS INT21hソフトウェア割り込みが含まれます。アボートは、操作が不可能になったときに、重大なシステムの問題を通知するためにのみ使用されます。

調査場所: https://www.allinterview.com/showanswers/14289/distinguish-between-interrupts-and-exceptions.html

7
pega wega