OS のメモリ管理: 連続、スワッピング、断片化

メモリ管理とは何ですか?

メモリ管理 コンピュータのメモリを制御および調整し、ブロックとして知られる部分をさまざまな実行中のプログラムに割り当てて、システム全体のパフォーマンスを最適化するプロセスです。

これは、一次メモリを管理するオペレーティング システムの最も重要な機能です。 これは、プロセスがメイン メモリと実行ディスクの間を行き来するのに役立ちます。 これは、メモリが何らかのプロセスに割り当てられているか、空き状態のままであるかに関係なく、OS がすべてのメモリの場所を追跡するのに役立ちます。

メモリ管理を使用する理由

メモリ管理を使用する理由は次のとおりです。

  • これにより、どのプロセッサがいつメモリを取得するかを決定するプロセスに割り当てる必要のあるメモリの量を確認できます。
  • 在庫が解放されるか、割り当てが解除されるたびに追跡します。 それに応じてステータスが更新されます。
  • アプリケーション ルーチンにスペースを割り当てます。
  • また、これらのアプリケーションが相互に干渉しないようにします。
  • 異なるプロセスを相互に保護するのに役立ちます
  • メモリが最大限に活用されるようにプログラムをメモリに配置します。

メモリ管理技術

ここでは、いくつかの最も重要なメモリ管理手法を示します。

単一連続割り当て

これは、最も簡単なメモリ管理手法です。 この方法では、OS 用に予約されている小さな部分を除いて、すべての種類のコンピューターのメモリを XNUMX つのアプリケーションで使用できます。 たとえば、MS-DOS オペレーティング システムは、この方法でメモリを割り当てます。 組み込みシステムも単一のアプリケーションで実行されます。

分割割り当て

プライマリ メモリをさまざまなメモリ パーティションに分割します。これは、ほとんどが連続したメモリ領域です。 すべてのパーティションには、特定のタスクまたはジョブに関するすべての情報が格納されます。 この方法は、開始時にジョブにパーティションを割り当て、終了時に割り当てを解除することで構成されます。

ページメモリ管理

この方法では、コンピュータのメイン メモリをページ フレームと呼ばれる固定サイズの単位に分割します。 このハードウェア メモリ管理ユニットは、ページをページ単位で割り当てる必要があるフレームにマップします。

セグメント化されたメモリ管理

セグメント化されたメモリは、ユーザーのプログラムに線形で連続したアドレス空間を提供しない唯一のメモリ管理方法です。

セグメントには、セグメント テーブルの形式でのハードウェア サポートが必要です。 これには、メモリ内のセクションの物理アドレス、サイズ、およびアクセス保護ビットやステータスなどのその他のデータが含まれます。

スワッピングとは?

スワッピングは、プロセスをメイン メモリからバッキング ストアに一時的にスワップする方法です。 後で実行を継続するためにメモリに戻されます。

バッキング ストアは、すべてのユーザーのすべてのメモリ イメージのコピーを収容できる十分な大きさが必要なハードディスクまたはその他の二次記憶装置です。 これらのメモリイメージへの直接アクセスを提供することもできます。

スワッピング

スワップのメリット

スワップの主な利点/長所は次のとおりです。

  • より高度なマルチプログラミングを提供します。
  • 動的な再配置が可能になります。 たとえば、実行時にアドレス バインディングが使用されている場合、プロセスを別の場所でスワップできます。 それ以外の場合、コンパイル時とロード時のバインディングの場合は、プロセスを同じ場所に移動する必要があります。
  • メモリの使用率を向上させるのに役立ちます。
  • 完了時の CPU 時間の無駄が最小限に抑えられるため、優先順位ベースのスケジューリング方法に簡単に適用してパフォーマンスを向上させることができます。

メモリ割り当てとは何ですか?

メモリ割り当ては、コンピュータ プログラムにメモリまたはスペースを割り当てるプロセスです。

ここで、メインメモリは XNUMX 種類のパーティションに分かれています

  1. 低メモリオペレーティングシステム このタイプのメモリに存在します。
  2. 高い記憶力– ユーザープロセスはハイメモリに保持されます。

パーティションの割り当て

メモリはさまざまなブロックまたはパーティションに分割されます。 要件に応じて各プロセスが割り当てられます。 パーティションの割り当ては、内部の断片化を回避するための理想的な方法です。

以下に、さまざまなパーティション割り当てスキームを示します。

  • ファーストフィット: このタイプ フィットでは、メイン メモリの先頭から最初の十分なブロックであるパー​​ティションが割り当てられます。
  • 最適: 空きパーティションの中で最初に小さいパーティションに処理を割り当てます。
  • 最悪のフィット感: プロセスを パーティション。メイン メモリ内で自由に利用できる十分な最大のパーティションです。
  • 次のフィット: これは最初の Fit とほとんど似ていますが、この Fit は最後の割り当てポイントから最初の十分なパーティションを検索します。

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

ページングは​​、OS がセカンダリ ストレージからページの形式でプロセスをメイン メモリに取得できるようにするストレージ メカニズムです。 ページング方式では、メイン メモリが、フレームと呼ばれる小さな固定サイズの物理メモリ ブロックに分割されます。 メインメモリを最大限に活用し、外部の断片化を回避するには、フレームのサイズをページのサイズと同じに保つ必要があります。 ページング はデータへのアクセスを高速化するために使用され、論理的な概念です。

断片化とは何ですか?

プロセスはメモリに保存され、メモリから削除されるため、空きメモリ領域が作成されますが、他のプロセスが使用するには小さすぎます。

サイズが小さく、メモリ ブロックが常に未使用のままであるため、プロセスがメモリ ブロックに割り当てることができない場合があり、これを断片化と呼びます。 この種の問題は、動的メモリ割り当てシステム中に空きブロックが非常に小さいため、要求を満たすことができない場合に発生します。

断片化方法には次の XNUMX 種類があります。

  1. 外部断片化
  2. 内部断片化
  • 外部断片化は、メモリの内容を再配置してすべての空きメモリを XNUMX つのブロックにまとめることによって軽減できます。
  • 内部の断片化は、プロセス全体を実行するには十分な最小のパーティションを割り当てることで軽減できます。

セグメンテーションとは何ですか?

セグメンテーション方法はページングとほぼ同様に機能します。 XNUMX つの唯一の違いは、セグメントが可変長であるのに対し、ページング方式ではページが常に固定サイズであることです。

プログラム セグメントには、プログラムのメイン関数、データ構造、ユーティリティ関数などが含まれます。OS は、すべてのプロセスのセグメント マップ テーブルを維持します。 また、空きメモリ ブロックのリストと、そのサイズ、セグメント番号、メイン メモリ内のメモリ位置も含まれます。 仮想メモリ.

動的読み込みとは何ですか?

動的ロードは、プログラムが呼び出すまでロードされないプログラムのルーチンです。 すべてのルーチンは、再配置可能なロード形式でディスクに含まれている必要があります。 メインプログラムがメモリにロードされて実行されます。 動的ロードにより、メモリ空間の使用率も向上します。

ダイナミックリンクとは何ですか?

リンクは、OS がコードとデータのさまざまなモジュールを収集して XNUMX つの実行可能ファイルにマージするのに役立つ方法です。 ファイルはメモリにロードして実行できます。 OS は、システムレベルのライブラリを、ロード時にライブラリを結合するプログラムにリンクできます。 動的リンク方式では、実行時にライブラリをリンクするため、プログラムのコードサイズを小さく抑えることができます。

静的読み込みと動的読み込みの違い

静的荷重 動的ローディング
静的ロードは、プログラムを静的にロードする場合に使用します。 その後、コンパイル時に、外部モジュールやプログラムの依存関係を必要とせずに、プログラム全体がリンクされ、コンパイルされます。 動的にロードされるプログラムでは、参照が提供され、ロードは実行時に行われます。
ロード時に、プログラム全体がメモリにロードされ、実行が開始されます。 ライブラリのルーチンは、プログラムで必要な場合にのみメモリにロードされます。

静的リンクと動的リンクの違い

静的リンクと動的リンクの主な違いは次のとおりです。

静的リンク 動的リンク
静的リンクは、プログラムに必要な他のすべてのモジュールを単一の実行可能コードに結合するために使用されます。 これは、OS がランタイムの依存関係を防ぐのに役立ちます。 動的リンクを使用する場合、実際のモジュールやライブラリをプログラムにリンクする必要はありません。 代わりに、コンパイルおよびリンク時に提供される動的モジュールへの参照を使用します。

まとめ

  • メモリ管理は、コンピュータのメモリを制御および調整し、実行中のさまざまなプログラムにブロックと呼ばれる部分を割り当てて、システム全体のパフォーマンスを最適化するプロセスです。
  • これにより、どのプロセッサがいつメモリを取得するかを決定するプロセスに割り当てる必要のあるメモリの量を確認できます。
  • 単一の連続割り当てでは、OS 用に予約されている一部を除くすべてのタイプのコンピュータのメモリが XNUMX つのアプリケーションで使用可能です。
  • パーティション割り当て方式では、プライマリ メモリがさまざまなメモリ パーティションに分割されます。メモリ パーティションは、ほとんどが連続したメモリ領域です。
  • ページ メモリ管理方法では、コンピュータのメイン メモリをページ フレームと呼ばれる固定サイズの単位に分割します。
  • セグメント化されたメモリは、ユーザーのプログラムに線形で連続したアドレス空間を提供しない唯一のメモリ管理方法です。
  • スワッピングは、プロセスをメイン メモリからバッキング ストアに一時的にスワップする方法です。 後で実行を継続するためにメモリに戻されます。
  • メモリ割り当ては、コンピュータ プログラムにメモリまたはスペースを割り当てるプロセスです。
  • ページングは​​、OS がセカンダリ ストレージからページの形式でプロセスをメイン メモリに取得できるようにするストレージ メカニズムです。
  • 断片化とは、ファイルが断片に分割され、ディスク上に散在するディスクの状態を指します。
  • セグメンテーション方法はページングとほぼ同様に機能します。 XNUMX つの唯一の違いは、セグメントが可変長であるのに対し、ページング方式ではページが常に固定サイズであることです。
  • 動的ロードは、プログラムが呼び出すまでロードされないプログラムのルーチンです。
  • リンクは、OS がコードとデータのさまざまなモジュールを収集して XNUMX つの実行可能ファイルにマージするのに役立つ方法です。