0
牛客010428号
1、 单一连续分配方式 单一连续分配方式将内存空间分为系统区和用户区。内存中永远只有一道程序。无需内存保护。 适用于单用户、单任务的操作系统。 优点: 实现简单、无外部碎片,可以采用覆盖基础进行扩充内存。 缺点: 不适用于内存中同时有多道程序的现代操作系统,有内部碎片且存储器的利用率较低。 2、 固定分区的分配方式 1)分区大小相等 2)分区大小不相等 优点: 便于内存分配和管理 缺点: 程序较大时,无法放入任何一个分区时,该程序不能运行;主存利用率低,会出现内部碎片,但没有外部碎片。 3、 动态分区分配方式 优点: 用户程序装入内存时,根据进程所需要的大小动态建立分区,使得分区大小刚好符合进行需要。 缺点: 在一开始,动态分区的分配效果是好的,但是随着内存进程的需要和时间的推移,内存中会产生许多外部碎片。 解决内存碎片的可以用紧凑技术将多个细小碎片合并成一个较大的外部碎片从而解决外部碎片问题。如何做呢?就有如下的常见内存分配策略。 (1)首次适应算法(First Fit) 将空闲分区以地址递增的次序将他们排序并链接在一起,当需要分配内存时,首次查找是从头按照顺序进行查找,将第一个能满足该进程所需大小的空闲分区分配给它。 (2)循环首次适应算法(Next Fit) 将空闲区域地址按照递增的次序将排序并连接在一起,当需要分配内存时,首次查找时从头按照顺序查找,将第一个能满足该进程所需的大小的分配空间分配给该进程;当不是首次查找时,从上次查找结束的位置开始继续查找,注意分区循环首次适应算法与首次适应算法的不同之处。 (3)最佳适应算法(Best Fit) 本算法是将空闲分区按照其内存大小递增的顺序,将分区按序链接在一起。当需要分配内存是从头开始查找,将第一个满足该进程需要的空闲分区分配给它。 (4)最坏适应算法(Worst Fit) 本算法是将空闲分区按照其内存大小递减的顺序,将分区按序连接在一起。当需要分配内存是从头开始查找,将第一个满足该进程需要的空闲分区分配给它。 上述三种内存分区管理方法都有一个共同的特点那就是作业或者是叫用户进程在主存中都是连续存放的。 最佳适应算法与最坏使用算法的相异或相同 相同点: 他们都是按分区容量大小进行排序,每次都是从头开始查询,将第一个满足进程需要的空闲分区分配给请求进程。 不同点: 最佳适应算法:按照容量大小从小到大顺序进行链接 最坏适应算法:按照容量大小从大到小的顺序进行链接的,将空闲分区中最大的分区分配给请求分配内存的进程。 最佳/最坏适应算法与首次/循环首次适应算法 首次/循环首次适应算法:按照地址递增的次序进行排列并链接到一起的 最佳/最坏适应算法:按照容量大小递增/递减的次序排列并链接到一起 查找速度、释放速度、空闲区利用这三个方面 查找(搜索)速度:最先适应算法最佳 释放(回收)速度:最先适应算法最佳 空闲区利用:最佳适应算法最佳 从搜索速度上看最先适应算法拥有最佳性能,回收过程最先适应算法也是最佳,最先适应算法的另一个优点是尽可能的利用了低地址空间从而保证高地址有较大的空闲区来放置要求内存较多的进程或作业。最坏适应算法是基于不留下碎片空闲区出发,选择最大空闲区满足用户需求,按如上方法分配后的剩余部分仍能再分配。 参考资料:计算机操作系统 ———————————————— 版权声明:本文为CSDN博主「JemmaX_666」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_45868623/article/details/105624252
发表于 2021-05-09 16:40:34
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!