操作系统原理。
课程设计报告。
题目: 进程调度算法。
班级: 软件09
姓名: 李宗仁
指导老师:张老师
进程调度算法。
一、实验目的。
通过优先权法与轮转调度算法的模拟加深对进程概念和进程调度过程的理解,掌握进程状态之间的切换,同时掌握进程调度算法的实现方法和技巧。
二、实验内容。
1、用c语言或c++语言来实现对n个进程采用优先算法以及轮转算法的进程调度。
2、每个用来标示进程的进程控制块pcb用结果来描述,包括以下字段。
(1)进程标识id,其中0为闲逛进程,用户进程的标识数为、、
(2)进程优先级priority,闲逛进程(idle)的优先级为0,用户有进程的优先级大于0,且随机产生,标识数越大,优先级越高。
(3)进程占用的cpu时间cputime,进程每运一次,累积等于4.
(4)进程总共需要运行时间alltime,利用随机函数产生。
(5)进程状态,0—就绪态,1—运行态,2—阻塞态。
(6)队列指针next,用来将多个进程控制块pcb链接为队列。
3、优先数改变的原则。
(1)进程在就绪队列中每呆一个时间片,优先数增加1.
(2)进程每运行一个时间片,优先数增加1.
4、在调度前,系统中拥有的进程数pcb_number有键盘输入,进初始化后,所有的进程控制块pcb连接成就绪队列。
5、为了清楚的观察诸进程的调度过程,程序应将每个时间片内的进程的情况显示出来。
三、实验步骤。
1、进程管理程序调式好后,运行进程管理程序。yn
nyyn
nyyn
ny2、优先权调度。
1)输入1选择优先权调度算法模拟。
2)输入开始进程个数n,创建n个pcb并加入就绪队列ready_queue中。
3)就绪队列ready_queue不为空,调度就绪队列中第一个进程运行,否则,从闲逛队列idleprocess中调度闲逛进程运行。
4)在运行过程中,当遇到阻塞,则该进程插入到阻塞队列block_queue中,且将该进程从ready_queue中删除。
5)如果运行时间cputime大于等于alltime,该进程运行完毕,释放该进程;否则插入到就绪队列中。
6)更新就绪队列中的优先级数。
7)随机对阻塞队列block_queue中的进程pcb询问是否要唤醒,唤醒,即从唤醒队列中选择第一个进程,且插入就绪队列中;阻塞队列中没有阻塞进程返回。
8)重复上述步骤,直到本次调度结束。
3、轮转调度。
1)输入2选择优先权调度算法模拟。
2)输入开始进程个数n,创建n个pcb并加入就绪队列ready_queue中。
3)就绪队列ready_queue不为空,调度就绪队列中第一个进程运行,否则,从闲逛队列idleprocess中调度闲逛进程运行。
4)在运行过程中,当遇到阻塞,则该进程插入到阻塞队列block_queue中,且将该进程从ready_queue中删除。
5)如果运行时间cputime大于等于alltime,该进程运行完毕,释放该进程;否则插入到就绪队列中。
6)随机对阻塞队列block_queue中的进程pcb询问是否要唤醒,唤醒,即从唤醒队列中选择第一个进程,且插入就绪队列中;阻塞队列中没有阻塞进程返回。
7)如果时间到,本次调度结束,否则重复上述步骤,直到本次调度结束。yn
nyyn
nyyn
nyy四、课程设计总结。
最高优先权调度算法,常用于批处理系统中,作为作业调度算法,也作为多种操作系统中的进程调度算法,还可以用于实时系统中:时间轮转调度算法,一般用于分时系统中。
1、当把该算法用于作业调度时,系统将从后备队列中选择若干个优先权最高的作业,装入内存,当用于进程调度算法时,该算法是把处理及分配给就绪队列中优先权最高的进程。
2、当系统空闲(就绪队列为空)时,系统运行闲逛进程,否则运行其他进程,发生变迁(就绪运行)
3、在运行进程(包括闲逛进程)的过程中,可能发生变迁2(运行阻塞),即将运行进程插入到阻塞队列(闲逛进程不能不被阻塞),可能有其他的进程创建pcb,还可能唤醒阻塞队列中的某些进程pcb,发生变迁3(阻塞就绪),即从阻塞队列中插入就绪队列中。
4、时间片运行结束后,若进程累积占用cpu时间大于等于进程需要运行时间,则进程执行结束,释放其pcb。若进程累积占用cpu时间小于进程需要运行时间,发生变迁4(运行就绪),即将当前运行的进程插入就绪队列中。
五、课程设计心得。
本次课程设计做的是进程调度,进程管理,我选择的是进程调度,主要实现了时间片轮转算法,优先权调度算法,调度算法是指:根据系统的资源分配策略所规定的资源分配算法,在优先权算法中使用了动态优先权,就是在运行的过程中优先权是不断变化的,当进程等待一个时间片,它的优先权将自动增加,当一个进程运行一个时间片后,它的优先权将自动降低,这样能够更好的调度性能,通过本次课程设计,使我加深了对进程调度的理解以及实践,把自己所学到的东西应用于实践,在做课程设计的过程中用到了编程语言,从而使以前学习的编程语言与目前的操作系统有了更好的衔接,使它们连接到了一起,同时在做的过程中发现,时间片轮转算法,优先权调度算法都有一定的局限性,而且在实现的过程中由于时间仓促,所做的功能也不太完善。但也体现出自己单独设计模具的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。
以前感觉上课枯燥无味,现在才发现书到用时方恨少呀,就像那个实现的动态优先级上课听感觉挺简单的,可当自己来实现时发现以前的考虑是多么的片面,这个并不是那么容易实现的,尤其在过程中遇到许多小问题,有对进程调度理解不全面而导致的,也有编程方面的,总之平时看起来挺简单的问题可当你自己亲自来实现时会发现其实它并不容易,稍有失误就会导致大的错误,使我有了在做课程设计的过程中了更加细心的经历,而且各方面功能实现也需要慢慢来实现,一步一步来实现,毕竟冰冻三尺非一日之寒,所以功能要慢慢来实现,不可能一下把所有功能都实现的,而且这样也方便发现错误以及更容易解决错误,否则你会发现当出现错误时无从下手,总之这次课程设计获益良多,希望老师以后能多安排这种课程设计,这样才能让我们真正的学以致用,在此感谢我们的操作系统的张老师。,老师严谨细致、一丝不苟的作风一直是我们工作、学习中的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪,希望老师以后能够多安排课程设计给予我们更多的锻炼机会。
操作系统课程设计进程调度
批处理系统的作业调度模拟。一 课程设计目的。1 加深对作业概念的了解 2 深入了解批处理系统如何组织作业 管理作业和调度作业 3 巩固相关的理论知识 二 课程设计预备知识。1 作业控制块的概念和结构 2 作业的创建 3 作业的调度算法 4 c语言的相关知识。三 课程设计内容要求。1 编写程序完成批处...
操作系统课程设计之进程调度
一 成绩评定表。二 任务书。三 计目的意义 设计内容 四 计方案 软硬件环境,开发工具或语言选择及思路 五 程序功能模块设计 程序功能模块划分及层次等 六 程序总控流程图。七 数据结构设计。八 程序 结构 函数调用关系或类层次关系 九 程序主要 分析。十 测试数据及测试结果。十一 设计过程中遇到的问...
操作系统模拟进程课程设计
本科实验课程报告。2016 至2017学年第 1 学期 课程名称 计算机组成原理。专业名称 计算机科学与技术 行政班级1410081 学号 141006125 姓名黄梦阳。指导教师李玉玲。报告时间 2016 年 12 月 4 日。实验一。实验地点实验日期成绩 1 实验目的。1 熟悉硬软件环境。2 学...