资源简介
操作系统实验二 时间片轮转RR进程调度算法(内含源代码和详细实验报告),详细介绍:http://blog.csdn.net/xunciy/article/details/79239096

代码片段和文件信息
#include
#include
#include
#include
using namespace std;
//存放每个进程信息的结构体
typedef struct{
char name;//进程名字
int ArrivalTime;//到达时间
int ServiceTime;//服务时间
int FinishedTime;//完成时间
int WholeTime;//周转时间
double WeightWholeTime;//带权周转时间
}RR;
static queueRRqueue; //用来模拟进程执行RR调度算法的队列
static double SumWT=0SumWWT=0AverageWT =0AverageWWT=0;//平均周转时间、平均带权周转时间
static int q; //时间片数
static int n; //进程个数
static RR RRarray[100]; //进程结构体
static RR temp; //进程结构
void Enter();//输入时间片、到达时间、服务时间等
void RRfunction();//执行RR调度算法
void display();//显示各时间执行情况,以及各个时间值
int main(){
Enter();
RRfunction();
display();
return 0;
}
//输入时间片、到达时间、服务时间等
void Enter(){
int ij;
cout<<“Enter n: “;
cin>>n;
cout<<“Enter TimeSlice q: “;
cin>>q;
for (i=0;i RRarray[i].name=i+65;//自动将进程名字顺序编号为A、B、C、D、E等
}
cout<<“Enter ArrivalTime: “;
for (i=0;i cin>>RRarray[i].ArrivalTime;
}
cout<<“Enter ServiceTime: “;
for (i=0;i cin>>RRarray[i].ServiceTime;
}
//根据达时间排序
for(i=0;i for(j=i+1;j if(RRarray[i].ArrivalTime > RRarray[j].ArrivalTime) {
temp = RRarray[i];
RRarray[i] = RRarray[j];
RRarray[j] = temp;
}
}
}
}
//执行RR调度算法
void RRfunction(){
char Moment[100]; //存储每个时间片p对应的进程名称
RRqueue.push(RRarray[0]); //第一个进程进队列
int MomentPoint = 0;
int CurrentTime=0;
int tempTime; //控制CurrentTime的累加时间,当前进程的服务时间小于时间片q的时候,起到重要作用
int i=1jkp; //指向还未处理的进程的下标
int finalNumber = 0; //执行RR算法后,进程的个数
int Time[50];
//判断第一个进程的服务时间是否大于时间片,如果大于CurrentTime=q,如果小于CurrentTime=服务时间
if (RRarray[0].ServiceTime>=q)
CurrentTime = q;
else
CurrentTime = RRarray[0].ServiceTime;
while(!RRqueue.empty()){
for (j=i;j if (RRarray[j].name!=NULL && CurrentTime >= RRarray[j].ArrivalTime){
RRqueue.push(RRarray[j]);
i++;
}
}
if (RRqueue.front().ServiceTime tempTime = RRqueue.front().ServiceTime;
else
tempTime = q;
RRqueue.front().ServiceTime -= q; //进程每执行一次,就将其服务时间 -q
//将队首进程的名称放入数组中
Moment[MomentPoint] = RRqueue.front().name;
MomentPoint++;
Time[finalNumber] = tempTime;
finalNumber++;
if (RRqueue.front().ServiceTime <= 0) //把执行完的进程退出队列
RRqueue.pop(); //如果进程的服务时间小于等于,即该进程已经服务完了,将其退栈
else{
//将队首移到队尾
RRqueue.push(RRqueue.front());
RRqueue.pop();
}
CurrentTime += tempTime;
}
//进程各时间进程状态,计算完成时间
cout<<“Time 0: “;
Time[finalNumber]=0;
int time = Time[0];
f
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-02-02 14:31 实验二 时间片轮转RR进程调度算法\
目录 0 2018-02-02 14:27 实验二 时间片轮转RR进程调度算法\2.RR\
文件 5556 2017-12-14 11:29 实验二 时间片轮转RR进程调度算法\2.RR\RR.cpp
文件 1075201 2017-12-14 11:29 实验二 时间片轮转RR进程调度算法\2.RR\RR.exe
文件 43166 2017-12-14 11:29 实验二 时间片轮转RR进程调度算法\2.RR\RR.o
文件 141289 2017-12-28 22:10 实验二 时间片轮转RR进程调度算法\实验二 时间片轮转RR进程调度算法.docx
- 上一篇:金山WPS专业版序列号
- 下一篇:操作系统实验五 虚拟内存页面置换算法
相关资源
- 升腾Win终端系统升级方法新版.doc
- Uninstall_Cortana_WINCLIENT.CN.rar
- STM32基于rt_thread操作系统的SDHC卡文件
- 操作系统 LRU算法 实验报告 及 程序代
- [免费]车载CE6.0操作系统
- 分页系统模拟实验 操作系统 课程设
- 模拟段页式虚拟存储管理中地址转换
- 操作系统实验——虚存管理实验
- 广工操作系统实验
- 广东工业大学操作系统实验四文件系
- Bochs入门教程[操作系统第一步]
- 操作系统课程设计完整版
- 磁盘调度算法的模拟实现及对比
- 模拟一个文件管理系统
- 二级文件系统(操作系统)
- uCOS编译环境建立 BC45 TASM
- Linux 操作系统实验(全)
- 操作系统实验综合设计【附代码】
- 操作系统共享内存实验
- 操作系统循环首次适应算法
- 操作系统课程设计实现可变分区存储
- 基于GTK的Linux环境下的简易任务管理器
- 操作系统课程设计 二级文件管理系统
- 加快Windows XP操作系统开机速度
- 操作系统教程课后答案华中科技大学
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 嵌入式实时操作系统ucos-II 第二版 源
- 计算机操作系统课后_汤小丹_第四版
- 计算机操作系统(第四版)汤小丹课
评论
共有 条评论