进程调度(优先级调度)-----编程模拟实现HRRN调度算法

举报
代码不会敲 发表于 2022/05/08 11:52:46 2022/05/08
【摘要】 ​实验目的:深入理解进程及作业的调度原理,掌握FCFS调度算法、SJF调度算法、PSA调度算法、HRRN调度算法。 编写C语言程序,实现高响应比优先调度算法。要求输入作业号、提交时刻及运行时间,输出调度顺序。作业号提交时刻(时)运行时间(小时)18:002.028:500.539:000.149:500.2编程模拟实现HRRN调度算法。代码如下:#include<bits/stdc++.h>...

实验目的:

深入理解进程及作业的调度原理,掌握FCFS调度算法、SJF调度算法、PSA调度算法、HRRN调度算法。

 编写C语言程序,实现高响应比优先调度算法。

要求输入作业号、提交时刻及运行时间,输出调度顺序。

作业号

提交时刻(时)

运行时间(小时)

1

8:00

2.0

2

8:50

0.5

3

9:00

0.1

4

9:50

0.2

编程模拟实现HRRN调度算法。

代码如下:

#include<bits/stdc++.h>
using namespace std;


const int N = 1111;
int n, cnt = 1;
float s;	//当前时间
struct work
{
	int name;	//作业号
	float sumit_time;	//提交时刻
	float run_time;	//运行时间
	float s_time;	//开始时间
	float e_time;	//结束时间

	int st;	//标记运行顺序;
	float R;	//响应比

}w[N];

bool cmp1(work a, work b)
{
	return a.R < b.R;
}
bool cmp2(work a, work b)
{
	return a.st < b.st;
}


void RR()
{
	for (int i = 0; i <= n; i++)
	{
		if (!w[i].st && s >= w[i].sumit_time)
			w[i].R = (s - w[i].sumit_time + w[i].run_time) / w[i].run_time;
	}
}

void HRRN()
{
	for (int i = 1; i < n; i++)
	{
		RR();
		sort(w + 1, w + n + 1, cmp1);
		for (int j = n; j > 0; j--)
		{
			if (!w[j].st)
			{
				w[j].st = cnt++;
				w[j].s_time = s;
				w[j].e_time = s + w[n].run_time;
				s = w[j].e_time;
				break;
			}
		}
	}

	sort(w + 1, w + n + 1, cmp2);
	printf("调度顺序为:"); 
	for (int i = 1; i <= n; i++)
		printf("%d  ", w[i].name);

}

int  main()
{
	int mintime = 111, f;
	printf("请问共有几个作业:");
	scanf("%d", &n);
	printf("作业号	提交时刻(时)	运行时间(小时)\n");
	for (int i = 1; i <= n; i++)
	{
		w[i].st = 0;
		int h, m;
		scanf("%d%d:%d%f", &w[i].name, &h, &m, &w[i].run_time);		
		w[i].sumit_time =  h + 0.01 * m * 5 / 3;    //时间转换
        //找出第一个作业
		if (w[i].sumit_time < mintime)	f = i, mintime = w[i].sumit_time;
		else if (w[i].sumit_time == mintime && w[i].run_time < w[f].run_time)	f = i;
	}

	//第一个作业
	w[f].st = cnt++;
	w[f].s_time = w[f].sumit_time;
	w[f].e_time = w[f].sumit_time + w[f].run_time;
	s = w[f].e_time;
	HRRN();
	
	return 0;
}
结果截图:


在此代基础上进行修改,也可输出每个作业的周转时间

在此页面也可查看

​https://blog.csdn.net/weixin_57780057/article/details/124196737?spm=1001.2014.3001.5502

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。