实验题目:响应比最高者优先算法
一、 实验目的
熟悉操作系统作业管理步骤,用 C 语言编程模拟实现响应比最高者优先算法。
二、 实验环境及仪器设备
硬件环境:IBM-PC 或兼容机
软件环境:C 语言编程环境
三、 实验算法思想
最高响应比优先法(HRN,Highest Response_ratio Next)是对 FCFS 方式和
SJF 方式的一种综合平衡。FCFS 方式只考虑每个作业的等待时间而未考虑执
行时间的长短,而 SJF 方式只考虑执行时间而未考虑等待时间的长短。因此,
这两种调度算法在某些极端情况下会带来某些不便。HRN 调度策略同时考虑每
个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作
业投入执行。
响应比 R 定义如下: R =(W+T)/T = 1+W/T
其中 T 为该作业估计需要的执行时间,W 为作业在后备状态队列中的等待
时间。每当要进行作业调度时,系统计算每个作业的响应比,选择其中 R 最大
者投入执行。这样,即使是长作业,随着它等待时间的增加,W / T 也就随着增
加,也就有机会获得调度执行。这种算法是介于 FCFS 和 SJF 之间的一种折中
算法。由于长作业也有机会投入运行,在同一时间内处理的作业数显然要少于
SJF 法,从而采用 HRN 方式时其吞吐量将小于采用 SJF 法时的吞吐量。另外,
由于每次调度前要计算响应比,系统开销也要相应增加
(1)等待时间相等时。则服务时间越短,优先级越高,符合 SJF 思想。
(2)服务时间相等时,则等待时间越长,优先级越高,符合 FCFS 思想。
(3)对于长作业,只要其等待时间足够长,也能获得处理机。
四、 实验步骤
实验中,作业控制块及队列的数据结构定义如下:
struct task {
string name; /*作业号*/
int arrTime; /* 作业到达时间*/
int serTime; /*作业要求服务时间*/
int waiTime; /*等待时间*/
int begTime; /*开始运行时间*/
int finTime; /*结束运行时间*/
int turTime; /*周转时间*/