1、进程控制块能够包含如下信息:进程名、优先数、到达时间、需要运行时间、已用 CPU 时间、进程状态等等。进程的优先数及需要的运行时间能够事先人为地指定(也能够由随机数产生)。进程的到达时间为输入进程的时间。进程的运行时间以时间片为单位进行计算。每个进程的状态能够是就绪 W(Wait)、运行 R(Run)、或完成 F(Finish)三种状态之壹。就绪进程获得 CPU 后均只能运行壹个时间片。用已占用 CPU 时间加 1 来表示。如果运行壹个时间片后,进程的已占用 CPU 时间已达到所需要的运行时间,则撤消该进程, 如果运行壹个时间片后进程的已占用 CPU 时间仍未达所需要的运行时间,也就是进程仍需
2、要继续运行,此时应将进程的优先数减 1(即降低壹级),然后把它插入就绪队列等待 CPU。每进行壹次调度程序均打印壹次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。重复之上过程,直到所要进程均完成为止四、程序流程图设置时间片是 五、程序源代码#includestdafx.h#includestdlib.hstring.hctype.hiostreamfstream usingnamespacestd;ofstreammyfile(bb.txt,ios:app|ios:trunc); typedefstructnodecharname10;/*进程名*/intround;/*进程分配的
3、时间片*/intcputime;/*进程消耗的CUP时间*/intneedtime;/*进程需要的CUP时间*/intcount;/*进程运行时间*/charstate;/*进程的状态:R运行,W:等待,F结束*/structnode*next;/*指向下壹个进程的指针*/PCB;PCB*finish,*ready,*tail,*run;/*指向三个队列的队首的指针,tail为就绪队列的队尾指针*/intN;/*定义进程的数目*/ voidfirstin(void)if(ready!=NULL)run=ready; ready=ready-next; run-state=;next=NULL;
4、elserun=NULL;voidprt1(chara)coutnamecputimeneedtimecountroundstateendl; myfilemyfilenamecputimeneedtimecountroundstatep=finish;getchar();voidinsert(PCB*q)tail-next=q; tail=q;q-voidrcreate_task(charalgo) intn,time; charna10; ready=NULL; finish=NULL; run=NULL;请输入进程数目N: cinN;for(n=0;nn+)p=(PCB*)malloc(
5、sizeof(PCB); coutname,na); p-cputime=0;needtime=time;count=0;round=2;insert(p);next=ready; ready=p; tail=p;创建成功。voidchakan(charalgo)if(run-count=run-round)run- if(ready! insert(run); firstin();prt(algo);voidroundrun(charalgo)while(run!cputime=run-cputime+1;needtime=run-needtime-1;count=run-count+1;
6、if(run-needtime=0)next=finish; finish=run;firstin();voidcaidan()*主页*1.I创建若干进程*2.C进程进行查见*3.O进程进行调度*4.H结束*intmain()loop1:caidan(); charalgo;algo;if(algo=i|algo=I)rcreate_task(algo);elseif(algo=cCchakan(algo);oOroundrun(algo);hHgotoloop2;gotoloop1; loop2: my(); return0;六、运行结果七、问题及解决方法(1)处理器调度总是选队首进程运行。
7、采用动态改变优先数的办法,进程每运行壹次优先数就减“1”。由于本实习是模拟处理器调度,所以,对被选中的进程且不实际的启动运行,而是执行(2)进程运行壹次后,若要求运行时间0,则再将它加入队列(按优先数大小插入,且置队首标志);若要求运行时间=0,则把它的状态修改成“结束”(E),且退ft队列。(3)若“就绪”状态的进程队列不为空,则重复上面(1)和(2)的步骤,直到所有进程均成为“结束”状态。(4)于所设计的程序中应有显示或打印语句,能显示或打印每次被选中进程的进程名以及运行壹次后进程队列的变化。(5)为五个进程任意确定壹组“优先数”和“要求运行时间”,启动所设计的处理器调度程序,显示或打印逐
8、次被选中进程的进程名以及进程控制块的动态变化过程。八、心得体会操作系统是计算机系统中必不可少的系统软件。它是计算机系统中各种资源的管理者和 各种活动的组织者、指挥者。操作系统采用时间片法调度进程,使系统资源得到充分的利用, 用户也能够花更少的时间完成更多的工作,这次模拟系统调度进程,让我明白了系统时间片的调度方法,对操作系统理论的学习更加深壹层。通过这次的课设也让我充分的体会到了要真正的理解计算机操作系统的工作原理应该多上机做试验和操作,这样才能领悟的更深更好。或许程序完成的有点粗糙可是也花了壹些心里,感觉自己仍时弄懂了它的实现过程,以前觉得操作系统均时些理论上的东西对于具体的实践说实话仍确实没怎么弄过。所以这次的课程设计让我学到了更多的东西。知识改变命运
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1