版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编写并调试一个多道程序系统的作业调度模拟程序。作业调度算法:采用基于优先级的作业调度。可以参考课本中的例子自行设计。#include<stdio.h>#include<stdlib.h>#definegetjch(type)(type*)malloc(sizeof(type))#defineN10structjcb{/*定义作业控制块PCB*/ charname[10]; floatneedtime;/*运行时间*/ floatarrivetime;/*提交时刻*/ floatstorage[N];/*系统资源*/ structjcb*link;}*ready=NULL,*pb=NULL,*p;typedefstructjcbJCB;floatTc,Ti,Wi,T=0;/*完成时刻,周转时间,带权周转时间,时间量*/floatTiSum=0,WiSum=0;/*平均周转时间,带权a平均周转时间*/floatsource[N];intn;voidinput();/*输入作业信息*/intspace();/*返回就绪队列中作业的数目*/voidfcfs();/*先来先服务算法*/voiddisp(JCB*pr);/*显示相应的作业*/voidrunning();/*运行作业组*/voiddestroy();/*撤销作业*/voidinput()/*建立作业控制块函数*/{ inti,k,num; printf("请输入所拥有的资源种类:"); scanf("%d",&n); printf("输入系统所拥有资源数:\n"); for(i=0;i<n;i++) { printf("资源[%d]:",i); scanf("%f",&source[i]); } printf("\n输入作业数量:"); scanf("%d",&num); for(i=0;i<num;i++) { printf("\n作业号[%d]:\n",i); p=getjch(JCB); printf("输入作业名:"); scanf("%s",p->name); printf("输入提交时间:"); scanf("%f",&p->arrivetime); printf("输入运行时间:"); scanf("%f",&p->needtime); printf("输入所需资源数:\n"); for(k=0;k<n;k++) { printf("资源[%d]:",i); scanf("%f",&p->storage[k]); } printf("\n"); p->link=NULL; fcfs(); }}intspace(){ intl=0; JCB*pr=ready; while(pr!=NULL) { l++; pr=pr->link; } return(l);}voiddisp(JCB*pr)/*建立作业显示函数,用于显示当前作业*/{ inti; printf("\n%6s\t%6s\t%6s\t","作业名","运行时间","提交时刻"); for(i=0;i<n;i++) printf("资源[%d]\t",i); printf("\n%6s\t%6.2f\t\t%6.2f\t",pr->name,pr->needtime,pr->arrivetime); for(i=0;i<n;i++) printf("\t%6.2f",pr->storage[i]); printf("\n"); }voiddestroy()/*建立作业撤消函数(作业运行结束,撤消作业)*/{ free(p);}voidcheck(){ JCB*first,*fir,*p; intflag=0,i,test=0; first=pb; while(first&&(T>=first->arrivetime)&&(flag==0)) { for(i=0;i<n;i++) { if(source[i]>=first->storage[i]) source[i]=source[i]-first->storage[i]; else test=1; } if(test==0) { p=first; first=first->link; p->link=NULL; if(ready==NULL) ready=p; else { fir=ready; while(fir->link!=NULL) { fir=fir->link; } fir->link=p; } } else flag=1; } pb=first;}voidfcfs(){ JCB*first,*second; intins=0; if((pb==NULL)||(p->arrivetime<pb->arrivetime)) { p->link=pb; pb=p; } else { first=pb; second=first->link; while(second!=NULL) { if(p->arrivetime<second->arrivetime) { p->link=second; second=NULL; first->link=p; ins=1; } else { first=first->link; second=second->link; } } if(ins==0) first->link=p; }}voidrunning(){ JCB*pr; inti; printf("正在运行的作业是:%s\n",p->name); disp(p); if(ready!=NULL) { printf("就绪队列如下:\n"); pr=ready; while(pr!=NULL) { disp(pr); pr=pr->link; } } else printf("就绪队列为空队列!\n"); if(pb!=NULL) { printf("后备队列如下:\n"); pr=pb; while(pr!=NULL) { disp(pr); pr=pr->link; } } else printf("后备队列为空队列!\n"); printf("作业%s的开始运行时刻T:%4.2f\n",p->name,T); Tc=T+p->needtime; T=Tc; Ti=Tc-p->arrivetime; Wi=Ti/(p->needtime); for(i=0;i<n;i++) source[i]=source[i]+p->storage[i]; printf("完成时刻Tc:%4.2f\n",Tc); printf("周转时间Ti:%4.2f\n",Ti); printf("带权周转时间Wi:%4.2f\n",Wi); TiSum+=Ti; WiSum+=Wi; destroy();}main()//主函数{ intlen; charch; input(); T=pb->arrivetime; check(); len=space(); while((len!=0)&&(ready!=NULL)) { system("pause"); p=ready; ready=p->link; p->link=NULL; running(); if(pb!=NULL) { if(ready==NULL) { if(T<pb->
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《语文知识体系》课件
- 二零二四年度水利工程混凝土供应合同3篇
- 二零二四年度研发成果转化协议5篇
- 民间借贷担保合同书2024年范本
- 房屋院落租赁合同
- 2024版个体工商户加盟协议书2篇
- 2024年度云计算服务与数据中心运营协议
- 基于二零二四年度市场分析的区域营销战略合同
- 合作研发项目协议书版
- 《诉说亲情故事》课件
- 河南开放大学法学本科《法律社会学》作业练习1-3+终考试题及答案
- 停车场硬化施工方案及管理措施
- 2024年国家焊工职业技能理论考试题库(含答案)
- 职业技能培训机构教学管理规范
- 2024年小学体育新课标测评考试题库(含答案)
- 部编 2024版历史七年级上册期末(全册)复习卷(后附答案及解析)
- GB 15740-2024汽车防盗装置
- 《篮球移动技术 行进间传球》教案(共三篇)
- 眼镜验光员(二级)技能鉴定考试题及答案
- 期中试卷(1-5单元)(试题)-2024-2025学年五年级上册数学苏教版
- 人工智能岗位招聘笔试题及解答(某大型央企)2025年
评论
0/150
提交评论