实验二带优先级的时间片轮换的进程调度算法的实现.ppt

上传人:牧羊曲112 文档编号:5961459 上传时间:2023-09-08 格式:PPT 页数:19 大小:582.50KB
返回 下载 相关 举报
实验二带优先级的时间片轮换的进程调度算法的实现.ppt_第1页
第1页 / 共19页
实验二带优先级的时间片轮换的进程调度算法的实现.ppt_第2页
第2页 / 共19页
实验二带优先级的时间片轮换的进程调度算法的实现.ppt_第3页
第3页 / 共19页
实验二带优先级的时间片轮换的进程调度算法的实现.ppt_第4页
第4页 / 共19页
实验二带优先级的时间片轮换的进程调度算法的实现.ppt_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《实验二带优先级的时间片轮换的进程调度算法的实现.ppt》由会员分享,可在线阅读,更多相关《实验二带优先级的时间片轮换的进程调度算法的实现.ppt(19页珍藏版)》请在三一办公上搜索。

1、带优先级的时间片轮换的进程调度算法的实现,一、实验目的(1)掌握进程状态转换过程(2)掌握时间片轮转的进程调度算法;(3)掌握带优先级的进程调度算法,二、实验内容(1)自定义PCB的数据结构;(2)使用带优先级的时间片轮转法调度进程,每运行一 个时间片,优先级减半。(3)命令集A)create 随机创建进程,进程的优先级与所需要的时间片随机决定;B)round 执行1次时间片轮转操作,其方法为运行高优先级队列的 第1个,再降低其优先级,插入到相应的队列中。C)ps 查看当前进程状态D)sleep 命令将进程挂起E)awake 命令唤醒1个被挂起的进程F)kill 命令杀死进程G)quit命令退

2、出(4)选用面向对象的编程方法。,三、实验原理或算法 本实验结合了进程状态转换、优先级调度、时间片轮转调度三方面的内容,根据进程状态转换图,设置SLEEP命令,将1个进程挂起,AWAKE命令唤醒1个被挂起的进程(从阻塞状态到就绪状态)。1)优先级 优先级体现了进程的重要程度或紧迫程度,在大多数现代操作系统中,都采用了优先级调度策略。优先级从小到大(如 0-127)优先级最高,127 最低。在本实验中按数值大小决定优先级,数值大的优先级高。2)基于时间片调度 将所有的就绪进程按照先来先服务的原则,排成一个队列,每次调度时,将 cpu 分配给队首进程,并令其执行一个时间片。当时间片用完时,由一个计

3、时器发出时钟中断请求,调度程序把此进程终止,把该进程放到队尾。在该实验中,时间片以 100ms 为单位(实际的要小得多)。在调度过程中,需要通过时间函数检测进程的执行时间,当该进程执行时间时间片大小时,进行调度。,3)高优先级调度 优先级高的进程优先得到 cpu,等该进程执行完毕后,另外的进程才能执行。4)基于时间片的高优先级调度 在调度算法中,只有处于就绪状态的进程才能被调度,调度算法结合了优先级调度和时间片轮转调度算法,约定:从最高优先级队列取第1个就绪状态的进程进行调度,时间片到后降低其优先级(降低一半),然后插入到低优先级队列的尾部,每次调度后,显示进程的状态。,四、数据结构及符号说明

4、struct pcb/PCBint ident;/标识符 int state;/状态 0-就绪,1运行,2堵塞 int pior;/优先级,MAXPIOR为最高优先级*/int life;/生命期*/struct pcb*next;/*指针*/void init()/int create()/void ps()/void awake(int x)/void kill(int x)/void process()/对输入命令的处理void routine()/执行一次调度运行,将最高优先级队列的进程运行1个时间片,并降低其优先级,六、实验源程序#include#include#include#de

5、fine getpch(type)(type*)malloc(sizeof(type)struct pcb/*定义进程控制块PCB*/char name10;char state;int super;int needtime;int runtime;struct pcb*link;*ready=NULL,*p;typedef struct pcb PCB;int ident;/标识符 int state;/状态 0-就绪,1运行,2堵塞 int pior;/优先级,MAXPIOR为最高优先级*/int life;/生命期*/struct pcb*next;/*指针*/,int create()

6、int i=0,pior=0;struct pcb*p,*q,*s;while(idlisti!=0,void sleep(int x)int i=0,test=0;struct pcb*p=NULL,*q=NULL;while(test=0,p=arraypior;/建立同优先级队列(链表)if(p=NULL)arraypior=s;else while(p!=NULL)q=p;p=p-next;q-next=s;printf(success create process id=%d,current process state disp below:n,s-ident);ps();/prin

7、tf(end displayn);return 1;void ps()int i=0;struct pcb*p;for(i=0;iident,p-state,p-pior,p-life);p=p-next;,if(i=MAXPIOR)printf(Invaild process number.);else if(p-state=2)printf(the process%d has blocked,cannot sleep again!,p-ident);else p-state=2;ps();void awake(int x)int i=0,test=0;struct pcb*p=NULL,*

8、q=NULL;while(test=0 while(p!=NULL)if(p-ident=x),test=1;killtest=1;break;else q=p;p=p-next;if(test=0)i+;/*找到X所在指针*/if(i=MAXPIOR)printf(Invaild process number.);else if(p-state=0)printf(the process%d is ready state,cannot awake again!,p-ident);else p-state=0;ps();void kill(int x)int i=0,test=0;struct

9、pcb*p=NULL,*q=NULL;while(test=0,if(i!=MAXPIOR else,q-next=p-next;idlistx=0;life=life-(p-life);free(p);void process()/对输入命令的处理int i=0,ii=0;for(i=0;i7;i+)if(stricmp(str,commandi)=0)break;switch(i)case 0:printf(thank you for using the program!n);exit(0);break;case 1:ps();break;case 2:create();break;cas

10、e 3:printf(Which process you want to kill?n);,scanf(%d,void routine()/执行一次调度运行,将最高优先级队列的进程运行1个时间片,并降低其优先级 int i=MAXPIOR-1,pior=0,t;struct pcb*pp,*qq,*pr,*r;do while(i=0/进程处于就绪状态 if(r-life-QUANTUM0),r-life=r-life-QUANTUM;/时间减少QUANTUM life=life-QUANTUM;else life=life-r-life;r-life=0;if(r-life=0)/进程运行完

11、成,KILL它 printf(the process%d is successful run,and release it!n,r-ident);kill(r-ident);else if(pr=r)/将r结点从原队列中删除 arrayi+1=r-next;else pr-next=r-next;t=r-pior;/将r进程加入到相应低优先级队列中的最后 pp=arrayt;qq=NULL;while(pp!=NULL),qq=pp;pp=pp-next;if(qq=NULL)/插入到队尾 arrayt=r;else qq-next=r;r-next=NULL;printf(after.n);ps();printf(n 1 quantum successful run!n);/*void main()init();printf(Welcome to the Process Scheduling system.This program simulate the Round-Robin with piror Scheduling alogrithm.n);printf(c:);scanf(%s,str);process();while(strcmp(str,quit)!=0)printf(nc:);scanf(%s,str);process();,谢谢观赏,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号