收藏 分销(赏)

时间片轮转RR进程调度算法.doc

上传人:仙人****88 文档编号:9463344 上传时间:2025-03-27 格式:DOC 页数:6 大小:80.50KB
下载 相关 举报
时间片轮转RR进程调度算法.doc_第1页
第1页 / 共6页
时间片轮转RR进程调度算法.doc_第2页
第2页 / 共6页
点击查看更多>>
资源描述
《操作系统》实验二 【实验题目】:时间片轮转RR进程调度算法 【实验目的】 通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。 【实验内容】 问题描述: 设计程序模拟进程的时间片轮转RR调度过程。假设有n个进程分别在T1, … ,Tn时刻到达系统,它们需要的服务时间分别为S1, … ,Sn。分别利用不同的时间片大小q,采用时间片轮转RR进程调度算法进行调度,计算每个进程的完成时间,周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。 程序要求如下: 1)进程个数n;每个进程的到达时间T1, … ,Tn和服务时间S1, … ,Sn;输入时间片大小q。 2)要求时间片轮转法RR调度进程运行,计算每个进程的周转时间,带权周转时间,并且计算所有进程的平均周转时间,带权平均周转时间; 3)输出:要求模拟整个调度过程,输出每个时刻的进程运行状态,如“时刻3:进程B开始运行”等等; 4)输出:要求输出计算出来的每个进程的周转时间,带权周转时间,所有进程的平均周转时间,带权平均周转时间。 【源程序】 #include<iostream.h> #include<iomanip.h> #include<stdio.h> #include<conio.h> #include<malloc.h> #include<stdlib.h> typedef int QElemType; #define OK 1 #define ERROR 0 #define OVERFLOW -1 typedef int Status; typedef struct QNode{ QElemType data; struct QNode *next; }QNode,*QueuePtr; typedef struct{ QueuePtr front; QueuePtr rear; }LinkQueue; Status InitQueue(LinkQueue &Q); Status DestroyQueue(LinkQueue &Q); Status EnQueue(LinkQueue &Q,QElemType e); int DeQueue(LinkQueue &Q,QElemType e); bool QueueEmpty(LinkQueue &Q); static const int MaxNum=100; int n,q,ArrivalTime[MaxNum],ServiceTime[MaxNum],FinishedTime[MaxNum],WholeTime[MaxNum]; double WeightWholeTime[MaxNum],Average_WT=0,Average_WWT=0; LinkQueue Q; void RR(int*ArrivalTime,int*ServiceTime,int n,int q,LinkQueue &Q); void main(){ cout<<"请输入进程数n:"; cin>>n; while(n<0||n>100){ cout<<"输入的n值不正确,请重新输入!"<<endl; cin>>n; } cout<<"请输入各个进程的到达时间:"; for(int i=0;i<n;i++) cin>>ArrivalTime[i]; cout<<"请输入各个进程的服务时间:"; for( i=0;i<n;i++) cin>>ServiceTime[i]; cout<<"请输入时间片q:"; cin>>q; while(q<0||q>200){ cout<<"输入的q值不正确,请重新输入!"<<endl; cin>>q; } RR(ArrivalTime,ServiceTime,n,q,Q); } void RR(int*ArrivalTime,int*ServiceTime,int n,int q,LinkQueue &Q){ int countTime=0,e; int STime[MaxNum],pushed[MaxNum]; for(int i=0;i<n;i++) {STime[i]=ServiceTime[i];pushed[i]=0;} InitQueue(Q); EnQueue(Q,0);pushed[0]=1; int time=0; while(QueueEmpty(Q)==false) { e=DeQueue(Q,e); if(STime[e]>q) {STime[e]=STime[e]-q; countTime+=q;} else {countTime+=STime[e];STime[e]=0;FinishedTime[e]=countTime; } while(time<countTime){ if(STime>0){ cout<<"时刻"<<setw(2)<<time<<":进程"<<e<<"正在运行"<<endl; } time++; } for(i=1;i<n;i++) { if(STime!=0&&i!=e&&ArrivalTime[i]<countTime&&pushed[i]==0||STime!=0&&i!=e&&ArrivalTime[i]==countTime) { EnQueue(Q,i);pushed[i]=1; } } if(STime[e]>0) { EnQueue(Q,e); } } for(i=0;i<n;i++) { WholeTime[i]=FinishedTime[i]-ArrivalTime[i]; WeightWholeTime[i]=(double)(WholeTime[i]*1.000000/ServiceTime[i]); Average_WT+=WholeTime[i]; Average_WWT+=WeightWholeTime[i]; } Average_WT/=n; Average_WWT/=n; cout<<"完成:"<<" "; for(i=0;i<n;i++) cout<<setw(8)<<FinishedTime[i]<<" "; cout<<endl; cout<<"周转:"<<" "; for(i=0;i<n;i++) cout<<setw(8)<<WholeTime[i]<<" "; cout<<endl; cout<<"带权:"<<" "; for(i=0;i<n;i++) cout<<setw(8)<<setiosflags(ios::fixed)<<setprecision(2)<<WeightWholeTime[i]<<" "; cout<<endl; cout<<"平均周转时间为:"<<Average_WT<<endl; cout<<"平均带权周转时间为:"<<Average_WWT<<endl; DestroyQueue(Q); } Status InitQueue(LinkQueue &Q){ Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode)); if(!Q.front)exit(OVERFLOW); Q.front->next=NULL; return OK; } Status DestroyQueue(LinkQueue &Q){ while(Q.front){ Q.rear=Q.front->next; free(Q.front); Q.front=Q.rear; } return OK; } Status EnQueue(LinkQueue &Q,QElemType e){ QueuePtr p=(QueuePtr)malloc(sizeof(QNode)); if(!p) exit(OVERFLOW); p->data=e;p->next=NULL; Q.rear->next=p; Q.rear=p; return OK; } int DeQueue(LinkQueue &Q,QElemType e){ QueuePtr p; if(Q.front==Q.rear) return ERROR; p=Q.front->next; e=p->data; Q.front->next=p->next; if(Q.rear==p) {Q.rear=Q.front;} free(p); return e; } bool QueueEmpty(LinkQueue &Q){ if(Q.front==Q.rear) return true; else return false; } 【程序运行截图】
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服