1

Linuxについて学ぶためにこのリンクを読んでいます。futexここで、私には理解できないことがあります。

ロックを取得するために、アトミック テスト アンド セット命令 (cmpxchg() など) を使用して 0 をテストし、1 に設定することができます。この場合、ロック スレッドはカーネルを使用せずにロックを取得します (およびカーネルは、この futex が存在することを知りません)。次のスレッドがロックを取得しようとすると、ゼロのテストが失敗し、カーネルが関与する必要があります。

「カーネルを介さずにロックを取得する」理由がよくわかりません。

test-and-setなどのアトミックな命令には、常にカーネルが関与していると常に考えています。

では、なぜ最初にロックを取得するときにカーネルが関与しないのでしょうか? より具体的には、アトミック命令はカーネルを含む必要があるか、または含む可能性がありますか?

4

1 に答える 1