基于时间片的轮转调度算法实验目的:深入了解算法的实现过程实验内容:用C++模拟基于时间片的轮转算法实验步骤:1、编写代码2、运行调试3、查看结果4、编写实验报告实验要求在提交的实验报告中,必须包含如下内容:(1)设计思想、系统结构图、数据结构及程序流程图。(2)调试通过的源程序清单(含必要注释)及运行结果。实验结果:实验小结:时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法。时间片轮转调度中关键的一点是时间片的长度的选取。本实验默认时间片为1,在试验过程中基本满足了实验要求。通过本次实验,我更加了解了时间片轮转调度算法,通过翻看课本,对其的理解更加的深刻了,在以后的学习中,我会更加努力的学习操作系统的相关课程。当然,实验中也遇到了问题,但都不是理论上的问题,而是编程的问题,根本原因还是编程基础不牢。以后会在编程方面努力。源代码:#includestdio.h#includestdlib.hstructPCB{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=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需要运行的时间:);scanf(%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(+---------------|---------------|---------------|---------------+\n);printf(|\tpid\t|\trr\t|\ttime\t|\tSTA\t|\n);printf(|---------------|---------------|---------------|---------------|\n);}printf2(){printf(processesp%drunning\n,head-pid);printf1();printf(|\t%d\t|\t%d\t|\t%d\t|\t%c\t|\n,head-pid,head-rr,head-time,head-sta);printf(|---------------|---------------|---------------|---------------|\n);rp=head;while(rp!=tail){rp=rp-next;printf(|\t%d\t|\t%d\t|\t%d\t|\t%c\t|\n,rp-pid,rp-rr,rp-time,rp-sta);printf(|---------------|---------------|---------------|---------------|\n);}}operation(){intflag=1;while(flag=5){head-rr++;if((head-rr==head-time)||(head-time==0)){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:\n);printf2();//显示初始状态operation();//运行}