精华内容
下载资源
问答
  • 操作系统:理解外碎片与内碎片

    千次阅读 2019-07-06 16:41:12
    碎片的内外之分与分配与否有关,比如可变分区的那些没有被分出去给进程的小空间,就是“外碎片”。因为进程的需要是:希望分配到的内存空间是连续的,所以那些小的、分散的就用不上咯。 而关于内碎片的“内”,指的...

    碎片的内外之分与分配与否有关,比如可变分区的那些没有被分出去给进程的小空间,就是“外碎片”。因为进程的需要是:希望分配到的内存空间是连续的,所以那些小的、分散的就用不上咯。

    而关于内碎片的“内”,指的是在进程使用中产生的,即,它们是被进程所占用的,但是进程并没有利用它们。(当然,系统也无法利用,除非进程释放了这些内存)

    补充一点:

    • 多道可变连续分配 → 只会产生外碎片;
    • 单道连续分配 → 只会产生内碎片;
    • 多道固定连续分配 → 内、外碎片都会有;(没有分出去的固定分区就是外碎片咯)
    展开全文
  • 定义 内存碎片就是碎片的内存,描述一个系统中所有不可用的空闲内存。内存是空闲的但是不可用,是因为负责动态分配内存的分配算法使得这些空闲的内存无法使用,原因在于这些个空闲内存比较小并且不连续,无法满足...

    定义

    内存碎片就是碎片的内存,描述一个系统中所有不可用的空闲内存。内存是空闲的但是不可用,是因为负责动态分配内存的分配算法使得这些空闲的内存无法使用,原因在于这些个空闲内存比较小并且不连续,无法满足内存管理算法中的申请需求。

    种类及产生原因

    1、内部碎片

    因为所有的内存分配必须起始于可被 4、8 或 16 整除(内存对齐,视处理器体系结构而定)的地址或者因为 MMU 的分页机制的限制,决定内存分配算法仅能把预定大小的内存块分配客户。就是分配满足上面对齐条件的最小的内存大小,如果申请的不满足对齐条件,势必会多分配一点不需要的多余内存空间,造成内部碎片。如:申请 43 Byte,因为没有合适大小的内存,会分配 44 Byte 或 48 Byte,就会存在 1 Byte 或 3 Byte 的多余空间。

    2、外部碎片

    频繁的分配与回收物理页面会导致大量的、连续且小的页面块夹杂在已分配的页面中间,从而产生外部碎片。比如有一块共有 100 个单位的连续空闲内存空间,范围为 0 ~ 99,如果从中申请了一块 10  个单位的内存块,那么分配出来的就是 0 ~ 9 。这时再继续申请一块   5个单位的内存块,这样分配出来的就是 10 ~ 14 。如果将第一块释放,此时整个内存块只占用了 10 ~ 14 区间共 5 个单位的内存块。然后再申请 20个单位的内存块,此时只能从 15 开始,分配 15 ~ 24 区间的内存块,如果以后申请的内存块都大于 10 个单位,那么 0 ~ 9 区间的内存块将不会被使用,变成外部碎片。

    解决办法

    伙伴算法:https://blog.csdn.net/itworld123/article/details/104418880

     

    (SAW:Game Over!)

    展开全文
  • 分段、分页&&内存碎片碎片

    千次阅读 2019-10-04 02:30:35
    关键词: 分段、分页、内存碎片碎片 1、分段&&分页: 分页与分段都是磁盘的存储单位。 (1)分页: ①定义:在内存空间中,将内存空间划分为一个又一个大小相等的基本单位,称为“块”,也称为...

      关键词: 分段、分页、内存碎片、外存碎片


    1、分段&&分页:

    分页与分段都是磁盘的存储单位。
    (1)分页:
    ①定义:在内存空间中,将内存空间划分为一个又一个大小相等的基本单位,称为“块”,也称为“页框”。将用户程序的地址空间按照"块"为基本单位划分成若干个大小相等的区域,这一个又一个的区域就称为页。 
     
    ②内存分配规则:以块为单位进行存储。每一页存储在指定的块中,每一页在计算机中可以不相邻存储, 可以存储在不相邻的页框中。它是磁盘和内存之间传输数据块的最小单位。
     (注意:大小不足一个页也必须占据一个块。这也是产生内存碎片的原因。)
     
    (2)分段:
    ①定义:将用户程序的地址空间按照自身的逻辑关系划分成若干个大小不等的区域,称为“段”。每一个段有一个段名, 每一个段从0开始编址。一般而言,这个区域比分页中的区域大,因此它可以存储更多的内容,存储更加完整的一段信息。
     
    ②内存分配规则:以段为单位进行分配,每个段在内存中占据连续空间,但各段之间可以不相邻。
     
    (3)分段与分页的对比:
    ①分页中的区域大小相等;分段中的则不等。
    ②分页是信息的物理地址,磁盘和内存之间传输数据块的最小单位;分段是信息的逻辑地址,它是相对于信息来划分的。
    ③分页中作业的地址空间是一维的;给出一个地址,那么就能够确定其页号和页内地址(页的长度),因此就能够找到相应的内容
      分段中作业的地址空间是二维的。需要通过段号和段内地址来确定。
    分析:
      都是采用线性方式计算的,但是每一页的长度是确定的,而每个段的长度是不同的。所以说分段是二维的,因为需要确定两个变量段号和段的长度;而分页是一维的,因为只需要确定页号即可
    ④分页允许存储于不连续的区块,因为每一页就对应于一个块,而每一页是可以非连续存储的,所以就可以了;
    对于分段,每一段的所有内容必须存储在连续的区域中,不同的段可以存储在不连续的区域中。
    ⑤分页对于用户来说是不可见的,是系统自己确定的;分段对于用户来说则是确定的
    ⑥分页存储会产生内存碎片,不会产生外存碎片;
       分段存储不会产生内存碎片,会产生外存碎片。
     
    注意:段页式存储:
    首先进行分段,接着再对每一段进行分页。此时每一段需要存储于连续的区域,而因为此时以块作为基本的存储单位,所以在一定情况下,一个段就需要存储在多个连续的块中(除非段的长度==块的长度),不同的段则可以存储在不连续的存储区域。
     

    2、内存碎片&&外存碎片:

    (1)性质不同:
    ①内存碎片:指的是已经被分配出去的,但是却没有被使用的内存空间。  因为基本存储单位的限制
    ②外存碎片:指的是还没有被分配的,但是由于太小或者是不连续,而导致不满足要求,所以没办法被分配的内存空间
     
    (2)存储位置不同:
    ①内存碎片是存储于已分配区域内部的
    ②外存碎片是存储于未分配区域的
     
    (3)状态不同:
    ①内存碎片:其他进程没办法使用它,因为它被某一个进程占有
    ②外存碎片:其他进程没办法使用它,因为它可存储的位置不连续或者是太小了
     

    3、存储方式与碎片的关系:

    (1)分页存储会产生内存碎片、不会产生外存碎片。
    (2)分段存储:会产生外存碎片、不会产生内存碎片。
    (3)段页式存储:产生内存碎片、外存碎片。
     
    参考资料:

    转载于:https://www.cnblogs.com/axing-articles/p/11409998.html

    展开全文
  • 内存碎片---内部碎片&外部碎片

    千次阅读 2018-05-05 20:44:01
    内部碎片的产生:因为所有的内存分配必须起始于可被 4、8 或 16 整除(视处理器体系结构而定)的地址或者因为MMU的分页机制的限制,决定内存分配算法仅能把预定大小的内存块分配给客户。假设当某个客户请求一个43...

    内部碎片的产生:因为所有的内存分配必须起始于可被 4、8 或 16 整除(视处理器体系结构而定)的地址或者因为MMU的分页机制的限制,决定内存分配算法仅能把预定大小的内存块分配给客户。假设当某个客户请求一个43字节的内存块时,因为没有适合大小的内存,所以它可能会获得 44字节、48字节等稍大一点的字节,因此由所需大小四舍五入而产生的多余空间就叫内部碎片。

    外部碎片的产生:频繁的分配与回收物理页面会导致大量的、连续且小的页面块夹杂在已分配的页面中间,就会产生外部碎片。假设有一块一共有100个单位的连续空闲内存空间,范围是0~99。如果你从中申请一块内存,如10个单位,那么申请出来的内存块就为0~9区间。这时候你继续申请一块内存,比如说5个单位大,第二块得到的内存块就应该为10~14区间。如果你把第一块内存块释放,然后再申请一块大于10个单位的内存块,比如说20个单位。因为刚被释放的内存块不能满足新的请求,所以只能从15开始分配出20个单位的内存块。现在整个内存空间的状态是0~9空闲,10~14被占用,15~24被占用,25~99空闲。其中0~9就是一个内存碎片了。如果10~14一直被占用,而以后申请的空间都大于10个单位,那么0~9就永远用不上了,变成外部碎片。

    内部碎片

    内部碎片是已经被分配出去能明确指出属于哪个进程的内存空间大于请求所需的内存空间,不能被利用的内存空间就是内部碎片

    内部碎片是处于区域内部或页面内部的存储块。占有这些区域或页面的进程并不使用这个存储块。而在进程占有这块存储块时,系统无法利用它。直到进程释放它,或进程结束时,系统才有可能利用这个存储块。

    为了有效的利用内存,使内存产生更少的碎片,要对内存分页,内存以页为单位来使用,最后一页往往装不满,于是形成了内部碎片。
    由于被装入的数据块小于分区大小,从而导致分区内部有空间浪费,这种现象成为内部碎片。


    外部碎片

    外部碎片是指还没有分配出去不属于任何进程,但是由于大小而无法分配给申请内存空间的新进程的内存空闲块。

    外部碎片是出于任何已分配区域或页面外部的空闲存储块。这些存储块的总和可以满足当前申请的长度要求,但是由于它们的地址不连续或其他原因,使得系统无法满足当前申请。
    分区外的存储空间会出现很多不能使用的碎片。
    为了共享要分段,在段的换入换出时形成外部碎片,比如5K的段换出后,有一个4k的段进来放到原来5k的地方,于是形成1k的外部碎片。

    外部碎片示意图:

    内存碎片(内部碎片&外部碎片)

    产生内部碎片的情况:固定分区分配,页式虚拟存储系统

    产生外部碎片的请况:可变式分区分配,段式虚拟存储系统,动态分区分配

    碎片整理

    通过调整进程占用的分区位置来减少或避免分区碎片

    1. 紧凑(compaction) 通过移动分配给进程的内存分区,以合并外部碎片。紧凑的条件是:所有的应用程序可动态重定位。

    2. 分区对换(Swapping in/out) 通过抢占并回收处于等待状态进程的分区,以增大可用内存空间。


    在磁盘上的外部碎片和内部碎片两个概念

    很多人会把文件碎片跟簇的概念混淆起来。其实对windows系统来说硬盘上的每个分区都是由最小存储单元——组成的。就好比,一面墙是由一块块转头组成的。簇的大小可以在分区格式化时由用户定义,一般是数个KB大小,比如是8KB。假设我有一个文件,大小是80MB零1KB(1MB=1000KB),换算一下就是80,001KB,其中的80,000KB正好占用10000个簇,剩下的那1KB,不得以也要占用1个簇,但这最后一个簇还有7KB的空间没用上了。而且这个未完全使用的簇,其他文件也不允许继续使用。这就造成了一点点的空间浪费。不少人就把这被浪费了的7KB空间就是磁盘上的内部碎片

    磁盘上的外部碎片(即平时所说的磁盘碎片,磁盘碎片清理工具只能清理磁盘上的外部碎片,清除不了磁盘上的内部碎片,除非改变文件系统的分配单位即簇的大小,使之是一个文件大小的整数倍。)实际上指的是一个文件占据那些簇是不连续的,就相当于文件被分割开来,分别存放在相互间断的几段簇上。文件被分割为几个部分就是几个碎片。所以碎片其实是指文件碎片,可以理解成,文件破碎成片之意。而且文件碎片之间有时候顺序还是错乱的。比如说,有时候“文件里靠后的碎片”所占的簇段在硬盘上反而会排在“文件里位置靠前的碎片”簇段的前面。这样一来,一个文件就会以比较混乱的顺序存放在硬盘上。

    显然计算机读取连续的有序的数据肯定要比不连续的乱序的数据来得快。所以整理碎片可能会大幅度提高系统性能。

    举个例子,起初硬盘某个分区是空白的,写入三个文件A、B和C。显然这个时候,三个文件都是顺次占用三个簇段(这个说明存放文件所用的文件系统应该是类似FAT这样的文件系统,具体参看注释1)。故而三个文件不会产生碎片。

    现在假设你删除了B文件,这个时候A和C中间就有一块空闲簇段了。此时还是不存在文件碎片的,因为每个文件各自占据的簇段都是连续的,没有文件被分割。而如果现在需要写入一个文件D,而且D比刚刚删去的文件B要大。那么A和C之间的空闲簇段就不足以放入D,再假设C后面的空闲簇段也不足以放下D,这个时候D就势必要分割成两块存放,一块放在A和C之间,另一块放在C之后。这样一来,文件碎片就产生了。D文件有两个文件碎片。

    磁盘碎片整理要做的工作就是:把C文件前移,一直移到紧接A文件的簇段上去。这样A和C之间就没有空闲簇了,C之后剩下的将是一段完整的空闲簇段,足以放下文件D。这样D就也占据一段连续的簇段。碎片也就消除了。

    =====================================

    外部碎片的两种理解:

    1、在内存上,位于任何两个操作系统分配的用于装载进程的内存区域或页面之间的空闲区域称为外部碎片

    2、在磁盘上,将文件分割成几块不相连的分片,这样不相连的分片叫做文件碎片,也即外部碎片。如果将文件分割成几块相连的分片,这样相连的分片则不是文件碎片。


    展开全文
  • Fragment和Activity有些地方是比较相似的 碎片和活动之间的通信用一段很简单粗暴的...这一段是碎片的代码 里面定义了一个EditText专门用来接收输入的文本内容 碎片的布局文件中有一个EditText和两个Button 其中bt_fr
  • C++-----浅谈内存碎片

    千次阅读 多人点赞 2019-04-23 23:47:59
    内存碎片定义 碎片和内碎片 内存碎片的产生 内存碎片定义 内存碎片即“碎片的内存”,它分为碎片和内碎片,内存碎片描述一个系统中所有不可用的空闲内存,这些碎片之所以不能被使用,是因为负责动态分配内存...
  • 外部碎片和内部碎片

    千次阅读 2016-06-19 10:04:07
    所谓“内部碎片”,是指系统已经分配给用户使用、用户自己没有用到的那部分存储空间;所谓“外部碎片”,是指系统无法把它分配出去供用户使用的那部分存储空间。...教材中,只有可变分区存储管理会产生
  • 内部碎片和外部碎片

    2019-05-20 22:00:10
    内部碎片的产生:因为所有的内存分配必须起始于可被 4、8 或 16 整除(视处理器体系结构而定)的地址或者因为MMU的分页机制的限制,决定内存分配算法仅能把预定大小的内存块分配给客户。假设当某个客户请求一个43...
  • 内部碎片和外部碎片的区别

    千次阅读 2018-08-09 10:48:15
    一、在内存上(使用连续分配算法来管理分配内存时会产生)的外部碎片和内部碎片两个概念   这几天一直看操作系统,看到内存的连续分配时,对于外部碎片和内部碎片时甚是不解:   内存碎片分为:内部碎片和外部...
  • 内存碎片

    千次阅读 2011-12-09 02:51:23
    一 定义:  在小对象对内存的频繁的动态申请和释放的过程中,由于释放后留下的空洞不够新对象的分配,导致不连续的内存可用空间无法被应用程序获得,造成可用内存迅速备耗尽。这样就造成了内存碎片的产生。  ...
  • 操作系统内部碎片和外部碎片In a computer storage system, as processes are loaded and removed from memory, the free memory space is broken into small pieces. In this way memory space used inefficiently,...
  • 什么是内部碎片? 内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间; 内部碎片是处于区域内部或页面内部的存储块。占有这些区域或页面的进程并不使用这个存储块。而在进程占有这块存储...
  • 高效学习的定义:找到最适合自己的学习手法,在相对短的时间内集中注意力,以解决一个工作生活当中的难题为目的着手学习,你需要勤加练习,有时候还需要向名师求助。——许岑 为什么会出现碎片化学习? 随着...
  • 如图所示,Activity内嵌了Fragment,Fragment里面有内嵌了一个子Fragment。现在我们要在点击子碎片中的按钮后使子碎片销毁,并回到父碎片的活动中去。 ...废话不多说,先看效果图和最终要用到的...在子碎片(Chil
  • 外部碎片和内部碎片的区别

    万次阅读 多人点赞 2014-08-20 14:05:10
    故而三个文件不会产生碎片。 现在假设你删除了B文件,这个时候A和C中间就有一块空闲簇段了。此时还是不存在文件碎片的,因为每个文件各自占据的簇段都是连续的,没有文件被分割。而如果现在需要写入一个文件D,而且...
  • Android 的平台碎片化问题

    千次阅读 2014-02-17 09:59:22
    Android 的平台碎片化问题 看到篇不错的文章,转载过来。 -------------------------------------- 与iOS开发相比,Android开发平添了不小的工作量,因为iOS只要针对一个系统版本(最新版本)进行开发和...
  • sql server 索引碎片整理

    千次阅读 2018-01-09 17:38:18
    1. 首先需要用sql 查询出数据库索引碎片情况:SELECT OBJECT_NAME(ind.OBJECT_ID) AS TableName, ind.name AS IndexName, indexstats.index_type_desc AS IndexType, indexstats.avg_fragmentation_in_percent ...
  • 动态添加碎片

    千次阅读 2016-06-21 13:51:14
    碎片可以理解成一个迷你型的活动(Activity) 在代码中动态添加碎片的步骤如下几步: 1:创建待添加的碎片实例; 2:获取到FragmentManager,在活动中可以直接调用getFragmentManager()方法得到; 3:开启一个事务,...
  • 安卓-碎片的使用入门

    千次阅读 2019-10-06 20:48:52
    第四章-Android开发中的碎片 4.1 碎片是什么  碎片(Fragment)是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间,因而在平板上应用得非常广泛。虽然碎片对你来说应该是个全新的概念...
  • 十款磁盘碎片整理工具

    万次阅读 2019-08-15 17:31:22
    说到磁盘整理工具,应该说说磁盘碎片定义,为什么磁盘碎片会对系统性能造成影响。首先我不是专业的电脑人员,对很专业的理论知识不懂,在这里只可以用很通俗很日常的语言来表达。其实磁盘碎片应该称为文件碎片,是...
  • malloc原理和内存碎片

    千次阅读 2018-11-07 15:06:52
    (例如,在B释放之前,A是不可能释放的,这就是内存碎片产生的原因,什么时候紧缩看下面) , 而 mmap分配的内存可以单独释放 。   当然,还有其它的好处,也有坏处,再具体下去,有兴趣的同学可以去看glibc里面...
  • 什么是磁盘碎片

    千次阅读 2018-10-11 13:49:54
    实际上,磁盘碎片应该称为文件碎片,因为文件会分别保存到整个磁盘的不同位置,而不是连续保存在磁盘的连续群集中。   当应用程序所需的物理内存不足时,通常操作系统会在硬盘上生成临时交换文件。此临时交换文件...
  • 为了能重复使用碎片UI组件,你需要创建一个完全独立,模块化的组件,这个组件可以定义自己的样式和行为。一旦你定义了一个可重用的碎片,你可以使用一个activity关联它们,通过程序逻辑链接它们成为一个完整的组合UI...
  • 碎片解决方案

    千次阅读 2013-07-19 20:34:22
    通过重新排列索引行和页面使物理和逻辑顺序相符来解决索引中的碎片,为了减少外部碎片,可以物理重排索引的叶子页面使其遵循索引逻辑顺序。 1.卸载并重建索引 卸载并且重建索引是最大限度的减少索引。这样完全为...
  • 内存碎片产生原因及处理

    千次阅读 2014-11-21 14:24:01
    内存碎片是一个很棘手的问题。如何分配内存决定着内存碎片是否会、何时会、如何会成为一个问题。  即使在系统中事实上仍然有许多空闲内存时,内存碎片还会最终导致出现内存用完的情况。一个不断产生内存碎片的...
  • Android官方入门文档[18]与其他碎片通信 这节课教你 1.定义一个接口 2.实现接口 3.传递一个消息给一个代码片段
  • 在牛客网上刷题: 外部碎片( External Fragmentation )最严重的存储管理方式是() A、固定分区; B、可变分区; C、分页; D、分段。答案为B,并不明白,就整理了一下大牛的总结~ 感谢博主: ...
  • Android学习之动态调用碎片

    千次阅读 2015-11-10 22:42:06
    一、碎片可以在程序运行时动态添加到活动当中。我们可以根据具体情况动态地添加碎片,使得界面定制更加多样化,下面将用个例子来介绍动态调用碎片。 先附上下面例子运行后的效果,效果如下: 点击左边按钮后动态...
  • Fragment(碎片)是一种可以嵌入在活动当中的UI片段,它可以让程序更加合理和充分的利用大屏幕的空间。碎片和活动太像了,同样都包含布局,都有自己的声明周期,可以将碎片理解为一种迷你型的活动。新建FragmentTest...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 105,934
精华内容 42,373
关键字:

外碎片定义