操作系统课程设计进程调度算法.doc

上传人:仙人指路1688 文档编号:4137520 上传时间:2023-04-07 格式:DOC 页数:11 大小:113.50KB
返回 下载 相关 举报
操作系统课程设计进程调度算法.doc_第1页
第1页 / 共11页
操作系统课程设计进程调度算法.doc_第2页
第2页 / 共11页
操作系统课程设计进程调度算法.doc_第3页
第3页 / 共11页
操作系统课程设计进程调度算法.doc_第4页
第4页 / 共11页
操作系统课程设计进程调度算法.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《操作系统课程设计进程调度算法.doc》由会员分享,可在线阅读,更多相关《操作系统课程设计进程调度算法.doc(11页珍藏版)》请在三一办公上搜索。

1、操作系统课程设计 题目: 进程调度算法 班级: xxx 姓名: xxx 学号: xxx 序号: xxx 指导老师:xxx进程调度算法一、 实验名称 进程调度二、实验目的通过优先权法与轮转调度算法的模拟加深对进程概念和进程调度过程的理解,掌握进程状态之间的切换,同时掌握进程调度算法的实现方法和技巧。三、实验内容1、用C语言来实现对N个进程采用优先算法以及轮转算法的进程调度。2、 每个用来标示进程的进程控制块PCB用结果来描述,包括以下字段(1) 进程标识ID,其中0为闲逛进程,用户进程的标识数为1、2、3、。(2)进程优先级Priority,闲逛进程(idle)的优先级为0,用户有进程的优先级大

2、于0,且随机产生,标识数越大,优先级越高。(3) 进程占用的CPU时间CPUtime,进程每运一次,累积等于4.(4)进程总共需要运行时间Alltime,利用随机函数产生。(5)进程状态,0就绪态,1运行态,2阻塞态。(6)队列指针next,用来将多个进程控制块PCB链接为队列。3、优先数改变的原则 (1)进程在就绪队列中每呆一个时间片,优先数增加1. (2)进程每运行一个时间片,优先数增加1.4、在调度前,系统中拥有的进程数PCB_number有键盘输入,进初始化后,所有的进程控制块PCB连接成就绪队列。5、为了清楚的观察诸进程的调度过程,程序应将每个时间片内的进程的情况显示出来。四、实验步

3、骤1、进程管理程序调式好后,运行进程管理程序输入开始进程数n创建n个PCB并加入readyqueue中ready-queue是否为空 YRunning=id NRunning逐个将redy_pc中的PCB 阻塞Running N Running=idle Y Y N 将Running从ready_queue中删除,再将running加入block_queueb 更新新进程就绪队列进程优先数,优先数加1 是否创建新PCB N Y 创建新进程并加入到ready_queue中 随机 对block_queue中的进程PCB询问是否要唤醒 ?处理完了吗 Y 是否要唤醒 N N 将其从blick_queu

4、ek队列是中删除,再将其加入ready_queuek Y 2、优先权调度(1)输入1选择优先权调度算法模拟。(2)输入开始进程个数n,创建n个PCB并加入就绪队列ready_queue中。(3)就绪队列ready_queue不为空,调度就绪队列中第一个进程运行,否则,从闲逛队列idleprocess中调度闲逛进程运行。(4)在运行过程中,当遇到阻塞,则该进程插入到阻塞队列block_queue中,且将该进程从ready_queue中删除。(5)如果运行时间CPUtime大于等于Alltime,该进程运行完毕,释放该进程;否则插入到就绪队列中。(6)更新就绪队列中的优先级数。(7)随机对阻塞队列

5、block_queue中的进程PCB询问是否要唤醒,唤醒,即从唤醒队列中选择第一个进程,且插入就绪队列中;阻塞队列中没有阻塞进程返回。(8)重复上述步骤,直到本次调度结束。3、轮转调度(1)输入2选择优先权调度算法模拟。(2)输入开始进程个数n,创建n个PCB并加入就绪队列ready_queue中。(3)就绪队列ready_queue不为空,调度就绪队列中第一个进程运行,否则,从闲逛队列idleprocess中调度闲逛进程运行。(4)在运行过程中,当遇到阻塞,则该进程插入到阻塞队列block_queue中,且将该进程从ready_queue中删除。(5)如果运行时间CPUtime大于等于All

6、time,该进程运行完毕,释放该进程;否则插入到就绪队列中。(6)随机对阻塞队列block_queue中的进程PCB询问是否要唤醒,唤醒,即从唤醒队列中选择第一个进程,且插入就绪队列中;阻塞队列中没有阻塞进程返回。(7)如果时间到,本次调度结束,否则重复上述步骤,直到本次调度结束。四、实验过程中遇到的问题及解决方案1、请仔细阅读动态优先权的进程调度算法的模拟实现代码,说明该算法与教材中介绍的算法做了哪些简单化处理.优先权模拟时优先权是随机产生,在实际的系统中,系统进程的优先权高于一般用户进程的优先权。2、为什么对进程的优先数可按上述原则进行修改?最高优先权调度算法仅照顾了优先权高的进程,当不断

7、有优先权高的进程需调度时,而优先权低的进程将很难得到处理机的调度,所以进程在就绪队列中每呆一个时间片,优先数增加1,使优先权低的进程不总是忙等。3、请给出设计实现的轮转发进程调度算法的设计思想.时间轮转调度算法:系统将所有的就像进程按先来先服务的原则,排成一个队列,每次调度时,把CPU分配给首进程,并令其执行一个时间片。当执行的时间片用完时,发出中断请求,调度程序便据此信号来停止该进程的执行,并将其送到就绪队列的末尾,如此反复,就可以保证就绪队列中的所有进程在一个给定的时间内,均能获得一时间片处理机执行时间。4、在实际的进程调度中,除了按调度算法选择下一个执行的进程外,还应处理哪些工作?最高优

8、先权调度算法,常用于批处理系统中,作为作业调度算法,也作为多种操作系统中的进程调度算法,还可以用于实时系统中:时间轮转调度算法,一般用于分时系统中。五、课程设计总结1、当把该算法用于作业调度时,系统将从后备队列中选择若干个优先权最高的作业,装入内存,当用于进程调度算法时,该算法是把处理及分配给就绪队列中优先权最高的进程。2、当系统空闲(就绪队列为空)时,系统运行闲逛进程,否则运行其他进程,发生变迁(就绪运行)3、在运行进程(包括闲逛进程)的过程中,可能发生变迁2(运行阻塞),即将运行进程插入到阻塞队列(闲逛进程不能不被阻塞),可能有其他的进程创建PCB,还可能唤醒阻塞队列中的某些进程PCB,发

9、生变迁3(阻塞就绪),即从阻塞队列中插入就绪队列中。4、时间片运行结束后,若进程累积占用CPU时间大于等于进程需要运行时间,则进程执行结束,释放其PCB。若进程累积占用CPU时间小于进程需要运行时间,发生变迁4(运行就绪),即将当前运行的进程插入就绪队列中。六、心得体会我刚开始接触到这个题目的时候就有点蒙了,因为对于操作系统,平时都是在纸上写写画画,对于书本上的理论知识掌握的还可以,但一想到实践,有点胆怯了,就算再胆怯,课程设计还是得做的,我只好借助图书馆和网络资源来完成这项课程设计。 于是我通过从图书馆借书、上网查找资料来实现这个题目,这着实让我体会到软件工程的艰辛,整个程序可能因为一个细小

10、部分而花去你数倍的时间去调试,使我明白调试是开发人员一项非常重要的基本功,通过这次课程设计,我对本专业有了更多的深刻认识,也收获了很多的成长。 通过课程设计使我对有了对理论知识更深的理解,对以前学习中不明白的,不理解的都有了进一步的理解。在实际操作中遇到了很多困难,但通过找资料,请教同学,使我的动手能力和沟通能力都有了提高。在整个课程设计中总是在编写程序中发生错误,有时会很没耐性,但都被我一一克服了,编程一定要有耐心,同时还有认真仔细,尽量保证不出现错误。编程要有条理,不仅使自己要看懂 ,别人也能看懂,这样有利于程序的改正。在做完这个课程设计时,心里有种说不出来的高兴,虽然是通过看书和上网查找资料完成的设计,而且课设的难度也不是很大,但还是有一种成就感,因为毕竟自己动手了,也从中学到了知识,还增强了自己的自信心,我相信在今后的学习中,我会保持这种良好的心情投入到各科的学习中,使我的成绩不断提高。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号