📅  最后修改于: 2020-12-14 09:31:41             🧑  作者: Mango
我们知道动态分区会遭受外部碎片的困扰。但是,这可能会导致一些严重的问题。
为了避免压缩,我们需要更改规则,即不能将进程存储在内存中的不同位置。
我们还可以使用压缩来最小化外部碎片的可能性。在压缩中,使所有可用分区连续,并将所有已加载分区合并在一起。
通过应用此技术,我们可以将更大的进程存储在内存中。空闲分区已合并,现在可以根据新进程的需要进行分配。此技术也称为碎片整理。
如上图所示,由于空闲分区是连续的,因此由于缺少连续空间而无法加载到内存中的进程P5现在可以加载到内存中。
在压缩的情况下,由于所有自由空间都将从多个位置转移到单个位置,因此系统的效率降低。
此过程花费了大量时间,并且CPU将在所有这段时间内保持空闲状态。尽管压缩避免了外部碎片的事实,但却使系统效率低下。
让我们考虑一下,OS需要6个NS才能将1个字节从一个位置复制到另一个位置。
1 B transfer needs 6 NS
256 MB transfer needs 256 X 2^20 X 6 X 10 ^ -9 secs
因此,在某种程度上证明了较大的内存传输需要大量的时间(以秒为单位)。