計算上のオーバーヘッドが原因で、真の LRU が仮想メモリ システムに実装されていないことを知りました。では、なぜ LRU アルゴリズムがファイル キャッシュで実行可能なのでしょうか?
理由は、inodeの時間フィールドである可能性があると思います。あれは正しいですか?
それは速度についてです。
仮想メモリのステータス ビットはナノ秒単位で更新する必要があるため、ハードウェア サポートが必要であり、LRU のステータス情報をハードウェアに実装するにはコストがかかります。たとえば、クロック アルゴリズムは、より安価なハードウェア サポートで LRU を概算するように設計されています。
ファイル システムの操作はミリ秒単位です。CPU は、この時間のごくわずかな時間でソフトウェアで LRU を実行できます。ミリ秒は、CPU の観点から見ると非常に「遅い」(190,000 命令) ため、少数のキャッシュ ミスを防ぐだけで大きな効果が得られます。