ページングと仮想記憶
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/07 01:45 UTC 版)
「ページング方式」の記事における「ページングと仮想記憶」の解説
ページングの主たる機能は、プログラムがその時点で物理メモリ (RAM) のマッピングされていないページにアクセスしようとしたときに実行される。これをページフォールトと呼ぶ。オペレーティングシステムはページフォールトによって制御を得て、プログラムからは見えない形で処理を行う。その流れは次のようになる。 補助記憶装置内での要求されたデータの位置を特定する。 RAM上の空のページフレームを取得。 要求されたデータをそのページフレームにロードする。 ページテーブルを更新してそのページフレームをマッピングする。 要求元プログラムに制御を戻し、ページフォールトを発生した命令を透過的に再実行させる。 これを「ページイン」と呼ぶ。必要とされる全データを格納できるほどRAMがないという状態になるまで、空のページフレームを取得する処理はRAM上の使用中ページを奪う処理を伴わない。全ページフレームが使用中の場合、空のページフレームを得るには使用中のページフレームを選んで空にする処理が必要となる。選択したページフレーム内のデータが前回ロードされてから変更されている場合(いわゆる「ダーティ」状態)、二次記憶装置の対応する位置に書き戻さないと解放できない。これを「ページアウト」と呼ぶ。そうでない場合、選択したページフレームの内容は二次記憶装置の所定の位置にあるものと同じなので、書き戻す必要がない。そのように使用中のページを奪った場合、もともとそのページを使っていたプロセスがそのページにアクセスしようとした場合、同様に空のページフレームを取得して、ページインする必要がある。 効率的なページングシステムは、空にすべきページフレームとして、短期間では必要とされなさそうなページを選択しなければならない。そのためのページ置換アルゴリズムには様々なものがある。多くのオペレーティングシステムは Least Recently Used (LRU) アルゴリズムに類するものを使うか(LRUそのものは現行のハードウェアでの正確な実装は困難である)、ワーキングセットベースのアルゴリズムを使っている。 さらに応答性を向上させるため、ページングシステムはどのページがすぐに必要とされるかを予測する様々な戦略を活用する。プログラムが参照する前に先行的にページをロードするシステムもある。
※この「ページングと仮想記憶」の解説は、「ページング方式」の解説の一部です。
「ページングと仮想記憶」を含む「ページング方式」の記事については、「ページング方式」の概要を参照ください。
- ページングと仮想記憶のページへのリンク