ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:228.59KB ,
资源ID:2285678      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2285678.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(OS短作业优先调度算法C语言讲解.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

OS短作业优先调度算法C语言讲解.docx

1、OS短作业优先调度算法C语言讲解采用短作业优先调度算法调度程序学 号: 姓 名: 专 业: 指导老师: 日 期: 一、实验题目 3二、课程设计的目的 3三、设计内容 3四、设计要求 3五、主要数据结构及其说明 4六、程序运行结果 5七、流程图 7八、源程序文件 9九、实验体会 13十、参考文献 13摘要在多道程序环境下, 主存中有着多个进程, 其数目往往多于处理机 数目。这就要求系统能按某种算法, 动态地把处理机分配给就绪队列 中的一个进程, 使之执行。 分配处理机的任务是由处理机调度程序完 成的。由于处理机是最重要的计算机资源, 提高处理机的利用率及改 善系统性能(吞吐量、响应时间) ,在很

2、大程度上取决于处理机调度 性能的好坏,因而,处理机调度便成为操作系统设计的中心问题之一。在多道程序系统中, 一个作业被提交后必须经过处理机调度后, 方 能获得处理机执行。 对于批量型作业而言, 通常需要经历作业调度和 进程调度两个过程后方能获得处理机。 作业调度是对成批进入系统的 用户作业, 根据作业控制块的信息, 按一定的策略选取若干个作业使 它们可以去获得处理器运行的一项工作。 而对每个用户来说总希望自 己的作业的周转时间是最小的,短作业优先(SJF)便是其中一种调 度方法。 本次课程设计主要是模拟短作业优先 (SJF) 调度算法。、实验题目采用短作业优先算法的的进程调度程序二、课程设计的

3、目的操作系统课程设计是计算机专业重要的教学环节, 它为学生提供了一个既动 手又动脑,将课本上的理论知识和实际有机的结合一起,独立分析和解决实 际问题的机会。进一步巩固和复习操作系统的基础知识。 培养学生结构化程序、模块化程序设计的方法和能力。 提高学生调试程序的技巧和软件设计的能力。 提高学生分析问题、解决问题以及综合利用 C 语言进行程序设计的能力。三、设计内容设计并实现一个采用短作业优先算的进程调度算法演示程序四、设计要求1.每一个进程有一个PCB,其内容可以根据具体情况设定。2.进程数、进入内存时间、要求服务时间、优先级等均可以在界面上设定3.可读取样例数据(要求存放在外部文件中)进行进

4、程数、进入内存时间、时 间片长度、进程优先级的初始化4.可以在运行中显示各进程的状态:就绪、执行 (由于不要求设置互斥资源 与进程间同步关系,故只有两种状态)5.采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态 以及相应的阻塞队列五、主要数据结构及其说明算法的 基本概念和原理 :本次课程设计主要是采用短作业优先算法进程的进 程调度过程。 短作业优先调度算法, 是指对短作业或短进程优先调度的算法。 他 们可以分别用于作业调度和进程调度, 短作业优先的调度算法是从后备队列中选 择一个或若干个估计运行时间最短的作业, 将他们调入内存运行。 而短进程优先 调度算法则是从就绪队列中选出

5、一个估计运行时间最短的进程, 将处理机分配给 他,使它立即执行并一直执行到完成, 或发生某事件而被阻塞放弃处理机时再度 重新调度。 本程序采用了非抢占式短作业优先调度。 而非抢占式这种方式, 一旦 把处理机分配给某进程后, 便让该进程一直执行, 直至该进程完成或发生某事件 而被阻塞时, 才再把处理机分配给其它进程, 决不允许某进程抢占已经分配出去 的处理机。这种调度方式的优点是实现简单, 系统开销小, 适用于大多数的批处 理系统环境。 但它难以满足紧急任务的要求立即执行, 因而可能造成难以预 料的后果。因此,在要求比较严格的实时系统中,不宜采用这种调度方式。本课 程设计主要是在满足要求多道单处

6、理机的情况下进行短作业的优先调度。算法的简要说明:短作业(进程)优先调度算法 SJ (P) F,是指对短作 业或短进程优先调度的算法。 它们可以分别用于作业调度和进程调度。 短作业 优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短 的作业,将它们调入内存运行。而短进程(SPF)调度算法则是从就绪队列中 选出一个估计运行时间最短的进程, 将处理机分配给它, 使它立即执行并一直 执行到完成,或发生某事件而被阻塞放弃处理机再重新调度。 优点 是 SJ(P)F 调度算法能有效地降低作业(进程)的平均等待时间,提高系统吞吐量。 缺点 是该算法对长作业不利; 完全未考虑作业的紧迫程度

7、, 因而不能保证紧迫性作 业(进程)长期不被调度;由于作业(进程)的长短只是根据用户所提供的估 计执行时间而定的,而用户又可能会有意或无意地缩短其作业的估计运行时 间,致使该算法不一定能真正做到短作业游戏那调度。该程序 定义了一个进程数据块 (struct Process_,) 该数据块有进程名 (name)、 到达时间(arrivetime)、服务时间(servicetime)、开始执行时间(starttime)、完成时 间(finishtime)、周转时间(zztime)、带权周转时间(dqzztime)、执行顺序(order)。 用到的公式 有:完成时间 =到达时间 +服务时间;周转时间

8、 =完成时间+到达时间; 带权周转时间 =周转时间 /服务时间;(第一次执行的进程的完成时间 =该进程的到 达时间;下一个进程的开始执行时间 =上一个进程的完成时间 )。运行进程的顺序 需要对进程的到达时间和服务时间进行比较。如果某一进程是从 0 时刻到达的, 那么首先执行该进程; 之后就比较进程的服务时间, 谁的服务时间短就先执行谁 (如果服务时间相同则看它们的到达时间,到达时间短的先执行) ;如果到达时 间和服务时间相同,则按先来先服务算法执行。六、程序运行结果1进入操作界面如下3各时刻进程的状态京进程用短作业优先调度。Iff彌人一 T进住: 请藉入进程名糅 鲁输入到达时间:请输入服务时间

9、:3:M MLlt JfMLJitWKJtKMMlltKMLKXMllCXMLX W今*具-KlC MllCK JtXlOtM:SIaSJII:c请输入到达时间:鲁输入服务时间:3请规入一个进程: 请貉入进程名杯 鲁输入到达时间= 鲁输入服务时间:2请赣入一个进拦= 请歳入进程名粘e请输入到达时间:请输入服务时间二24进程信息屮 *C:DOCU1EHTS AND SETTIBGSADIINISTRATOR LXQzDebuEz_ exe进程名称到达T运行T开始运行T结東T执行顺序周转T带权周转T1z a12i310Q.0000003: b2134200.0000004* C3246306.00

10、0000&: d4268466.0000008二 e43B1150-0.000000average_turn_iouind_timcr =3 .600000we ight_avei*age_tupn_iound_t ime . 766SS7Press an9 key to continue_5平均带权周转时间界面Cvera9e-turbn_Found_t iner=J.e ight_ave rage _t urn _ro und_t imer=l 766667七、流程图本次课程设计主要是通过比较各个进程的优先级以及各进程所需 要占用的CPU寸间来确定哪个作业优先运行,短作业优先调度算法除 了能

11、保证优先级更高的作业优先运行外,还能使相同优先级的前提 下,所需CPU寸间最短的那个作业优先运行,次外,本次课程设计还 增加了阻塞时间和被阻塞时间来对个进程的运行加以控制。 此次课 程设计的总体流程图如下:八、源程序文件#include#define MaxNum 100using namespace std; struct Process_struct int Number; char NameMaxNum; int ArrivalTime; int ServiceTime; int FinishTime; int WholeTime; int run_flag; int order;/进程

12、编号/ 进程名称/到达时间/开始运行时间/运行结束时间/运行时间/调度标志/运行次序double WeightWholeTime; /周转时间double AverageWT_FCFS,AverageWT_SJF; /平均周转时间double AverageWWT_FCFS,AverageWWT_SJF; /平均带权周转时间 ProcessMaxNum;int N; /实际进程个数int SJF(); /短作业优先int SJF() / 短作业优先算法int temp_time=0; /当期那时间int i=0,j;int number_schedul,temp_counter; /进程编号,

13、当前已执行进程个数float run_time;run_time=Processi.WholeTime;j=1;while(jN)&(Processi.ArrivalTime=Processj.ArrivalTime) / 判断是否有两个进程同时到达 if(Processj.WholeTimeProcessi.WholeTime) run_time=Processi.WholeTime;i=j;j+;/查找下一个被调度的进程/对找到的下一个被调度的进程求相应的参数number_schedul=i;Processnumber_schedul.ServiceTime=Processnumber_s

14、chedul.ArrivalTime;Processnumber_schedul.FinishTime=Processnumber_schedul.ServiceTime+Pr ocessnumber_schedul.WholeTime;Processnumber_schedul.run_flag=1; temp_time=Processnumber_schedul.FinishTime; Processnumber_schedul.order=1;temp_counter=1; while(temp_counterN) for(j=0;jN;j+) if(Processj.ArrivalTi

15、me=temp_time)&(!Processj.run_flag) run_time=Processj.WholeTime; number_schedul=j; break; for(j=0;jN;j+) if(Processj.ArrivalTime=temp_time)&(!Processj.run_flag) if(Processj.WholeTimerun_time) run_time=Processj.WholeTime; number_schedul=j;/查找下一个被调度的进程 /对找到的下一个被调度的进程求相应的参数 Processnumber_schedul.ServiceTime=tem

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1