预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共15页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

福建农林大学计算机与信息学院 课程设计报告 课程名称:操作系统实习题目:进程调度算法模拟姓名:***系:计算机专业:计算机科学与技术年级:2011级学号:**指导教师:***职称:*** 2014年1月16日 福建农林大学计算机与信息学院信息工程类 课程设计报告结果评定 评语:成绩:指导教师签字:评定日期: 目录 1.进程调度算法模拟课程设计的目的……………………………………………1 2.进程调度算法模拟课程设计的要求……………………………………………1 3.进程调度算法模拟课程设计报告内容…………………………………………1 3.1前言………………………………………………………………………1 3.2进程调度算法模拟设计的环境…………………………………………1 3.3系统流程图及各模块……………………………………………………2 4.总结…………………………………………………………………………18 参考文献………………………………………………………………………19 参考网站………………………………………………………………………19 进程调度算法模拟 1.进程调度算法模拟课程设计的目的和意义 2013-2014学年,在学习了《操作系统》这门课后,对当中的进程调度算法产生了浓厚的兴趣。各种调度算法,理论上比较好理解。为了加深印象,我决定把各种调度算法用C语言写出来。于是便产生这份从头到尾都让我绞尽脑汁的课程设计。 做这份课程设计,对从事系统开发的人员来说,是必要的,可以在一定程度上为自己以后的发展铺路。虽然用处不是特别明显,但对加深系统调用算法的理解无疑用处是巨大的。 2.进程调度算法模拟课程设计的要求 用C语言写出至少两种进程调度算法。 画出大概流程图。 对算法过程出现的bug进行调试。 展示最后的算法结果 3.1前言: 目前比较常见的几种进程调度算法有: 先到先服务(FCFS) 短进程优先(非抢占和抢占)算法(SPF) 高响应比优先算法 时间片轮转算法 我选出其中三种即先到先服务,短进程优先(2种)和时间片轮转算法进行C语言描 述以加深对这三种算法的理解。 3.2进程调度算法模拟设计的环境 VC++6.0及CodeBlocks,32位计算机WIN7操作系统。 3.3流程图 定义进程结构体: structPro{ intnum; //进程号 inttime_in; //进程到达时间 intwork_time; //进程服务时间 intbtime;//用于抢占式进程优先记录该进程开始时间 intl_w_time;//用于抢占式进程优先记录剩余服务时间 intend_time;//记录该进程结束时间,(需要时时监测) intjudge; //用于需要时的标记 }pro[10]; //进程结构体 1先到先服务 算法描述:把所有进程按到达先后排序,每次取最先到的进程执行后淘汰,再取下一个,直到所有进程调度完毕。 主要代码: voidFCFS()//先到先服务 { chars[]={"先到先服务"}; printmat(s); PT; inti,j; intmin; intt=pro_num; intbegin_time=0x7fff; for(i=1;i<=pro_num;i++) { if(pro[i].time_in<begin_time) begin_time=pro[i].time_in; pro[i].judge=0; //所有进程号查找标志置0,表示还未查找 } while(t--) { for(i=1;i<=pro_num;i++) { if(pro[i].judge==0) { min=i; //设其为目前最早到达的时间 for(j=i+1;j<=pro_num;j++) { if(pro[j].judge==0&&pro[j].time_in<=pro[min].time_in)//该进程号若还未被查找且小于预设 min=j; } pro[min].judge=1; //该进程号被查找过 printf(Format2,pro[min].num,pro[min].time_in,pro[min].work_time, begin_time,begin_time+pro[min].work_time,begin_time+pro[min].work_time-pro[min].time_in); begin_time+=pro[min].work_time; puts(""); } } } printmat(s); puts(""); } 程序截图: 2段进程优先非抢占 算法描述:每次选出最短的进程进行调度