资源描述:
《操作系统实验二报告-时间片轮转进程调度算法.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、操作系统实验报告实验二时间片轮转进程调度算法学号:班级:姓名:【实验题目】:时间片轮转进程调度算法【实验目的】通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。【实验内容】问题描述:设计程序模拟进程的时间片轮转RR调度过程。假设有n个进程分别在T1,…,Tn时刻到达系统,它们需要的服务时间分别为S1,…,Sn。分别利用不同的时间片大小q,采用时间片轮转RR进程调度算法进行调度,计算每个进程的完成时间,周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。
2、程序要求如下:1)进程个数n;每个进程的到达时间T1,…,Tn和服务时间S1,…,Sn;输入时间片大小q。2)要求时间片轮转法RR调度进程运行,计算每个进程的周转时间,带权周转时间,并且计算所有进程的平均周转时间,带权平均周转时间;3)输出:要求模拟整个调度过程,输出每个时刻的进程运行状态,如“时刻3:进程B开始运行”等等;4)输出:要求输出计算出来的每个进程的周转时间,带权周转时间,所有进程的平均周转时间,带权平均周转时间。实现提示:用C++语言实现提示:1)程序中进程调度时间变量描述如下:intArrivalTime[
3、100];intServiceTime[100];intPServiceTime[100];intFinishTime[100];intWholeTime[100];doubleWeightWholeTime[100];doubleAverageWT,AverageWWT;boolFinished[100];2)进程调度的实现过程如下:Ø变量初始化;Ø接收用户输入n,T1,…,Tn,S1,…,Sn;时间片大小q;Ø按照时间片轮转RR算法进行进程调度,计算进程的完成时间、周转时间和带权周转时间;Ø计算所有进程的平均周转时间和
4、平均带权周转时间;Ø按格式输出调度结果。实验要求:1)上机前认真复习时间片轮转RR进程调度调度算法,熟悉进程调度的执行过程;2)上机时独立编程、调试程序;3)根据具体实验要求,完成好实验报告(包括实验的目的、内容、要求、源程序、实例运行结果截图)。【源程序】头文件RR.h#include#include#include#include#include#defineMaxNum100typedefstructpcb//定义进程控制
5、块{charName[MaxNum];//进程名intarrivetime;//到达时间intruntime;//运行时间intwholetime;//固定运行时间intFinishTime;//完成时间doubleWeightTime;//周转时间doubleWeightWholeTime;//带权周转时间charstate;//运行后的状态structpcb*next;}PCB;//全局变量intN;//实际进程数doubleSumWT;//周转时间之和doubleSumWWT;//带权周转时间之和doubleAver
6、ageWT;//平均周转时间doubleAverageWWT;//平均带权周转时间typedefstruct//定义队列,封装头结点,指针分别指向队头和队尾{PCB*front,*rear;}queue;queue*init()//进程队列置空{queue*head;head=(queue*)malloc(sizeof(queue));head->front=NULL;head->rear=NULL;returnhead;}intempty(queue*head)//检验队列是否为空{return(head->front?
7、0:1);}queue*append(queue*head,charc[MaxNum],inta,intr,chars)//进程队列入队,往后插入{PCB*p;p=(PCB*)malloc(sizeof(PCB));strcpy(p->Name,c);p->arrivetime=a;p->runtime=r;p->wholetime=r;p->state=s;//p->FinishTime=0;//p->WeightTime=0;//p->WeightWholeTime=0;p->next=NULL;if(empty(he
8、ad))head->front=head->rear=p;else{head->rear->next=p;head->rear=p;}returnhead;}queue*creat(queue*head)//创建进程队列{charc[MaxNum];chars='R';inta,r,i;printf("