1. 序章

メモリ管理は、コンピュータシステムがメインメモリにどのように取り組むかを考慮します。 要約すると、メインメモリは、コンピュータの処理ユニットから直接アクセスできるリソース(命令とデータ)を維持します。 したがって、処理装置はこれらのリソースを使用してさまざまなプロセスを実行できます。 ただし、メインメモリの管理は、長年にわたって明確な戦略で処理される複雑なタスクです。

このチュートリアルでは、特に次の管理について説明します。 ランダム・アクセス・メモリ (羊)。 まず、オペレーティングシステムのメモリマネージャとその特定のアクティビティを調べます。 次に、コンピュータシステムのメインメモリにあるプログラムのいくつかのマッピング戦略を簡単に確認します。 最後に、初期のシステムで採用されたものとに基づくものの両方を考慮して、メモリ管理スキームを研究します 仮想メモリ、ほとんどの最新のコンピュータシステムで使用されています。

2. メモリマネージャー

オペレーティングシステムのメモリマネージャは、コンピュータのメインメモリ、特にRAMを処理します。 このように、メモリマネージャは、処理ユニットがコードとデータにアクセスしてプロセスを実行できるようにするために、無数のアクティビティを実行する必要があります。 次に、メモリマネージャのいくつかの関連するアクティビティについて簡単に説明します。

  • リクエストの検証:メモリマネージャは、メモリリクエストの有効性をチェックし、要求者がメモリ割り当てをリクエストするための適切な権限を持っているかどうかを確認します
  • 割り当て:特定のメモリ要求を満たす空きメモリ部分を検索し、必要なリソースを割り当てます
  • 割り当て解除:終了またはアイドル状態のプロセスのメモリまたはプロセスのジョブの割り当て解除
  • デフラグ:より使用可能な空きメモリ部分を確立するためのメモリの再配置

これらのアクティビティを実行するためにメモリマネージャが採用する戦略とポリシーは、採用されているメモリ管理スキームに応じて変更される場合があります。 複数のメモリ管理スキームがあります。 これらのスキームの一部は、パフォーマンスは高くなりますが(メモリマネージャーのアクティビティの実行時間に関して)、効率は低くなります(使用可能なすべてのメモリを利用するという点で)。 一方、最近のスキームはより複雑であることが多く、通常はパフォーマンスは低くなりますが、効率は高くなります。

3. メモリマッピング

メモリマッピングは、プログラムをメインメモリに割り当てるための割り当て戦略を指します。 初期のシステムでは、一般的な戦略は、要求されたプログラムをメインメモリの連続したスペースの物理的な位置に直接マッピングすることでした。 したがって、プログラムによってアクセスされるメモリアドレスでさえ、物理メモリアドレスに対応していました。

プログラミングの可能性が高まるにつれ、プログラムは占有するメモリ量の点で大きくなりました。 最終的に、多くのプログラムは、コンピュータシステムで使用可能なメモリよりも大きくなりました。 したがって、プログラム全体をメモリに割り当て、プログラムを物理メモリ位置に直接マッピングすることは不可能になりました。

このコンテキストは、仮想メモリの作成を促進しました。 仮想メモリを使用すると、プログラムを仮想アドレスにマップされた複数の部分に分割できます。 これらのプログラムは、オンデマンドで物理メモリに割り当てられ、割り当てが解除され、必要な仮想アドレスのみが物理アドレスにリンクされます。

次の画像は、初期のシステムおよび仮想メモリ対応システムでのメモリ割り当ての例です。

4. メモリ管理スキーム

メモリはコンピューティングにとって重要なリソースです。 使用可能なメモリの総量とデータ操作の速度がコンピュータのパフォーマンスに影響を与えることに注意してください。 でも 、ハードウェアの特性に加えて、論理的な決定は、プロセスの実行を可能にするためにメモリを使用する方法に影響を与え、通常はコンピュータシステムのパフォーマンスにも影響を与えます。

私たちの文脈における顕著な論理的決定は、メモリマネージャによって採用された管理スキームです。 したがって、次のサブセクションでは、さまざまなメモリ管理スキームと、それらの各スキームでメモリマネージャがどのように動作するかについて説明します。

4.1. 初期システムのメモリ管理スキーム

初期のコンピュータシステムのメモリ管理は、一般的に非常に単純です。 次に、これらのシステムの最も一般的なメモリ管理スキームに関するいくつかの情報を見てみましょう。

シングルユーザー連続は、メモリ管理の最初で最も単純なスキームです。 このような場合、メモリマネージャは、使用可能なすべてのメモリを一意のプログラムに割り当てます。 そう 、メモリマネージャは、前のプログラムの割り当てをすでに解除している場合にのみ、新しいプログラムを割り当てることができます。

固定パーティションスキームは、使用可能なメモリを固定サイズのパーティションに分割し、プログラムの複数の同時割り当てを可能にします。これらのメモリパーティションは、コンピュータシステムの起動時に定義され、再起動しない限り変更されません。 この場合、メモリマネージャは、パーティションメモリテーブルを採用してメモリを追跡し、特定のプログラムをどのパーティションに割り当てるかを決定します。

動的パーティションスキームは、コンピュータのメモリを動的に指定されたパーティションに分割し、メモリを浪費するシナリオを回避します。ここでもパーティションメモリテーブルが必要です。 ただし、このスキームを使用すると、メモリマネージャは、コンピュータシステムの実行中にメモリテーブルの行(パーティション)を変更できます。

パーティションを使用したメモリ管理スキームでは、プログラムを割り当てるための戦略が必要です。 それらのうちの2つを見てみましょう:

  • First Fit Allocation :メモリマネージャは、十分なメモリを備えた最初に見つかったパーティションにプログラムを割り当てます
  • 最適な割り当て:メモリマネージャーは、プログラムを割り当てるのに最適なパーティションを見つけます。 最適とは、可能な限り最小の空きパーティション(固定パーティション)にプログラムを割り当てること、または隣接するパーティション(動的パーティション)で最大の空きメモリを維持することです。

ただし、初期のシステムで使用されていたすべてのスキームには、共通の問題があります。 プログラム全体をメインメモリに保存し、使用可能な物理メモリよりも大きいプログラムを実行することはできません。 この問題は、仮想メモリに基づく新しいメモリ管理スキームの開発を後押ししました。

4.2. 仮想メモリに基づくメモリ管理スキーム

仮想メモリにより、メモリの非連続部分へのプログラムピースのオンデマンド割り当てが可能になりました。 その結果、次に示すように、新しい管理スキームが出現しました。

ページメモリ方式では、プログラムをプログラムページと呼ばれる同じサイズのピースに分割できます。 同様に、このスキームはメインメモリを複数のページフレームに分割してプログラムページを割り当てます。 したがって、プログラムを割り当てる前に、メモリマネージャは、プログラムを構成するページ数と、その割り当てに使用するページフレームを定義します。 ページングされたメモリは、プログラム全体を一度に割り当てますが、これを行うために連続したメモリスペースを使用する必要はありません。 さらに、メモリマネージャは、プログラムページ、ページマッピング、およびメモリマッピングのテーブルを使用して、占有されているページフレームを追跡します。

デマンドページングスキームは通常、ページメモリとして動作します。 ただし、メモリマネージャは、プログラムのページをオンデマンドで割り当てることができるようになりました。 これは、デマンドページングにより、プログラム全体を同時にメモリに保持する必要がなくなったことを意味します。 このオンデマンド割り当てにより、ページマップテーブルが拡張され、ページの割り当て、変更、および最近の使用のステータスフラグが含まれるようになりました。

セグメント化メモリスキームは、デマンドページングの動作特性のほとんどを継承します。ただし、このシナリオでは、プログラムは、プログラムの論理構造を表す異種サイズの複数のセグメントに分割されます。 したがって、メモリマネージャは、ページマップテーブルを使用する代わりに、セグメントマップテーブルを使用してプログラムのセグメントの割り当てと割り当て解除を制御します。

セグメントデマンドページメモリスキームは、デマンドページングをセグメント化されたメモリとマージします。 実際には、メモリマネージャがセグメントを同じサイズのページに分割することを表します。 したがって、メモリマネージャは、プログラムの論理的なセグメンテーションと同じサイズのページの簡素化された管理の恩恵を受けます。

最後に、オンデマンドでプログラムを割り当てるスキームは、メモリ内のページ/セグメントを頻繁に置き換えるため、 交換ポリシー.

5. 結論

この記事では、コンピュータシステムのメモリ管理について学びました。 まず、メモリマネージャに関する概念を調査しました。 次に、初期のシステムと最新のシステムの両方で、メモリが物理メモリにどのようにマッピングされるかを分析しました。 最後に、単純なものから最も複雑なものまで、いくつかのメモリ管理スキームの概要を説明しました。

特定のメモリマッピング戦略またはメモリ管理スキームの選択は、たとえば、処理ユニットのパフォーマンス(メモリ操作の待機により多くの時間を費やす可能性がある)やメモリ自体の使用効率(メモリの浪費の増加または削減)に直接影響を与える可能性があります。 )。 したがって、適切に設計されたメモリ管理は、最新のコンピュータにとって重要な要件であると結論付けることができます。