2.9、FCFS、SJF、HRRN 调度算法

image-20230128225021061

Tips:各种调度算法的学习思路

  1. 算法思想

  2. 算法规则

  3. 这种调度算法是用于作业调度还是进程调度?

  4. 抢占式? 非抢占式?

  5. 优点和缺点

  6. 是否会导致 饥饿 \color{red}饥饿 饥饿

    某 进程/作业 长期得不到服务


算法可抢占?优点缺点考虑到等待时间 & 运行时间会导致饥饿?
FCFS非抢占式公平;实现简单;利于长作业不利于短作业等待时间 ✔;
运行时间 ❌
不会
SJF/SPF默认为非抢占式;也有 SJF 抢占式版本最短剩余时间优先算法(SRTN)“最短的” 平均等待 / 周转时间;利于短作业不利于长作业,可能会导致饥饿;难以做到正真的短作业优先等待时间 ❌;
运行时间 ✔
会(导致长作业饥饿)
HRRN非抢占式上述两种算法的均衡考虑,综合考虑的等待时间和运行时间等待时间 ✔;
运行时间 ✔
不会

1、FCFS

image-20230128235228419


例题:各进程到达就绪队列的时间、需要的运行时间如下表所示。使用先来先服务调度算法,计算各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间。

image-20230128232811470


2、SJF

image-20230128235300494

2.1、非抢占式的 SJF

例题:各进程到达就绪队列的时间、需要的运行时间如下表所示。使用非抢占式短作业优先(严格来说,用于进程调度应该称为短进程优先调度 SPF)调度算法,计算各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间。

image-20230128233735530

2.2、抢占式的 SJF(最短剩余时间优先算法SRTN)

image-20230128234226912


image-20230128234342677

2.3、注意

1 . 如果题目中未特别说明,所提到的 “短作业/进程优先算法” 默认是非抢占式的

2 . 很多书上都会说 “ SJF 调度算法的平均等待时间、平均周转时间最少”

严格来说,这个表述是错误的,不严谨的。之前的例子表明,最短剩余时间优先算法得到的平均等代时间、平均周转时间还要更少

应该加上一个条件 “在所有进程同时可运行时,采用 SJF 调度算法的平均等待时间、平均周转时间最少”;

或者说 “在所有进程都几乎同时到达时,采用 SJF 调度算法的平均等待时间、平均周转时间最少” ;

如果不加上述前提条件,则应该说 “抢占式的短作业/进程优先调度算法(最短剩余时间优先, SRTN算法)的平均等待时间、平均周转时间最少”

3.虽然严格来说,SJF 的平均等待时间、平均周转时间并不一定最少,

  • 但相比于其他算法(如 FCFS) ,SJF 依然可以获得较少的平均等待时间、平均周转时间

4 .如果选择题中遇到 “ SIF 算法的平均等待时间、平均周转时间最少” 的选项,那最好判断其他选项是不是有很明显的错误,如果没有更合适的选项,那也应该选择该选项

3、二者思考

FCFS 算法是在每次调度的时候选择一个等待时间最长的作业(进程)为其服务。

  • 但是没有考虑到作业的运行时间,因此导致了对短作业不友好的问题

SJF 算法是选择一个执行时间最短的作业为其服务。

  • 但是又完全不考虑各个作业的等待时间,因此导致了对长作业不友好的问题,甚至还会造成饥饿问题

能不能设计一个算法,即考虑到各个作业的等待时间,也能兼顾运行时间呢?

  • 高响应比优先算法

4、HRRN

image-20230129000427215


响应比 \color{red}响应比 响应比 = 等待时间 + 要求服务时间 要求服务时间 =\large\frac{等待时间+要求服务时间}{要求服务时间} =要求服务时间等待时间+要求服务时间

例题:各进程到达就绪队列的时间、需要的运行时间如下表所示。使用高响应比优先调度算法,计算各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间。

image-20230129000222019

5、总结

算法可抢占?优点缺点考虑到等待时间 & 运行时间会导致饥饿?
FCFS非抢占式公平;实现简单;利于长作业不利于短作业等待时间 ✔;
运行时间 ❌
不会
SJF/SPF默认为非抢占式;也有 SJF 抢占式版本最短剩余时间优先算法(SRTN)“最短的” 平均等待 / 周转时间;利于短作业不利于长作业,可能会导致饥饿;难以做到正真的短作业优先等待时间 ❌;
运行时间 ✔
会(导致长作业饥饿)
HRRN非抢占式上述两种算法的均衡考虑,综合考虑的等待时间和运行时间等待时间 ✔;
运行时间 ✔
不会

:这几种算法主要关心对用户的公平性、平均周转时间、平均等待时间等评价系统整体性能的指标,但是不关心“响应时间”,也并不区分任务的紧急程度,因此对于用户来说,交互性很糟糕。

因此这三种算法一般适合用于 早期的批处理系统 \color{red}早期的批处理系统 早期的批处理系统

当然,FCFS 算法也常结合其他的算法使用,在现在也扮演着很重要的角色。

  • 而适合用于交互式系统的调度算法将在下个小节介绍…
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值