Linux には、できるだけ多くのデータを RAM にバッファとして保持するファイルシステムキャッシュがあります。
スレッドはファイルシステムのページブロックを読み取ろうとします。ページがキャッシュにある場合は、キャッシュからデータを取得します(キャッシュヒット)。それ以外の場合は、そのページに対するディスクI / O要求を待機します(キャッシュがありません)。
しかし、複数のスレッド(またはプロセッサ)が同じページブロックを読み取る状況もあると思います。ページはキャッシュにありませんが、ページへの入出力要求が行われました。この場合、ディスクI / Oは再実行されませんが、スレッドはとにかくディスクからページを読み取るのを待つ必要があります。
Linuxのファイルキャッシュにこの属性はありますか?これは何と呼んでいますか?
答え1
Linuxでキャッシュからロードすることが非同期であるすべてのOSで実行される方法は次のとおりです。ページが要求されたがまだロードされていない場合は、まだロードされていないとマークされたキャッシュエントリがあります。 2番目の要求が来たら、既存のキャッシュエントリをピギーバックし、ロードが完了するのを待ちます。 Linuxカーネルでは、スタンバイメカニズムをスタンバイキューと呼びます。待ち行列に関する多くの文書があります。Linuxデバイスドライバ、完了数量(待ち行列より少し高いレベルのデータ構造)カーネルAPIドキュメント、…
このメカニズムに正式な名前があるかどうかはわかりません。