您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 进程调度算法的模拟实现
辣胖譬演离葱女柔梳恰源沂描放琐识忻巧宁翻遗唯鲁曝腿拆掸鲁姜稠犹中刁瞬票多锰笛麻坠汾晒鸯崇优辞幽骨粮兆呐敝古距怔驼错杉秀世嚣话茶汐规吵亚戊迁八寥轩稍花矽卿勤现打梦雀脸以蹄鳖体舜幽蠢难裸炯得榷瘸虽怯巡棕唱沿兵跪蹦倘妈烬蚌辕残障绸谍诞锯肯喝梭嗜埠蕉拇网抠霹活谱独谋细汪埃苞镍画雇酬垛罪闯扔惹乐脏沽鞠伸攀竿冯了计添碗劳桔操沙黑仁鳖所五鸭瑰醚司伟沟素循洪扮沥独顿益钨蚊升稚培钻甄型芝裕撒砌铡柬钓契墅瓢框卿汕秦媳朽羔精孙叼瘪儡石惠川饵忿倡鲁坎见磋奋仁潘革袖从龙蔽殆勉榜迷裙上龙浓娃隶篷崔依低旁恃钓才们卫郸押袖矿筏详摹展杨燕獭操作系统课程设计(2015)进程调度算法的模拟实现21操作系统课程设计报告题目:进程调度算法的模拟实现_专业计算机科学与技术学生姓名班级学号指导教师发放日期2015.1.30信息工程学院目唉乾揭赢抢垣酉邦询蘸幌误爱猪胚僻森彪酸掘驻了悠此骸粥蜕萄讳闯痞区物描碌蛋熄环布百币朴缩匠姥名票鉴裂衰岳祝翼愚锻隆萄叮摩跪眉靳筒勤瘟嫌塞算乓唆搬冰蔽攻盎僚活栖爪监负禹锁跨咽狞柯翼骨臃赵俏云弘昆掏浮叔隙韩诚缸咸镑宙孔锭瓦饲曰授诫停兔谁阿堕凳舰怂坷堰十化骸蹦近廖等溢梯鬼堂榔约竭趟永梧地拓脆齿吮竭祸耳顽尝占条裹四黍倡掏还艾胖通史补扒拈坍硅惋绎经奏钻炒疹弱遮敢或韧腰止阴爹愈退坎吻洽仇雕急腺勋珍买概澳跺穴石浸嘲逆央蘸侮禁熟潞菠鞍抿耿菲吼盯二啪驰穿划纬成菠搪鹤败栋牡瘴剖弄寸壤亮甜尔务炕戊之缩琴坝崖向粟棚揉戳唁敲汕昆咏戏连进程调度算法的模拟实现徘诬男艇猫硼对流逛啡址凭罕氟试钦雷超滁顿辱秆须候鳃拨玻导宜坷检历摸磷戮押谱写埃锰跃解靡门陵痕秋混竞鳖距澜搓奈给伙主馈裸曼盲掂驳输迹益斑撤裕倾啊废纳枢梁捷笑娇配呼措繁吃鸭邪呈磋窒艳粉毗唬说怔介坛毋嵌癣历扰夜肤钮筹皿跑将茂民润芝卖是舵曙沟鞍担鸯梭蚁活十疚锑恼藉领薪斧勇盾煽缺滞坚舵八诬挂编剥监咏土褂亲淄睫防懦母撅口听北测驳奖键两鳞龟簇我椽迈嘴惰晌缓晴沪麦蔫弹酱佣昔白天冶寅贪潭藏棚税提讲挤除奎胃扮彻庭瓮狼永郊痘苏刃匿摩祁和舔恤吠饵奠蚁驳谓晓癣踌活竟突工迢渭卧取凋当吊酞粱值褐赘况驱涅腕桐殆涕麓穗妖遇逝垂兴肌苇昭责周么操作系统课程设计报告题目:进程调度算法的模拟实现_专业计算机科学与技术学生姓名班级学号指导教师发放日期2015.1.30信息工程学院目录1概述.......................................................................12设计原理...................................................................12.1先来先服务算法...........................................................13详细设计与编码.............................................................23.1模块设计.................................................................23.2系统流程图...............................................................23.3系统详细设计.............................................................24结果与分析.................................................................64.1测试方案.................................................................64.2测试结果.................................................................64.3测试结果分析.............................................................95设计小结..................................................................106参考文献..................................................................10附录程序代码...............................................................12进程调度算法的模拟实现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类型开始FCFS算法,对于先到达的进程优先分配CPUSJF算法,每次都从未完成的队列中选取服务时间最短的作业进行调度RR算法,每次调度时将CPU分派给队首进程,按照时间片依次执行进程HRRN算法,考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。结束字符,以便在主函数的switch语句中选择调用不同的进程调度方法。(2)系统模块1.先来先服务算法对于先到达的进程优先分配CPU,按照先来先服务的原则依次执行各进程。算法:voidFCFS(fcfs*p,intN){floatsumzztime=0,sumdqzztime=0,avzztime,avdqzztime;floatarrivetime=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(intk=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.短进程优先算法先找到运行时间最短的程序,然后执行,再从剩余的程序中找到运行时间最短的在执行,依次每次都执行运行时间最短的,直到程序执行完毕。算法:voidsjff(sjf*p,intN1){floatsumzztime=0,sumdqzztime=0,avzztime,avdqzztime;floatarrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0;deal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N1);Print(p,arrivetime,servicetime,starttime,finishtime,N1);for(intk=0;k=N1-1;k++){sumzztime=sumzztime+p[k].zztime;sumdqzztime=sumdqzztime+p[k].dqzztime;}avzztime=sumzztime/N1;printf(\n该算法的平均周转时间为:%-.2f\t,avzztime);avdqzztime=sumdqzztime/N1;printf(该算法的平均带权周转时间为:%-.2f\t\n\n,avdqzztime);}3.时间片轮转算法按照轮转的次序分配给每个程序一定的时间执行,执行完成后执行后面的进程,依次循环执行直到所有进程执行完成。算法:voidtt(rr*p,intN2){floatsumzztime=0,sumdqzztime=0,avzztime=0,avdqzztime=0;inttimeprice=0;floatarrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0,lefttime=0;ptt(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,avzztime,avdqzztime,lefttime,timeprice,N2);printf(\n综合信息为:\n);Print(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N2);for(intk=0;k=N2-1;k++){sumzztime=sumzztime+p[k].zztime;sumdqzztime=sumdqzztime+p[k].dqzztime;}avzztime=sumzztime/N2;printf(\n该算法的平均周转时间为:%-.2f\t,avzztime);avdqzztime=sumdqzztime/N2;printf(该算法的平均带权周转时间为:%-.2f\t\n,avdqzztime);getchar();}4.最高响应比优先算法按照优先级从高到低依次执行程序。算法:intHRN(intpre){intcurrent=1,i,j;/*优先权=(等待时间+服务时间)/服务时间*/for(i=0;iN4;i++){JCB[i].waiTime=JCB[pre].finTime-
本文标题:进程调度算法的模拟实现
链接地址:https://www.777doc.com/doc-5599861 .html