c语言高响比算法,响应比最高者优先算法.docx

时磊5说-

实验题目:响应比最高者优先算法

一、实验目的

熟悉操作系统作业管理步骤,用 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)等待时间相等时。贝U服务时间越短,优先级越高,符合SJF思想。

⑵服务时间相等时,贝U等待时间越长,优先级越高,符合FCFS思想。

(3)对于长作业,只要其等待时间足够长,也能获得处理机。

四、实验步骤

实验中,作业控制块及队列的数据结构定义如下:

struct task {

string name; /* 作业号 */

int arrTime; /*作业到达时间*/

int serTime; /*作业要求服务时间*/

int waiTime; /* 等待时间 */

int begTime; /*开始运行时间*/

int fin Time; /*结束运行时间*/

时磊忖呎…

时磊忖呎…

int turTime; /* 周转时间 */

int wTuTime; /*带权周转时间*/

int priority;/* 优先权 */

int finish;/*是否已经完成*/

}JCB[10];

存放作业控制块的区域:

#define n 10

JCB jobtable[10];

int jobco unt;

将作业控制块组织成一个队列,实验中采用静态链表的方式模拟作 业的后备队列,作业队列头指针定义为:int *head;

实验中,内存采用可移动的动态分区管理方法,即只要内存空闲区总和作 业大就可以满足作业对内存的需求;对打印机和磁带机这两种独占设备采 用静态分配法,即作业执行前必须获得所需资源,并且执行完才归还。

采用响应比高者优先调度算法进行调度时,必须计算出系统中所有满足必

要条件作业的响应比,从中选择响应比最高的一个作业装入主存储器分配 资源。由于是实验,所以就将作业控制块出队,并输出作业名代替装入处 存储器,同时修改系统的资源数量。

时磊忖呎…

HRN

时器忖呎

五、实验清单

#in clude

#in clude

#in clude

#i nclude

#in clude

#i ncludevstri ng.h>

typedef char string[10]; /* //定义string为含有10个字符元素的字符数组类 型*/

struct task {

string name; /* 作业号 */

int arrTime; /*作业到达时间*/

int serTime; /*作业要求服务时间*/

int waiTime; /* 等待时间 */

int begTime; /*开始运行时间*/

int fin Time; /*结束运行时间*/

int turTime; /* 周转时间 */

int wTuTime; /*带权周转时间*/

int priority;/* 优先权 */

int finish;/*是否已经完成*/

}JCB[10];

int num;

void in put()

{

int i;

system("cls");

printf("\n请输入作业数量:");

scan f("%d", &nu m);

for(i=0;i

{

printf("\n 请输入作业 NO.%d:\n",i);

printf("作业名称:");

sca nf(

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值