内存紧缩

17 Mar 2025 | 阅读 2 分钟

我们已经知道动态分区会产生外部碎片。然而,这可能会导致一些严重的问题。

为了避免内存压缩,我们需要改变不允许进程存储在内存中不同位置的规则。

我们也可以使用内存压缩来最小化外部碎片的概率。在内存压缩中,所有空闲分区都被合并成连续的,所有已加载的分区也被聚集在一起。

通过应用这种技术,我们可以在内存中存储更大的进程。空闲分区被合并,现在可以根据新进程的需求进行分配。这项技术也称为碎片整理。


os Compaction

如上图所示,进程 P5 由于缺乏连续空间而无法加载到内存中,现在由于空闲分区已成为连续的,它可以被加载到内存中。

内存压缩的问题

由于所有空闲空间都将从多个地方转移到一个地方,因此内存压缩会降低系统的效率。

这项过程需要花费大量时间,并且在此期间 CPU 将保持空闲。尽管内存压缩可以避免外部碎片,但它会使系统效率低下。

让我们考虑一下操作系统需要 6 NS 来将 1 字节从一个地方复制到另一个地方。

因此,在一定程度上可以证明,较大的内存传输需要大量时间,以秒为单位。


下一主题动态分区位图