13

割り込みハンドラーに入るときは、最初にそのCPUで「割り込みを無効にする」(x86のcli命令のようなものを使用)。割り込みが無効になっている間に、ユーザーがキーボードの文字「a」を押したと仮定します。これにより、通常は割り込みが発生します。しかし、割り込みが無効になっているので、それは次のことを意味しますか?

  1. クリティカルセクションで割り込みが無効になっているため、「a」の割り込みハンドラは呼び出されません。
  2. 割り込みはOSによって処理されますが、割り込みが再び有効になるまで遅延します。具体的には、ユーザーが最初に「a」を押したのが割り込みが無効になっているときだった場合、ユーザーはもう一度「a」を押す必要がありますか?
4

5 に答える 5

8

多くの場合、1つの割り込みはハードウェアによって「キューに入れられ」ます。

[割り込みは、多くの場合、固執できる単なる論理ゲートです。オンにすると、しばらくオンのままになります。]

割り込みが無効になっている間だけユーザーが「a」を押すと、割り込みが再度有効になったときに割り込みとして登録されます。

割り込みが無効になっている間にユーザーがなんとかして「a」を2回押すと、有効になっているときに割り込みとして登録されます。それが最初か2番目かは、正確な論理ゲート構成によって異なります。

于 2010-08-06T20:35:03.213 に答える
6

答えは、キーボード割り込みをすでに処理していたかどうかによって異なります。

ほとんどの割り込みサービスルーチン(ISR)には、それらの終了時に「サービスされた」ことをハードウェアに通知するコードがあります。キーボードコントローラの場合、受信したバイトを確認するコマンドが書き込まれます。キーボードコントローラハードウェアが割り込み状態を通知するための電気の使用を停止したのは、確認時です。

キーボード以外の割り込み、たとえば火災警報割り込みを処理している場合、キーが押されると、割り込みを電気的にアサートするキーボードハードウェアがトリガーされます。CPUで割り込みが再び有効になるまで、電気信号は無視されます。火災警報割り込みの処理が終了すると、火災警報ISRはすべてのデータを確認し、CPUの割り込みを再度有効にします。キーボードコントローラがまだ電気的に割り込み状態を通知しているため、CPUはすぐに割り込みに入ります。

キーボード割り込みを処理していて、ユーザーがキーボードISRの実行中に2番目のキーストロークをすばやく入力した場合、2番目のキーストロークからデータが失われるか、データを後で受信する可能性があります。特に、ISRが確認応答を介してキーボードコントローラーをリセットしたが、ISRが実際にキーボードコントローラーから使用可能なすべてのバイトを受信して​​いない場合、それは問題です。

多くの場合、ISRは最初にそのアクティブ化をトリガーした割り込みを処理し、次に割り込みを確認した後、最初の割り込み以降にさらにデータを受信したかどうかを確認するためにデバイスをポーリングします。その場合は、ソフトウェア割り込みを生成してISRに再入し、デバイスにサービスを提供します。

于 2010-08-06T20:53:22.750 に答える
2

簡単な答えは、割り込みがそれ以上の割り込みを自動的に無効にすることです。割り込みは、最短時間だけ無効にする必要があり、無効にする必要があります。元のATBIOSキーボードISRの最初の命令は、STI割り込みを有効にすることでした。

幸いなことに、PICはハードウェア割り込みを優先し、割り込みが有効になっている場合でも、タイマー割り込みIRQ0のみがキーボードISRに割り込むことができます。もちろん、NMIはどちらの方法でも発生する可能性がありますが、幸いなことに、これは現在のPCでは発生しません。

于 2010-08-30T22:58:18.303 に答える
0

通常の割り込み処理中にユーザーが「a」を2回押すことは物理的に不可能です。彼が一度に2つのキーを押したとしても、それは非常にありそうにありませんが、CPUがそれを取得する準備ができるまで、ハードウェアは少なくとも1つのキーを保持する必要があります。

PCの場合(これは私のPCXTの時代にまでさかのぼります)、キーボードサブシステムはCPUの13回のキー押下の領域で保持される可能性があります。

于 2010-08-06T20:59:28.463 に答える
-5

割り込みを無効にすることは、異なる証拠を持っています。1.ハードウェア障害2.例外{例:ゼロ除算}および電気ショック療法。

  1. ハードウェア障害が発生した場合、OSはブレンドで動作する必要があります。
  2. 例外が発生した場合、OSはシステムをマンガ化し、中断を処理するために別のプロセスを切り替える必要があります。

または、たとえば:I/Oデバイスの場合。割り込みがなかった場合、コンピューターは効率的ではありませんでした!

于 2013-03-05T14:07:35.813 に答える