この記事では、メモリ管理について詳しく説明します。
メモリ管理とはどういう意味ですか?
メモリは、データを保存するために使用されるコンピュータの重要な部分です。コンピュータ システムで利用できるメイン メモリの量は非常に限られているため、その管理はコンピュータ システムにとって非常に重要です。常に、多くのプロセスがそれを求めて競合しています。さらに、パフォーマンスを向上させるために、複数のプロセスが同時に実行されます。このためには、メイン メモリに複数のプロセスを保持する必要があるため、それらを効果的に管理することがさらに重要になります。
メモリ管理の役割
コンピュータ システムにおけるメモリ管理の重要な役割は次のとおりです。
- メモリ マネージャーは、空きか割り当て済みかにかかわらず、メモリの場所のステータスを追跡するために使用されます。ソフトウェアが大きなメモリが割り当てられていると認識できるように、抽象化を提供することでプライマリ メモリに対応します。
- メモリ マネージャーを使用すると、メイン メモリの量が少ないコンピュータで、利用可能なメモリのサイズまたは量よりも大きいプログラムを実行できます。これは、スワッピングの概念を使用して、一次メモリと二次メモリの間で情報を行き来することによって行われます。
- メモリ マネージャーは、各プロセスに割り当てられたメモリが別のプロセスによって破損されないように保護する責任があります。これが保証されていない場合、システムは予期しない動作を示す可能性があります。
- メモリ マネージャーは、プロセス間でメモリ空間を共有できるようにする必要があります。したがって、2 つのプログラムは、時間は異なりますが、同じメモリ位置に常駐できます。
メモリ管理テクニック:
メモリ管理手法は、次の主なカテゴリに分類できます。
PowerShell の Runas
- 連続メモリ管理スキーム
- 不連続メモリ管理スキーム
連続メモリ管理スキーム:
連続メモリ管理スキームでは、各プログラムは、記憶場所の単一の連続ブロック、つまり、連続したアドレスを持つメモリ場所のセットを占有します。
単一の連続したメモリ管理スキーム:
単一連続メモリ管理スキームは、初期世代のコンピュータ システムで使用されていた最も単純なメモリ管理スキームです。この方式では、メイン メモリが 2 つの連続した領域またはパーティションに分割されます。オペレーティング システムは 1 つのパーティション (通常はメモリの下部) に永続的に常駐し、ユーザー プロセスはもう 1 つのパーティションにロードされます。
単一の連続メモリ管理スキームの利点:
- 実装が簡単。
- 管理も設計も簡単です。
- 単一の連続メモリ管理スキームでは、プロセスがロードされると、そのプロセスにはプロセッサーの全時間が与えられ、他のプロセッサーがそのプロセスを中断することはありません。
単一の連続メモリ管理スキームの欠点:
- プロセスが利用可能なメモリ領域をすべて使用する可能性は低いため、未使用のメモリによるメモリ領域の無駄。
- CPU はアイドル状態のままで、ディスクがバイナリ イメージをメイン メモリにロードするのを待ちます。
- プログラムが大きすぎて利用可能なメインメモリ空間全体に収まらない場合は、実行できません。
- マルチプログラミングはサポートしていません。つまり、複数のプログラムを同時に処理できません。
複数のパーティショニング:
単一の連続メモリ管理スキームは、コンピュータが一度に 1 つのプログラムしか実行できないように制限するため、非効率的であり、メモリ空間と CPU 時間が無駄になります。非効率的な CPU 使用の問題は、複数のプログラムを同時に実行できるマルチプログラミングを使用して克服できます。 2 つのプロセスを切り替えるには、オペレーティング システムは両方のプロセスをメイン メモリにロードする必要があります。オペレーティング システムは、複数のプロセスをメイン メモリにロードするために、使用可能なメイン メモリを複数の部分に分割する必要があります。したがって、複数のプロセスがメイン メモリに同時に存在できます。
複数のパーティショニング スキームには、次の 2 つのタイプがあります。
int を文字列 Java に変換する
- 固定パーティション化
- 動的パーティショニング
固定パーティション化
メイン メモリは、固定パーティション メモリ管理スキームまたは静的パーティショニングで、いくつかの固定サイズのパーティションに分割されます。これらのパーティションは同じサイズにすることも、異なるサイズにすることもできます。各パーティションには 1 つのプロセスを保持できます。パーティションの数によって、マルチプログラミングの程度、つまりメモリ内のプロセスの最大数が決まります。これらのパーティションはシステム生成時に作成され、その後は固定されたままになります。
固定パーティション化メモリ管理スキームの利点:
- 実装が簡単。
- 管理も設計も簡単です。
固定パーティション化メモリ管理スキームの欠点:
- このスキームには内部断片化が発生します。
- パーティション数はシステム生成時に指定します。
動的パーティショニング
動的パーティショニングは、固定パーティショニング スキームの問題を克服するために設計されました。動的パーティショニング スキームでは、各プロセスは、処理のためにロードされるときに必要なだけのメモリを占有します。物理メモリ全体が使い果たされるか、要求プロセスを保持するには残りのスペースが不十分になるまで、要求されたプロセスにメモリが割り当てられます。このスキームでは、使用されるパーティションのサイズは可変であり、パーティションの数はシステム生成時に定義されません。
動的パーティショニングのメモリ管理スキームの利点:
デザインパターンJava
- 実装が簡単。
- 管理も設計も簡単です。
動的パーティショニングのメモリ管理スキームの欠点は次のとおりです。
- このスキームには内部断片化も発生します。
- パーティション数はシステム分割時に指定します。
不連続メモリ管理スキーム:
非連続メモリ管理スキームでは、プログラムは異なるブロックに分割され、必ずしも互いに隣接している必要がないメモリの異なる部分にロードされます。この方式は、ブロックのサイズと、ブロックがメイン メモリに存在するかどうかに応じて分類できます。
ページングとは何ですか?
ページングは、メイン メモリの連続割り当ての要件を排除する技術です。この場合、メイン メモリはフレームと呼ばれる物理メモリの固定サイズのブロックに分割されます。メインメモリを最大化し、外部の断片化を回避するには、フレームのサイズをページのサイズと同じに保つ必要があります。
ページングの利点:
- ページは外部の断片化を軽減します。
- 実装が簡単。
- メモリ効率が良い。
- フレームのサイズが等しいため、交換は非常に簡単です。
- データへのアクセスを高速化するために使用されます。
セグメンテーションとは何ですか?
セグメンテーションは、メイン メモリの連続割り当ての要件を排除する技術です。この場合、メイン メモリは、セグメントと呼ばれる物理メモリの可変サイズのブロックに分割されます。これは、プログラマーがプログラムを構築するために従う方法に基づいています。セグメント化されたメモリ割り当てでは、各ジョブは、モジュールごとに 1 つずつ、異なるサイズのいくつかのセグメントに分割されます。関数、サブルーチン、スタック、配列などがそのようなモジュールの例です。