内部和外部碎片

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

108437 次浏览

据推测来自 这个网站:

内部碎片内部碎片发生时,内存 分配器在一块内存中留下额外的空间 已分配给客户端。这通常是因为 处理器的设计规定,内存必须切割成块 某些尺寸——例如,块可能需要均匀地 除以4、8或16个字节。当这种情况发生时,客户端 需要57字节的内存,例如,可以分配一个块 包含60字节,甚至64字节 需要去浪费,随着时间的推移,这些小块的未使用的内存可以 建立和创造大量无法存储的内存 因为所有这些无用的字节都在里面 如果内存块较大,则将碎片视为内部碎片。

时发生外部碎片 内存分配器将未使用的内存块的部分留在 分配的内存部分。例如,如果几个内存块 分配在一个连续的行,但其中一个中间块 行被释放(可能是因为正在使用该块的进程 内存停止运行) ,空闲块被破碎 仍然可供稍后分配程序使用,如果需要 内存适合该块,但该块现在不可用于 需要更大的内存。不能将其归为总空闲内存 系统可用的内存,因为总内存必须是连续的 它可用于较大的任务。这样,整个部分 自由的记忆可以结束孤立的整体,往往太 大量使用的小,这创造了一个免费的整体减少 内存,随着时间的推移,可能会导致可用内存的关键 任务。

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

External fragmentation

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

Internal fragmentation

首先,分裂这个术语暗示有一个被分割成部分的实体——片段。

  • 内部碎片化: 典型的纸质书是页面的集合(文本分页)。当一个章节的结尾不在页面的末尾,新的章节从新的页面开始时,这些章节之间会有一个间隙,这是对空间的浪费ーー一个块(一本书的页面)有未使用的空间 在里面(在内部)ーー“空白空间”

  • 外部碎片化: 假设你有一本纸质日记,你没有一页接一页地写下你的想法,而是随机地写下来。你可能会遇到这样的情况: 你想连续写3页,但是你不能,因为没有3页一张一张干净的,你可能有15页干净的日记,但是他们不是连续的

我是一个操作系统,只分配你的内存在10mb 的分区。

内部碎片

  • 你需要17M 的内存
  • 我给你20mb 的内存

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

外部碎片

  • 你需要20mb 的内存
  • 我给你20mb 的内存
  • 我给你的20mb 内存是与另一块已分配内存紧邻的 没有。在交给你们这个内存的过程中,我把一个未分配的空间“分割”成了两个空间。

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