精华内容
下载资源
问答
  • 常见内存分配算法及优缺点

    千次阅读 2015-07-21 17:16:28
    常见内存分配算法及优缺点 常见内存分配算法及优缺点如下:  (1)首次适应算法。使用该算法进行内存分配时,从空闲分区链首开始查找,直至找到一个能满足其大小需求的空闲分区为止。然后再按照作业的大小,从...
    常见内存分配算法及优缺点
    

    常见内存分配算法及优缺点如下:
      (1)首次适应算法。使用该算法进行内存分配时,从空闲分区链首开始查找,直至找到一个能满足其大小需求的空闲分区为止。然后再按照作业的大小,从该分区中划出一块内存分配给请求者,余下的空闲分区仍留在空闲分区链中。
      该算法倾向于使用内存中低地址部分的空闲分区,在高地址部分的空闲分区非常少被利用,从而保留了高地址部分的大空闲区。显然为以后到达的大作业分配大的内存空间创造了条件。缺点在于低址部分不断被划分,留下许多难以利用、非常小的空闲区,而每次查找又都从低址部分开始,这无疑会增加查找的开销。
      (2)循环首次适应算法。该算法是由首次适应算法演变而成的。在为进程分配内存空间时,不再每次从链首开始查找,而是从上次找到的空闲分区开始查找,直至找到一个能满足需求的空闲分区,并从中划出一块来分给作业。该算法能使空闲中的内存分区分布得更加均匀,但将会缺乏大的空闲分区。
      (3)最佳适应算法。该算法总是把既能满足需求,又是最小的空闲分区分配给作业。
      为了加速查找,该算法需求将所有的空闲区按其大小排序后,以递增顺序形成一个空白链。这样每次找到的第一个满足需求的空闲区,必然是最优的。孤立地看,该算法似乎是最优的,但事实上并不一定。因为每次分配后剩余的空间一定是最小的,在存储器中将留下许多难以利用的小空闲区。同时每次分配后必须重新排序,这也带来了一定的开销。
      (4)最差适应算法。最差适应算法中,该算法按大小递减的顺序形成空闲区链,分配时直接从空闲区链的第一个空闲分区中分配(不能满足需要则不分配)。非常显然,如果第一个空闲分区不能满足,那么再没有空闲分区能满足需要。这种分配方法初看起来不太合理,但他也有非常强的直观吸引力:在大空闲区中放入程式后,剩下的空闲区常常也非常大,于是还能装下一个较大的新程式。
      最坏适应算法和最佳适应算法的排序正好相反,他的队列指针总是指向最大的空闲区,在进行分配时,总是从最大的空闲区开始查寻。
      该算法克服了最佳适应算法留下的许多小的碎片的不足,但保留大的空闲区的可能性减小了,而且空闲区回收也和最佳适应算法相同复杂。
    展开全文
  • 操作系统中的内存管理习题,请分析和比较连续分配、分页和分段三种存储分配机制的优缺点
  • 分页,缓解内存压力,设计最复杂(粒度最小),无论数据有多少,都只能按照页面大小分配,造成浪费。 分段,程序员在编程和使用上多方面的要求(方便、共享、保护、链接、内存动态增长),缺点,无法利用碎片,必须...

    连续,设计简单,直接寻址,效率高。缺点:内存利用效率最低,有内部碎片。
    分页,缓解内存压力,设计最复杂(粒度最小),无论数据有多少,都只能按照页面大小分配,造成浪费。
    分段,程序员在编程和使用上多方面的要求(方便、共享、保护、链接、内存动态增长),缺点,无法利用碎片,必须搬移内存,造成性能损失。


    一、分区存储管理

      1、固定分区:

      优点:易于实现、开销小

      缺点:存在内部碎片(分区内未被利用空间)、分区总数固定,限制了并发执行的程序数量。

      2、动态创建分区:按照程序申请要求分配。

      优点: 没有内部碎片

      缺点:有外部碎片(难以利用的小空闲分区)

    二、页式存储管理

      优点: 没有外部碎片,最后一页可能有内碎片但不大;程序不必连续存放;便于改变程序占用空间大小。

      缺点: 程序仍需要全部装入内存(基本页式存储管理)。

    分页和分段系统有许多相似之处。比如,两者都采用离散分配方式,且都要通过地址映射机构来实现地址变换。但在概念上两者完全不同,主要表现在下述三个方面。 

    页大小固定,段大小不固定。

    页是一维的,段是二维的;



    (1) 页是信息的物理单位,分页是为了实现非连续分配,以便解决内存碎片问题, 提高内存的利用率

    或者说,分页仅仅是由于系统管理的需要而不是用户的需要。段则是信息的逻辑单位,分段的目的是为了能更好地满足用户的需要。 

    (2) 页的大小固定且由系统决定,由系统把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而在系统中只能有一种大小的页面;而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时,根据信息的性质来划分。

    (3) 分页的作业地址空间是一维的,即单一的线性地址空间(一对一,程序员只需利用一个记忆符,即可表示一个地址;而分段的作业地址空间则是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址(一对多)
     

    展开全文
  • 缺点内存利用效率最低,有内部碎片。分页,设计最复杂,容易产生外部碎片,无论数据有多少,都只能按照页面大小分配,造成浪费。分段,程序员在编程和使用上多方面的要求,缺点,无法利用碎片,必须搬移内存,造成...

    连续,设计简单,直接寻址,效率高。缺点:内存利用效率最低,有部碎片。
    分页设计最复杂,容易产生部碎片,无论数据有多少,都只能按照页面大小分配,造成浪费。
    分段程序员在编程和使用上多方面的要求,缺点,无法利用碎片,必须搬移内存,造成性能损失。

    一、分区存储管理

      1、固定分区:

      优点:易于实现、开销小

      缺点:存在内部碎片(分区内未被利用空间)、分区总数固定,限制了并发执行的程序数量。

      2、动态创建分区:按照程序申请要求分配。

      优点: 没有内部碎片

      缺点:有外部碎片(难以利用的小空闲分区)

      二、页式存储管理

      优点: 没有外部碎片,最后一页可能有内碎片但不大;程序不必连续存放;便于改变程序占用空间大小。

      缺点: 程序仍需要全部装入内存。

    分页和分段系统有许多相似之处。比如,两者都采用离散分配方式,且都要通过地址映射机构来实现地址变换。但在概念上两者完全不同,主要表现在下述三个方面。 

    (1) 页是信息的物理单位,分页是为了实现非连续分配,以便解决内存碎片问题提高内存的利用率。或者说,分页仅仅是由于系统管理的需要而不是用户的需要。段则是信息的逻辑单位分段的目的是为了能更好地满足用户的需要。 

    (2) 页的大小固定且由系统决定,由系统把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而在系统中只能有一种大小的页面;而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时,根据信息的性质来划分。

    (3) 分页的作业地址空间是一维的,即单一的线性地址空间,程序员只需利用一个记忆符,即可表示一个地址;而分段的作业地址空间则是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址

    展开全文
  • 内存连续分配采用的几种算法

    千次阅读 2018-06-15 10:14:24
    内存分配 连续分配方式,是指为一个用户程序分配一个连续的内存空间。它主要包括单一连续分配、固定分区分配和动态分区分配。单一连续分配 内存在此方式下分为系统区和用户区,系统区仅提供给操作系统使用,通常在...

    常见内存分配算法及优缺点如下:

      (1首次适应算法。使用该算法进行内存分配时,从空闲分区链首开始查找,直至找到一个能满足其大小需求的空闲分区为止。然后再按照作业的大小,从该分区中划出一块内存分配给请求者,余下的空闲分区仍留在空闲分区链中。
      该算法倾向于使用内存中低地址部分的空闲分区,在高地址部分的空闲分区非常少被利用,从而保留了高地址部分的大空闲区。显然为以后到达的大作业分配大的内存空间创造了条件。缺点在于低址部分不断被划分,留下许多难以利用、非常小的空闲区,而每次查找又都从低址部分开始,这无疑会增加查找的开销。
      (2循环首次适应算法。该算法是由首次适应算法演变而成的。在为进程分配内存空间时,不再每次从链首开始查找,而是从上次找到的空闲分区开始查找,直至找到一个能满足需求的空闲分区,并从中划出一块来分给作业。该算法能使空闲中的内存分区分布得更加均匀,缺点是将会缺乏大的空闲分区。
      (3最佳适应算法。该算法总是把既能满足需求,又是最小的空闲分区分配给作业。
      为了加速查找,该算法需求将所有的空闲区按其大小排序后,以递增顺序形成一个空白链。这样每次找到的第一个满足需求的空闲区,必然是最优的。孤立地看,该算法似乎是最优的,但事实上并不一定。因为每次分配后剩余的空间一定是最小的,缺点是在存储器中将留下许多难以利用的小空闲区。同时每次分配后必须重新排序,这也带来了一定的开销。
      (4最差适应算法。最差适应算法中,该算法按大小递减的顺序形成空闲区链,分配时直接从空闲区链的第一个空闲分区中分配(不能满足需要则不分配)。非常显然,如果第一个空闲分区不能满足,那么再没有空闲分区能满足需要。这种分配方法初看起来不太合理,但他也有非常强的直观吸引力:在大空闲区中放入程式后,剩下的空闲区常常也非常大,于是还能装下一个较大的新程式。
      最坏适应算法和最佳适应算法的排序正好相反,他的队列指针总是指向最大的空闲区,在进行分配时,总是从最大的空闲区开始查寻。
      该算法克服了最佳适应算法留下的许多小的碎片的不足,但缺点是保留大的空闲区的可能性减小了,而且空闲区回收也和最佳适应算法相同复杂。


    展开全文
  • 内存管理
  • 连续分配方式,是指为一个用户程序分配一个连续的内存空间。它主要包括单一连续分配、固定分区分配和动态分区分配。 单一连续分配 内存在此方式下分为系统区和用户区,系统区仅提供给操作系统使用,通常在低...
  • 连续分配方式(交换技术),是指为一个用户程序分配一个连续的内存空间。它主要包括单一连续分配、固定分区分配和动态分区分配。 注意:此处的连续内存分配是将整个进程的数据整块加载到内存之中。 1.单一连续分配...
  • 试比较它们的优缺点。 分为两大类,连续分配管理方式和非连续分配管理方式(下次更新后半部分) 一、 连续分配管理方式 1、 单一连续分配方式 单一连续分配方式将内存空间分为系统区和用户区。内存中永远只有一道...
  • 最近查清了线上内存占用过大和swap使用频繁的原因:由于linux使用的glibc使用内存池技术导致的堆外内存暴增,基于这个过程中学习和了解了glbic的内存管理原理,和大家分享,如有错误请及时指出。 一、应用内存分布 ...
  • 一、连续分配方式 1. 单一连续分配(过时) 整个内存只能有一个程序。 内存被分为 系统区和用户区,系统区用于装操作系统的相关数据,用户区用于装程序。由于整个用户区只能有一个程序,因此内存利用率极差。 ...
  • 数组的优缺点

    千次阅读 2019-11-18 20:57:01
    一、数组的优缺点: (一)优点: 1、按照索引查询元素速度快; 2、能存储大量数据; 3、按照索引遍历数组方便; 4、数组定义简单,而且访问很方便; 5、可以随机访问其中的元素。 (二)缺点: 1、根据内容查找元素...
  • WINDOWS内存三种管理方式及优缺点

    千次阅读 2013-09-04 09:11:29
    WINDOWS内存管理方式综述 WINDOWS内存管理方式主要分为:段式管理、页式管理、段页式管理。 页式管理:页式管理的基本原理将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分...
  • windows内存管理的几种方式及优缺点

    千次阅读 2014-05-18 00:21:22
    单对界地址存储管理(单一连续区域存储管理):  a.内存空间划分 : 内存空间采用动态异常分区方法,整个内存被动态的划分为若干个长度各异的区域。  b.进程空间划分 : 一个进程空间有连续的区域构成,假设...
  • c/c++深入篇之内存分配内存对齐的探讨

    千次阅读 多人点赞 2014-12-15 17:55:13
    c/c++深入篇之内存分配内存对齐的探讨 ...本文对内存分配中的分配空间类型、作用、方法、适用范围、优缺点以及内存对齐问题中的对齐原因、对齐规则等进行了详细的说明,并结合大量c语言代码进行阐述与分析。
  • 内存分配方式

    千次阅读 2018-05-05 20:14:42
    内存分配方式有两种:连续内存分配方式和离散内存分配方式。不同的分配方式又有不同的分配算法。①连续内存分配方式1)固定分区分配内存划分成若干个固定大小的块。将程序装入块中即可。内存划分成各个块之后,块...
  • 顺序表和链表的优缺点比较 顺序表(静态分配) 优点: (1).结构简单,易于理解; (2).存储空间连续,方便随机访问表中的每个元素,时间复杂度为O(1); (3).不需要再为表示节点间的逻辑关系而增加额外的存储空间; (4)....
  • vector优缺点说明

    2020-06-11 16:10:55
    #vector底层实现原理说明 ...访问元素方便,因为内存连续的 ##缺点 插入和删除效率低,复杂度高f(n) 当元素超出容量时,重新分配内存空间,扩充一倍。元素拷贝到新空间,释放原来的内存,原来的迭代器失效。 ...
  • 数组与链表的优缺点

    千次阅读 2013-10-11 22:25:15
    数组与链表的优缺点 数组,在内存上给出了连续的空间.链表,内存地址上可以是不连续的,每个链表的节点包括原来的内存和下一个节点的信息(单向的一个,双向链表的话,会有两个).  数组优于链表的:  1.内存空间...
  • 顺序存储结构和链式存储结构的优缺点比较

    万次阅读 多人点赞 2018-10-09 17:45:34
    优缺点 顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一);要求内存中可用存储单元的地址必须是连续的。 优点:存储密度大(=1),存储空间利用率高。 缺点:插入或删除元素时不方便。 链式存储...
  • 数组的空间必须是连续的,这就造成数组在内存分配空间时必须找到一块连续内存空间。所以数组不可能定义得太大,因为内存中不可能有那么多大的连续内存空间,而解决这个问题的方法就是使用链表。 ...
  • 各自优缺点: vector: 优点: 随机存取,即[]操作和vector.at() 动态操作,push_back()与pop_back() 自动调整内存,节省空间 缺点: 实现插入与删除操作效率低 只能在尾部插入与删除,在头部插入与删除消耗时间规模...
  • 静态链表与动态两边的优缺点

    千次阅读 2020-05-09 20:43:35
    没有解决连续存储分配(数组)带来的表长难以确定的问题。失去了顺序存储结构随机存取的特性。 动态链表的优缺点 优点 插入删除速度快 内存利用率高,不会浪费内存 大小没有固定,拓展很灵活。 缺点 不能随机...
  • 顺序表和链表存储的优缺点

    万次阅读 2015-08-07 11:31:06
    顺序表和链表存储的优缺点 1.顺序表存储  原理:顺序表存储是将数据元素放到一块连续内存存储空间,存取效率高,速度快。但是不可以动态增加长度  优点:存取速度高效,通过下标来直接存储  缺点:1.插入和...
  • 数组和链表的优缺点

    2020-05-13 10:28:07
    数组:一次性分配一块连续的存储区域。...链表:不一定一次性分配一块连续的存储区域,分配内存比较灵活。 优点: ①不需要一块连续的存储内存。 ②删除和插入某个元素效率低。 缺点: 随机访问元素效率低。 ...
  • Vector 简介和优缺点

    千次阅读 2018-07-31 16:35:18
     在内存分配一块连续内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacity()函数返回的大小,当超过此分配的空间时再整体重新放分配一块...
  • 数组在内存分配连续空间,多次分配释放后有内存碎片,但是向量是动态增长的,不是连续的,所以不会出现内存碎片 向量的迭代器能防止出现类似数组越界的情况 数据不允许拷贝和赋值,既不能将数组的内容拷贝到其他...
  • redis和mongodb各自的优缺点,怎么选择? Redis是神马? Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value非关系型数据库,并提供多种语言的API。redis是一个key-value存储...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,146
精华内容 9,658
关键字:

内存连续分配的优缺点