- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
作业调度算法讲述
XI`AN TECHNOLOGICAL UNIVERSITY实验报告实验课程名称 计算机操作系统 专 业: 软 件 工 程班 级: 姓 名:学 号: 实验学时: 指导教师: 成 绩: 2016年11月9日西安工业大学实验报告专业软件工程班级姓名学号33实验课程计算机操作系统指导教师实验日期2016.11.9同实验者实验项目实验一 作业调度算法实验设备及器材Vs2008实验目的进程调度是处理机管理的核心内容。本实验要求用高级语言编写模拟进程调度程序,以便加深理解有关进程控制快、进程队列等概念,并体会和了解优先级算法的具体实施办法。实验原理由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU时限等因素。1.先来先服务算法:按照作业提交给系统的先后顺序来挑选作业,先提交的先被挑选。 2.最短作业优先算法:是以进入系统的作业所提出的“执行时间”为标准,总是优先选取执行时间最短的作业。 3.优先级作业优先算法:是以进入系统的作业所提出的“优先级”为标准,总是优先选取优先级小的作业。实验步骤、数据记录及处理 实验步骤: 1. 先定义一个结构体,在主函中先调用input()输入函数,在input()输入函数中,依次按着提示输入数据。三种作业调度算法分别在三个子函数中执行: 分别使用了fcfs(pc,i);short_in(pc,i);psa(pc,i);三个函数分别实现先来先服务算法、短作业优先算法和优先级算法。这里先把段作业优先的思路理一理。在短作业优先调度算法函数short_in()中,按照短作业优先调度的算法规则,每个作业完成后,在其完成时间前提交的作业中,运行时间最短的作业程序优先计算,在所有的作业都执行执行完后,程序再算出这种算法的平均周转时间和平均带权周转时间,并将所有的作业按其执行的顺序进行排序;代码实现(c语言):#includestdio.h#includestdlib.h#defineMAX_SIZE 100typedefstruct_PCB{intpid; //进程号intserve_time;//服务时间intcom_tim; //到达时间intpri;//优先级intfinish_time;//完成时间floatzh_tim; //周转时间floatdzhi_time;//带权周转时间}PCB;voidswap(PCB *p,PCB *s){PCBtmp = *p;*p = *s ;*s = tmp;}voidsort_cm(PCB *p,intlen){for(inti = 0;i len-1;i ++){for(intj = 0;j len-1-i;j ++){if(p[j].com_tim p[j+1].com_tim){swap(p[j],p[j+1]);}}}}voidsort_serv(PCB *p,intstart,intend){for(inti = start;i end ;i ++){for(intj = start ;j end;j ++){if(p[j].serve_time p[j+1].serve_time){swap(p[j],p[j+1]);}}}}voidsort_pri(PCB *p,intstart,intend){for(inti = start;i end ;i ++){for(intj = start ;j end;j ++){if(p[j].pri p[j+1].pri){swap(p[j],p[j+1]);}}}}voidfcfs(PCB *p ,intlen)//先来先服务{inti = 0;sort_cm(p,len);p[0].finish_time = p[0].serve_time ;p[0].zh_tim = p[0].finish_time - p[0].com_tim;p[0].dzhi_time = p[0].zh_tim / p[0].serve_time;p[0].pri = 1;while(i len-1){i ++;p[i].finish_time = p[i].serve_time + p[i-1].finish_time;p[i].zh_tim = p[i].finish_time - p[i].com_tim;p[i].dzhi_time = p[i].zh_tim / p[i].serve_time;p[i].pri =
文档评论(0)