内部和外部的碎片

时间:2009-07-29 14:30:46

标签: filesystems disk fragmentation

在为文件分配磁盘空间时,有人可以告诉我内部碎片和外部碎片之间的区别吗?

4 个答案:

答案 0 :(得分:147)

外部碎片
总内存空间足以满足请求或驻留进程,但它不是连续的,因此无法使用。

External fragmentation

内部碎片
分配给进程的内存块更大。部分内存未被使用,因为它不能被其他进程使用。

Internal fragmentation

答案 1 :(得分:22)

首先,术语碎片化暗示了一个实体被分成了几个部分 - 片段。

  • 内部碎片:典型的纸质书籍是一组页面(文本分为页面)。如果一个章节的末尾没有位于页面末尾,而新章节从新页面开始,则这些章节之间存在差距,而且浪费空间 - 一个块(页面)对于一本书)有未使用的空间内部) - "空格"

  • 外部碎片:说你有纸质日记而且你没有按页顺序写下你的想法,而是相当随意。当你想要连续写3页时,你可能会遇到这样的情况,但是你不可能因为没有3个干净的页面一个接一个,你可能有15个干净的页面完全在日记中,但他们并不连续

答案 2 :(得分:1)

我是一个仅在10mb分区中分配内存的操作系统。

内部碎片

  • 您需要17mb的内存
  • 我给你20mb的记忆力

满足此请求只会导致3mb的内部碎片。

外部碎片

  • 您需要20mb的内存
  • 我给你20mb的记忆力
  • 我为您提供的20mb内存不是紧挨着另一个现有的已分配内存片段。为使您获得此记忆,我将一个未分配的空间“拆分”为两个空间。

满足此请求只会导致外部碎片化

答案 3 :(得分:-15)

大概来自this site

  

内部碎片当内存碎片发生时   allocator在一块内存中留出额外的空间   已分配给客户。这通常是因为   处理器的设计规定必须将内存切割成块   某些尺寸 - 例如,可能要求块均匀   除以四个,八个或16个字节。当发生这种情况时,一个客户端   需要57个字节的内存,例如,可以分配一个块   包含60个字节,甚至64个。客户端没有的额外字节   需要浪费,随着时间的推移,这些微小的未使用内存可以   积累并创建大量无法存储的内存   由分配器使用。因为所有这些无用的字节都在里面   更大的内存块,碎片被认为是内部的。

     

外部碎片当外部碎片发生时   内存分配器在两者之​​间留下未使用的内存块   分配内存的部分。例如,如果有几个内存块   被分配在连续的行中,但是在中间的一个中间块   line被释放(可能是因为使用该块的进程   内存停止运行),空闲块被分段。块是   如果需要,以后仍可供分配器使用   适合该块的内存,但该块现在无法使用   更大的内存需求。它不能与总免费重新融为一体   系统可用的内存,因为总内存必须是连续的   它可用于更大的任务。通过这种方式,整个部分   自由记忆最终可能与整体隔离开来   小的重要用途,这可以减少免费   随着时间的推移会导致密钥缺少可用内存的内存   任务。