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

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

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

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

  • ユーザー作成のエラー処理ルーチンは、データまたは計算でエラーが発生した場合にのみ使用されます。

  • プログラムの特定のオプションと機能はめったに使用されない場合があります。

  • 実際に使用されるテーブルはごくわずかですが、多くのテーブルには固定量のアドレス空間が割り当てられています。

  • 部分的にしかメモリにないプログラムを実行する機能は、多くの利点に反します。

  • 各ユーザープログラムをメモリにロードまたはスワップするために必要なI / Oの数は少なくなります。

  • プログラムは、使用可能な物理メモリの量によって制約されなくなります。

  • 各ユーザープログラムは、より少ない物理メモリを使用し、より多くのプログラムを同時に実行でき、それに応じてCPU使用率とスループットが向上します。

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

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

デマンドページング

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

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

利点

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

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

短所

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

ページ置換アルゴリズム

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

置換用に選択されてページアウトされたページが再度参照されると、ディスクから読み込む必要があり、これには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)アルゴリズム

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