首页 最新操作系统作业调度实验报告

最新操作系统作业调度实验报告

举报
开通vip

最新操作系统作业调度实验报告操作系统作业调度实验报告实验二作业调度实验题目1、编写并调试一个单道处理系统的作业等待模拟程序。作业调度算法:分别采用先来先效劳〔FCFS〕,最短作业优先〔SJF〕的调度算法。〔1〕先来先效劳算法:按照作业提交给系统的先后顺序来挑选作业,先提交的先被挑选。 〔2〕最短作业优先算法:是以进入系统的作业所提出的“执行时间〞为标准,总是优先选取执行时间最短的作业。 实验目的:本实验要求用高级语言〔C语言实验环境〕编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解三.实验过程...

最新操作系统作业调度实验报告
操作系统作业调度实验 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 实验二作业调度实验题目1、编写并调试一个单道处理系统的作业等待模拟程序。作业调度算法:分别采用先来先效劳〔FCFS〕,最短作业优先〔SJF〕的调度算法。〔1〕先来先效劳算法:按照作业提交给系统的先后顺序来挑选作业,先提交的先被挑选。 〔2〕最短作业优先算法:是以进入系统的作业所提出的“执行时间〞为标准,总是优先选取执行时间最短的作业。 实验目的:本实验要求用高级语言〔C语言实验环境〕编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解三.实验过程<一>单道处理系统作业调度1)单道处理程序作业调度实验的源程序:zuoye.c执行程序:zuoye.exe2)实验分析:1、由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的CPU时限等因素。2、每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W。3、对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间。3)流程图:代替二.最短作业优先算法代替三.高响应比算法图一.先来先效劳流程图4)源程序:#include#include#include#definegetpch(type)(type*)malloc(sizeof(type))#defineNULL0intn;floatT1=0,T2=0;inttimes=0;structjcb//作业控制块{charname[10];//作业名intreachtime;//作业到达时间intstarttime;//作业开始时间intneedtime;//作业需要运行的时间floatsuper;//作业的响应比intfinishtime;//作业完成时间floatcycletime;//作业周转时间floatcltime;//作业带权周转时间charstate;//作业状态structjcb*next;//结构体指针}*ready=NULL,*p,*q;typedefstructjcbJCB;voidinize()//初始化界面{printf("\n\n\t\t*********************************************\t\t\n");printf("\t\t\t\t实验二作业调度\n");printf("\t\t*********************************************\t\t\n");printf("\n\n\n\t\t\t\t\t计算机学院软件四班\n");printf("\t\t\t\t\t蓝小花\n");printf("\t\t\t\t\t3204007102\n");printf("\t\t\t\t\t完成日期:2022年11月17号");printf("\n\n\n\t\t请输入任意键进入演示过程\n");getch();}voidinital()//建立作业控制块队列,先将其排成先来先效劳的模式队列{inti;printf("\n输入作业数:");scanf("%d",&n);for(i=0;iname);getch();p->reachtime=i;printf("作业默认到达时间:%d",i);printf("\n输入作业要运行的时间:");scanf("%d",&p->needtime);p->state='W';p->next=NULL;if(ready==NULL)ready=q=p;else{q->next=p;q=p;}}}voiddisp(JCB*q,intm)//显示作业运行后的周转时间及带权周转时间等{if(m==3)//显示高响应比算法调度作业后的运行情况{printf("\n作业%s正在运行,估计其运行情况:\n",q->name);printf("开始运行时刻:%d\n",q->starttime);printf("完成时刻:%d\n",q->finishtime);printf("周转时间:%f\n",q->cycletime);printf("带权周转时间:%f\n",q->cltime);printf("相应比:%f\n",q->super);getch();}else//显示先来先效劳,最短作业优先算法调度后作业的运行情况{printf("\n作业%s正在运行,估计其运行情况:\n",q->name);printf("开始运行时刻:%d\n",q->starttime);printf("完成时刻:%d\n",q->finishtime);printf("周转时间:%f\n",q->cycletime);printf("带权周转时间:%f\n",q->cltime);getch();}}voidrunning(JCB*p,intm)//运行作业{if(p==ready)//先将要运行的作业从队列中别离出来{ready=p->next;p->next=NULL;}else{q=ready;while(q->next!=p)q=q->next;q->next=p->next;}p->starttime=times;//计算作业运行后的完成时间,周转时间等等p->state='R';p->finishtime=p->starttime+p->needtime;p->cycletime=(float)(p->finishtime-p->reachtime);p->cltime=(float)(p->cycletime/p->needtime);T1+=p->cycletime;T2+=p->cltime;disp(p,m);//调用disp()函数,显示作业运行情况times+=p->needtime;p->state='F';printf("\n%shasbeenfinished!\npressanykeytocontinue...\n",p->name);free(p);//释放运行后的作业getch();}voidsuper()//计算队列中作业的高响应比{JCB*padv;padv=ready;do{if(padv->state=='W'&&padv->reachtime<=times)padv->super=(float)(times-padv->reachtime+padv->needtime)/padv->needtimepadv=padv->next;}while(padv!=NULL);}voidfinal()//最后打印作业的平均周转时间,平均带权周转时间{floats,t;t=T1/n;s=T2/n;getch();printf("\n\n作业已经全部完成!");printf("\n%d个作业的平均周转时间是:%f",n,t);printf("\n%d个作业的平均带权周转时间是%f:\n\n\n",n,s);}voidhrn(intm)//高响应比算法{JCB*min;inti,iden;system("cls");inital();for(i=0;istate=='W'&&p->reachtime<=times)if(iden){min=p;iden=0;}elseif(p->super>min->super)min=p;p=p->next;}while(p!=NULL);if(iden){i--;times++;//printf("\ntime=%d:\tnoJCBsubmib...wait...",time);if(times>1000){printf("\nruntimeistoolong...error...");getch();}}else{running(min,m);//调用running()函数}}//forfinal();//调用running()函数}voidsjf(intm)//最短作业优先算法{JCB*min;inti,iden;system("cls");inital();for(i=0;istate=='W'&&p->reachtime<=times)if(iden){min=p;iden=0;}elseif(p->needtimeneedtime)min=p;p=p->next;}while(p!=NULL);if(iden){i--;//printf("\ntime=%d:\tnoJCBsubmib...wait...",time);times++;if(times>100){printf("\nruntimeistoolong...error");getch();}}else{running(min,m);//调用running()函数}}//forfinal();//调用running()函数}voidfcfs(intm)//先来先效劳算法{inti,iden;system("cls");inital();for(i=0;istate=='W'&&p->reachtime<=times)iden=0;if(iden)p=p->next;}while(p!=NULL&&iden);if(iden){i--;printf("\n没有满足要求的进程,需等待");times++;if(times>100){printf("\n时间过长");getch();}}else{running(p,m);//调用running()函数}}final();//调用running()函数}voidmune(){intm;system("cls");printf("\n\n\t\t*********************************************\t\t\n");printf("\t\t\t\t作业调度演示\n");printf("\t\t*********************************************\t\t\n");printf("\n\n\n\t\t\t1.先来先效劳算法.");printf("\n\t\t\t2.最短作业优先算法.");printf("\n\t\t\t3.响应比高者优先算法");printf("\n\t\t\t0.退出程序.");printf("\n\n\t\t\t\t选择所要操作:");scanf("%d",&m);switch(m){case1:fcfs(m);getch();system("cls");mune();break;case2:sjf(m);getch();system("cls");mune();break;case3:hrn(m);getch();system("cls");mune();break;case0:system("cls");break;default:printf("选择错误,重新选择.");getch();system("cls");mune();}}main()//主函数{inize();mune();}5)调试结果:1.选择操作的界面2.输入操作初始信息:3.先来先效劳算法作业调度结果:(调度顺序:a->b->c->d->e)4.最短作业优先算法作业调度结果(调度顺序:a->d->b->e->c)5.高响应比算法作业调度结果:(调度顺序a->b->d->c->e)
本文档为【最新操作系统作业调度实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
优秀的朱老师
暂无简介~
格式:doc
大小:106KB
软件:Word
页数:32
分类:
上传时间:2022-08-16
浏览量:2