预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共14页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

短作业优先调度算法 学院计算机科学与技术 专业 学号 学生姓名 指导教师姓名 2014-3-18 目录 TOC\o"1-3"\h\z\uHYPERLINK\l"_Toc317963607"一、 实验题目  HYPERLINK\l"_Toc317963608"二、 课程设计的目的  HYPERLINK\l"_Toc317963609"三、 设计内容  HYPERLINK\l"_Toc317963610"四、 设计要求  HYPERLINK\l"_Toc317963611"五、 主要数据结构及其说明  HYPERLINK\l"_Toc317963613"六、 程序运行结果  HYPERLINK\l"_Toc317963615"七、 源程序文件   HYPERLINK\l"_Toc317963614"八、 实验体会  九参考文献……………………………………………………………………………………………………… 实验题目 采用短作业优先算法的进程调度程序 课程设计的目的 操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合一起,独立分析和解决实际问题的机会。 进一步巩固和复习操作系统的基础知识。 培养学生结构化程序、模块化程序设计的方法和能力。 提高学生调试程序的技巧和软件设计的能力。 提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。 设计内容 设计并实现一个采用短作业优先算的进程调度算法演示程序 设计要求 1.每一个进程有一个PCB,其内容可以根据具体情况设定。 2.进程数、进入内存时间、要求服务时间、优先级等均可以在界面上设定 3.可读取样例数据(要求存放在外部文件中)进行进程数、进入内存时间、时间片长度、进程优先级的初始化 4.可以在运行中显示各进程的状态:就绪、执行(由于不要求设置互斥资源与进程间同步关系,故只有两种状态) 5.具有一定的数据容错性 主要数据结构及其说明 算法的简要说明:短作业(进程)优先调度算法SJ(P)F,是指对短作业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机再重新调度。优点是SJ(P)F调度算法能有效地降低作业(进程)的平均等待时间,提高系统吞吐量。缺点是该算法对长作业不利;完全未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)长期不被调度;由于作业(进程)的长短只是根据用户所提供的估计执行时间而定的,而用户又可能会有意或无意地缩短其作业的估计运行时间,致使该算法不一定能真正做到短作业游戏那调度。 该程序定义了一个进程数据块(structspf),该数据块有进程名(name)、到达时间(arrivetime)、服务时间(servicetime)、开始执行时间(starttime)、完成时间(finishtime)、周转时间(zztime)、带权周转时间(dqzztime)。用到的公式有:完成时间=到达时间+服务时间;周转时间=完成时间-到达时间;带权周转时间=周转时间/服务时间;(第一次执行的进程的完成时间=该进程的到达时间;下一个进程的开始执行时间=上一个进程的完成时间)。运行进程的顺序需要对进程的到达时间和服务时间进行比较。如果某一进程是从0时刻到达的,那么首先执行该进程;之后就比较进程的服务时间,谁的服务时间短就先执行谁(如果服务时间相同则看它们的到达时间,到达时间短的先执行);如果到达时间和服务时间相同,则按先来先服务算法执行。 程序运行结果 1进入操作界面如下 2输入进程的数目 3输入进程的信息 4运行顺序 流程图 输入进程的个数:N r 队列中是否只有一个进程? 执行时间处理函数:deal() Y 结束 Sort() 调用Input()依次输入进程的信息:进程名到达时间服务时间 N 执行最短优先jcbf() 输出最后信息:print() 开始 源程序文件 #include<stdio.h> #include<conio.h> #include<windows.h> #defineMAX100//最多能管理的作业数目 structjcb//作业控制块JCB,定义为结构体 { charname[10];//作业名 floatarrivetime;//作业到达时间 floatservicetime;//作业服务时间 flo