欢迎来到天天文库
浏览记录
ID:29413029
大小:474.15 KB
页数:17页
时间:2018-12-19
《操作系统实验_首次适应算法与循环首次适应算法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、学号P71514032专业计算机科学与技术姓名实验日期2017.11.16教师签字成绩实验报告【实验名称】首次适应算法和循环首次适应算法【实验目的】学会主存空间分配与回收的基本方法首次适应算法和循环首次适应算法。【实验原理】理解在连续分区动态的存储管理方式下,如何实现贮存空间的分配与回收。采用可变式分区管理,使用最佳适应算法实现主存空间的分配与回收。采用可变式分区管理,使用最坏适应算法实现主存空间的分配与回收。数据结构:1、boolROM[N];//定义主存信息,如果内存被占用,则标记为1,否则标记为0,设置内存单元为10242、pcbnum[20];//定义作业数组,最
2、大支持20个作业3、typedefstructPcb//定义作业结构体,包括名称,开始时间,大小,是否执行状态{charname[10];intstart;intsize;intstate=0;}pcb;typedefstructFree_rom//空闲区结构体{intnum;intstart;intend;intspace;}Free_room;Free_romfree_rom[100];//设置空闲区数组为100个主要函数voidinit();//初始化信息,包括初始化内存信息,和初始化作业队列voidinsert_pcb1(pcb&a);插入作业函数,首次适应算法,
3、如果有适合的就插入,无合适输出‘插入失败’voidinsert_pcb1(pcb&a);插入作业函数,循环首次适应算法,如果有适合的就插入,无合适输出‘插入失败’voidDelete(pcb&a)//删除作业信息,包括修改内存状态修改作业状态并对作业进行初始化voidshow();//显示信息voidfind_free_rom()//寻找空闲区算法流程图首次适应算法循环首次适应算法程序代码及截图:#include#include#defineN1024boolROM[N];//设置内存块intp=0;//循环首次使用需要标记当前的空闲
4、区块typedefstructPcb//作业数据结构{charname[10];intstart;intsize;intstate=0;}pcb;intfree_rom_counter=0;pcbnum[20];//作业队列typedefstructFree_rom//空闲区结构体{intnum;intstart;intend;intspace;}Free_room;Free_romfree_rom[100];//设置空闲区数组为100个voidfind_free_rom()//寻找空闲区{free_rom_counter=0;inti,j,p;for(i=0;i5、++)if(ROM[i]==0){p=i;for(j=i;j6、-1]==0)//对最后一个内存进行特殊操作{free_rom_counter++;free_rom[free_rom_counter].num=free_rom_counter;//对空闲区进行处理free_rom[free_rom_counter].start=p;free_rom[free_rom_counter].end=j-1;free_rom[free_rom_counter].space=j-p;}}}voidinit()//初始化{for(inti=0;i7、小tt结束地址tt");for(inti=1;i<=free_rom_counter;i++)printf("%dtt%dttt%dtt%dtt",free_rom[i].num,free_rom[i].start,free_rom[i].space,free_rom[i].end);}voidinsert_pcb1(pcb&a)//首次适应算法来实现作业调度{inti,j,k;for(i=0;i
5、++)if(ROM[i]==0){p=i;for(j=i;j6、-1]==0)//对最后一个内存进行特殊操作{free_rom_counter++;free_rom[free_rom_counter].num=free_rom_counter;//对空闲区进行处理free_rom[free_rom_counter].start=p;free_rom[free_rom_counter].end=j-1;free_rom[free_rom_counter].space=j-p;}}}voidinit()//初始化{for(inti=0;i7、小tt结束地址tt");for(inti=1;i<=free_rom_counter;i++)printf("%dtt%dttt%dtt%dtt",free_rom[i].num,free_rom[i].start,free_rom[i].space,free_rom[i].end);}voidinsert_pcb1(pcb&a)//首次适应算法来实现作业调度{inti,j,k;for(i=0;i
6、-1]==0)//对最后一个内存进行特殊操作{free_rom_counter++;free_rom[free_rom_counter].num=free_rom_counter;//对空闲区进行处理free_rom[free_rom_counter].start=p;free_rom[free_rom_counter].end=j-1;free_rom[free_rom_counter].space=j-p;}}}voidinit()//初始化{for(inti=0;i7、小tt结束地址tt");for(inti=1;i<=free_rom_counter;i++)printf("%dtt%dttt%dtt%dtt",free_rom[i].num,free_rom[i].start,free_rom[i].space,free_rom[i].end);}voidinsert_pcb1(pcb&a)//首次适应算法来实现作业调度{inti,j,k;for(i=0;i
7、小tt结束地址tt");for(inti=1;i<=free_rom_counter;i++)printf("%dtt%dttt%dtt%dtt",free_rom[i].num,free_rom[i].start,free_rom[i].space,free_rom[i].end);}voidinsert_pcb1(pcb&a)//首次适应算法来实现作业调度{inti,j,k;for(i=0;i
此文档下载收益归作者所有