预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共13页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

昆明理工大学理学院 信息与计算科学专业操作性实验报告 年级:09级姓名:学号:指导教师: 实验课程名称:操作系统原理开课实验室:理学院机房 实验成绩: 学风(5)观察能力(15)操作能力(30)调试能力(50)其它总分 实验内容: 1.实验/作业题目:时间片轮转法cpu调度 2.实验/作业课时:4学时 3.实验过程(包括实验环境、实验内容的描述、完成实验要求的知识或技能): 实验环境:windowsXP;vc++;visualstudio2008,MyEclipse6.5 实验内容:编写程序模拟时间片轮转法cpu调度。 a、运行编写的程序,写出程序中使用的数据结构及符合说明; b、画出程序的流程图,程序中附有详细的注释; c、运行程序,输入运行时的初值,输出运行结果; d、写出对时间片轮转法cpu调度的认识及它的适应环境; e、改写下面的程序,改成java代码。 4.程序结构(程序中的函数调用关系图) #include"stdio.h" #include"stdlib.h" #include"string.h" 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"); else printf("进程号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");/*