实验二——动态高优先权优先调度算法-王子瑜.doc

实验二——动态高优先权优先调度算法-王子瑜.doc

ID:55915303

大小:159.50 KB

页数:18页

时间:2020-06-14

实验二——动态高优先权优先调度算法-王子瑜.doc_第1页
实验二——动态高优先权优先调度算法-王子瑜.doc_第2页
实验二——动态高优先权优先调度算法-王子瑜.doc_第3页
实验二——动态高优先权优先调度算法-王子瑜.doc_第4页
实验二——动态高优先权优先调度算法-王子瑜.doc_第5页
资源描述:

《实验二——动态高优先权优先调度算法-王子瑜.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《操作系统》课程实验报告实验名称:动态分区存储管理姓名:王子瑜学号:541413450235地点:四教楼指导老师:放美专业班级:软件工程(测试技术14-02)实验成绩:一、实验要求:熟悉并掌握动态分区分配的各种算法。熟悉并掌握动态分区中分区回收的各种情况,并能够实现分区合并。二、实验容:用高级语言模拟实现动态分区存储管理,要求:1、分区分配算法至少实现首次适应算法、最佳适应算法和最坏适应算法中的至少一种。熟悉并掌握各种算法的空闲区组织方式。2、分区的初始化——可以由用户输入初始分区的大小。(初始化后只有一个空闲分区,起始地址为0,大小是用户输入的大小)3、分区的动态分配过

2、程:由用户输入作业号和作业的大小,实现分区过程。4、分区的回收:用户输入作业号,实现分区回收,同时,分区的合并要体现出来。(注意:不存在的作业号要给出错误提示!)5、分区的显示:任何时刻,可以查看当前存的情况(起始地址是什么,大小多大的分区时空闲的,或者占用的,能够显示出来)要求考虑:(1)存空间不足的情况,要有相应的显示;(2)作业不能同名,但是删除后可以再用这个名字;(3)作业空间回收是输入作业名,回收相应的空间,如果这个作业名不存在,也要有相应的提示。三、实验代码#include#include#defineSIZE640//存

3、初始大小#defineMINSIZE5//碎片最小值enumSTATE{Free,Busy};structsubAreaNode{intaddr;//起始地址intsize;//分区大小inttaskId;//作业号STATEstate;//分区状态subAreaNode*pre;//分区前向指针subAreaNode*nxt;//分区后向指针}subHead;//初始化空闲分区链voidintSubArea(){//分配初始分区存subAreaNode*fir=(subAreaNode*)malloc(sizeof(subAreaNode));//给首个分区赋值fir-

4、>addr=0;fir->size=SIZE;fir->state=Free;fir->taskId=-1;fir->pre=&subHead;fir->nxt=NULL;//初始化分区头部信息subHead.pre=NULL;subHead.nxt=fir;}//首次适应算法intfirstFit(inttaskId,intsize){subAreaNode*p=subHead.nxt;while(p!=NULL){if(p->state==Free&&p->size>=size){//找到要分配的空闲分区if(p->size-size<=MINSIZE){//整块分配

5、p->state=Busy;p->taskId=taskId;}else{//分配大小为size的区间subAreaNode*node=(subAreaNode*)malloc(sizeof(subAreaNode));node->addr=p->addr+size;node->size=p->size-size;node->state=Free;node->taskId=-1;//修改分区链节点指针node->pre=p;node->nxt=p->nxt;if(p->nxt!=NULL){p->nxt->pre=node;}p->nxt=node;//分配空闲区间p->

6、size=size;p->state=Busy;p->taskId=taskId;}printf("存分配成功!");return1;}p=p->nxt;}printf("找不到合适的存分区,分配失败...");return0;}//最佳适应算法intbestFit(inttaskId,intsize){subAreaNode*tar=NULL;inttarSize=SIZE+1;subAreaNode*p=subHead.nxt;while(p!=NULL){//寻找最佳空闲区间if(p->state==Free&&p->size>=size&&p->size<

7、tarSize){tar=p;tarSize=p->size;}p=p->nxt;}if(tar!=NULL){//找到要分配的空闲分区if(tar->size-size<=MINSIZE){//整块分配tar->state=Busy;tar->taskId=taskId;}else{//分配大小为size的区间subAreaNode*node=(subAreaNode*)malloc(sizeof(subAreaNode));node->addr=tar->addr+size;node->size=tar->size-siz

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。