1 / 19
文档名称:

进程调度算法论文优先级调度~.doc

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

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

分享

预览

进程调度算法论文优先级调度~.doc

上传人:文库旗舰店 2019/12/23 文件大小:48 KB

下载得到文件列表

进程调度算法论文优先级调度~.doc

文档介绍

文档介绍:题  目 操作系统课程设计实验一:,掌握进程状态之间的切换,同时掌握进程调度算法的实现方法和技巧。)用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)进程每运行一个时间片,)在调度前,系统中拥有的进程数PCB_number由键盘输入,经初始化后,所有的进程控制块PCB链接成就绪队列。)画出程序流程图a)动态优先权的进程调度算法模拟流程b)轮转法进程调度算法模拟流程b)程序算法如下:#include""#defineNULL0#include<>#include<>#include<iostream>usingnamespacestd;/*进程PCB结构*/structPCB{intID;     //进程标识intpriority;  //优先级intCPUtime;   //进程占用CPU的时间intALLtime;   //进程总共需要运行的时间intState;    //进程状态structPCB*next;//指向下一节点的指针};typedefstructPCBpcb;voidinit();//产生idle进程,输入用户进程数目,//调用insert()voidprint(PCB*pcb);//输出进程属性信息voidprint_init(PCB*pcb);voidinsert();//生成进程属性信息,插入进程就绪队列voidrun_priority(PCB*pcb);//运行进程,随机阻塞进程,产生新进程,插入就绪队列,唤醒阻塞进程voidrun_loop(PCB*pcb);//运行进程,随机阻塞进程,产生新进程,插入就绪队列,唤醒阻塞进程voidblock(PCB*pcb);//调用destroy(),将进程插入阻塞队列voidwakeup_priority();//唤醒进程,插入就绪队列voidwakeup_loop();//唤醒进程,插入就绪队列voidproc_priority();//优先权调度算法模拟voidproc_loop();//轮转法调度算法模拟voidupdate(PCB*pcb);//更新进程信息PCB*ready_queue,*block_queue,*idleprocess;//就绪队列,阻塞队列及闲逛进程指针变量intmain(intargc,char*argv[]){inti=0;while(1){cout<<("\nPleaseselectanumber(1,2,0)");cout<<("\n1--priority");cout<<("\n2--loop");cout<<("\n0--exit\n");cin>>i;if(i==1){cout<<("\nThisisanexampleforpriorityprocessing:\n");init();::proc_priority();}elseif(i==2){cout<<("\nThisisanexampleforroundrobinprocessing:\n");init();proc_loop();}elseif(i==0)exit(1);}