Round-robin-scheduling-algorithm-RR.rar

  • PUDN用户
    了解作者
  • DOS
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 4
    下载次数
  • 2015-05-16 09:18
    上传日期
时间片轮转RR进程调度算法,已通过验证的代码,可正常运行,有注释
Round-robin-scheduling-algorithm-RR.rar
  • Round-robin scheduling algorithm RR.cpp
    3.8KB
内容介绍
#include<iostream.h> #include<iomanip.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define OVERFLOW -1 static const int MaxNum=100; int n; int q; int ArrivalTime[MaxNum]; //到达时间 int ServiceTime[MaxNum]; //服务时间 int FinishedTime[MaxNum]; //完成时间 int WholeTime[MaxNum]; //整个完整时间 double WeightWholeTime[MaxNum]; //带权完整时间 double Average_WT=0,Average_WWT=0; int nowTime[MaxNum];//时刻完成时间 typedef int QElemType; typedef struct QNode{ QElemType data; struct QNode *next; }QNode,*QueuePtr; typedef struct{ QueuePtr front; QueuePtr rear; }LinkQueue; LinkQueue Q; //构造一个空队列Q int InitQueue(LinkQueue &Q) { Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode)); if(!Q.front)exit(OVERFLOW); Q.front->next=NULL; return OK; } //插入e为Q的新的队尾元素 int 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; } //删除队列Q 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; } //销毁队列Q int DestroyQueue(LinkQueue &Q) { while(Q.front){ Q.rear=Q.front->next; free(Q.front); Q.front=Q.rear; } return OK; } //判断队列是否为空 bool QueueEmpty(LinkQueue &Q) { if(Q.front==Q.rear) return true; else return false; } //时间片轮转RR进程调度 void RR(int *ArrivalTime,int *ServiceTime,int n,int q,LinkQueue &Q) { int countTime=0;//实际运行的时间 int e; int STime[MaxNum];//用于存储服务时间 int PT[MaxNum];//初始化,对服务时间 int i; for(i=0;i<n;i++) { STime[i]=ServiceTime[i]; PT[i]=0; } InitQueue(Q); EnQueue(Q,0);PT[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<<"时刻"<<time<<":进程"<<e<<"正在运行"; for(int u=0;u<=ServiceTime[i];u++) { if(ServiceTime[e]==e) cout<<"进程"<<e<<"已结束"; } } time++; } for(i=1;i<n;i++) { if(STime!=0&&i!=e&&ArrivalTime[i]<countTime&&PT[i]==0||STime!=0&&i!=e&&ArrivalTime[i]==countTime) { EnQueue(Q,i); PT[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.000/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(6)<<FinishedTime[i]<<" "; cout<<endl; cout<<"周转时间 :"<<" "; for(i=0;i<n;i++) cout<<setw(6)<<WholeTime[i]<<" "; cout<<endl; cout<<"带权周转时间:"<<" "; for(i=0;i<n;i++) cout<<setw(6)<<setiosflags(ios::fixed)<<setprecision(2)<<WeightWholeTime[i]<<" "; cout<<endl; cout<<"平均周转时间为:"<<average_WT<<endl; cout<<"平均带权周转时间为:"<<Average_WWT<<endl; DestroyQueue(Q); } void main() { cout<<"*****实验二*****"<<endl; cout<<"请输入进程数n:"; cin rel='nofollow' onclick='return false;'>>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; RR(ArrivalTime,ServiceTime,n,q,Q); }
评论
    相关推荐
    • 数据库课程设计
      数据库课程设计使用,使用MFC编写的界面,连接ODBC数据源,方便移植。
    • 数据库课程设计
      一个数据库课程设计,access管理工具实现,用的是窗体!
    • 数据库课程设计
      广东工业大学数据库课程设计,可视化界面连接数据库,delphi7
    • 数据库课程设计
      数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述
    • 数据库课程设计
      数据库课程设计》由周爱武、汪海威、肖云编著,遵循数据库课程设计的具体要求,独立于具体的数据库教材,从实际应用系统的需求着手,引导读者逐步完成数据库设计全过程,重点讲解数据库系统的需求分析、概念设计、...
    • 数据库课程设计
      数据库课程设计人事管理系统 数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计...
    • 数据库课程设计
      数据库课程设计,基于visual basic自助银行管理系统,界面很清爽,实用。同学都说好,所以就上传了!!!
    • 数据库课程设计
      数据库课程设计 里面有详细的文档资料 包含数据库一切的图 以及生成的数据库表文件 期末得分为优秀
    • 数据库课程设计
      可以作为数据库课程设计,也可以作为Java的课程设计,内容全面。本资源转载的,非本人原创。用于交流学习,特此申明!
    • 数据库课程设计
      数据库课程设计蓝天大学学生管理系统 2.商店信息管理系统 3.实验室机房收费管理系统 4.图书馆资料检索系统 5.企业库存管理系统 6.仓库管理系统 7.工程项目管理系统 8.教材管理系统 9.企业人事管理系统 10.企业财务...