操作系统短作业优先调度算法1
更新时间:2023-12-23 03:56:01 阅读量: 教育文库 文档下载
1
操作系统实验
题目:
实现非抢占式短作业优先调度算法 要求:
1. 系统共有100个随机到达的作业。要求为每个作业设定到达时间和需要运行的时间。 2. 按照短作业优先进行调度,直到所有作业完成。 3. 计算每个作业的周转时间,计算平均周转时间。 提交报告
1. 实验报告打印稿(参照学校有关报告格式)。
2. 刻录一张光盘。光盘内容:用学号+姓名为每个同学建立目录,文件包括报告的电子版,
程序源代码。
一、主要数据结构及其说明
算法的基本概念和原理:本次课程设计主要是采用短作业优先算法进程的进程调度过程。短作业优先调度算法,是指对短作业或短进程优先调度的算法。他们可以分别用于作业调度和进程调度,短作业优先的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将他们调入内存运行。而短进程优先调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给他,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再度重新调度。本程序采用了非抢占式短作业优先调度。而非抢占式这种方式,一旦把处理机分配给某进程后,便让该进程一直执行,直至该进程完成或发生某事件而被阻塞时,才再把处理机分配给其它进程,决不允许某进程抢占已经分配出去的处理机。这种调度方式的优点是实现简单,系统开销小,适用于大多数的批处理系统环境。但它难以满足紧急任务的要求——立即执行,因而可能造成难以预料的后果。因此,在要求比较严格的实时系统中,不宜采用这种调度方式。本课程设计主要是在满足要求多道单处理机的情况下进行短作业的优先调度。
算法的简要说明:短作业(进程)优先调度算法SJ(P)F,是指对短作业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机再重新调度。优点是SJ(P)F调度算法能有效地降低作业(进程)的平均等待时间,提高系统吞吐量。缺点
2
是该算法对长作业不利;完全未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)长期不被调度;由于作业(进程)的长短只是根据用户所提供的估计执行时间而定的,而用户又可能会有意或无意地缩短其作业的估计运行时间,致使该算法不一定能真正做到短作业游戏那调度。
该程序定义了一个进程数据块(struct Process_),该数据块有进程名(name)、到达时间(arrivetime)、服务时间(servicetime)、开始执行时间(starttime)、完成时间(finishtime)、周转时间(zztime)、带权周转时间(dqzztime)、执行顺序(order)。用到的公式有:完成时间=到达时间+服务时间;周转时间=完成时间+到达时间;带权周转时间=周转时间/服务时间;(第一次执行的进程的完成时间=该进程的到达时间;下一个进程的开始执行时间=上一个进程的完成时间)。运行进程的顺序需要对进程的到达时间和服务时间进行比较。如果某一进程是从0时刻到达的,那么首先执行该进程;之后就比较进程的服务时间,谁的服务时间短就先执行谁(如果服务时间相同则看它们的到达时间,到达时间短的先执行);如果到达时间和服务时间相同,则按先来先服务算法执行。
二、程序运行结果
1 进入操作界面如下
2输入进程的信息
3 各时刻进程的状态
3
4 进程信息
5 平均带权周转时间界面
4
三、流程图
本次课程设计主要是通过比较各个进程的优先级以及各进程所需要占用的CPU时间来确定哪个作业优先运行,短作业优先调度算法除了能保证优先级更高的作业优先运行外,还能使相同优先级的前提下,所需CPU时间最短的那个作业优先运行,次外,本次课程设计还增加了阻塞时间和被阻塞时间来对个进程的运行加以控制。 此次课程设计的总体流程图如下:
5
开 始 输入进程的个数:num 输入进程的信息:name starttime servicetime r Sort() 队列中是否只有一个进程? N 执行判断函数:Run() Y执行时间处理函数:Time() 输出最后信息:Output() 结 束
6
四、源程序文件
#include
int Number; //进程编号 char Name[MaxNum]; //进程名称 int ArrivalTime; //到达时间 int ServiceTime; //开始运行时间 int FinishTime; //运行结束时间 int WholeTime; //运行时间 int run_flag; //调度标志 int order; //运行次序
double WeightWholeTime; //周转时间
double AverageWT_FCFS,AverageWT_SJF; //平均周转时间
double AverageWWT_FCFS,AverageWWT_SJF; //平均带权周转时间 }Process[MaxNum];
int N; //实际进程个数 int SJF(); //短作业优先
int SJF(){ //短作业优先算法 int temp_time=0; //当期那时间 int i=0,j;
int number_schedul,temp_counter; //进程编号,当前已执行进程个数 float run_time;
run_time=Process[i].WholeTime; j=1;
while((j //查找下一个被调度的进程 //对找到的下一个被调度的进程求相应的参数 number_schedul=i; Process[number_schedul].ServiceTime=Process[number_schedul].ArrivalTime; Process[number_schedul].FinishTime=Process[number_schedul].ServiceTime+Pr 7 ocess[number_schedul].WholeTime; Process[number_schedul].run_flag=1; temp_time=Process[number_schedul].FinishTime; Process[number_schedul].order=1; temp_counter=1; while(temp_counter Process[number_schedul].FinishTime=Process[number_schedul].ServiceTime+Process[number_schedul].WholeTime; Process[number_schedul].run_flag=1; temp_time=Process[number_schedul].FinishTime; temp_counter++; Process[number_schedul].order=temp_counter; }return 0; } int Pinput(); //进程参数输入 int Poutput(); //调度结果输出 void main() { 8 int option; printf(\ ********************主菜单************************\\n\ printf(\ * 1 使用短作业优先 *\\n\ printf(\ * 0 *\\n\ printf(\ **************************************************\\n\ //system(\ system(\ scanf(\ switch(option) { case 0: printf(\运行结束。\\n\ break; case 1: printf(\对进程用短作业优先调度。\\n\\n\ Pinput(); SJF(); Poutput(); break; } } int Pinput() //进程参数输入 { int i; printf(\请输入进程个数:\\n\ scanf(\ for(i=0;i 9 退出 scanf(\ printf(\请输入到达时间:\\n\ scanf(\ printf(\请输入服务时间:\\n\ scanf(\ Process[i].ServiceTime=0; Process[i].FinishTime=0; Process[i].WeightWholeTime=0; Process[i].order=0; Process[i].run_flag=0; system(\ }return 0; } int Poutput() //调度结果输出 { int i; float turn_round_time=0,f1,w=0; printf(\ 进程名称 到达T 运行T 开始运行T 结束T 执行顺序 周转T 带权周转T\\n\ for(i=0;i printf(\ %s %d %d %d %d %d %f %f\\n\i].ServiceTime,Process[i].FinishTime,Process[i].order,Process[i].WeightWholeTime,f1); } printf(\ printf(\ return 0; } 10 五、实验体会 通过本次课程设计,使我对计算机操作系统短作业优先调度算法这一节的知识有了更深的了解 。短作业优先调度算法易于实现,并且效率很高,但是短作业只考虑到短作业的利益,而不顾长作业,这样就可能会使得长作业一直处于等待状态而不能运行。所以,短作业优先算法适用于系统中短作业较多的情况。此外,通过本次实验,进一步巩固和复习操作系统的基础知识,更进一步的了解了结构化模块化程序设计的方法,提高了调试程序的技巧,提高了自己的动手能力我对操作系统中的作业调度模拟和短作业优先算法有了更深的认识。并且发现,只看课本上的知识远远不够,只一味学习也根本没用,必须要动手亲自实践,才能真正掌握所学的东西。 虽然在这次课程设计过程中,我们也遇到了很多问题,但我们都能保持一个良好的心态,不急不躁,并且能通过请教老师,与同学们积极讨论,查看课外资料,反复实验,反复检查,将问题一个个解答,并最终成功的完成本次课程设计。课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去做一件事情,又如何完成一件事情的能力。 通过模拟进程的调度问题,更加深了我对于操作系统理论的理解,在自己的动手操作过程中,能够体会成功的喜悦和遇到问题自己解决的能力,对于我来说是一次提高,让自己多多的在实践中可以加深对理论的理解,也让我明白了以后应该如何更好,更高效的学习,在以后,我会更加努力。 总之,本次课程设计让我们学到了很多东西,包括课本上的和课外的,是一个非常有意义的课程设计。 11 五、实验体会 通过本次课程设计,使我对计算机操作系统短作业优先调度算法这一节的知识有了更深的了解 。短作业优先调度算法易于实现,并且效率很高,但是短作业只考虑到短作业的利益,而不顾长作业,这样就可能会使得长作业一直处于等待状态而不能运行。所以,短作业优先算法适用于系统中短作业较多的情况。此外,通过本次实验,进一步巩固和复习操作系统的基础知识,更进一步的了解了结构化模块化程序设计的方法,提高了调试程序的技巧,提高了自己的动手能力我对操作系统中的作业调度模拟和短作业优先算法有了更深的认识。并且发现,只看课本上的知识远远不够,只一味学习也根本没用,必须要动手亲自实践,才能真正掌握所学的东西。 虽然在这次课程设计过程中,我们也遇到了很多问题,但我们都能保持一个良好的心态,不急不躁,并且能通过请教老师,与同学们积极讨论,查看课外资料,反复实验,反复检查,将问题一个个解答,并最终成功的完成本次课程设计。课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去做一件事情,又如何完成一件事情的能力。 通过模拟进程的调度问题,更加深了我对于操作系统理论的理解,在自己的动手操作过程中,能够体会成功的喜悦和遇到问题自己解决的能力,对于我来说是一次提高,让自己多多的在实践中可以加深对理论的理解,也让我明白了以后应该如何更好,更高效的学习,在以后,我会更加努力。 总之,本次课程设计让我们学到了很多东西,包括课本上的和课外的,是一个非常有意义的课程设计。 11
正在阅读:
操作系统短作业优先调度算法112-23
检验科生物安全培训材料06-01
oracle数据库升级迁移实施参考方案04-14
TJ-OP13消杀管理程序01-30
天奇股份:关于第四届监事会第二次会议决议公告 2010-03-2005-28
腰椎间盘突出首次病程记录.doc04-28
数据结构_查找、排序的应用实验08-27
华润二十四城商业一期详细勘察阶段02-03
帕萨特1.8T轿车废气涡轮增压系统原理与检修 - 图文04-05
电子商务综合实验报告书03-07
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 调度
- 算法
- 优先
- 操作系统
- 作业
- QJ57直流电阻电桥操作规程
- 学校心理危机干预预案 jsp
- 会计职业判断应用探析
- 2012届高三数学“三基”练习(十三)
- 第3课 盛唐气象 教案
- 初二数学2018年寒假学习规划 闵行松江补习班
- 曾国藩与中国式领导力考试答案
- 苏教版19.1 7下 2016~2017学年度第二学期第一次月度联考
- 水文水资源局招考专业考试题1(含答案)
- 国内外典型地铁事故案例分析及预防措施
- 造价员培训讲义(工程计量与计价实务部分)
- 小品稿
- 人防工程主体结构验收程序
- 声光影的内心感动:电影视听语言(超星网络课)
- 小升初总复习数学归类讲解及训练(上-含答案)
- 商业合作伙伴贸易安全协议书
- AMADA报警与处理
- VB开发的FTP上传文件
- 水库蓄水安全鉴定报告
- 大灾变猎人完全攻略手册 - 射击猎人PVE详解篇 - 图文