ファイルにディスクスペースを割り当てる際の内部断片化と外部断片化の違いを教えてもらえますか?
4 に答える
おそらくこのサイトから:
内部フラグメンテーション 内部フラグメンテーションは、メモリ アロケータが、クライアントに割り当てられたメモリ ブロック内の余分なスペースを空のままにしておくときに発生します。これは通常、プロセッサの設計により、メモリを特定のサイズのブロックに分割する必要があることが規定されているために発生します。たとえば、ブロックを 4、8、または 16 バイトで均等に分割する必要がある場合があります。これが発生すると、たとえば、57 バイトのメモリを必要とするクライアントには、60 バイトまたは 64 バイトを含むブロックが割り当てられる場合があります。クライアントが必要としない余分なバイトは無駄になり、時間の経過とともにこれらの小さなチャンクが未使用のメモリが蓄積され、アロケータが使用できない大量のメモリが作成される可能性があります。これらの無駄なバイトはすべて大きなメモリ ブロック内にあるため、断片化は内部と見なされます。
外部フラグメンテーション 外部フラグメンテーションは、メモリ アロケータが、割り当てられたメモリの部分の間に未使用のメモリ ブロックのセクションを残すときに発生します。たとえば、複数のメモリ ブロックが連続した行に割り当てられているが、その行の中央のブロックの 1 つが解放されている場合 (おそらく、そのメモリ ブロックを使用していたプロセスが実行を停止したため)、解放されたブロックは断片化されています。そのブロックに収まるメモリが必要な場合は、後でアロケータがブロックを使用できますが、そのブロックは、より大きなメモリが必要な場合には使用できなくなります。より大きなタスクに使用できるようにするには、合計メモリが連続している必要があるため、システムで使用可能な合計空きメモリと一緒に戻すことはできません。この上、