1

プログラムの実行中に割り込みを確認して使用する方法を知りたいです。レベル、エッジ、ハイブリッド、およびメッセージタイプの割り込みについて読み、デバイスがパルスを送信して割り込みの信号を送信することを読みましたが、プログラムはその割り込みをどのように認識しますか?または、割り込みはプログラムにまったく表示されますか?これで助けてくれてありがとう

4

2 に答える 2

2

一般に、割り込みが発生すると、プロセッサはそれまで行っていた処理を停止し、どこで停止したかを記憶して、何らかの形で反応する特別なコードに移動します。ハードウェアは、プロセッサが現在何をしているかに関係なく、常に割り込みをチェックします。したがって、特別なコード、いわゆる割り込みハンドラーに移動し、それが完了すると、以前に行っていたことに戻ります。中断されたプログラムは何も気づきません。

割り込みハンドラーが配置されているアドレスは、プロセッサのアーキテクチャと割り込みの種類によって異なります。場合によっては、メモリ内の固定ポイントにある必要があります。そのアドレスは、プロセッサのデータシートに記載されています。ほとんどの場合、メモリ内の固定アドレスに、割り込みベクトル テーブルと呼ばれる特別な配列があり、さまざまな種類の割り込みを処理するプロシージャのアドレスが格納されます。

PC、またはその他の少し高度な電子機器では、割り込みハンドラーと割り込みベクター テーブルはオペレーティング システムの一部です。OS の作成や組み込みデバイスのプログラミングを行っている場合を除き、割り込みに煩わされる必要はまったくありません。

于 2011-12-07T15:40:58.607 に答える
1

もしあれば、OSに依存します。私たちが最もよく知っている汎用の「デスクトップ」OS では、ユーザー モード プログラムがハードウェア割り込みを直接処理する必要はありません。キーボード、マウス、ディスク、NIC などの周辺機器からの割り込みは、ドライバーによって処理されます。通常、「プログラム」内のスレッドは読み取り/書き込み要求 API 呼び出しを行い、要求が完了するまで呼び出しは戻りません。これは、プログラムがハードウェアに到達する最も近い場所です。カーネルでは、要求された I/O が完了したことをアドレス指定されたドライバーが通知するまで、呼び出しスレッドはブロックされます。

于 2011-12-07T15:19:30.880 に答える