作业调度算法的模拟.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
作业调度算法的模拟.doc

作业调度算法的模拟 用C语言,或C++实现对N个作业分别采用FCFS,SJF,HRN和高优先权优先等算法进行调度。每个用来标识作业的作业控制块JCB用结构体来描述,包括以下字段: 作业标识数ID 作业运行所需要的时间requesttime 作业实际运行时间 runtime 作业优先权priority,并规定优先权越大的作业,其优先权越高 作业紧迫程度quick,并规定紧迫程度越高的作业,其数值越大 注:以上字段并非每中作业调度算法都使用,仅仅出于方便编程。 设计思想: HRN算法采用下式计算响应比: 响应比=等待时间waittime/需要运行的时间requesttime 高优先权算法采用下式计算优先权: (优先权priority*等待时间waittime)/(需要运行时间requesttime*紧迫程度quick) 程序流程图: 结束 输入PCB作业数目 菜单选择 按FCFS 算法调度 按SJF 算法调度 按HRN 算法调度 按高优先权优 先算法调度 开始 显示个作业调度顺序 参考原程序: #include stdio.h typedef struct JCB { int ID; int requesttime; int runtime; int priority; int quick; }JCB; #define N 100 JCB jcb[N]; int jcbnum; void init(); void FCFS(); void SJF(); void HRN(); void prior(); void main() {int i=0; init(); printf(\n ================================); printf(\n | 1:FCFS 2:SJF |); printf(\n | 3:HRN 4:Priority |); printf(\n ================================); while(i=0||i=5) { printf(\nPlease select anumber(1,2,3,4):); scanf(%d,i); } switch(i){ case 1: FCFS();break; case 2: SJF();break; case 3: HRN();break; case 4: prior();break; } } void init() {int i=0; while(i=0||i2000) {printf(\n Input the JCB numbers(1~2000):); scanf(%d,i); } jcbnum=i; for(i=0;ijcbnum;i++){ jcb[i].ID=i+1; jcb[i].priority=rand()%100+1; jcb[i].quick=rand()%5+1; jcb[i].requesttime=rand()%1000+1;} } void FCFS() {int i; printf(\nThis is first come first server:); for(i=0;ijcbnum;i++) printf(\n\t The NO.%-5d JCB enter MEMORY.,jcb[i].ID); } void prior() {int i,j,dest; int waittime=0; printf(\n This is proority job first:); while(jcbnum0) {dest=0; for(i=0;ijcbnum;i++) if((jcb[dest].priority*(waittime+0.0)/(jcb[dest].requesttime*jcb[dest].quick)) (jcb[i].priority*(waittime+0.0)/(jcb[i].requesttime*jcb[i].quick))) dest=i; printf(\n\t The NO.%-5d JCB enter MEMORY.,jcb[dest].ID); waittime+=jcb[dest].requesttime; for(j=dest;jjcbnum-1;j++){ jcb[j].ID=jcb[j+1].ID; jcb[j].priority=jcb[j+1].priority; jcb[j].quick=jcb[j+1].quick; jcb[j].requesttime=jcb[1].requesttime;} jcbnum--;

您可能关注的文档

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档