プロセスがメモリからロードおよび削除されると、空きメモリ領域が断片化され、断片化が発生します...しかし、これはどのように発生しますか? そして、外部の断片化に対する最善の解決策は何ですか?
4 に答える
外部断片化は、(通常はプロセスからの) 要求を満たすのに十分な総メモリがあるが、必要な総メモリが連続した場所で利用できない場合、つまり断片化されている場合に発生します。
外部フラグメンテーションの解決策:
1) 圧縮 : 断片化されたメモリを 1 つの連続した場所にシャッフルします。
2) ページングとセグメンテーションを使用した仮想メモリのアドレス指定。
外部断片化
外部断片化は、動的メモリ割り当てアルゴリズムによってメモリが割り当てられ、小さな断片が残って効果的に使用できない場合に発生します。外部断片化が多すぎると、使用可能なメモリの量が大幅に減少します。要求を満たすために総メモリ空間が存在しますが、連続していません。次の例を参照してください
0x0000 0x1000 0x2000
A B C //Allocated three blocks A, B, and C, of size 0x1000.
A C //Freed block B
ここで、B が使用したメモリを、B のサイズよりも大きい割り当てに含めることはできないことに注意してください。
外部の断片化は、メモリの内容を圧縮またはシャッフルして、すべての空きメモリを 1 つの大きなブロックにまとめることで減らすことができます。圧縮を実行可能にするには、再配置を動的にする必要があります。ページング技術を使用することで、外部断片化も回避されます。
外部の断片化を回避する最善の解決策は、ページングです。ページングは、仮想メモリ オペレーティング システムで通常使用されるメモリ管理手法であり、必要なデータをできるだけ迅速に利用できるようにします。詳細については、これを参照してください:オペレーティング システムの「スワップ」と「ページ」の違いは何ですか?
ページングの場合、外部の断片化はありませんが、内部の断片化は回避されません。