资源简介
该程序实现作业调度的RR算法,只要输入时间片,进程号,到达时间,运行所需时间即可,输出的是一条时间轴和对应的进程运行流程,表示一个时间点里哪个进程在运行。

代码片段和文件信息
#include
#include
#include
#include
#include
using namespace std;
const int MAXN = 1000;//假设能够容纳的进程最多的个数
struct Process
{
int pos; //代表第几个输入的进程
char Process_name[50]; //进程名字,默认最长长度占用50字符
double Arrival_time; //进程到达时间
double Service_time; //服务时间 进程所需要的时间
double Start_time; //服务开始时间
double End_time; //服务结束的时间
double Turnaround_time; //周转时间 进程结束的时间-进程到达时间
double Weight_Turnaround_time; //带权周转时间 周转时间 / 服务时间
}process[MAXN];
double every_time;
int n;
double temp[100];
double tmp;
double sumwait;
void Init()
{
printf(“请输入时间片的时间:“);
scanf(“%lf“&every_time);
printf(“请输入进程的数量:“);
scanf(“%d“&n);
for(int i = 0;i < n;i ++)
{
cout<<“请输入第“< scanf(“%s“process[i].Process_name);
scanf(“%lf“&process[i].Arrival_time);
scanf(“%lf“&process[i].Service_time);
process[i].pos = i;
}
}
bool cmp1(const Process &aconst Process &b)
{
return a.Arrival_time < b.Arrival_time;
}
void Solve_TSRA()
{
/*
时间片轮转算法:
*/
printf(“时间片轮转算法:\n“);
queue que;
sort(processprocess+ncmp1);
bool vis[MAXN]; //表示这个进程有没有在完成,完成使用true表示
Process ans[MAXN];
double time = max(0.0process[0].Arrival_time);int index = 0;
memset(visfalsesizeof(vis));
que.push(process[0]);vis[process[0].pos] = 1;
for(int i = 0;i < n;i ++)
{
while(!que.empty())
{
Process temp = que.front(); que.pop();
temp.Start_time = time;
temp.End_time = temp.Service_time >= every_time ? time + every_time : time + temp.Service_time;
for(int j = 0;j < n;j ++)
if(!vis[process[j].pos] && process[j].Arrival_time <= temp.End_time)
{
vis[process[j].pos] = 1;
que.push(process[j]);
}
if(temp.Service_time > every_time)
{
temp.Service_time -= every_time;
que.push(temp);
time += every_time;
}
else
time += temp.Service_time; //这里面的时间都是有联系的,所以不用再次更新time
ans[index++] = temp; //将顺序存储到最终的答案序列中
}
bool flag = false; //判断是否所有的进程都已经完成
for(int j = 0;j < n;j ++)
if(!vis[process[j].pos])
{
que.push(process[j]);//将一个时间最靠前的添加到队列中
time = process[j].Arrival_time; //这里就要更新time了,因为这里的时间和上面的有些脱节!
flag = true;break;
}
if(!flag) break;
}
printf(“进程的运行顺序为:\n“);
for(int i = 0;i < index;i ++){
printf(“%.0lf - %s - “ans[i].Start_timeans[i].Process_name);
if(i==index-1)
pr
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 92672 2018-12-14 12:04 RR\Debug\操作系统6.4.exe
文件 421600 2018-12-14 12:04 RR\Debug\操作系统6.4.ilk
文件 1002496 2018-12-14 12:04 RR\Debug\操作系统6.4.pdb
文件 3920 2018-12-14 11:32 RR\操作系统6.4\6.4.cpp
文件 277061 2018-12-14 12:04 RR\操作系统6.4\Debug\6.4.obj
文件 1414 2018-12-14 12:04 RR\操作系统6.4\Debug\cl.command.1.tlog
文件 26442 2018-12-14 12:04 RR\操作系统6.4\Debug\CL.read.1.tlog
文件 470 2018-12-27 11:16 RR\操作系统6.4\Debug\CL.write.1.tlog
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
文件 2 2018-12-14 12:04 RR\操作系统6.4\Debug\li
............此处省略50个文件信息
- 上一篇:五子棋MFC 五子棋MFC 五子棋MFC
- 下一篇:基于对话框的多线程进度条更新
相关资源
- C++纯文字DOS超小RPG游戏
- TC2.0DOSBOX
- ROS操作系统入门讲义
- FREERTOS 实时内核 实用指南
- C++ Primer by Stanley B. Lippman Josée La
- c语言dos窗口扫雷.c
- Wemos D1 mini阿里云MQTT例程
- FreeRTOS FreeModbus
- 基于空调项目的Autosar 架构的设计.d
- Microsoft Visual C++ 2005 Redistributable Pack
- 水晶报表Crystal Reports运行环境CRRunti
- Microsoft Visual C++ 2010 Redistributable Pack
- 基于OSG的三维河流的可视化研究——
- python 3.8终极大法解决Microsoft Visual C
- 基于Cocos2dx的炸弹人游戏
- BORLAND C++ 3.1精简版
- UC/OS2 (UCOS2)移植于VC6代码及手册
- Microsoft Visual C++ 20XX运行库合集vc2005
- Microsoft.Visual.C++.NET技术内幕第六版
- Microsoft Visual C++.NET技术内幕
- C++版计算器带括号dos版本
- 虹膜识别开源代码OSIRIS4.1基于opencv
- Microsoft Visual C++ 14.0.zip
- SM4(ECB、CBC、CTR、CFB、OFB)加密算法
- Microsoft Visual C++ 14Build Tools
- Microsoft Visual C++ 2005 SP1 Redistributable
- C++ Concurrency in Action 2nd Edition (2019.
- Microsoft Visual C++ 2010 SP1 Redistributable
- Microsoft visual c++ 14.0.rar
- C++ Concurrency in Action中文PDF
评论
共有 条评论