4

ページ ファイルに関して、FIFO よりもLeast Recent Usedの方が優れているのはなぜですか?

4

5 に答える 5

12

メモリページをディスクにオフロードするという意味では、プロセスがページに頻繁にアクセスしている場合、最初にアクセスしたページであっても、ページをディスクにページングしたくありません。一方、メモリ ページに数日間アクセスしていない場合は、近い将来アクセスする可能性はほとんどありません。

そうでない場合は、質問を編集して詳細を記入してください。

于 2010-01-13T16:36:45.130 に答える
4

将来についての完全な知識が必要なため、常にうまく機能する単一のキャッシュアルゴリズムはありません。(そして、それをどこで入手できるかを知っているなら...)VMキャッシュ設計におけるLRUの優位性は、システム動作の測定の長い歴史の結果です。実際のワークロードを考えると、LRUは非常に大きな時間でうまく機能します。ただし、FIFOがLRUよりも優れたパフォーマンスを発揮する参照文字列を作成することはそれほど難しくありません。

使用可能なページング可能な実メモリよりもはるかに大きい大きなアドレス空間を通る線形スイープを検討してください。LRUは、「最近触れたものは再び触れる可能性が高い」という仮定に基づいていますが、線形スイープはその仮定に完全に違反しています。これが、一部のオペレーティングシステムで、プログラムがカーネルに参照動作についてアドバイスできるようにする理由です。1つの例は、従来のLISPインタープリターに代表される「マークアンドスイープ」ガベージコレクションです。(そして、「世代別」のような最新のGCでの作業の主要な推進力です。)

もう1つの例は、特定の旧式マクロプロセッサ(STAGE2)のシンボルテーブルです。二分木はすべてのシンボルについてルートから検索され、文字列の評価はスタックで実行されます。シンボルツリーのルートページとスタックの最下部のページを「配線」することで使用可能なページフレームを減らすと、ページフォールト率が大幅に向上することがわかりました。キャッシュは小さく、激しくかき回され、キャッシュがそれらのページへの相互参照距離よりも小さかったため、常に最も頻繁に参照される2つのページを押し出しました。したがって、小さなキャッシュの方がうまく機能しましたが、それは、キャッシュから盗まれた2つのページフレームが賢明に使用されたためです。

これらすべての正味は、LRUが標準的な答えであるということです。これは、通常、ひどく過負荷になっていないシステム(VMは実際のメモリの何倍も利用可能)の実際のワークロードに非常に適しているためです。これは、長年の注意深い測定によってサポートされています。ただし、代替動作が優れている場合は確かに見つかります。これが、実際のシステムの測定が重要である理由です。

于 2010-01-13T17:28:38.230 に答える
2

RAM をキャッシュとして扱います。効果的なキャッシュであるためには、要求される可能性が最も高いアイテムをメモリに保持する必要があります。

LRU は、最近使用されたものをメモリに保持します。FIFO は、最近追加されたものを保持します。一般に、LRU はより効率的です。これは、通常、一度追加されて二度と使用されないメモリ項目があり、頻繁に追加されて使用される項目があるためです。LRU は、頻繁に使用されるアイテムをメモリに保持する可能性がはるかに高くなります。

于 2010-01-13T16:39:10.260 に答える
2

アクセスパターンによっては、FIFO が LRU に勝ることがあります。Adaptive Replacement Cacheは、実際の使用パターンに基づいて戦略を適応させるハイブリッドです。

于 2012-01-26T08:59:03.267 に答える
1

参照の時間的局所性によると、最近アクセスされたメモリは、すぐに再びアクセスされる可能性が高くなります。

于 2010-01-13T16:44:19.093 に答える