外部碎片如何发生?

5 operating-system

当进程从内存中加载和删除时,可用内存空间被分解成碎片,导致碎片......但这是怎么发生的?什么是外部碎片的最佳解决方案?

小智 5

当有足够的总内存来满足请求时(通常来自进程),存在外部碎片,但是所需的总内存在连续的位置是不可用的,即它的碎片.

解决外部碎片问题:

1)压缩:将碎片化的内存混洗到一个连续的位置.

2)使用分页和分段进行虚拟内存寻址.


Rav*_*ale 4

外部碎片

当动态内存分配算法分配了一些内存并且留下了一小块无法有效使用的内存时,就会发生外部碎片。如果发生过多的外部碎片,可用内存量将急剧减少。总内存空间的存在是为了满足请求,但它不是连续的。请参阅以下示例

 0x0000 0x1000  0x2000  
   A    B     C               //Allocated three blocks A, B, and C, of size 0x1000.
   A          C         //Freed block B
Run Code Online (Sandbox Code Playgroud)

现在请注意,B 使用的内存不能包含在大于 B 大小的分配中

  • 内部碎片是指给定内存块(在本例中为页面)内浪费的位。另一方面,外部碎片是指块/页外部的内存浪费。 (2认同)