资源简介
该程序实现作业调度的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++描述Larrynyhof
- libstdc++.so.6.0.24.tar.gz
- MicrosoftC++BuildTools14.0
- Microsoft visual c++ 14.0 安装包
- Microsoft Visual C++ Runtime 64 bits
- c++ 并发编程实战 中文版+英文版
- libbgi.a、BIOS.H和graphics.h
- Osg3.4.1Earth2.8-Qt5.6-VC2013-X86-Release.rar
- Microsoft Visual C++ 14.02019
- Borland C++ 3.1 支持DOS和WIN3.1
- irrlicht-1.8
- 《Microsoft Visual Studio C++ 2010入门经典》
- 编译好的boost-1.34.1
- 贪吃蛇大作战demo实现和代码
- crocostone制作,数据结构算法与应用
- VS2017C++windows桌面应用程序项目OpenCV及
- Microsoft Visual C++ 2015 Redistributable (x
- 嵌入式实时操作系统μC/OS-III(英文
- boost中文手册中文帮助文档
- 用C语言实现的基于adaboost算法的人脸
- PC版SoulKight
- 操作系统课程设计:进程/作业调度
- Cocos2d-x实战:C++卷2版源代码
- 自己动手写操作系统 于渊 高清带书签
- boost_1_59_0.tar.gz
- 数据结构与算法分析C++描述Larrynyhof
- HexFrvr-cosX.zip
- Microsoft Visual C++ 2013 Redistributable Pack
- Centos 6.7 gcc和gcc-c++的离线安装包
- Microsoft Visual C++ 2013 runtime 64/32 运行库
评论
共有 条评论