\r\n\r\n
内部フラグメントと外部フラグメントの主な違いは、内部フラグメントが割り当てられたメモリブロック間で使用されていない記憶領域であり、外部フラグメントが隣接するブロック間で非常に小さなサービス要求のための穴であることです。
内部フラグメントは、プログラムに割り当てられたメモリが必要なメモリよりも大きい場合に発生するフラグメントタイプです。ここで、自由空間は内部の破片と呼ばれています。一方、外部フラグメントは、非伝染性メモリブロック間に形成される自由空間である。
内部フラグメント化の原因は、メモリが固定サイズのブロックに分割されるためです。一方、外部フラグメントとは、メモリが異なるプロセスのサイズに応じてサイズ可変のブロックに分割されるときに発生するプロセスを指す。
内部フラグメントの問題は、メモリブロックのダイナミックな部分にメモリを割り当てるプログラムによって解決され、プログラムの実行中にメモリが不要になったときにメモリを解放します。一方、外部フラグメントは、ページ分割、圧縮、セグメント化によって解決され、プログラムに非連続的にメモリを割り当てることができます。
内部フラグメント | 外部フラグメント |
プログラムに必要なメモリと割り当てられたメモリの違いを内部フラグメントと呼びます。 | 非伝染性ストレージフラグメントまたはフラグメントに現れる穴または未使用の空間が短すぎて、外部フラグメントと呼ばれる新しいプログラムを格納できません。 |
指 | |
割り当てられた領域でブロック間で使用されていない空間を指します。 | これは、ストレージリクエストが短すぎて使用されていないスペースを指します。 |
の原因となる | |
内部フラグメント化の原因は、メモリが固定サイズのブロックに分割されるためです。 | メモリまたはメモリが異なるプログラムのサイズに応じて異なるサイズのブロックから構成されると、外部フラグメントが発生します。 |
発生する | |
このことは,プログラムに割り当てられた空間が所望の空間を超えると発生する. | メモリからプログラムを削除すると、外部フラグメントの原因となる空き領域が残ります。 |
ソリューション | |
メモリブロックのダイナミックな部分にメモリを割り当てるプログラムで解決し、プログラムの実行中にメモリが不要になったときにメモリを解放します。 | ページ分割、圧縮、セグメント化によって解決されるため、メモリはプログラムに非連続的に割り当てることができます。 |
内部フラグメントは、プログラムに割り当てられたメモリが必要なメモリよりも大きい場合に発生するフラグメントタイプです。メモリが固定サイズのブロックに割り当てられると、このようなことが発生します。
プログラムがメモリを必要とするたびに、システムは固定サイズのブロックを割り当てます。プログラムに割り当てられたメモリが要求されたメモリよりも大きい場合は、メモリフラグメントと呼ばれます。固定サイズブロック内のこの空間は、新しいプログラムを格納するのに十分ではないため、プログラムに割り当てることはできません。
内部フラグメントの問題は、メモリを可変サイズのブロックに分割し、メモリが必要なプログラムに最適なサイズのブロックを割り当てることで解決できます。内部分裂の問題を完全に解決することはできませんが、内部分裂をある程度軽減します。
これは内部の破片化の例です。メモリ領域は、固定サイズ18470バイトのブロックに分割される。ただし、1つのプログラムには18460バイトが必要です。システムは、固定サイズのパーティションブロック、すなわち18470バイトを割り当てる。したがって、18470バイトの10バイトは空のままであり、これは内部フラグメントのソースである。
外部フラグメント(External fragmentation)とは、非伝染性メモリまたはストレージフラグメントの間に現れる穴または未使用の空間を指し、新しいプログラムを格納できないほど短すぎます。システムのメモリにプログラムのメモリ要件を満たすのに十分な空き容量がある場合に発生します。ただし、システムの使用可能なメモリは隣接していないため、プログラムのニーズを実現または満たすことはできません。
これは、第1の適切なメモリ割り当てポリシーを適用しても、最も適切なメモリ割り当てポリシーを適用しても、外部のフラグメント化の原因になります。プログラムがロードされ、メモリから削除されると、脆弱性をもたらす空き領域が残ります。メモリスペースにこのような穴が大量にあり、外部の破片を招きます。
第1のフィットおよび最適なフィットメモリ割り当てポリシーは、外部フラグメントの数を減らすことができますが、完全に除去することはできません。ページング、圧縮、セグメント化により、外部フラグメントの問題を解決できます。
圧縮演算**メモリのすべての内容を片側に移動し、大量のメモリブロックを解放します。しかし、これは高価なプログラムです。この問題を解決する別の解決策は、プロセスが物理メモリを非連続的に取得できるようにすることです。この解決策は,ページングとセグメント化プロセスを用いて実現できる.
コンピュータシステムでは、プログラムが空間を要求すると、ブロックはブロックとして割り当てられる。システムに情報とデータを格納するために、メモリが空であると仮定します。メモリに格納したいプログラムがあります。プログラムは、メモリに動的に保存されます。すなわち、ランダムに、快適に感じたり、空間を発見したりする場所です。次のプログラムを保存する必要がある場合は、メモリ領域で調整されます。次に、システムからプログラムを削除します。メモリにスペースや脆弱性が残ります。この穴またはスペースは、空きメモリの隣にあり、外部フラグメントの形成をもたらす場合でも、他のメモリと一緒に使用できません。
以上の議論では、コンピュータストレージにおけるストレージスペースの浪費の2つのプロセス、すなわち内部フラグメント化と外部フラグメント化についてまとめた。プログラムに割り当てられた空間が必要な空間を超えると、内部の破片が発生する。一方、プログラムがメモリから削除されて空き領域が残ると、外部フラグメントが表示されます。