欢迎来到天天文库
浏览记录
ID:30881234
大小:73.50 KB
页数:8页
时间:2019-01-04
《实验一进程调度》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验报告撰写要求实验报告要求具有以下内容:一、实验目的二、实验内容三、实验要求!1!算法流程图五、给出测试数据及运行结果六、实验体会或对改进实验的建议实验1进程调度一、实验目的通过实验加强对进程调度算法的理解和掌握。二、实验内容编写程序实现基于优先级的时间片轮转调度算法。三、实验要求1、假定系统有5个进程,每个进程用一个进程控制块PCB来代表,进程控制块的结构如下图1・1所示:其中:进程名:作为进程的标识,假设五个进程的进程名分别为pl,p2,p3,p4,p5o指针:进程按顺序排成循环链表,用指针指出下一个进程的进程控制块首地址,最后一个进程中的指针指出第一
2、个进程的进程控制块首地址。要求运行时间:假设进程需要运行的单位时间数。己运行时间:假设进程己经运行的单位时间数,初值为0。状态:可假设有两种状态,就绪状态和结束状态。进程的初始状态都为就绪状态。2、每次运行所设计的处理器调度程序调度进程之前,为每个进程随机确定它的要求运行时间。3、此程序是模拟处理器调度,因此,被选中的进程并不实际启动运行,而是执行已运行时间+1来模拟进程的一次运行,表示进程己经运行过一个单位时间。4、在所设计的程序中应有显示语句,能显示每次被选中的进程名以及运行一次后进程队列的变化。代码:packagecn.edu.cust・first;i
3、mportjava.util.Random;publicclassProcessControl{publicstaticvoidmain(Stringargs[]){booleanflag二true;PCBp[]=newPCB[5];Randomran二newRandom();inta二0;for(inti二0;i〈5;i++){p[i]二newPCB();//初始化五个进程对象p[i]・PCBNamc二〃proccss〃+i;p[i]・runtime=i+2;p[i]・priority二5-i;}PCBhead=newPCB();for(intj二0;j〈
4、5;j++){if(j<4)p[j]・pcb二p[(j+l)];elsep[j]・pcb=nul1;}head.pcb=p[0];PCBtemp二head.pcb;PCBrun二head.pcb;for(intx=0;x<21:x++){//while(flag){temp二head.pcb;while(temp!二null)System.out.printin(,zpcb名,z+temp.PCBName+,z,priority/z+temp・priority+/,,status:zz+temp.status+/zruntimc:z,+tcmp・runtim
5、c+^runcdtinmc^+tcmp・runcdtimc);temp二temp・pcb;}System・out・printin();run(run,head);calPreority(run,head);run二sortAndtetrit(head);}}publicstaticvoidrun(PCBpcb,PCBhead){pcb.runedtime+=l:if(pcb.runedtime=pcb・runtime)pcb.status二1;publicstaticvoidcalPreority(PCBpcb,PCBhead){if(pcb・status=
6、l){pcb・priority二-1;}elsepcb.priority=((double)pcb・runtime-pcb.runedtime)/pcb.runtime;}publicstaticPCBsortAndretrit(PCBhead){PCBtemp二head.pcb;whi1e(temp.pcb!二nul1&&head・pcb.priority7、d・pcb=head・pcb・pcb;temp1.pcb=temp.pcb:temp.pcb二tempi;returnhead.pcb;}}}publicstaticbooleantest(PCBpcb,PCBhead){PCBtemp二head.pcb;booleanflag二false;while(temp!=null){if(temp・status=0)flag=true;temp二temp・pcb;}returnflag;classPCB{publicStringPCBName;publicdoublepriority;publicintpublic8、intpublicintpublicPCBPCB()
7、d・pcb=head・pcb・pcb;temp1.pcb=temp.pcb:temp.pcb二tempi;returnhead.pcb;}}}publicstaticbooleantest(PCBpcb,PCBhead){PCBtemp二head.pcb;booleanflag二false;while(temp!=null){if(temp・status=0)flag=true;temp二temp・pcb;}returnflag;classPCB{publicStringPCBName;publicdoublepriority;publicintpublic
8、intpublicintpublicPCBPCB()
此文档下载收益归作者所有