0

Linuxデバイスドライバーをフォローしています。スピンロックを導入すると、次の例が示されます。

ドライバーが実行中で、デバイスへのアクセスを制御するロックを解除しました。ロックが保持されている間、デバイスは割り込みを発行します。これにより、割り込みハンドラーが実行されます。割り込みハンドラは、デバイスにアクセスする前に、ロックも取得する必要があります。割り込みハンドラーでスピンロックを取得することは、正当なことです。これが、スピンロック操作がスリープしない理由の1つです。しかし、割り込みルーチンが最初にロックを解除したコードと同じプロセッサで実行された場合はどうなりますか?割り込みハンドラーが回転している間、非割り込みコードを実行してロックを解除することはできません。そのプロセッサは永久に回転します。

割り込みハンドラーが回転していると、割り込みなしのコードを実行できない理由がわかりません。

割り込みハンドラのルーチンをプリエンプションできないからですか?もしそうなら、それは割り込みルーチンがアトミックでなければならないということですか?

4

1 に答える 1

2

割り込みハンドラのルーチンをプリエンプションできないからですか?

プロセスコンテキストコードではありません。

もしそうなら、それは割り込みルーチンがアトミックでなければならないということですか?

優先度の高い割り込みまたはNMI(またはSMM)によって割り込みが発生する可能性があります。

于 2012-02-22T22:02:31.883 に答える