Memory management 连续内存分配中外部碎片的解决方案

Memory management 连续内存分配中外部碎片的解决方案,memory-management,memory-fragmentation,Memory Management,Memory Fragmentation,在连续内存分配中,我们有一个外部碎片的问题,但是我们不能根据我们的需求,将所有可用的空闲内存的小洞组合起来创建一个大洞吗 是的,我们可以合并所有分散在物理内存中且不连续的内存空间。因此,我们需要一种算法来将所有使用过的内存分配移到内存的一侧,这样我们就可以获得一个连续的可用内存。此方法称为压缩。压缩的执行效率很低,需要一些时间。 此外,还可以重新分配动态绑定的内存 对瓦伦的回答补充: 压缩可能并不总是可能的,即如果地址绑定是静态的,则无法重新定位程序的地址空间。只有在重新定位是动态的并且是在执行

在连续内存分配中,我们有一个外部碎片的问题,但是我们不能根据我们的需求,将所有可用的空闲内存的小洞组合起来创建一个大洞吗

是的,我们可以合并所有分散在物理内存中且不连续的内存空间。因此,我们需要一种算法来将所有使用过的内存分配移到内存的一侧,这样我们就可以获得一个连续的可用内存。此方法称为压缩。压缩的执行效率很低,需要一些时间。
此外,还可以重新分配动态绑定的内存

对瓦伦的回答补充:

压缩可能并不总是可能的,即如果地址绑定是静态的,则无法重新定位程序的地址空间。只有在重新定位是动态的并且是在执行时完成的情况下,才能执行此操作

另一种解决方案是增加块大小,但这是一种折衷