在从内存中加载和删除进程时,可用内存空间会分成几小块。考虑到有时由于无法将进程分配给存储块而导致其无法使用,因此有时无法将其分配给存储块。此问题称为碎片。
分配给进程的内存块更大。内存的某些部分未使用,因为它不能被其他进程使用。通过有效分配最小的分区但足够大的分区,可以减少内部碎片。
总存储空间足以满足请求或在其中驻留进程,但是它不是连续的,因此无法使用。可以通过压缩或改组内存内容以将所有可用内存放在一个大块中来减少外部碎片。为了使压缩可行,重定位应该是动态的。
以下是内部碎片和外部碎片之间的重要区别。
序号 | 键 | 内部碎片 | 外部碎片 | |
---|---|---|---|---|
1 | 定义 | 当所需的内存空间与分配的内存空间之间存在差异时,该问题称为内部碎片。 | 当有小的且不连续的内存块无法分配给任何进程时,该问题称为“外部碎片”。 | |
2 | 内存块大小 | 当分配的内存块的大小固定时,就会发生内部碎片。 | 当分配的内存块大小不同时,就会发生外部碎片。 | |
3 | 发生事件 | 当进程需要的空间比分配的内存块的大小更多或使用的空间更少时,就会发生内部碎片。 | 从主内存中删除进程时,将发生外部碎片。 | |
4 | 解决方案 | 最佳拟合块搜索是内部碎片的解决方案。 | 压缩是解决外部碎片的方法。 | |
5 | 过程 | 使用分页时会发生内部碎片。 | 使用分段时会发生外部分段。 |