短作业优先调度_第1页
短作业优先调度_第2页
短作业优先调度_第3页
短作业优先调度_第4页
短作业优先调度_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验一 进程调度一、实验目的编写并调试一个模拟的进程调度程序, 以加深对进程的概念及进程调度算法 的理解二、实验内容1. 采用“短进程优先”调度算法对五个进程进行调度。每个进程有一个进 程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、到达 时间、需要运行时间、已用 CPU寸间、进程状态等等。2.每个进程的状态可以是就绪 W( Wait)、运行R( Run)、或完成F( Finish) 三种状态之一。 每进行一次调度程序都打印一次运行进程、就绪队列、 以及各个进程的PCB,以便进行检查。重复以上过程,直到所要进程都 完成为止。三、实现思路主函数-输入函数 -短作业优先调度函数 -输出

2、函数。这是一条最基础的思路。 输入函数使用文本导入完成数据输入, 输出函数输 出调度结果, 主函数完成各子函数连接, 最主要的是短作业优先的调度函数。 我 想到的方法就是排序, 不断选择需要运行时间最短的作业, 接着进行数据输入计 算输出等,遍历全部数据并完成调度。四、主要的数据结构struct Process_structchar nameMaxNum;/进程名称intarrivetime;/到达时间intservertime;/开始运行时间intfinishtime;/运行结束时间intruntime;/运行时间intrunflag;/调度标志intorder;/运行次序double we

3、ightwholetime; /周转时间平均周转时间平均带权周转时间double averagewt_FCFS,averagewt_SJF; / double averagewwt_FCFS,averagewwt_SJF; / proMaxNum;五、算法流程图六、运行与测试用书上数据对程序进行测试,结果如下:J 3B33 W -记事4;文祥的洞辐E)格式QA 0 4B 1 3C 2 4D 3 2E 4 q |另外随便添加一些数据进行测试,结果如下:J 1111 tot-记事本文件(F)礎旧梧式Q)查看k G 5B 3 9C 4 4D 5 14E 7 3iuerageuirn_i*o un d

4、L_t imei*=7 -務fcld.lit:avei*-age t ur-n youunil t:inei=2 -23到达进程名称青输入进程个数:1 E:ve4 + ca o zu oxi tongD*b ugqvrrxeT KIC M4IK T _R-4t 2b_4王菜单JWXWKIMKU W!良耳 i JM:j8M:XSl!HNHiMj4IIK:H!HNHj*tW:HMK:M固 q ./tr.cp 0510 B0 0 3 311使用短作业优先0 退出运行开始运行 结束执行顺序周转带杈周转a414.601.007 13144 EF 1 6內 qwencpp使用短作业优先退出侖入你想进行的操

5、作;113.Q0进程名称到达运行开始运行结束抽行顺序周转带权周转A&007S426002.562.C41.001 .00u c rag_e_turn_iound_t nmcr =15 e iaht veratfeurn-round-t imer=2R9代码实现:#in clude#in clude#define MaxNum 100using n amespace std;struct Process_structchar nameMaxNum; /进程名称int arrivetime;/到达时间int servertime;/开始运行时间int finishtime;/运行结束时间int r

6、un time;/运行时间int run flag;/调度标志int order;/运行次序double weightwholetime; /周转时间平均周转时间平均带权周转时间double averagewt_FCFS,averagewt_SJF; / double averagewwt_FCFS,averagewwt_SJF; / int temp_time=0;proMaxNum; int N; / int SJF(); / int SJF()实际进程个数短作业优先函数int i=0,j;int number,temp_counter; / 进程编号,当前已执行进程个数 float ru

7、n_time;int min=0;run_time=proi.runtime;j=1;判断是否while(jproi.runtime) run_time=proi.runtime;i=j;j+;for(j;jN;j+)选出第while(jproj.arrivetime) / 个到达的进程min=j;i=j;j+;对第number=min; / 一个到达的进程赋值,计算pronumber.servertime=pronumber.arrivetime; pronumber.finishtime=pronumber.servertime+pronumber.runtime; pronumber.r

8、unflag=1;temp_time=pronumber.finishtime;pronumber.order=1; temp_counter=1;while(temp_counterN)for(j=0;jN;j+)if(proj.arrivetime=temp_time)&(!proj.runflag)run_time=proj.runtime; number=j; break;/选出最短for(j=0;jN;j+)的运行时间(最短作业)if(proj.arrivetime=temp_time)&(!proj.runflag) if(proj.runtimerun_time)run_time

9、=proj.runtime;number=j;pronumber.servertime=temp_time; / 作业进行赋值,计算对最短pronumber.finishtime=pronumber.servertime+pronumber.runtime;pronumber.runflag=1;temp_time=pronumber.finishtime;temp_counter+;pronumber.order=temp_counter;return 0;int input(); /进程参数输入int output(); /调度结果输出void main()int option;print

10、f(n*n); printf( 主菜单 printf(*nn); printf(1使用短作业优先printf(0退出printf(*nn); printf( 输入你想进行的操作: ); scanf(%d,&option);n);nn);nn);printf(n);switch(option) case 0:printf( 运行结束。 n); break; case 1:printf( 对进程用短作业优先调度。 nn); input();SJF();打开文件带权周转 n);output();break;printf( 点击任意键键继续 .);getchar();int input() /进程参数

11、输入printf( 请输入进程个数 :n);scanf(%d,&N);FILE *f;char buf100;char *p;if (NULL=(f=fopen(F:1111.txt, r) /fprintf(stderr, Can not open file:1111.txt);return 1;int i=0,n=0;while (1) / 导入数据if(n=N) break;if(NULL=fgets(buf,100,f) break;if(n=buf0) continue; / 空行继续 p=buf;sscanf(p,%c%d%d,&,&pron.arrivetime

12、,&pron.runtime );n+;pron.servertime=0;pron.finishtime=0;pron.weightwholetime=0;pron.order=0;pron.runflag=0;fclose(f);return 0;int output() /调度结果输出int i;float turn_round_time=0,f1,w=0;printf( 进程名称 到达 运行 开始运行 结束 执行顺序 周转 for(i=0;iN;i+)proi.weightwholetime=proi.finishtime-proi.arrivetime; f1=proi.weightwholetime/proi.runtime;turn_round_time+=proi.weightwholetime;w+=f1;printf(%4s%8d%5d%7d%7d%7d%8.2f%7.2fn,,proi.arrive time,proi.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论