我们知道动态分区遭受外部碎片的困扰。但是, 这可能会导致一些严重的问题。
为了避免压缩, 我们需要更改规则, 即不能将进程存储在内存中的不同位置。
我们还可以使用压缩来最小化外部碎片的可能性。在压缩中, 使所有可用分区连续, 并将所有已加载分区合并在一起。
通过应用此技术, 我们可以将更大的进程存储在内存中。空闲分区已合并, 现在可以根据新进程的需要进行分配。此技术也称为碎片整理。
如上图所示, 由于空闲分区是连续的, 由于缺少连续空间而无法加载到内存中的进程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
因此, 在某种程度上证明了较大的内存传输需要大量的时间(以秒为单位)。
评论前必须登录!
注册