进程调度算法的实现实验报告

上传人:博****1 文档编号:484312583 上传时间:2022-09-09 格式:DOC 页数:7 大小:159.50KB
返回 下载 相关 举报
进程调度算法的实现实验报告_第1页
第1页 / 共7页
进程调度算法的实现实验报告_第2页
第2页 / 共7页
进程调度算法的实现实验报告_第3页
第3页 / 共7页
进程调度算法的实现实验报告_第4页
第4页 / 共7页
进程调度算法的实现实验报告_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《进程调度算法的实现实验报告》由会员分享,可在线阅读,更多相关《进程调度算法的实现实验报告(7页珍藏版)》请在金锄头文库上搜索。

1、南昌大学实验报告 -(4)进程调度算法的实现学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 一、实验目的通过实验加强对进程调度算法的理解和掌握。二、实验内容编写程序实现进程调度算法,具体可以编写程序实现先来先服务算法或优先度高者调度算法。三、实验要求1、需写出设计说明;2、设计实现代码及说明;3、运行结果;四、主要实验步骤1、 分析实验内容,画出算法流程图;2、 根据流程图写出实验代码;3、 编译代码,验证结果正确与否;4、 对程序进行修改,得到最后结果。流程图如下:五、实验数据及处理结果六、实验体会或对改进实验的建议在做这个实验的时候,一开始以为

2、很简单,只要做简单的加减乘除就行了,但是仔细做过以后发现需要考虑很多情况。比如说输入进程到达时间的时候,要是乱序的该怎么办?还有到达时间和服务时间等等定义的都是整型变量,但是带权周转时间确会得到小数,此时就需要用到强制转换。在做系统产生随机数的时候也要考虑随机数的范围,如到达时间可以为0,但是服务时间却不能为0,否则带权周转时间的计算会出错。七、参考资料计算机操作系统计算机操作系统实验指导书C程序设计C语言程序设计_现代方法八、实验代码#include #include #include #define N 5 /进程个数,可改变int rtN; /到达时间int stN; /服务时间int

3、ctN; /完成时间int cytN; /周转时间float rctN; /带权周转时间float av2;int n,m,c=1,which;void line() /美化程序,使程序运行时更加明朗美观printf(-n);void start() /表示FCFS算法开始line();printf( FCFS算法开始n);printf( Designed by Zhang Hongn);line();void end() /表示FCFS算法结束line();printf( FCFS算法结束,谢谢使用n);line();void input()printf(请输入%d个进程的到达时间:,N);

4、for (n=0;nN;n+)scanf(%d,&rtn);printf(请输入%d个进程对应的服务时间:,N);for (n=0;nN;n+)scanf(%d,&stn);void random()srand(unsigned)time(NULL);for (n=0;nN;n+)rtn=rand()%100;for (m=0;mn;m+)if (n!=0 & rtn=rtm)rtn=rand()%100;m=0;stn=rand()%98+1;for (m=0;mn;m+)if (n!=0 & stn=stm)stn=rand()%98+1;m=0;void ordination() /重新

5、排序,应对出现输入的到达时间为乱序的情况int temp;for (n=0;nN;n+)for (m=0;mN-n-1;m+)if (rtm+1rtm)temp=rtm+1;rtm+1=rtm;rtm=temp;temp=stm+1;stm+1=stm;stm=temp;void fcfs() /执行fcfs算法av0=0;av1=0;ct0=rt0+st0;for (n=1;n=rtn) /考虑当前一个进程完成而后一个进程还没有到达的情况ctn=ctn-1+stn;elsectn=rtn+stn;for (n=0;nN;n+)cytn=ctn-rtn;for (n=0;nN;n+)rctn=

6、(float)cytn/(float)stn;for (n=0;nN;n+)av0+=(float)cytn/N;av1+=rctn/N;void output() /输出结果line();printf(进程名t);for (n=0;nN;n+)printf(t%c,65+n);printf(t平均n到达时间);for (n=0;nN;n+)printf(t%d,rtn);printf(n服务时间);for (n=0;nN;n+)printf(t%d,stn);printf(n完成时间);for (n=0;nN;n+)printf(t%d,ctn);printf(n周转时间);for (n=0

7、;nN;n+)printf(t%d,cytn);printf(t%0.1f,av0);printf(n带权周转时间);for (n=0;nN;n+)printf(t%0.1f,rctn);printf(t%0.1f,av1);printf(n);line();void main()start();for (;c=1;)for (;)printf(输入数据还是由系统随机产生数据?n1、输入数据t2、系统随机产生数据n请输入:);scanf(%d,&which);if (which=1)input();break;elseif (which=2)random();break;printf(输入错误,请重新输入!);ordination(); /进程按照到达时间进行排序fcfs();output();printf(继续输入,退出输入。请输入:);scanf(%d,&c);end();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号