0

私はLinux分野に不慣れです。

さまざまなシナリオでのスピンロック(カーネルモード)の使用について混乱があります。どうか明らかにしてください。

スピンロックはビジー待機メカニズムとして使用されます。

1)スピンロック(ユニプロセッサ+非プリエンプティブカーネル)->存在しません(スピンロック中にスリープするとデッドロックが発生するため)

2)スピンロック(ユニプロセッサ+プリエンプティブカーネル)->リソースを浪費するため、使用しないでください(ロックを保持しているときにスレッドがスリープするとどうなりますか??他のプロセスは通常どおり実行できますか?)

3)スピンロック(マルチプロセッサ+プリエンプティブカーネル)->慎重に使用する必要があります(ロックを保持しているときにスレッドがスリープするとどうなりますか??他のプロセスは通常どおり実行できますか?)

上記のシナリオについての私の理解が正しいかどうかを知らせてください。また、スピンロックの使用法を明確にするのに役立つ追加情報を提供してください。

4

1 に答える 1

1

IIRC、UPの場合、スピンロックはほとんど無視されます(プリエンプションを無効にする可能性があることを除いて、スピンロック機能の一部のバリアントでは、IRQも無視されます)。

マルチプロセッサの場合、プリエンプションは再び無効になり、IRQも無効になる可能性があります。

一般に、スピンロックを保持しているタスクはスリープ状態にしないでください。(割り込みを無効にしただけの場合は、二重にそうなります)

(免責事項:投稿の内容は、遅れており、ATMの詳細を確認できないため、軽度/非常に不正確である可能性があります)

于 2013-03-04T21:23:49.600 に答える