单道批处理系统设计一个作业调度模拟程序.docx
- 文档编号:968060
- 上传时间:2022-10-14
- 格式:DOCX
- 页数:27
- 大小:275.17KB
单道批处理系统设计一个作业调度模拟程序.docx
《单道批处理系统设计一个作业调度模拟程序.docx》由会员分享,可在线阅读,更多相关《单道批处理系统设计一个作业调度模拟程序.docx(27页珍藏版)》请在冰豆网上搜索。
单道批处理系统设计一个作业调度模拟程序
单道批处理系统设计一个作业调度模拟程序
操作系统
课程设计说明书
题目:
为单道批处理系统设计一个作业调度模拟程序
院系:
计算机科学与工程学院
专业班级:
计算机
学号:
学生姓名:
指导教师:
计算机科学与工程学院计算机科学与技术系
学号
学生姓名
专业(班级)
计算机09-3班
设计题目
为单道批处理系统设计一个作业调度模拟程序
设
计
技
术
参
数
使用MicrosoftVisualC++6.0编辑器编写,利用c语言开发的基于单道批处理系统的一个作业调度模拟程序,完成该课程设计需要掌握先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。
设
计
要
求
作业调度算法分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。
对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间,以比较各种算法的优缺点。
工
作
量
1.源代码程序不少于400行
2.附有各种图示4张
3.课程设计任务书不少于3500字
工
作
计
划
1.10月23日-10月28日:
查询相关资料,初步确定课程设计的语言,进一步明确其所要实现的功能
2.10月29日-11月10日:
根据所学知识及搜集的相关信息进行概要设计
3.11月11日-11月25日:
进行详细设计,完成相应源代码的编写
4.11月26日-12月2日:
对源代码进行调试、运行
5.12月3日-12月10日:
完善课程设计说明书并提交
参
考
资
料
[1]梁小丹,梁红兵,哲凤屏,汤子赢.计算机操作系统.第三版.西安:
西安电子科技大学出版社,2007.2
[2]袁捷、沈俊、袁晴晴.计算机操作系统基础与应用.第二版.北京:
清华大学出版社,2009.07
[3]杨振山、龚培增.计算机操作系统教程.第三版.北京:
清华大学出版社,2007.9
[4]谭浩强.C程序设计.第四版.北京:
清华大学出版社,2010.06
[5]王敬华,林萍,张清国等.C语言程序设计教程.第二版.北京:
清华大学出版社,2009.10
指导教师签字
系主任签字
2011年9月26日
学生姓名:
学号:
专业班级:
计算机09-3班
设计题目:
为单道批处理系统设计一个作业调度模拟程序
指导教师评语:
成绩:
指导教师:
年月日
安徽理工大学课程设计(论文)成绩评定表
摘要
本次课程设计要求用高级语言编写和调试一个单道批处理系统的作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解。
作业调度算法分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。
对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间,以比较各种算法的优缺点。
关键词:
作业调度,先来先服务(FCFS),最短作业优先(SJF),响应比高者优先(HRN)
1.需求分析
1.1问题描述
为单道批处理系统设计一个作业调度模拟程序。
作业调度算法分别采用先来先服务(FCFS),最短作业优先(SJF)、响应
比高者优先(HRN)的调度算法。
对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间,以比较各种算法的优缺点。
1.2功能分析及描述
在批处理系统中,作业进入系统后,先驻留在外存上,通过作业调度算法,将它们分批装入内存。
作业调度程序用于决定把外存上处于后备队列中的哪些作业调入内存,并为他们创建进程、分配必要的资源,然后,再将新创建的进程加入就绪队列中,准备执行。
应将哪些作业从外存调入内存,取决于所采用的调度算法。
最简单的是先来先服务调度算法,这是指讲最早进入外存的作业最先调入内存;较常用的一种是短作业优先调度算法,这是将外存上最短的作业最先调入内存;此外,还有基于响应比高者优先的调度算法,根据作业的等待时间和要求服务时间的和与要求服务时间之比可计算出响应比。
1.3开发语言选择
本课程设计采用C语言实现。
2.概要设计
2.1功能模块划分
根据功能描述,单道批处理程序作业调度的模拟程序要求实现如下功能:
建立作业、选择作业、运行作业、计算作业周转时间和带权周转时间,以及这组作业的平均周转时间和带权平均周转时间、显示运行结果(包括每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间等)、退出程序。
2.2功能模块的描述
各模块的功能介绍如下:
(1)建立作业:
输入作业数,建立一组作业,并对所建立的这组作业进行初始化,用以模拟作业调度。
初始化的内容包括作业名,作业要求运行的时间,其中,作业进入系统的时间由系统默认设置。
(2)选择作业:
程序通过先来先服务调度算法、短作业优先调度算法和高响应比优先调度算法对建立的一组作业进行选择,决定把哪个作业从外存调入内存中。
(3)运行作业:
根据初始化中设置的作业要求运行时间来模拟作业的运行。
(4)计算:
作业完成计算作业周转时间和带权周转时间,以及这组作业的平均周转时间和带权平均周转时间。
(5)显示结果:
将计算所得的结果输出。
(6)退出程序:
当实验结束,不再需要模拟作业调度的时候,用来退出程序。
2.3功能模块结构图示
作业调度模拟程序的系统功能结构如图2-1所示。
图2-1作业调度模拟程序系统功能结构图
3.详细设计
3.1作业控制块JCB的数据结构类型
由于在单道批处理系统中,不必考虑作业所需要的资源是否得到满足,它所占用的CPU时限等因素。
每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:
作业名、提交时间、所需的服务时间、所需的资源、作业状态、链指针等等。
作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。
每个作业的最初状态总是等待W。
对每种调度算法都要求输出每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间。
从以上分析可见,在这个模拟程序中作业控制块JCB的数据结构类型可定义为:
structjcb{//作业控制块
charname[10];//作业名
intreachtime;//作业到达时间
intstarttime;//作业开始时间
intneedtime;//作业需要运行的时间
floatsuper;//作业的响应比
intfinishtime;//作业完成时间
floatcycletime;//作业周转时间
floatcltime;//作业带权周转时间
charstate;//作业状态
structjcb*next;//结构体指针
}*ready=NULL,*p,*q;
typedefstructjcbJCB;
3.2先来先服务算法设计
先来先服务算法:
按照作业提交给系统的先后顺序来挑选作业,先提交的先被执行。
流程图如图3-1所示。
图3-1先来先服务调度算法流程图
3.3最短作业优先算法设计
最短作业优先算法:
是以进入系统的作业所要求的服务时间为标准,总是优先选取执行时间最短的作业。
流程图如图3-2所示。
图3-2短作业优先调度算法流程图
3.4响应比高者优先算法设计
响应比高者优先算法:
是在每次调度前都要计算所有被选作业(在后备队列中)的响应比,然后选择响应比最高的作业执行。
流程图如图3-3所示。
图3-3响应比高者优先算法流程图
4.代码实现
4.1高响应比算法
voidhrn(intm)//高响应比算法
{
JCB*min;
inti,iden;
system("cls");
inital();
for(i=0;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);//调用running()函数 } }//for final();//调用running()函数 } 4.2最短作业优先算法 voidsjf(intm)//最短作业优先算法 { JCB*min; inti,iden; system("cls"); inital(); for(i=0;i { p=min=ready;iden=1; do{ if(p->state=='W'&&p->reachtime<=times) if(iden) { min=p;iden=0; } elseif(p->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);//调用running()函数 } }//for final();//调用running()函数 } 4.3先来先服务算法 voidfcfs(intm)//先来先服务算法 { inti,iden; system("cls"); inital(); for(i=0;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();} } else{ running(p,m);//调用running()函数 } } final();//调
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 批处理 系统 设计 一个 作业 调度 模拟 程序