资源描述:
《时间片轮转法完成进程调度(操作系统实验报告)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、时间片轮转法完成进程调度【实验目的】(1)加深对进程的理解(2)理解进程控制块的结构(3)理解进程运行的并发性(4)掌握时间片轮转法进程调度算法【实验内容】(1)建立进程控制块(2)设计三个链队列,分别表示运行队列、就绪队列和完成队列(3)用户输入进程标识符以及进程所需的时间,申请空间存放进程PCB信息。(4)每一个时间片结束输出各进程的进程号,CPU时间(即已经占用的CPU时间),所需时间(即还需要的CPU时间),以及状态(即用W表示等待,R表示运行,F表示完成)【程序代码】#include"stdio.h"#include"stdlib.h"structPC
2、B{intpid;//进程标识符intrr;//已运行时间inttime;//进程要求运行时间charsta;//进程的状态structPCB*next;//链接指针};structPCBpcb1,pcb2,pcb3,pcb4,pcb5,*tail,*head,*rp;init(){inti,time;pcb1.pid=1;pcb2.pid=2;pcb3.pid=3;pcb4.pid=4;pcb5.pid=5;pcb1.rr=pcb2.rr=pcb3.rr=pcb4.rr=pcb5.rr=0;pcb1.sta=pcb2.sta=pcb3.sta=pcb4.sta
3、=pcb5.sta='w';printf("请输入时间片p1需要运行的时间:");scanf("%d",&time);pcb1.time=time;printf("请输入时间片p2需要运行的时间:");scanf("%d",&time);pcb2.time=time;printf("请输入时间片p3需要运行的时间:");scanf("%d",&time);pcb3.time=time;printf("请输入时间片p4需要运行的时间:");scanf("%d",&time);pcb4.time=time;printf("请输入时间片p5需要运行的时间:");sca
4、nf("%d",&time);pcb5.time=time;pcb1.next=&pcb2;pcb2.next=&pcb3;pcb3.next=&pcb4;pcb4.next=&pcb5;pcb5.next=&pcb1;head=&pcb1;tail=&pcb5;}voidprintf1(){printf("+---------------
5、---------------
6、---------------
7、---------------+");printf("
8、tpidt
9、trrt
10、ttimet
11、tSTAt
12、");printf("
13、----
14、-----------
15、---------------
16、---------------
17、---------------
18、");}printf2(){printf("processesp%drunning",head->pid);printf1();printf("
19、t%dt
20、t%dt
21、t%dt
22、t%ct
23、",head->pid,head->rr,head->time,head->sta);printf("
24、---------------
25、---------------
26、---------------
27、---------------
28、
29、n");rp=head;while(rp!=tail){rp=rp->next;printf("
30、t%dt
31、t%dt
32、t%dt
33、t%ct
34、",rp->pid,rp->rr,rp->time,rp->sta);printf("
35、---------------
36、---------------
37、---------------
38、---------------
39、");}}operation(){intflag=1;while(flag<=5){head->rr++;if((head->rr==head->time)
40、
41、(head->time==0)
42、){tail->sta='w';head->sta='f';printf2();head=head->next;tail->next=head;flag++;}else{tail->sta='w';head->sta='r';printf2();tail=head;head=head->next;}}}voidmain(){init();//初始化printf("thisisthebeginstate:");printf2();//显示初始状态operation();//运行}【结果截图】