最佳适应算法

从全部空闲区中找出能满足作业要求的,且大小最小的空闲分区,这种方法能使碎片尽量小。

问题描述

  • Given five memory partitions of 100 KB, 500 KB, 200 KB, 300 KB, and 600 KB (in order), how would each of the first-fit, best-fit, and worst-fit algorithms place processes of 212 KB, 417 KB, 112 KB, and 426 KB (in order)? Which algorithm makes the most efficient use of memory?

问题解决

  • 为212k分配空间:

    找到第一个跟212k大小最接近的空闲区找到第四个空闲区300>212k,剩余88k空闲区
    复制代码
  • 为417k分配空间:

    找到第一个跟417k大小最接近的空闲区找到第二个空闲区500>417,剩余83k空闲区
    复制代码
  • 为112k分配空间:

    找到第一个跟112k大小最接近的空闲区找到第三个空闲区200>112k,剩余88k空闲区
    复制代码
  • 为426k分配空间:

    找到第一个跟426大小最接近的空闲区找到第五个空闲区600k>426,剩余74k空闲区

code

#include<stdio.h>
#include<stdlib.h>#define N 5
#define M 5int buf[N]={100,500,200,300,600};
int need_dis[M]={212,417,112,426,200};
typedef struct LNode *List;struct LNode{int order;int buffer;LNode *next;
};List list_init(){List head,p,m;int i;for(i=0;i<N;i++){if(i==0){m=(LNode*)malloc(sizeof(struct LNode));if(!m){printf("Error:memory!\n");exit(0);}m->order=i;m->buffer=buf[i];m->next=NULL;head=p=m;}else{m=(LNode*)malloc(sizeof(struct LNode));if(!m){printf("Error:memory wrong\n");exit(0);}m->order=i;m->buffer=buf[i];m->next=NULL;p->next=m;p=p->next;}}return head;
}void best_fit(List head){int i,j,k;int min;int order;List p;for(i=0;i<M;i++){min=-1;order=-1;p=head;while(p){if(p->buffer>=need_dis[i]){if(min<0){min=p->buffer-need_dis[i];order=p->order;}else{if(min>p->buffer-need_dis[i]){min=p->buffer-need_dis[i];order=p->order;}}}p=p->next;} if(order==-1){printf("\n");printf("分配完成%d个\n",i);printf("第%d个进程失败\n",i+1);printf("\n");break; }else{p=head;while(p){if(p->order==order)p->buffer-=need_dis[i];p=p->next;}}}
}void print(List p){while(p){printf("%d:%d\n",p->order,p->buffer);p=p->next;}
}int main(){List p;p=list_init();printf("分配内存前\n"); print(p);best_fit(p);printf("分配内存后\n");print(p);return 0;
} 

最佳适应算法模拟内存分配相关推荐

  1. 动态分区最佳适应算法c语言,使用最佳适应算法对内存实现模拟动态分区管理...

    摘要: 内存动态分区管理的算法是操作系统课程中一个重要内容,理解和学习不同的分区算法能够为深入学习操作系统等知识提供一定的理论知识和实践依据.本文采用C语言程序设计出最佳适应算法来模拟计算机内存分区管 ...

  2. 基于顺序搜索的动态分区分配算法模拟内存动态分配--最佳适应算法(best fit,BF)

    BF算法.男朋友算法,哈哈 要实现动态分区分配,需要考虑三个方面的问题.分别是数据结构.分区分配算法.分区的分配与回收操作. 首数据结构 这里我们使用的是空闲分区链,采用双向链表表示空闲分区. 具体实 ...

  3. c模拟内存分配算法(首次适应算法,最佳适应算法,最坏适应算法)

    #include<bits/stdc++.h> using namespace std; /*定义内存的大小为100*/ #define MEMSIZE 100 /*如果小于此值,将不再分 ...

  4. 操作系统C语言模拟内存分配算法的模拟实现

    使用一个一维数组来模拟内存储空间,建立内存块来记录内存分配使用情况,通过随机产生进程及其所需要的内存来模拟真实的进程.通过给进程分配内存及回收来实现对动态不等长存储管理方法. 代码 #include ...

  5. 《深入理解java虚拟机》笔记2——GC算法与内存分配策略

    说起垃圾收集(Garbage Collection, GC),想必大家都不陌生,它是JVM实现里非常重要的一环,JVM成熟的内存动态分配与回收技术使Java(当然还有其他运行在JVM上的语言,如Sca ...

  6. 深入理解JVM(2)——GC算法与内存分配策略

    说起垃圾收集(Garbage Collection, GC),想必大家都不陌生,它是JVM实现里非常重要的一环,JVM成熟的内存动态分配与回收技术使Java(当然还有其他运行在JVM上的语言,如Sca ...

  7. Java虚拟机-第二篇-GC算法与内存分配策略

    2019独角兽企业重金招聘Python工程师标准>>> GC引入 在Java的运行时数据区中,程序计数器.虚拟机栈.本地方法栈三个区域都是线程私有的,随线程而生,随线程而灭,在方法结 ...

  8. c语言紧凑算法的内存分配,C语言(第二章.1)算法与数据结构A.ppt

    C语言课件(第二章.1)算法与数据结构A资料 课程设置目的 本课程是非计算机专业学生的技术基础课,通过本课程的学习,应使学生掌握传统的结构化程序设计的一般方法,以C为语言基础,培养学生严谨的程序设计思 ...

  9. Linux内存分配与回收——伙伴算法

    目录 简介 背景 内存管理机制 当前存在的问题 伙伴算法 算法原理 内存分配 内存回收 优缺点分析 参考 简介 在Linux系统中,内存的分配与回收速率直接影响系统的存取效率.当内核频繁请求和释放不同 ...

最新文章

  1. 计算机科学基础第二版答案,浙江大学计算机科学基础课后习题参考答案new-PXY.doc...
  2. HDU 1166 敌兵布阵(线段树单点加区间查询)
  3. 解决 Windows 和 Ubuntu 时间不一致的问题--转载
  4. 编写Eclipse插件教程–第1部分
  5. Android 倒计时——Timer和CountDownTimer的使用,实现启动,暂停,继续,重复,重设时长以及启动service后台倒计时
  6. 有多少是长大了以后才明白的道理?
  7. java在数组中放入随机数_如何在Java中随机播放数组
  8. vue routes路由
  9. 51nod1003阶乘后边0的数量
  10. 希捷硬盘固件修复工具_希捷3.5寸500G台式机硬盘磁头损坏后的数据恢复
  11. 用html设计logo,网页设计中的logo设计方法
  12. asp二进制mysql_asp 二进制保存数据库
  13. 关于计算机的网络小说,“80后”从维熙:熟练电脑写作 关注网络文学
  14. 使用两个FBO互相绑定实现PS液化效果
  15. 饭谈:盘点六种错误的技术问题提问
  16. CSDN怎么改变字体颜色
  17. 烽火戏诸侯 《剑来》 最新章节下载阅读,mobi、amz3、epub格式
  18. 手机软件的测试主要有哪些方面的测试,性能测试用什么去测试好
  19. 往届学生软件工程作业参考-需求分析
  20. 服务端没有 listen,客户端发起连接建立,会发生什么?

热门文章

  1. 网络损伤测试模拟软件,网络损伤仿真系统的设计及实现
  2. 第四范式入围Gartner新兴技术与趋势影响力雷达全球代表厂商
  3. 第四范式团队KDD Cup世界冠军方案详解:解密共享出行场景中的优化问题
  4. 【Python】详解Python模块、包、库
  5. 【深度学习】SETR:基于视觉 Transformer 的语义分割模型
  6. 【NLP】word2vec中的数学模型
  7. 【NLP】用code2vec、glow和spaCy进行词嵌入
  8. 【机器学习基础】数学推导+纯Python实现机器学习算法19:PCA降维
  9. 【深度学习】深入浅出卷积神经网络及实现!
  10. 收藏!!如何 Get 机器学习必备的算法技能? | 逻辑回归