进程调度算法的实现实验报告_第1页
进程调度算法的实现实验报告_第2页
进程调度算法的实现实验报告_第3页
进程调度算法的实现实验报告_第4页
进程调度算法的实现实验报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

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;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();br

温馨提示

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

评论

0/150

提交评论