内部分類と外部分類の両方がシステムのデータアクセス速度に影響します。 つまり、プロセスのサイズを気にせずに固定サイズのメモリブロックをプロセスに割り当てると内部フラグメンテーションが発生し、プロセスに動的にメモリが割り当てられると外部フラグメンテーションが発生します。 以下に示す比較チャートを使用して、さらに移動し、内部および外部の断片化の背景にある違い、理由、解決策について説明します。
比較表
比較基準 | 内部フラグメンテーション | 外部フラグメンテーション |
---|---|---|
基本 | 固定サイズのメモリブロックがプロセスに割り当てられたときに発生します。 | 可変サイズのメモリ空間が動的にプロセスに割り当てられたときに発生します。 |
発生 | プロセスに割り当てられたメモリがプロセスによって要求されたメモリよりわずかに大きいとき、これは割り当てられたブロックに空き領域を作成し、内部の断片化を引き起こします。 | プロセスがメモリから削除されると、メモリ内に空き領域が作成され、外部の断片化が発生します。 |
溶液 | メモリを可変サイズのブロックに分割し、最適なブロックをプロセスに割り当てる必要があります。 | 圧縮、ページング、セグメンテーション |
内部フラグメンテーションの定義
メモリが固定サイズのブロックに分割されると、内部断片化が発生します 。 プロセスがメモリを要求するたびに、固定サイズのブロックがプロセスに割り当てられます。 プロセスに割り当てられたメモリが要求されたメモリより多少大きい場合、割り当てられたメモリと要求されたメモリの違いは内部断片化です。
固定サイズのブロック内のこの残りのスペースは、プロセスによるメモリの要求を満たすのに十分ではないため、どのプロセスにも割り当てることができません。 例を使って内部フラグメンテーションを理解しましょう。 メモリ空間は、18, 464バイトの固定サイズブロックに分割されています。 18, 460バイトの処理要求と18, 464バイトの区画固定長ブロックがプロセスに割り当てられたとします。 その結果、4バイトの18, 464バイトが空のままになります。これは内部の断片化です。
内部の断片化によって作成された内部の穴を追跡するためのオーバーヘッドは、実質的に内部の穴の数よりも多くなります。 内部断片化の問題は、メモリを可変サイズのブロックに分割し、メモリを要求しているプロセスに最適サイズのブロックを割り当てることで解決できます。 それでも、それは内部の断片化の問題を完全に排除するのではなく、ある程度までそれを減らすでしょう。
外部フラグメンテーションの定義
外部フラグメンテーションは、プロセスのメモリ要求を満たすのに十分な量のスペースがメモリにあるときに発生します。 しかし、利用可能なメモリが隣接していないため、プロセスのメモリ要求を満たすことができません。 最適メモリ割り当て戦略または最適メモリ割り当て戦略を適用すると、外部の断片化が発生します。
プロセスがロードされ、メモリから削除されると、空きスペースによってメモリスペースに穴ができ、メモリスペースにそのような穴が多数あります。これを外部フラグメンテーションと呼びます。 ファーストフィットとベストフィットは外部フラグメンテーションの量に影響する可能性がありますが、完全に排除することはできません。 圧縮は外部断片化の解決策になるかもしれません。
圧縮アルゴリズムは、すべてのメモリ内容を片側にシャッフルし、1つの大きなメモリブロックを解放します。 しかし、圧縮アルゴリズムは高価です。 プロセスが隣接しない方法で物理メモリを取得できるようにする外部の断片化の問題を解決するための代替ソリューションがあります。 この解決策を達成するための技術はページングとセグメンテーションです。
内部と外部の断片化の主な違い
- 内部および外部の断片化の発生の背後にある基本的な理由は、メモリが固定サイズのブロックに分割されるときに内部の断片化が発生するのに対し、メモリが可変サイズのブロックに分割されるときに外部の断片化が発生することです。
- プロセスに割り当てられたメモリブロックが要求されたメモリよりわずかに大きくなると、割り当てられたメモリブロックに残っている空き領域が内部の断片化を引き起こします。 一方、プロセスがメモリから削除されると、外部断片化と呼ばれる空き領域がメモリ内に発生します。
- 内部断片化の問題は、メモリを可変サイズのブロックに分割し、要求元のプロセスに最適なブロックを割り当てることで解決できます。 ただし、外部フラグメンテーションの解決策は圧縮ですが、実装にはコストがかかるため、ページングとセグメンテーションの手法を導入するために、プロセスが連続しない方法で物理メモリを取得できるようにする必要があります。
結論:
内部断片化の問題は軽減できますが、完全に排除することはできません。 ページングおよびセグメンテーションは、プロセスが隣接しない方法でメモリを占有することを可能にすることによって、外部断片化のために解放されたスペースを利用するのに役立ちます。