资源描述:
《操作系统-实验报告模板!》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、操作系统课程实验报告姓名蔡剑坤学号0901010001系计算机任课教师贺辉指导教师贺辉评阅教师贺辉实验地点综合楼B104励耘楼A206综合楼B102丽泽楼C304-1(请勾选实际实验地点)实验时间2011-11-4实验课表现出勤和个人表现Q1(15+15(组长评分)=30分)得分:25实验总分(Q1+Q2+Q3+Q4)实验完成情况Q2(45分(组长与教师评分的加权平均))得分:实验编号与实验名称:实验六进程调度模拟实验目的:进程调度是处理机管理的核心内容。通过本实验可以加深理解有关进程控制块(进程的概念)、进程队列的概念及进程
2、调度算法的理解并体会和了解优先数和时间片轮转调度算法的具体实施办法。实验内容及要求(详见实验讲义与实验指导书):实验内容本实验要求用C语言编写和调试一个简单的进程调度模拟程序。须在实验报告中给出详细算法描述和流程图。实验要求①设计进程控制块PCB表结构,分别适用于优先数调度算法和轮转调度算法。②建立进程就绪队列。对两种不同算法编制入队子程序。③编制两种进程调度算法:1)优先数调度;2)轮转调度实验用到的软件(:)Visualstudios2010实验内容及关键步骤(代码)Q3(15分)得分:#include#
3、include#include#includetypedefstructnode{charname[10];/*进程标识符*/intprio;/*进程优先数*/intround;/*进程时间轮转时间片*/intcputime;/*进程占用CPU时间*/intneedtime;/*进程到完成还要的时间*/intcount;/*计数器*/charstate;/*进程的状态*/structnode*next;/*链指针*/}PCB;PCB*finish,*ready,*tai
4、l,*run;/*队列指针*/intN;/*进程数*///几个函数的声明voidcreate1(char);voidcreate2(char);voidpriority(char);voidroundrun(char);voidinunization()//初始化界面{printf("tt*********************************************tt");printf("tttt实验六进程调度模拟");printf("tt*******************
5、**************************tt");printf("ttttt2009级计算机/软件");printf("ttttt刘德华");printf("ttttt3204007102");printf("ttttt完成时间:2011年10月20日");}/*标题输出函数*/voidprt1(chara){if(toupper(a)=='P')/*优先数法*/printf("进程号cpu时间所需时间优先数状态");els
6、eprintf("进程号cpu时间所需时间记数时间片状态");}/*进程PCB输出*/voidprt2(chara,PCB*q){if(toupper(a)=='P')/*优先数法的输出*/printf("%-10s%-10d%-10d%-10d%c",q->name,q->cputime,q->needtime,q->prio,q->state);else/*轮转法的输出*/printf("%-10s%-10d%-10d%-10d%-10d%-c",q->name,q->cputime,q->needtime,q
7、->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;}getcha
8、r();/*压任意键继续*/}/*主函数*/intmain(){charalgo;/*算法标记*/inunization();printf("选择算法:P/R(优先数算法/时间片轮转算法)");scanf("%c",&algo);/*输入字符确定算法*/printf("输