3

割り込みが「cli」命令によってマスクされている場合、「sti」命令の後に同じ割り込み (同じソースの割り込みではない) を cpu が受け取ることはできますか?

4

1 に答える 1

4

ほとんどすべての妥当な割り込みアプリケーションでは、割り込みをマスクアウトすることでそれが可能になります。マスクを解除すると、CPUは保留中の割り込み要求を受け入れます。

そうでない場合は、割り込みマスクを使用すると、タイミングの破片が狭いために一部の割り込みが失われる可能性があります(ソフトウェアは、新しい要求が表示されると同時にマスクを無効にします。別の動作は必要ありません。これらのイベントの1つが他のイベントの1つ前に発生したという理由だけで)。

割り込みのクラス(「all」または「level7」またはハードウェアがサポートするもの)をマスクした後、特定の割り込みソースを削除したい場合は、割り込みがマスクされている間にプログラムが明示的なアクションを実行して、ハードウェアに通知する必要があります。その割り込みを無視/確認します。

この考えを逆にすると、かなり洗練されたOS/割り込みアーキテクチャを手に入れることができます。非常に優先度の高い割り込みを処理すると便利な場合もありますが、オーバーヘッドを低く抑えたい場合があります。したがって、可能な場合によく使用される安価なトリックは、優先度の高い割り込みルーチンがほんの少しの作業を実行し、残りの作業をそのレベルで割り込みを発生させることによって優先度の低いレベルにパントすることです。一部のハードウェアはこれを可能にします。これは、どのレベルの割り込みルーチンでも、タスクの再スケジュールを引き起こす可能性のある作業を実行した場合に特に便利です。それは単に、サービスルーチンがたまたまスケジューラである低確率レベルの割り込みを通知するだけです。

于 2012-05-30T14:06:26.317 に答える