「雷の群れ」の問題は何ですか? Spinlockを使用した後でも競合状態がどのように発生するのですか?

「雷の群れ」の問題は何ですか? Spinlockを使用した後でも競合状態がどのように発生するのですか?

~からここ:

待機リストページを解放するために待機しているプロセスの待機キューのハッシュテーブル。これはwait_on_page()とUnlock_page()にとって重要です。すべてのプロセスはキューで待機できますが、これにより、待機中のすべてのプロセスが目覚めたときにまだロックされているページを配置して競合する可能性があります。このような共有リソースを競い合う大規模なプロセスグループは、時々雷の群れと呼ばれます。待機リストはセクション 2.2.3 で詳細に議論される。

「thunder group」の問題は何であり、ページではスピンロックを使用していると言いますが、スピンロックを使用しても競合状態がどのように発生するのですか?競合するプロセスの数は本当に重要ですか?私の考えでは、どのくらいのプロセスが競合しているかにかかわらず、1つのプロセスだけがスピンロックを保持し、競合状態は発生しません。

ベストアンサー1

いいえrace condition、スピンロックがこれを保証します。

つまりthundering herd problem、通常ロックが解除されたり、I/O 入力イベントが完了するなどの事が発生すると、待っていた多くのプロセスが再開されます。これらのいずれかが選択され、他のすべての項目は通常ロックまたはI / Oイベント待機を再開します。

記者会見を考えてみてください。報告者が答えを終えると、すべての記者は報告者の注目を集め始める。ブリーフィングは一人を選び、記者は皆席に座って質問し、回答をした後、もう一度注目を集めるよう努力する。 10人の記者にはよく通じるが、10000人の記者にはすべての記者が関心を集めるために多くのエネルギーを無駄にすることになり、記者が並んですべてが順番に質問をすることで効率性を高めることができる。

したがって、thundering herd精度よりも効率が重要です。

おすすめ記事