Operating-system-os-virtual-memory

提供:Dev Guides
移動先:案内検索

オペレーティングシステム-仮想メモリ

コンピュータは、システムに物理的にインストールされている量よりも多くのメモリをアドレス指定できます。 この余分なメモリは、実際には*仮想メモリ*と呼ばれ、コンピュータのRAMをエミュレートするためにセットアップされたハードディスクのセクションです。

このスキームの主な目に見える利点は、プログラムが物理メモリよりも大きくなる可能性があることです。 仮想メモリには2つの目的があります。 まず、ディスクを使用して物理メモリの使用を拡張できます。 次に、各仮想アドレスが物理アドレスに変換されるため、メモリ保護が可能になります。

以下は、プログラム全体をメインメモリに完全にロードする必要がない場合の状況です。

  • ユーザー作成のエラー処理ルーチンは、データまたは計算でエラーが発生した場合にのみ使用されます。
  • プログラムの特定のオプションと機能はほとんど使用されません。
  • 実際に使用されるテーブルはごくわずかですが、多くのテーブルには固定量のアドレススペースが割り当てられます。
  • メモリ内に部分的にしか存在しないプログラムを実行する機能は、多くの利点に反するでしょう。
  • 各ユーザープログラムをメモリにロードまたはスワップするために必要なI/Oの数は少なくなります。
  • プログラムは、使用可能な物理メモリの量に制約されなくなりました。
  • 各ユーザープログラムは、より少ない物理メモリで済み、同時により多くのプログラムを実行でき、それに対応してCPU使用率とスループットが向上します。

汎用の使用を目的とした最新のマイクロプロセッサ、メモリ管理ユニット、またはMMUは、ハードウェアに組み込まれています。 MMUの仕事は、仮想アドレスを物理アドレスに変換することです。 基本的な例を以下に示します-

仮想メモリ

仮想メモリは通常、デマンドページングによって実装されます。 また、セグメンテーションシステムに実装することもできます。 デマンドセグメンテーションを使用して、仮想メモリを提供することもできます。

デマンドページング

デマンドページングシステムは、プロセスがセカンダリメモリに常駐し、ページが事前にではなくオンデマンドでロードされるスワッピングを備えたページングシステムに非常に似ています。 コンテキストの切り替えが発生すると、オペレーティングシステムは古いプログラムのページをディスクにコピーせず、新しいプログラムのページをメインメモリにコピーしません。代わりに、最初のページを読み込んで新しいプログラムの実行を開始し、参照されているプログラムのページ。

デマンドページング

プログラムの実行中に、プログラムが少し前にスワップアウトされたためにメインメモリで利用できないページを参照する場合、プロセッサはこの無効なメモリ参照を*ページフォールト*として扱い、プログラムからオペレーティングシステムに制御を渡しますページをメモリに戻すことを要求するシステム。

利点

デマンドページングの利点は次のとおりです-

  • 大容量の仮想メモリ。
  • メモリのより効率的な使用。
  • マルチプログラミングの程度に制限はありません。

デメリット

  • ページ割り込みを処理するためのテーブルの数とプロセッサオーバーヘッドの量は、単純なページ管理技術の場合よりも大きくなります。

ページ置換アルゴリズム

ページ置換アルゴリズムは、メモリページを割り当てる必要があるときに、オペレーティングシステムがどのメモリページをスワップアウトするか、ディスクに書き込むかを決定する手法です。 ページフォールトが発生し、ページが利用できない、または空きページの数が必要なページより少ないため、空きページを割り当て目的のアカウンティングに使用できない場合は常にページングが発生します。

置換用に選択され、ページアウトされたページが再度参照されると、ディスクから読み込む必要があり、これにはI/Oの完了が必要です。 このプロセスは、ページ置換アルゴリズムの品質を決定します。ページインを待機する時間が短いほど、アルゴリズムは優れています。

ページ置換アルゴリズムは、ハードウェアによって提供されるページへのアクセスに関する限られた情報を調べ、ページミスの総数を最小化するために置換するページを選択しようとしながら、アルゴリズムのプライマリストレージとプロセッサ時間のコストとバランスをとります自体。 多くの異なるページ置換アルゴリズムがあります。 特定のメモリ参照文字列でアルゴリズムを実行し、ページフォールトの数を計算することにより、アルゴリズムを評価します。

参照文字列

メモリ参照の文字列は、参照文字列と呼ばれます。 参照文字列は、人為的に、または特定のシステムをトレースして各メモリ参照のアドレスを記録することにより生成されます。 後者を選択すると、大量のデータが生成されます。2つの点に注意してください。

  • 特定のページサイズについては、アドレス全体ではなく、ページ番号のみを考慮する必要があります。
  • ページ p への参照がある場合、ページ p への参照の直後にページフォールトが発生することはありません。 ページpは、最初の参照後にメモリ内にあります。すぐ後に続く参照はフォールトしません。
  • たとえば、次の一連のアドレスを考えます-123,215,600,1234,76,96
  • ページサイズが100の場合、参照文字列は1,2,6,12,0,0です

先入れ先出し(FIFO)アルゴリズム

  • メインメモリ内の最も古いページが、置換用に選択されるページです。
  • 実装が簡単で、リストを保持し、末尾のページを置き換え、先頭に新しいページを追加します。

先入れ先出し

最適なページアルゴリズム

  • 最適なページ交換アルゴリズムは、すべてのアルゴリズムの中で最もページ違反率が低くなります。 最適なページ置換アルゴリズムが存在し、OPTまたはMINと呼ばれています。
  • 最長期間使用されないページを置き換えます。 ページが使用される時間を使用します。

最適なページ置換

最長時間未使用(LRU)アルゴリズム

  • メインメモリで最も長く使用されていないページが、置換のために選択されるページです。
  • 簡単に実装し、リストを保持し、時間を振り返ってページを置き換えます。

最近最も使用されていない

ページバッファリングアルゴリズム

  • プロセスをすぐに開始するには、空きフレームのプールを保持します。
  • ページフォールトで、置換するページを選択します。
  • 空きプールのフレームに新しいページを書き込み、ページテーブルをマークして、プロセスを再起動します。
  • 次に、ディスクからダーティページを書き込み、置き換えられたページを保持しているフレームを空きプールに配置します。

最低使用頻度(LFU)アルゴリズム

  • 最小数のページが、置換用に選択されるページです。
  • このアルゴリズムは、プロセスの初期段階でページが頻繁に使用されるという状況に悩まされますが、その後再び使用されることはありません。

最も頻繁に使用される(MFU)アルゴリズム

  • このアルゴリズムは、カウントが最小のページはおそらく持ち込まれたばかりでまだ使用されていないという議論に基づいています。