11

(x86 の命令で) 割り込みを無効にすると、cli正確にはどうなりますか?

  • PIC はユーザーが割り込みをオンにするのを待ち、それが発生したときに割り込みを発生させますか? (もしそうなら、それはどのくらい待ちますか?時間が「期限切れ」になったらどうなりますか?)

  • デバイスの観点からすると、割り込みは応答なしで「ブラック ホール」に送信されますか?

  • PICはどういうわけか「CPUがビジーです」などとデバイスに伝えますか?

  • それとも何か他のことが起こりますか?

また、処理方法がわからない割り込みをどのように処理しますか?
PIC (またはデバイスがわからない場合はデバイス) に「はい、メッセージを受け取りましたが、どうすればよいかわかりません」と伝える方法はありますか?

4

2 に答える 2

7

8259aPICはCPUからのINTA信号を待ちます。CPUは、制御を適切なISRに転送することにより、割り込みの処理を開始するときにそれを送信します。どのISR?PICは割り込みベクトルをCPUに渡し、CPUはIVT / IDTでアドレスを検索し、残りはわかります。PICは、INTAを受信するまで割り込みベクタを提供しません。

8259a PICは、I/Oデバイスと一方向の通信しかできません。彼らは、サービスが必要な割り込みがあることを伝えることができます。

したがって、CPUが割り込みに応答しない場合、PICではすべてが空中にあります。ただし、デバイスは気まぐれに割り込み要求信号をディアサートしてから再アサートする場合があります。どちらかわかりません。また、割り込みサービスに時間の要件があるのか​​わかりません。

特定のソースからの割り込みに関心がない場合は、それをマスクするだけで、何も得られません。割り込みを取得したが、それを処理する方法がわからない場合は、処理したことをPICに伝えることができます。これにより、中断されたデバイスが「フリーズ」状態のままになり、サービスが行われるのを無期限に待機する場合があります。また、デバイスが割り込み要求信号をハイに保つ可能性があります。これは、レベルトリガーモードで割り込みを取得している場合に問題になります。割り込みが継続的に発生します。

于 2012-05-20T12:37:05.963 に答える
4

割り込みは引き続き発生しますが、CPU はリッスンしていません。再び聞き始めると ( sti)、信号はまだそこにあり、最初の機会に有効になります。

PC PIC にはいくつかのレベルの割り込みがあり、優先レベルごとに 1 つのアクティブな割り込みを保持できると思います。対応する処理が完了したことを CPU が通知するまで、それぞれを保持します。長時間割り込みを無効にすると、おそらくこれが壊れる可能性があるため、そうしないでください!

割り込みを担当するデバイスは、待機中に応答を取得しません。これは、とにかく応答のようなものです。待てない場合、何らかのエラー状態に陥る可能性があり、CPU が最終的に発生したときに表示されます。

明示的に有効にした割り込みのみが取得されるため、驚くことはありません。割り込みをオンにするデバイス ドライバは、割り込みの処理方法をよりよく知っています。

于 2012-05-20T12:24:14.543 に答える