- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程调度算法的模拟实现.
操作系统课程设计报告
题目: 进程调度算法的模拟实现_
专业 计算机科学与技术 学生姓名 班级 学号 指导教师 发放日期 2015.1.30
信 息 工 程 学 院
目 录
1 概述 1
2 设计原理 1
2.1先来先服务算法 1
3 详细设计与编码 1
3.1 模块设计 1
3.2 系统流程图 2
3.3 系统详细设计 2
4 结果与分析 6
4.1 测试方案 6
4.2 测试结果 6
4.3 测试结果分析 9
5 设计小结 12
6 参考文献 13
附录 程序代码 14
进程调度算法的模拟实现
1 概述
选择一个调度算法,实现处理机调度,进程调度算法包括:先来先服务算法,短进程优先算法,时间片轮转算法,动态优先级算法。可选择进程数量,本程序包括四种算法,用C或C++语言实现,执行时在主界面选择算法(可用函数实现),进入子页面后输入进程数,(运行时间,优先数由随机函数产生),执行,显示结果。
2 设计原理
2.1先来先服务(FCFS)算法
每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源创建进程,然后放入就绪队列
2.2 时间片轮转法(RR)算法
系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。时间片的大小从几ms到几百ms。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。
2.3短作业优先(SJF)算法
短作业优先调度算法是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。
2.4最高优先权优先(HRRN)算法
优先权调度算法是为了照顾紧迫型作业,使之在进入系统后便获得优先处理,引入最高优先权优先调度算法。动态优先权是指在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能。
3 详细设计与编码
3.1 模块设计
(1) 进入系统模块,进入登陆界面。
(3) 菜单选择模块。选择相应的进程调度方式,选择相应的数字,进入相应的功能。
(4) 算法模块。选择相应的进程调度算法。
(5) 显现输出模块。显示每种进程调度算法情况。
(6) 平均周转时间与平均带权周转时间的计算结果。
(7) 退出系统模块。
3.2 系统流程图
3.3 系统详细设计
(1) 系统主界面设计(包含登陆模块设计)
首先将各种进程调度算法放入不同的头文件,在主函数引用,是系统结构更加清晰。设置一个mean()方法,让用户选择不同的进程调度算法,mean()方法返回一个char类型字符,以便在主函数的switch语句中选择调用不同的进程调度方法。
(2) 系统模块
1.先来先服务算法
对于先到达的进程优先分配CPU,按照先来先服务的原则依次执行各进程。
算法:
void FCFS(fcfs *p,int N)
{ float sumzztime=0, sumdqzztime=0,avzztime,avdqzztime;
float arrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0;
sort(p,N);
deal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N); Print(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);
for(int k=0;k=N-1;k++)
{
sumzztime=sumzztime+p[k].zztime;
sumdqzztime=sumdqzztime+ p[k].dqzztime;
}
avzztime=sumzztime/N;
printf(\n该算法的平均周转时间为:%-.2f\t,avzztime);
avdqzztime= sumdqzztime/N;
printf(该算法的平均带权周转时间为:%-.2f\t\n\n,avdqzztime);
}
2.短进程优先算法
先找到运行时间最短的程序,然后执行,再从剩余的程序中找到运行时间最
文档评论(0)