内部和外部碎片


77

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


1
@binary worrier:很抱歉..i是stackoveerflow的新手。
wantobegeek

18
完全与编程相关-操作系统上的任何课程都将在文件系统中介绍。
马特·米切尔

Answers:


169

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

外部碎片

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

内部碎片


35

首先,术语“碎片提示”将一个实体分为多个部分-碎片。

  • 内部碎片:典型的纸质书是页面的集合(文本分为几页)。如果某章的末尾不在页面的末尾,而新章从新页开始,则这些章之间会有间隙,这是在浪费空间-一块(一本书的页面)内部内部)有未使用的空间- “空白”

  • 外部碎片:假设您有一本纸质日记,没有逐页顺序地写下您的想法,而是随机地写。您可能最终想要连续写三页,但由于一张一张没有3张整洁的页面,所以您不能这样做,日记中可能总共有15张整洁的页面,但是他们不连续


2
这是一个令人惊奇的类比。
萨娜·贾汉

难以置信的比喻!多亏了这一点,可能永远也不会忘记这个概念。
Burak。

1

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

内部碎片

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

满足此请求仅导致3mb内部碎片。

外部碎片

  • 您要求20mb的内存
  • 我给你20mb的记忆
  • 我为您提供的20mb内存不是紧接在另一个现有的已分配内存旁边。为使您获得此记忆,我将一个未分配的空间“拆分”为两个空间。

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


-19

大概是从这个站点

内部碎片内部碎片是在内存分配器在为客户端分配的内存块内保留多余空间时发生的。通常会发生这种情况,因为处理器的设计规定必须将内存切成某些大小的块-例如,可能需要将块平均划分为四个,八个或16个字节。发生这种情况时,例如,可能需要给需要57个字节内存的客户端分配一个包含60个字节甚至64个字节的块。客户端不需要的多余字节会浪费掉,并且随着时间的推移这些小块未使用的内存可以建立并创建大量的内存,分配器无法使用这些内存。由于所有这些无用的字节都在较大的内存块中,因此将碎片视为内部碎片。

外部碎片当内存分配器在分配的内存部分之间留下未使用的内存块部分时,就会发生外部碎片。例如,如果在一条连续的行中分配了几个内存块,但是该行中的中间块之一被释放了(也许是因为使用该内存块的进程停止运行了),那么空闲块将被碎片化。如果需要适合该块的内存,则该块稍后仍可供分配器使用,但是该块现在无法用于较大的内存需求。不能将其与系统可用的总可用内存混在一起,因为总内存必须是连续的,才能用于较大的任务。通过这种方式,


19
玛蒂,您似乎是从另一个站点(可能是另一个站点)复制了此文。如果这样做,则至少需要将链接添加回该站点,以指示从何处复制了该链接。我已经在这里为您完成了。不过,这仍然是一个临界答案-将来,请使用此类信息作为您自己编写答案的基础,而不是整个答案
Michael Petrotta 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.