0

オペレーティング システム コースのページ置換をシミュレートするプロジェクトを行っています。私は、1200 の参照に対して 3 つのアルゴリズムすべてを実行するシミュレーターを持っています。ただし、ほとんどの場合、LRU アルゴリズムが FIFO と同じかそれより低いスコアしか得られないページ フォールト率が発生しています。ときどき、LRU のページ フォールト率が FIFO よりわずかに高いという入力が実行されます。これは間違っていますか?

LRU を実装するために、ラウンドごとにインクリメントされる各ページ番号のカウンターを使用しています。使用中のページのカウンターは 0 にリセットされます。フレームを交換するときは、カウンター値が最大のフレームを使用します。私の実装は正しいはずだと思います。

4

1 に答える 1

3

LRU が最適でないことは確かに起こりえますが、FIFO の方がうまくいくことさえあります。

たとえば、大きな配列 (大きすぎてメモリに収まらない) を常に最初から順番に繰り返しスキャンするアプリケーションを考えてみましょう。通常は、ページの置換を強制するのに十分な距離まで到達しますが、多くの場合、最後まで到達しません。

最適な戦略は、しばらくの間再び必要とされないかもしれない最近アクセスされたページよりも優先して、すべてのスキャンで使用される初期ページを配列に保持することだと思います。この戦略は、LRU よりも FIFO に似ています。

于 2012-11-29T02:14:51.760 に答える