单道批处理系统设计一个作业调度模拟程序_第1页
单道批处理系统设计一个作业调度模拟程序_第2页
单道批处理系统设计一个作业调度模拟程序_第3页
单道批处理系统设计一个作业调度模拟程序_第4页
单道批处理系统设计一个作业调度模拟程序_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统课程设计说明书题目:为单道批处理系统设计一个作业调度模拟程序院系:计算机科学与工程学院专业班级:计算机号:学学生姓名:指导教师:计算机科学与工程学院计算机科学与技术系学号班设c计技术参数设计要求.行工月月工作计划月月月月月月2月3月2.参考资料[3]...,.C,C2011年9月26日安徽理工大学课程设计(论文)成绩评定表专业班级:计算机09-3班摘要关键词:)I目录.需求分析...............................................................................................1.概要设计...............................................................................................2.详细设计...............................................................................................4.代码实现...............................................................................................8.运行结果与分析..............................................................................11.结束语.附录参考文献.......................................................................................................II操作系统课程设计说明书11.1问题描述为单道批处理系统设计一个作业调度模拟程序。作业调度算法分别采用先来先服务(FCFSSJFHRN时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间,以比较各种算法的优缺点。1.2功能分析及描述在批处理系统中,作业进入系统后,先驻留在外存上,通过作业调度算法,业调入内存,并为他们创建进程、分配必要的资源,然后,再将新创建的进程加入就绪队列中,准备执行。务时间之比可计算出响应比。1.3开发语言选择本课程设计采用C语言实现。1操作系统课程设计说明书22.1功能模块划分立作业、选择作业、运行作业、计算作业周转时间和带权周转时间,以及这组作时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带2.2功能模块的描述各模块的功能介绍如下:(1)建立作业:输入作业数,建立一组作业,并对所建立的这组作业进行初始化,用以模拟作业调度。初始化的内容包括作业名,作业要求运行的时间,其中,作业进入系统的时间由系统默认设置。(2)选择作业:程序通过先来先服务调度算法、短作业优先调度算法和高入内存中。(3)运行作业:根据初始化中设置的作业要求运行时间来模拟作业的运行。(4)计算:作业完成计算作业周转时间和带权周转时间,以及这组作业的平均周转时间和带权平均周转时间。(5)显示结果:将计算所得的结果输出。(6)退出程序:当实验结束,不再需要模拟作业调度的时候,用来退出程序。2.3功能模块结构图示作业调度模拟程序的系统功能结构如图2-1所示。2操作系统课程设计说明书作业调度系统退出程序初始化运行作业运行作业初始化运行作业图3操作系统课程设计说明书33.1作业控制块JCB的数据结构类型占用的CPU时限等因素。每个作业由一个作业控制块JCBJCB可以包含如下信息:作业名、提交时间、所需的服务时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W。对每种调度算法都要求输出每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间。从以上分析可见,在这个模拟程序中作业控制块JCB的数据结构类型可定义为:3.2先来先服务算法设计被执行。流程图如图3-1所示。4操作系统课程设计说明书开始使等i,+空结束图3.3最短作业优先算法设计先选取执行时间最短的作业。流程图如图3-2所示。5操作系统课程设计说明书开始使Ri,+结束图3.4响应比高者优先算法设计中)的响应比,然后选择响应比最高的作业执行。流程图如图3-3所示。6操作系统课程设计说明书开始使i,+空结束图7操作系统课程设计说明书44.1高响应比算法{{{}{{}{//}}}{8操作系统课程设计说明书{{};{}//}}}{//{;9操作系统课程设计说明书{}//}}}10操作系统课程设计说明书55.1选择操作的界面如图5-1所示。图5.2选择先来先服务算法进行作业调度输入操作初始信息,建立一组作业,由4个作业组成,作业名分别为a,b,c,d。如图5-2所示。11操作系统课程设计说明书图调度顺序为a→b→c→d。运行结果如图5-3、图5-4、图5-5所示。图图图5.3选择最短作业优先算法进行作业调度调度顺序:a→c→d→b。运行结果如图5-6、图5-7、图5-8所示。12操作系统课程设计说明书图图图5.4选择高响应比优先算法进行作业调度调度顺序:a→c→b→d。运行结果如图5-9、图5-10、图5-11所示。图图13操作系统课程设计说明书图14操作系统课程设计说明书6对一般计算机应用人员,都是非常有益和重要的。通过本次课程设计我对在课堂上所学的有关操作系统的知识有了更加深刻性,顺序性,单道性。批处理系统能提高系统资的利源用率和系统吞吐量。点有的了深刻的了解,知道了不同的算法类型适合不同的作业类型。本次课程设计结合了C语言程序设计语言,通过对作业调度模拟程序的设计,积累了程序设计的实战经验,锻炼了程序设计能力。通过这次课程设计,我学到了很多知识,拓宽了知识面,锻炼了能力,综合的方法,为今后的学习、工作打下了坚实的基础。15操作系统课程设计说明书7源程序:#include<stdio.h>#include<stdlib.h>#include<conio.h>#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;//结构体指针voidinital()式队列//建立作业控制块队列,先将其排成先来先服务的模{inti;printf("\n输入作业数:");scanf("%d",&n);for(i=0;i<n;i++){p=getpch(JCB);printf("\n输入作业名:");scanf("%s",p->name);getch();p->reachtime=i;printf("作业默认到达时间:%d",i);printf("\n输入作业要运行的时间:");scanf("%d",&p->needtime);p->state='W';16操作系统课程设计说明书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);开始运行时刻:%d\n",q->starttime);完成时刻:%d\n",q->finishtime);周转时间:%f\n",q->cycletime);带权周转时间:%f\n",q->cltime);getch();}}voidrunning(JCB*p,intm)//运行作业{if(p==ready){//先将要运行的作业从队列中分离出来ready=p->next;p->next=NULL;}else{17操作系统课程设计说明书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);//调用函数,显示作业运行情况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->needtime;padv=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个作业的平均带权周转时间是:\n\n\n",n,s);18操作系统课程设计说明书}{voidhrn(intm)//高响应比算法JCB*min;inti,iden;system("cls");inital();for(i=0;i<n;i++){p=min=ready;iden=1;super();do{if(p->state=='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);//调用函数//调用函数//最短作业优先算法}}//forfinal();}voidsjf(intm){JCB*min;inti,iden;system("cls");inital();for(i=0;i<n;i++)19操作系统课程设计说明书{p=min=ready;iden=1;do{if(p->state=='W'&&p->reachtime<=times)if(iden){min=p;iden=0;}elseif(p->needtime<min->needtime)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);//调用函数//调用函数//先来先服务算法}}//forfinal();}voidfcfs(intm){inti,iden;system("cls");inital();for(i=0;i<n;i++){p=ready;iden=1;do{if(p->state=='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();}}20操作系统课程设计说明书else{}running(p,m);//调用函数}final();//调用running()函数}voidmune(){intm;system("cls");printf("\n\n\t\t*********************************************\t\t\n");printf("\t\t\t\t作业调度演示\n");printf("\t\t********************************

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论