OS の仮想メモリ: デマンド ページングとは何か、利点

⚡ スマートサマリー

仮想メモリは、二次記憶装置の一部をRAMとして扱うことで、ユーザーに大容量のメインメモリがあるかのような錯覚を与える記憶メカニズムです。物理メモリよりも大きなプロセスを実行でき、デマンドページングによって実装されます。

  • 🧠 定義: 仮想メモリは、二次記憶装置の一部を主記憶装置として扱い、より大規模なプロセスを実行する。
  • 🎯 必要な理由: 物理RAMが不足している場合に、ディスク上のスワップファイルを使用して追加のメモリを提供します。
  • 📥 オンデマンドページング: ページは、実際に参照されたときにのみ、ディスクからRAMに読み込まれます。
  • 🔁 ページ置換: FIFO、最適方式、LRUは、ページフォルト発生時にどのページを削除するかを決定する方式です。
  • ✅ 利点: マルチプログラミングに対応し、プログラムが物理メモリのサイズを超えることを可能にします。
  • ⚠️ 欠点: RAMよりも処理速度が遅く、システム全体のパフォーマンスを低下させる可能性があります。

OSの仮想メモリ

仮想メモリとは

仮想メモリ 仮想メモリは、ユーザーに非常に大きなメインメモリを持っているかのような錯覚を与えるストレージメカニズムです。これは、二次記憶装置の一部をメインメモリとして扱うことで実現されます。仮想メモリでは、ユーザーは利用可能なメインメモリよりも大きなサイズのプロセスを格納することができます。

したがって、OS は、XNUMX つの長いプロセスをメイン メモリにロードするのではなく、複数のプロセスのさまざまな部分をメイン メモリにロードします。 仮想メモリは、ほとんどの場合、デマンド ページングとデマンド セグメンテーションを使用して実装されます。

なぜ仮想メモリが必要なのでしょうか?

仮想メモリを使用する理由は以下のとおりです。

  • コンピュータの物理メモリに空き容量がない場合、コンピュータは記憶しておく必要のあるデータを仮想メモリとしてスワップファイルに保存し、ハードディスクに書き込みます。
  • コンピュータが実行されている場合 Windows システムに搭載されているメモリ/RAMよりも多くのメモリが必要な場合、ハードドライブのごく一部をこの目的に使用します。

仮想メモリはどのように機能するのでしょうか?

現代社会において、仮想メモリはごく一般的になっています。これは、実行のために複数のページをメインメモリにロードする必要があるものの、それらのページをロードできるだけのメモリがメインメモリに確保できない場合に使用されます。

そのため、その場合、OSはページがメインメモリに入るのを阻止するのではなく、最近ほとんど使用されていない、あるいは参照されていないRAM領域を探し出し、それを二次記憶装置に移動させて、メインメモリに新しいページのための領域を確保します。

理解しましょう 仮想メモリ管理 一つの例を参考にしてみましょう。

例えば、

OSが実行中のすべてのプログラムを格納するために300MBのメモリを必要とすると仮定しましょう。しかし、現在RAMに格納されている物理メモリは50MBしかありません。

  • すると、OSは250MBの仮想メモリを設定し、仮想メモリマネージャ(VMM)と呼ばれるプログラムを使用してその250MBを管理します。
  • そのため、この場合、VMMはハードディスク上に250MBのファイルを作成し、必要な追加メモリを保存します。
  • OSは、たとえ利用可能な容量が50MBしかない場合でも、RAMに300MBの実際のメモリが格納されているかのようにメモリのアドレス指定を進めます。
  • VMMの役割は、実際に使用できるメモリ容量が50MBしかない場合でも、300MBのメモリを管理することです。

デマンドページングとは何ですか?

デマンドページング

デマンド ページング メカニズムは、 ページングシステム スワップ付きpingプロセスは二次記憶装置に格納され、ページは事前にではなく、必要に応じてのみロードされる。

したがって、コンテキストスイッチが発生すると、OSは古いプログラムのページをディスクからコピーしたり、新しいプログラムのページをメインメモリにコピーしたりすることはありません。代わりに、最初のページをロードした後、新しいプログラムの実行を開始し、参照されているプログラムのページを取得します。

プログラム実行中に、プログラムがスワップアウトされたためにメインメモリに存在しないページを参照した場合、プロセッサはそれを無効なメモリ参照とみなします。これは、ページフォルトによって制御がプログラムからOSに戻り、OSがそのページをメモリに再度格納するよう要求するためです。

ページ置換方法の種類

以下に、重要なページ置換方法をいくつか示します。

  • FIFO
  • 最適なアルゴリズム
  • LRU ページの置換

FIFO ページの置換

FIFO (先入れ先出し) はシンプルな実装方法です。 この方法では、メモリは、メモリの仮想アドレスに最も長い間存在していた置換用のページを選択します。

特長

  • 新しいページが読み込まれるたびに、メモリに最も長く保持されていたページが削除されます。そのため、どのページを削除するかは簡単に判断できます。なぜなら、そのページの識別番号は常にFIFOスタックの先頭にあるからです。
  • メインメモリ内で最も古いページが、最初に置換対象として選択されるべきです。

最適なアルゴリズム

最適なページ置換方法では、次の参照までの時間が最も長いページを置換対象として選択します。

特長

  • 最適なアルゴリズムは、ページフォールトの発生回数を最小にする。ただし、このアルゴリズムの実装は困難である。
  • 最適なページ置換アルゴリズムは、すべてのアルゴリズムの中で最もページフォールト率が低い。このようなアルゴリズムは存在し、MINまたはOPTと呼ばれるべきである。
  • 長期間使用される可能性の低いページは置き換えてください。ページが必要な時だけ使用されます。

LRU ページの置換

LRUの正式名称は「Least Recently Used Page(最近最も使用頻度の低いページ)」です。この方法は、OSが短期間におけるページの使用状況を把握するのに役立ちます。このアルゴリズムは、各ページにカウンタを関連付けることで実装する必要があります。

システムを教えてください。

  • メインメモリ内で最も長い間使用されていないページが、置換対象として選択されます。
  • 実装は簡単で、リストを作成し、過去を振り返ってページを置き換えます。

特長

  • LRU置換方式は最も高いカウント数を持ちます。このカウンタはエイジングレジスタとも呼ばれ、ページの経過時間と、関連するページがどの程度参照されるべきかを指定します。
  • メインメモリ内で最も長い間使用されていないページが、置換対象として選択されるべきです。
  • また、リストを保持し、過去を遡ってページを置き換えます。

故障率

故障率とは、設計されたシステムまたはコンポーネントが故障する頻度のことです。単位時間あたりの故障回数で表され、ギリシャ文字のλ(ラムダ)で示されます。

仮想メモリの利点

仮想メモリを使用するメリットは以下のとおりです。

  • プログラムの実行にプログラムの特定のセグメントのみが必要な場合、仮想メモリは速度の向上に役立ちます。
  • マルチプログラミング環境の実装に非常に役立ちます。
  • これにより、より多くのアプリケーションを一度に実行できるようになります。
  • これは、多くの大きなプログラムを小さなプログラムに組み込むのに役立ちます。
  • 共通のデータまたはコードはメモリ間で共有される場合があります。
  • プロセスによっては、物理メモリ全体の容量を超える場合もある。
  • データ/コードは必要に応じてディスクから読み込むべきである。
  • コードは、再配置することなく、物理メモリ内のどこにでも配置できます。
  • より多くのプロセスをメイン メモリに保持する必要があるため、CPU の効率的な使用率が向上します。
  • 各ページは必要になるまでディスクに保存され、その後削除されます。
  • より多くのアプリケーションを同時に実行できるようになります。
  • マルチプログラミングの程度に特別な制限はありません。
  • 仮想アドレス空間は物理メモリに比べて利用できる容量が大きいため、大規模なプログラムを作成する必要がある。

仮想メモリのデメリット

仮想メモリを使用する際の欠点/デメリットは以下のとおりです。

  • システムが仮想メモリを使用している場合、アプリケーションの実行が遅くなる可能性があります。
  • アプリケーションを切り替えるのに、おそらくより多くの時間がかかるでしょう。
  • 利用できるハードディスク容量が少なくなります。
  • システムの安定性が低下します。
  • これにより、物理RAMだけでは十分な容量を備えていないシステムでも、より大規模なアプリケーションを実行できるようになります。
  • RAMと同じ性能は提供しません。
  • システム全体のパフォーマンスに悪影響を及ぼします。
  • それはストレージスペースを占有し、そのスペースは本来、長期データ保存のために使用できるはずである。

よくあるご質問

ページフォルトは、プログラムがメインメモリに存在しないページを参照した際に発生します。OSはプログラムを一時停止し、必要なページをディスクからRAMに読み込み、ページテーブルを更新してから実行を再開します。

スラッシングは、システムがスワップに費やす時間が長くなると発生します。ping RAMとディスク間のページ数が、実行中のプロセス数よりも多くなります。これは、マルチプログラミングの度合いが高すぎるために発生し、パフォーマンスを著しく低下させます。アクティブなプロセス数を減らすか、RAMを増設することで改善できます。

RAMは、アクティブなデータが格納される高速な物理ハードウェアです。仮想メモリは、ディスク領域をあたかもメモリであるかのように利用することでRAMを拡張する技術です。仮想メモリは実際のRAMよりもはるかに容量が大きいですが、速度ははるかに遅くなります。

AIはプログラムのメモリアクセスパターンを学習し、近いうちに必要となるページを予測できます。これにより、OSは有用なページをRAMに保持し、不要なページを適切な場所に追い出すことができ、理想的な最適化アルゴリズムに近づき、ページフォルトを削減できます。

はい。AIモデルは過去のアクセスシーケンスを分析することで、ページが要求される前にページをプリフェッチし、ページのスワップ頻度を調整できます。これにより、ページフォルトやスラッシングが軽減されますが、予測誤差とオーバーヘッドは低く抑える必要があります。