资源描述:
《时间片轮法完成进程调度(操作系统实验报告)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、.时间片轮转法完成进程调度【实验目的】(1)加深对进程的理解(2)理解进程控制块的结构(3)理解进程运行的并发性(4)掌握时间片轮转法进程调度算法【实验内容】(1)建立进程控制块(2)设计三个链队列,分别表示运行队列、就绪队列和完成队列(3)用户输入进程标识符以及进程所需的时间,申请空间存放进程PCB信息。(4)每一个时间片结束输出各进程的进程号,CPU时间(即已经占用的CPU时间),所需时间(即还需要的CPU时间),以及状态(即用W表示等待,R表示运行,F表示完成)【程序代码】#include"stdio.h"#include"stdlib.h"structPCB{intpid
2、;//进程标识符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=pcb5.sta='w';p
3、rintf("请输入时间片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需要运行的时间:");scanf("%d",&time);pcb5.ti
4、me=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、");rp=head;while(rp!=tail){rp=rp->nex
29、t;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)){tail->sta='w';head->sta='f';printf2();head=
42、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();//运行}【结果截图】.........