进程调度算法的实现实验报告.docx
《进程调度算法的实现实验报告.docx》由会员分享,可在线阅读,更多相关《进程调度算法的实现实验报告.docx(9页珍藏版)》请在冰豆网上搜索。
进程调度算法的实现实验报告
进程调度算法的实现实验报告
南昌大学实验报告
---(4)进程调度算法的实现
学生姓名:
学号:
专业班级:
实验类型:
□验证□综合■设计□创新实验日期:
实验成绩:
一、实验目的
通过实验加强对进程调度算法的理解和掌握。
二、实验内容
编写程序实现进程调度算法,具体可以编写程序实现先来先服务算法或优先度高者调度算法。
三、实验要求
1、需写出设计说明;
2、设计实现代码及说明;
3、运行结果;
四、主要实验步骤
1、分析实验内容,画出算法流程图;
2、根据流程图写出实验代码;
3、编译代码,验证结果正确与否;
4、对程序进行修改,得到最后结果。
流程图如下:
五、实验数据及处理结果
六、实验体会或对改进实验的建议
在做这个实验的时候,一开始以为很简单,只要做简单的加减乘除就行了,但是仔细做过以后发现需要考虑很多情况。
比如说输入进程到达时间的时候,要是乱序的该怎么办?
还有到达时间和服务时间等等定义的都是整型变量,但是带权周转时间确会得到小数,此时就需要用到强制转换。
在做系统产生随机数的时候也要考虑随机数的范围,如到达时间可以为0,但是服务时间却不能为0,否则带权周转时间的计算会出错。
七、参考资料
《计算机操作系统》
《计算机操作系统实验指导书》
《C程序设计》
《C语言程序设计_现代方法》
八、实验代码
#include
#include
#include
#defineN5//进程个数,可改变
intrt[N];//到达时间
intst[N];//服务时间
intct[N];//完成时间
intcyt[N];//周转时间
floatrct[N];//带权周转时间
floatav[2];
intn,m,c=1,which;
voidline()//美化程序,使程序运行时更加明朗美观
{
printf("------------------------------------------------------------------\n");
}
voidstart()//表示FCFS算法开始
{
line();
printf("FCFS算法开始\n");
printf("——DesignedbyZhangHong\n");
line();
}
voidend()//表示FCFS算法结束
{
line();
printf("FCFS算法结束,谢谢使用\n");
line();
}
voidinput()
{
printf("请输入%d个进程的到达时间:
",N);
for(n=0;nscanf("%d",&rt[n]);
printf("请输入%d个进程对应的服务时间:
",N);
for(n=0;nscanf("%d",&st[n]);
}
voidrandom()
{
srand((unsigned)time(NULL));
for(n=0;n{
rt[n]=rand()%100;
for(m=0;mif(n!
=0&&rt[n]==rt[m])
{
rt[n]=rand()%100;
m=0;
}
st[n]=rand()%98+1;
for(m=0;mif(n!
=0&&st[n]==st[m])
{
st[n]=rand()%98+1;
m=0;
}
}
}
voidordination()//重新排序,应对出现输入的到达时间为乱序的情况
{
inttemp;
for(n=0;nfor(m=0;mif(rt[m+1]