




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验二 作业调度 一. 实验题目 1、编写并调试一个单道处理系统的作业等待模拟程序。 作业调度算法:分别采用先来先服务(FCFS),最短作业优先(SJF)的调度算法。 (1)先来先服务算法:按照作业提交给系统的先后顺序来挑选作业,先提交的先被挑选。 (2)最短作业优先算法:是以进入系统的作业所提出的“执行时间”为标准,总是优先选取执行时间最短的作业。二. 实验目的:本实验要求用高级语言(C语言实验环境)编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解三 .实验过程 单道处理系统作业调度 1)单道处理程序作业调度实验的源程序: zuoye.c 执行程序: zuoye.exe 2)实验分析:1、由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU时限等因素。2、每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W。3、对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间。 3)流程图:代替 二.最短作业优先算法代替 三.高响应比算法图一.先来先服务流程图4)源程序: #include #include #include #define getpch(type) (type*)malloc(sizeof(type) #define NULL 0int n;float T1=0,T2=0;int times=0;struct jcb /作业控制块 char name10; /作业名 int reachtime; /作业到达时间 int starttime; /作业开始时间 int needtime; /作业需要运行的时间 float super; /作业的响应比 int finishtime; /作业完成时间 float cycletime; /作业周转时间 float cltime; /作业带权周转时间 char state; /作业状态 struct jcb *next; /结构体指针*ready=NULL,*p,*q;typedef struct jcb JCB; void inize() /初始化界面 printf(nntt*ttn); printf(tttt实验二 作业调度n); printf(tt*ttn); printf(nnnttttt计算机学院软件四班n); printf(ttttt蓝小花n); printf(tttttn); printf(ttttt完成日期:2006年11月17号); printf(nnntt请输入任意键进入演示过程n); getch();void inital() /建立作业控制块队列,先将其排成先来先服务的模式队列int i;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; void disp(JCB* q,int m) /显示作业运行后的周转时间及带权周转时间等 if(m=3) /显示高响应比算法调度作业后的运行情况 printf(n作业%s正在运行,估计其运行情况:n,q-name); printf(开始运行时刻:%dn,q-starttime); printf(完成时刻:%dn,q-finishtime); printf(周转时间:%fn,q-cycletime); printf(带权周转时间:%fn,q-cltime); printf(相应比:%fn,q-super); getch(); else / 显示先来先服务,最短作业优先算法调度后作业的运行情况 printf(n作业%s正在运行,估计其运行情况:n,q-name); printf(开始运行时刻:%dn,q-starttime); printf(完成时刻:%dn,q-finishtime); printf(周转时间:%fn,q-cycletime); printf(带权周转时间:%fn,q-cltime); getch(); void running(JCB *p,int m) /运行作业 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%s has been finished!npress any key to continue.n,p-name); free(p); /释放运行后的作业 getch();void super() /计算队列中作业的高响应比 JCB *padv; padv=ready; do if(padv-state=W&padv-reachtimesuper=(float)(times-padv-reachtime+padv-needtime)/padv-needtime padv=padv-next; while(padv!=NULL);void final() /最后打印作业的平均周转时间,平均带权周转时间 float s,t; t=T1/n; s=T2/n; getch(); printf(nn作业已经全部完成!); printf(n%d个作业的平均周转时间是:%f,n,t); printf(n%d个作业的平均带权周转时间是%f:nnn,n,s); void hrn(int m) /高响应比算法 JCB *min; int i,iden; system(cls); inital(); for(i=0;istate=W&p-reachtimesupermin-super) min=p; p=p-next; while(p!=NULL); if(iden) i-;times+; /printf(ntime=%d:tno JCB submib.wait.,time); if(times1000)printf(nruntime is too long.error.);getch(); else running(min,m); /调用running()函数 /for final(); /调用running()函数void sjf(int m) / 最短作业优先算法 JCB *min; int i,iden; system(cls); inital(); for(i=0;istate=W&p-reachtimeneedtimeneedtime) min=p; p=p-next; while(p!=NULL) ; if(iden) i-; /printf(ntime=%d:tno JCB submib.wait.,time); times+; if(times100)printf(nruntime is too long.error);getch(); else running(min,m); /调用running()函数 /for final(); /调用running()函数void fcfs(int m) /先来先服务算法 int i,iden; system(cls); inital(); for(i=0;istate=W&p-reachtimenext; while(p!=NULL&iden) ; if(iden) i-; printf(n没有满足要求的进程,需等待); times+; if(times100)printf(n时间过长);getch(); else running(p,m); /调用running()函数 final(); /调用running()函数void mune() int m; system(cls); printf(nntt*ttn); printf(tttt作业调度演示n); printf(tt*ttn); printf(nnnttt1.先来先服务算法.); printf(nttt2.最短作业优先算法.); printf(nttt3.响应比高者优先算法); printf(nttt0.退出程序.); printf(nntttt选择所要操作:); scanf(%d,&m);switch(m) case 1: fcfs(m); getch(); system(cls); mune(); break; case 2: sjf(m); getch(); system(cls); mune(); break; case 3: hrn(m); getch(); system(cls); mune(); break; case 0: system(cls); break;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省2025年下半年海船船员适任考试和评估计划船舶结构与货运综合练习题及答案
- 慢性舌扁桃体炎合并吞咽困难护理查房
- 阿拉尔市2025-2026学年八年级下学期语文期末模拟试卷
- 安徽省亳州市涡阳县2023-2024学年高一上学期期末考试历史试卷及答案
- 社区街道消防课件
- 内科细节管理-推进护理服务
- 社区电动车安全知识培训课件
- 浙江省嘉兴市2024-2025学年高一上学期期末检测生物试卷(含答案)
- 贵州省贵阳市花溪区燕楼中学2024-2025学年七年级下学期6月质量监测数学试卷(含部分答案)
- 车间水暖安装合同范本
- 图纸保密协议范本
- 2.2算法的概念及其描述课件人教中图版高中信息技术必修1
- 出货管理实施手册标准版
- 2000立方米液化石油气球罐设计
- 心肺复苏术英文课件
- 绿色简历封面小升初通用学生个人简历自荐信Word模板
- 临床实践指南的制定与应用
- 米线加工坊管理制度
- 文化长廊、荣誉墙施工方案(技术方案)
- 【人教部编版语文五年级下册】全册课内阅读(附答案)共计30篇
- 自动喷水灭火系统调试记录
评论
0/150
提交评论