进程调度算法操作系统课程设计.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《进程调度算法操作系统课程设计.pdf》由会员分享,可在线阅读,更多相关《进程调度算法操作系统课程设计.pdf(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机科学与应用系操作系统原理课程设计报告题目:进程调度算法班级:0510074 姓名:lee hye 专业:计算机科学与技术指导老师:hhh 操作系统课程设计2 进程调度算法一、实验目的通过优先权法与轮转调度算法的模拟加深对进程概念和进程调度过程的理解,掌握进程状态之间的切换,同时掌握进程调度算法的实现方法和技巧。二、实验内容1、用 C语言或 C+语言来实现对 N个进程采用优先算法以及轮转算法的进程调度。2、每个用来标示进程的进程控制块PCB 用结果来描述,包括以下字段(1)进程标识 ID,其中 0为闲逛进程,用户进程的标识数为1、2、3、。(2)进程优先级 Priority,闲逛进程(id
2、le)的优先级为 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、为了清楚的观察诸进程的调度过程,程序
3、应将每个时间片内的进程的情况显示出来。三、实验步骤1、进程管理程序调式好后,运行进程管理程序操作系统课程设计3 Y N N Y Y N N Y Y N N Y ready-queue 是否为将 Running 从 ready_queue中删除,再将 running 加入 block_queueb 将其从 blick_queuek 队列是中删除,再将其加入ready_queuek 输入开始进程数n 随机对 block_queue 中的进程PCB 询问是否要唤醒?创建新进程并加入到ready_queue中Running 逐个将 redy_pc 中的 PCB 创建 n 个 PCB 并加入 ready
4、queue 中处理完了吗阻塞 Running 是否要唤醒是否创建新PCB Running=idle 更新新进程就绪队列进程优先数,优先数加1 Running=id 操作系统课程设计4 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)重复上述步骤,直到本次调度结束。操作系统课程设计5 3、轮转调度(1)输入 2 选择优先权调度算法模拟。(2)输入开始进程个数n,创建 n 个 PCB并加入就绪队列 ready_queue 中。(3)就绪队列 ready_queue 不为空,调度就绪队列中第一个进程运行,否则,从闲逛队列idleproces
6、s中调度闲逛进程运行。(4)在运行过程中,当遇到阻塞,则该进程插入到阻塞队列block_queue中,且将该进程从ready_queue 中删除。(5)如果运行时间CPUtime大于等于 Alltime,该进程运行完毕,释放该进程;否则插入到就绪队列中。(6)随机对阻塞队列block_queue 中的进程 PCB询问是否要唤醒,唤醒,即从唤醒队列中选择第一个进程,且插入就绪队列中;阻塞队列中没有阻塞进程返回。(7)如果时间到,本次调度结束,否则重复上述步骤,直到本次调度结束。操作系统课程设计6 Y N N Y Y N N Y Y N N Y Y ready-queue 是否为将 Running
7、 从 ready_queue中删除,再将 running 加入 block_queueb 将其从 blick_queuek 队列是中删除,再将其加入ready_queuek 输入开始进程数n 随机对 block_queue 中的进程PCB 询问是否要唤醒?创建新进程并加入到ready_queue中Running 逐个将 redy_pc 中的 PCB 创建 n 个 PCB 并加入 readyqueue 中处理完了吗阻塞 Running 是否要唤醒是否创建新PCB Running=idle Running=id 操作系统课程设计7 四、实验过程中遇到的问题及解决方案1、请仔细阅读动态优先权的进程调
8、度算法的模拟实现代码,说明该算法与教材中介绍的算法做了哪些简单化处理.优先权模拟时优先权是随机产生,在实际的系统中,系统进程的优先权高于一般用户进程的优先权。2、为什么对进程的优先数可按上述原则进行修改?最高优先权调度算法仅照顾了优先权高的进程,当不断有优先权高的进程需调度时,而优先权低的进程将很难得到处理机的调度,所以进程在就绪队列中每呆一个时间片,优先数增加1,使优先权低的进程不总是忙等。3、请给出设计实现的轮转发进程调度算法的设计思想.时间轮转调度算法:系统将所有的就像进程按先来先服务的原则,排成一个队列,每次调度时,把CPU 分配给首进程,并令其执行一个时间片。当执行的时间片用完时,发
9、出中断请求,调度程序便据此信号来停止该进程的执行,并将其送到就绪队列的末尾,如此反复,就可以保证就绪队列中的所有进程在一个给定的时间内,均能获得一时间片处理机执行时间。4、在实际的进程调度中,除了按调度算法选择下一个执行的进程外,还应处理哪些工作?最高优先权调度算法,常用于批处理系统中,作为作业调度算法,也作为多种操作系统中的进程调度算法,还可以用于实时系统中:时间轮转调度算法,一般用于分时系统中。五、课程设计总结1、当把该算法用于作业调度时,系统将从后备队列中选择若干个优先权最高的作业,装入内存,当用于进程调度算法时,该算法是把处理及分配给就绪队列中优先权最高的进程。2、当系统空闲(就绪队列
10、为空)时,系统运行闲逛进程,否则运行其他进程,发生变迁(就绪运行)3、在运行进程(包括闲逛进程)的过程中,可能发生变迁2(运行阻塞),即将运行进程插入到阻塞队列(闲逛进程不能不被阻塞),可能有其他的进程创建 PCB,还可能唤醒阻塞队列中的某些进程PCB,发生变迁 3(阻塞就绪),即从阻塞队列中插入就绪队列中。4、时间片运行结束后,若进程累积占用CPU时间大于等于进程需要运行时间,则进程执行结束,释放其PCB。若进程累积占用CPU时间小于进程需要运行时间,发生变迁4(运行就绪),即将当前运行的进程插入就绪队列中。操作系统课程设计8 附:进程调度算法代码/process.cpp:Defines t
11、he entry point for the console application./#include stdafx.h#include stdio.h#include stdlib.h#include iostream.h#define NULL 0#define false 0#define true 1 bool _state=0;struct PCB int ID;int priority;int CPUtime;int ALLtime;int State;PCB*next;void init();/*产生 idle进程,输入用户进程数目,调用insert()*/void print
12、(PCB*pcb);/*输出进程属性信息*/void print_init(PCB*pcb);/*输出所有PCB的初始值*/void insert();/*生成进程属性信息,插入进程就绪队列*/void Run_priority(PCB*pcb);/*运行进程,随机阻塞进程、产生新进程,插入就绪队列,唤醒阻塞进程*/void block(PCB*pcb);/*调用 destroy()将进程插入阻塞队列*/void wakeup();/*唤醒进程,插入就绪队列*/void proc_priority();/*优先权调度算法模拟*/void Run_loop(PCB*pcb);void proc_
13、loop();/*轮转法调度算法模拟*/void update(PCB*pcb);/*更新进程信息*/void pushback_queue(PCB*queue,PCB*item);/*将 item 插入到队列的尾部*/void insert_queue(PCB*queue,PCB*item);/*将 item 插入到队列中,使得插入后,队列中按照优先级从高到低有序*/void sort_queue(PCB*&queue);/*对 queue 中的结点进行排序,按照优先级从大到小*/PCB*ready_queue,*block_queue,*idleprocess;/*就绪队列,阻塞队列及闲逛
14、进程指针变量*/操作系统课程设计9 int main(int argc,char*argv)int i=0;while(1)cout*PROCESS*/;cout(n Please select a num in(1,2,0);cout(n 1-priority);cout(n 2-loop);cout(n 0-exitn);couti;while(i)if(i=1)cout(n This is a example for priority processing:n);init();proc_priority();else if(i=2)cout(n This is a example for
15、 round robin processing:n);init();proc_loop();else coutPlease select a num in(1,2,0)n;couti;return 0;/输出所有PCB的初始值void print_init(PCB*pcb)PCB*temp=pcb-next;cout(nID priority CPUtime ALLtime State);while(temp!=NULL)操作系统课程设计10 coutnID priority CPUtime ALLtime;if(temp-State=0)coutState=1)cout(running);e
16、lse coutnext;/输出进程属性信息void print(PCB*pcb)PCB*temp;temp=pcb;if(pcb-ID=0)cout(nThe idle peocess id running!);else coutnID priority CPUtime ALLtime;if(temp-State=0)coutState=1)cout(running);else coutnext;while(p!=0&p-priority=item-priority)q=p;p=p-next;if(p=0)item-next=0;q-next=item;操作系统课程设计11 else ite
17、m-next=p;q-next=item;/将 item 插入到阻塞队列的尾部void pushback_queue(PCB*queue,PCB*item)PCB*p,*q;q=queue,p=q-next;while(p!=0)q=p;p=p-next;item-next=q-next;q-next=item;/对 queue 中的结点进行排序,按照优先级从大到小void sort_queue(PCB*&queue)PCB*temp=new PCB;temp-next=0;while(queue-next)PCB*p;p=queue-next;queue-next=p-next;insert
18、_queue(temp,p);queue-next=temp-next;delete temp;/生成进程属性信息,插入进程就绪队列,显示进程信息void insert()PCB*newp=0;static long id=0;newp=new PCB;id+;newp-ID=id;newp-State=0;操作系统课程设计12 newp-CPUtime=0;newp-priority=rand()%3+1;newp-ALLtime=rand()%3+1;newp-next=NULL;pushback_queue(ready_queue,newp);/print(newp);/cout rea
19、dyn);/生成 n 个进程属性信息,插入进程就绪队列,显示进程信息void insert(int n)for(int i=0;inext=0;ready_queue=new PCB;ready_queue-next=0;int i=0,pcb_number=-1;/闲逛进程放入就绪队列idleprocess=NULL;idleprocess=(PCB*)malloc(sizeof(PCB);idleprocess-ID=0;idleprocess-State=0;idleprocess-CPUtime=0;idleprocess-priority=0;idleprocess-ALLtime=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 进程 调度 算法 操作系统 课程设计
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内