1 / 23
文档名称:

时间片轮转法cpu调度.doc

格式:doc   大小:153KB   页数:23页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

时间片轮转法cpu调度.doc

上传人:一叶轻舟 2020/8/9 文件大小:153 KB

下载得到文件列表

时间片轮转法cpu调度.doc

文档介绍

文档介绍:昆明理工大学理学院信息与计算科学专业操作性实验报告年级:09级姓名:学号:指导教师:实验课程名称:操作系统原理开课实验室:理学院机房实验成绩:学风(5)观察能力(15)操作能力(30)调试能力(50)其它总分实验内容:::(包括实验环境、实验内容的描述、完成实验要求的知识或技能): 实验环境:windowsXP;vc++;visualstudio2008, 实验内容:编写程序模拟时间片轮转法cpu调度。 a、运行编写的程序,写出程序中使用的数据结构及符合说明; b、画出程序的流程图,程序中附有详细的注释; c、运行程序,输入运行时的初值,输出运行结果; d、写出对时间片轮转法cpu调度的认识及它的适应环境; e、改写下面的程序,改成java代码。(程序中的函数调用关系图)#include""#include""#include""typedefstructnode{charname[10];/*进程标识符*/intprio;/*进程优先数*/intround;/*进程时间轮转时间片*/intcputime;/*进程占用CPU时间*/intneedtime;/*进程到完成还要的时间*/intcount;/*计数器*/charstate;/*进程的状态*/structnode*next;/*链指针*/}PCB;PCB*finish,*ready,*tail,*run;/*队列指针*/intN;/*进程数*//*将就绪队列中的第一个进程投入运行*/firstin(){run=ready;/*就绪队列头指针赋值给运行头指针*/run->state='R';/*进程状态变为运行态*/ready=ready->next;/*就绪对列头指针后移到下一进程*/}/*标题输出函数*/voidprt1(chara){if(toupper(a)=='P')/*优先数法*/printf("进程号cpu时间所需时间优先数状态\n");elseprintf("进程号cpu时间所需时间记数时间片状态\n");}/*进程PCB输出*/voidprt2(chara,PCB*q){if(toupper(a)=='P')/*优先数法的输出*/printf("%-10s%-10d%-10d%-10d%c\n",q->name,q->cputime,q->needtime,q->prio,q->state);else/*轮转法的输出*/printf("%-10s%-10d%-10d%-10d%-10d%-c\n",q->name,q->cputime,q->needtime,q->count,q->round,q->state);}/*输出函数*/voidprt(charalgo){PCB*p;prt1(algo);/*输出标题*/if(run!=NULL)/*如果运行指针不空*/prt2(algo,run);/*输出当前正在运行的PCB*/p=ready;/*输出就绪队列PCB*/while(p!=NULL){prt2(algo,p);p=p->next;}p=finish;/*输出完成队列的PCB*/while(p!=NULL){prt2(algo,p);p=p->next;}getchar();/*压任意键继续*/}/*优先数的插入算法*/insert1(PCB*q){PCB*p1,*s,*r;intb;s=q;/*待插入的PCB指针*/p1=ready;/*就绪队列头指针*/r=p1;/*r做p1的前驱指针*/b=1;while((p1!=NULL)&&b)/*根据优先数确定插入位置*/if(p1->prio>=s->prio){ r=p1; p1=p1->next;}else b=0;if(r!=p1)/*如果条件成立说明插入在r与p1之间*/{r->next=s;s->next=p1;}else{s->next=p1;/*否则插入在就绪队列的头*/ready=s;}}/*优先数创建初始PCB信息*/voidcreate1(charalg){PCB*p;inti,time;charna[10];ready=NULL;/*就绪队列头指针*/finish=NULL;/*完成队列头指针*/run=NULL;/*运行队列指针*/printf("输入进程号和运行时间:\n");/*输入进程标识和所需时间创建PCB*/for(i=1;i<=N;i++){p=(PCB*)malloc(sizeof(PCB));scanf("%s",na);scanf("%d",&time);strcpy(p->name,na);p-