1 / 26
文档名称:

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

格式:doc   页数:26
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

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

上传人:钻石文档库 2013/9/8 文件大小:0 KB

下载得到文件列表

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

文档介绍

文档介绍:计算机科学与应用系
操作系统原理
课程设计报告
题目: 进程调度算法
班级: 0510074
姓名: lee hye
专业: 计算机科学与技术
指导老师: hhh
进程调度算法
一、实验目的
通过优先权法与轮转调度算法的模拟加深对进程概念和进程调度过程的理解,掌握进程状态之间的切换,同时掌握进程调度算法的实现方法和技巧。
二、实验内容
1、用C语言或C++语言来实现对N个进程采用优先算法以及轮转算法的进程调度。
2、每个用来标示进程的进程控制块PCB用结果来描述,包括以下字段
(1)进程标识ID,其中0为闲逛进程,用户进程的标识数为1、2、3、、、、、、、。
(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、进程管理程序调式好后,运行进程管理程序
输入开始进程数n
创建n个PCB并加入ready-queue中
ready-queue是否为空
Y

N
Running<=id
Running<=逐个将redy_pc中的PCB

阻塞Running
N
Y
Running=idle
Y
N
将Running从ready_queue中删除,再将running加入block_queueb


更新新进程就绪队列进程优先数,优先数加1
是否创建新PCB
N
Y
创建新进程并加入到ready_queue中
随机对block_queue中的进程PCB询问是否要唤醒?


处理完了吗
Y
N
是否要唤醒
N
Y
将其从blick_queuek队列是中删除,再将其加入ready_queuek

2、优先权调度
(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)如果时间到,本次调度结束,否则重复上述步骤,直到本次调度结束。
输入开始进程数n
创建n个PCB并加入ready-queue中
ready-queue是否为空
Y

N
Running<=id
Running<=逐个将redy_pc中的PCB

阻塞Running
N
Y
Running=idle
Y
N
将Running从ready_queue中删除,再将runni