在文件系统中,碎片是一种低效的存储空间使用方式,它将单个文件的内容存储在磁盘的不同位置,而不是在一个位置上以单个连续的比特序列存储。碎片是一种自然现象,它发生在硬盘上,有时也发生在内存模块上,因为数据在硬盘上的写入距离不够近。

由于文件的频繁使用,数据的写入顺序有时会被打乱,这意味着数据片段在硬盘上的位置并不相邻。这些数据片段被称为碎片。在某些时候,操作系统需要访问文件系统来查找不同片段在硬盘上的位置。
例如,当创建一个新文件时,比方说一个 word 文件;该文件似乎在一个地方。可以打开文件、编辑或删除它—随心所欲。所有活动似乎都是在硬盘上进行的,至少这么认为的。
硬盘可能会将大块文件保存在设备的某个区域,但其余部分却存在于存储设备的其他地方。简单来说,碎片指的是文件系统中的存储空间被浪费,导致文件的不同部分之间出现间隙。
碎片基本上发生在动态内存分配系统中,因为它为文件预留了太多空间,导致文件周围出现开放区域。

什么是内部碎片?

它在某种程度上与固定大小的分区有关。系统为各种程序和进程分配内存时,会根据程序需要将内存划分成小块。有时分配的内存会多于进程所需的内存,最终导致多余的内存被浪费或闲置。

例如,内存只能以可被 4、8 或 16 整除的块为单位分配给程序。当一个进程请求 24 字节的内存时,它通常会得到 32 字节的内存块,而多余的 8 字节内存则会被闲置。这样,未使用的内存就存在于一个特定的分配位置,而且它非常小,新进程无法分配到它,从而造成浪费。这种浪费被称为内部碎片。消除这种碎片的唯一方法可能就是动态内存分配。

什么是外部碎片?

主内存在已分配的内存部分之间形成空洞,这些空洞太小,无法容纳任何进程。这是存储分配算法的弊端,当连续的未使用空间块无法满足新请求时,因为这些空间太小,无法满足大内存应用程序的需求。简单来说,非连续块会在内存中产生漏洞,导致未使用的存储空间超出分配区域,这意味着它们无法与主内存一起用于较大的内存任务。它们最终会被隔离,无法从内存空间中完全清除。这就是所谓的外部碎片。外部碎片可以通过压缩来消除,压缩会对内存内容进行洗牌,将所有空闲内存放在一起。

内部碎片和外部碎片的区别

基本原理
内部碎片:
内部碎片指的是分配给进程的内存超出需要时浪费的额外空间。它通常发生在为程序或进程分配固定大小的内存块时。

外部碎片:
相反,外部碎片指的是不相邻的连续内存块之间形成的未使用空间。

出现
内部碎片:
当分配给进程的内存大于进程请求的内存时,在分配的内存块内形成的空闲空间称为内部碎片。内部”指的是较大内存块中未使用的字节。
外部碎片:
当主内存形成的孔太小,无法满足任何请求时,就称为外部碎片。

原因
内部碎片:
发生内部碎片的主要原因是内存被分割成固定大小的块。

外部碎片:
外部碎片是根据不同进程的大小将内存划分为大小可变的块时发生的现象。

解决方案
内部碎片:
内部碎片是一种自然现象,可以通过动态内存分配来消除。动态内存分配是指根据进程的要求动态分配部分内存块给进程,并在程序执行过程中不再需要时释放内存块。

外部碎片:
外部碎片可以通过压缩、分页和分段来消除,这样就能以非连续的方式为进程分配内存。

内部碎片和外部碎片的区别总结

内部碎片和外部碎片都是与未使用的内存空间或内存浪费有关的自然现象。内部碎片是由于内存分配效率低下造成的,当分配给进程的内存超出其需求时,内存块中就会留下闲置空间,最终导致内部碎片。当进程从物理内存中删除后,空闲空间会分布在这里和那里,找不到相邻的内存块,从而造成外部碎片。不过,这两种现象都可以避免。内部碎片可以通过动态分配内存给进程来减少,而外部碎片则可以通过压缩、分页和分段来避免。

内部碎片和外部碎片的区别

本文由网友:祖盼山 投稿 欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:内部碎片和外部碎片的区别
本文链接:https://www.vsdiffer.com/vs/internal-fragmentation-vs-external-fragmentation.html
免责声明:以上内容仅代表 网友:祖盼山 个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。