欢迎来到天天文库
浏览记录
ID:10574347
大小:141.21 KB
页数:12页
时间:2018-07-07
《操作系统课程设计--进程调度算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、计算机科学与应用系操作系统原理课程设计报告题目进程调度算法学号班级姓名专业计算机科学与技术指导教师完成日期2013.6.12进程调度算法一.实验目的通过优先权法与轮转调度算法的模拟加深对进程概念和进程调度过程的理解,掌握进程状态之间的切换,同时掌握进程调度算法的实现方法和技巧。二.实验内容1.用C语言或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.需写出设计说明;2.设计实现代码及说明;3.运行结果.四.实验步骤1.进程管理程序调试好后运行进程管理程序图1进程管理调试界面10开始输入开始进程数n创建n个PCB并加入ready-queue中ready-queue是否为空YNRunning<=idRunning<=逐个将redy_pc中的PCB阻塞RunningNYRunning=idleYN将Running从ready_queue中删除,再将running加入block_queueb更新新进程就绪队列进程优先数,优先数加1是否创建新PCBNY创建新进程并加入到ready_queu
4、e中随机对block_queue中的进程PCB询问是否要唤醒?处理完了吗YN是否要唤醒NY将其从blick_queuek队列是中删除,再将其加入ready_queuek10优先权调度模拟流程图2.优先权调度(1)输入1选择优先权调度算法模拟。(2)输入开始进程个数n,创建n个PCB并加入就绪队列ready_queue中。(3)就绪队列ready_queue不为空,调度就绪队列中第一个进程运行,否则,从闲逛队列idleprocess中调度闲逛进程运行。(4)在运行过程中,当遇到阻塞,则该进程插入到阻塞队列block_queue中,且将该进程从ready_queue中删除。(5)
5、如果运行时间CPUtime大于等于Alltime,该进程运行完毕,释放该进程;否则插入到就绪队列中。(6)更新就绪队列中的优先级数。(7)随机对阻塞队列block_queue中的进程PCB询问是否要唤醒,唤醒,即从唤醒队列中选择第一个进程,且插入就绪队列中;阻塞队列中没有阻塞进程返回。(8)重复上述步骤,直到本次调度结束。图2优先调度运行结果103.轮转调度(1)输入2选择优先权调度算法模拟。(2)输入开始进程个数n,创建n个PCB并加入就绪队列ready_queue中。(3)就绪队列ready_queue不为空,调度就绪队列中第一个进程运行,否则,从闲逛队列idleproc
6、ess中调度闲逛进程运行。(4)在运行过程中,当遇到阻塞,则该进程插入到阻塞队列block_queue中,且将该进程从ready_queue中删除。(5)如果运行时间CPUtime大于等于Alltime,该进程运行完毕,释放该进程;否则插入到就绪队列中。(6)随机对阻塞队列block_queue中的进程PCB询问是否要唤醒,唤醒,即从唤醒队列中选择第一个进程,且插入就绪队列中;阻塞队列中没有阻塞进程返回。(7)如果时间到,本次调度结束,否则重复上述步骤,直到本次调度结束。图3轮转调度运行结果10开始输入开始进程数n创建n个PCB并加入ready-queue中ready-que
7、ue是否为空YNRunning<=idRunning<=逐个将redy_pc中的PCB阻塞RunningNYRunning=idleYN将Running从ready_queue中删除,再将running加入block_queueb是否创建新PCBNY创建新进程并加入到ready_queue中随机对block_queue中的进程PCB询问是否要唤醒?处理完了吗YN是否要唤醒NY将其从blick_queuek队列是中删除,再将其加入ready_queuekY10轮转调度模拟流程图五.实验过程中遇到的问题及解
此文档下载收益归作者所有