操作系统作业调度实验

实验1 作业调度

一.实验目的

了解作业调度的算法,理解两道批处理系统的作业调度过程。

二.实验内容

《操作系统》课本例题:
假设两道环境下有四个作业,已知它们进入系统的时间、估计运行时间。系统采用最高响应比作业调度算法,作业被调度运行后不再推出,但当一新作业投入运行后,可按照作业运行时间长短调整作业执行的顺序。给出这四个作业的执行时间序列,并计算出平均周转时间和带权平均周转时间。
在这里插入图片描述

图1 作业的相关信息

三.实验原理

(一)数据结构设计
将作业块设计如下,包括作业名、id、进入时间、估计运行时间、开始时间、结束时间、周转时间、还需要时间、带权周转时间、状态。

typedef struct PCBSTRUCT
{
   
	char        name[10];
	int         id;
	Clock         arritime;//进入时间
	int         waittime;//当前等待时间
	double      R;//响应比
	int         runtime;//估计运行时间
	Clock         starttime;//开始时间
	Clock         endtime;//结束时间
	int         ttime;//周转时间
	int         needtime;
	double      wtime;//带权周转时间
	string        status;//FINISH,RUN,READY,WAIT
}PCB;

(二)作业调度:最高相应比算法原理
最高响应比优先法(HRN,Highest Response_ratio Next)是对FCFS方式和SJF方式的一种综合平衡。FCFS方式只考虑每个作业的等待时间而未考虑执行时间的长短,而SJF方式只考虑执行时间而未考虑等待时间的长短。因此,这两种调度算法在某些极端情况下会带来某些不便。HRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。
响应比R定义如下: R =(W+T)/T = 1+W/T
(三)进程调度:最短作业优先算法原理
以作业长短来确定优先级,作业越短优先级越高,作业的长短用作业所需的运行时间来衡量,此算法一样也可以用做进程调度,它将从外存的作业后备队列中选择若干个估计运行时间最短的作业,优先将它们调入内存运行。此处进程调度是选取还需时间最少的进程进行调度,算法类似于最短作业优先。

四. 源代码

using namespace std;
#include <iostream>
#include<string.h>
#include<iomanip>
class Clock {
   
private:
	int hour;
	int min;
public:
	int gethour()
	{
   
		return this->hour;
	}
	int getmin()
	{
   
		return  this->min;
	}
	void setclock(int h, int m)
	{
   
		hour = h;
		min = m;
	}
	void add()
	{
   
		if (min < 60)
			min++;
		else
		{
   
			hour++;
			min = 0;
		}
	}
	int operator-(const Clock& b)  //this-b
	{
   
		Clock c;
		if (this->min > b.min)
		{
   
			c.min = this->min - b.min;
		}
		else
		{
   
			c.min = (this->min + 60) - b.min;
			this->hour--;
		}
		c.hour = this->hour - b.hour;
		int m = c.hour * 60 + c.min;
		return m;
	}
	Clock operator+(const Clock& b)  //this+b
	{
   
		Clock c;
		c.min = this->min + b.min;
		c.hour = this->hour + b.hour;
		if (c.min >= 60)
		{
   
			c.min = c.min - 60;
			c
  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值