【基】仮想メモリのページングアルゴリズム(NRU,LRU,LFU,FIFO)



◆仮想メモリのページングアルゴリズム

メモリの中で、今後最も使われる可能性が少ないページ(プログラムの一部分)を決める方法のこと。


同時に複数のプログラムを起動したり、巨大なプログラムを実行したりすると、メモリが不足する。

その場合に備え、OSにはメモリの中で今後使われる可能性が少ないページを、ハードディスクに一次退避させ、メモリを空ける機能がある。

これを仮想メモリと呼ぶ。(ハードディスクを仮想的にメモリとして使う)

ページ:プログラム全体を固定サイズに区切った部分のこと。


仮想メモリに移すページを決めるアルゴリズムが以下の4種類。

「NRU」「LRU」「LFU」「FIFO」


※設問では「キャッシュメモリと主記憶の間でブロックを置き換える方式」と記述されていた。


◆ページイン、ページアウト、ページフォールト

ページングアルゴリズムにおける各種言葉の意味。


ページイン:仮想メモリ(ハードディスク)から、実メモリ(主記憶装置)にページを読み込むこと。


ページアウト:実メモリ(主記憶装置)から仮想メモリ(ハードディスク)にページを退避させること。


ページフォールト:実行しようとしたページが実メモリに存在しないこと。ページフォールトになったときは、採用されているページングアルゴリズム(NRU,LRU,LFU,FIFO)に従って、今後使われる可能性が少ないページを決め、仮想メモリに退避させる。また、プログラム開始時は実メモリが空なため、ページフォールトである。(開始時はプログラムを読み込み、実メモリに格納する必要があるため)



◆NRU

Not Recentry Used。

直訳:Not Recentry(最近ではない) Used(利用)

一定時間参照されていないブロック。


◆LRU

Least Recentry Used。

直訳:Least(最も少ない) Recentry(最近の) Used(利用)

最後に参照されてから最も長い時間が経過したブロック。


例:プログラム利用順が「A->B->B->C->A」のとき「B」が該当する。


◆LFU

Least Frequently Used。

直訳:Least(最も少ない) Frequently(頻度の) Used(利用)

参照頻度の最も低いブロック。

(つまり、利用回数が最も少ないページ)


例:プログラム利用順が「A->B->B->C->A」のとき「C」が該当する。


◆FIFO

First In First Out。

直訳:First In(最初にいれたものを) First Out(最初に出す)

読みこんでから最も長い時間が経過したブロック。

(つまり、最初に利用したページ)


例:プログラム利用順が「A->B->B->C->A」のとき「A」が該当する。


◆LIFO

Last In First Out。

直訳:Last In(最後にいれたものを) First Out(最初に出す)

読みこんでから最も短い時間が経過したブロック。

(つまり、最後に利用したページ)


例:プログラム利用順が「A->B->B->C->A」のとき「A」が該当する。



◆LIFO記載のサイト


◆注意:以下サイトにはLIFOはページングアルゴリズムには無関係であると記載してあるが。。。?(存在する旨の表記もあるサイトがある)


この記事が気に入ったらサポートをしてみませんか?