【问题标题】:Internal and external fragmentation [closed]内部和外部碎片[关闭]
【发布时间】:2010-11-15 02:25:47
【问题描述】:

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

【问题讨论】:

    标签: filesystems disk fragmentation


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      首先,fragmentation这个词暗示有一个实体被分成多个部分——片段。

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

      • 外部碎片化:假设您有一本纸质日记,并且您没有逐页顺序地写下您的想法,而是随机地写下您的想法。你可能会遇到这样的情况,你想连续写 3 页,但你不能,因为没有 3 个一页一页的干净页面,你可能在日记中总共有 15 个干净的页面,但是它们不连续

      【讨论】:

      • 这是一个令人惊叹的类比。
      • 难以置信的类比!多亏了这一点,可能永远不会忘记这个概念。
      • 哇。对于这个类比...
      【解决方案3】:

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

      内部碎片化

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

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

      外部碎片化

      • 您要求 20mb 的内存
      • 我给你 20mb 的内存
      • 我给您的 20mb 内存与另一块现有的已分配内存立即相邻。在把这段记忆交给你的时候,我已经将一个未分配的空间“分割”成两个空间。

      完成这个请求导致了外部碎片

      【讨论】:

        【解决方案4】:

        大概来自this site

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

        外部碎片 外部碎片发生在 内存分配器将未使用的内存块部分保留在 分配的内存的一部分。例如,如果有几个内存块 被分配在一条连续的线上,但在 行被释放(可能是因为使用该块的进程 内存停止运行),空闲块被碎片化。该块是 如果需要,分配器以后仍然可以使用 适合该块的内存,但该块现在无法用于 更大的内存需求。它不能与总免费混为一谈 系统可用的内存,因为总内存必须是连续的 它可用于更大的任务。这样,整个部分 空闲内存最终可能会与通常过于频繁的整体隔离开来 小而重要的使用,这会产生免费的整体减少 内存随着时间的推移会导致 key 的可用内存不足 任务。

        【讨论】:

        • Maddy,您似乎从另一个站点复制了此文本,可能是this one。如果您这样做,至少需要将链接添加回该站点,指明您从何处复制它。我已经在这里为你做了。不过,这仍然是一个临界答案 - 将来,请使用此类信息作为您自己编写的答案的基础,而不是完整的答案
        猜你喜欢
        • 2017-01-29
        • 2015-12-21
        • 2018-06-08
        • 1970-01-01
        • 1970-01-01
        • 2012-01-18
        • 2017-12-09
        • 1970-01-01
        相关资源
        最近更新 更多