文章目录

  • FCFS、SJF、HRRN调度算法
    • 知识总览图
    • 先来先服务(FCFS,First Come First Serve)
    • 短作业优先(SJF,Shortest Job First)
    • 对FCFS和SJF两种算法的思考
    • 高响应比优先算法(HRRN,Highest Response Ratio Next)

FCFS、SJF、HRRN调度算法

知识总览图

什么叫做饥饿?就是进程一直不被CPU处理。FCFS算法不会导致饥饿是因为,它的所有的进程按到来的时间先后顺序依次执行,所以每个进程都会被执行到。SJF/SPF算法会导致饥饿,是因为可能有大量的短作业,这样长作业进程永远也不会进行。HRRN算法不会导致饥饿是因为,它会先执行高响应比(你可以粗略地理解成等待时间长,但是并不是)的进程,所以不会有进程一直等待被CPU处理,因此不会饥饿。

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

先来先服务(FCFS,First Come First Serve)

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

先来先服务调度算法:按照到达的先后顺序调度,事实上就是等待时间越久的越优先得到服务。因此,调度顺序为:P1–>P2–>P3–>P4

周转时间=完成时间-到达时间 P1=7-0=7; P2=11-2=9; P3=12-4=8; P4=16-5=11

带权周转时间=周转时间/运行时间 P1=7/7=1; P2=9/4=2.25; P3=8/1=8; P4=11/4=2.75;

等待时间=周转时间-运行时间 P1=7-7=0; P2=9-4=5; P3=8-1=7; P4=11-4=7; (注意:本例中的进程都是纯计算型的进程,一个进程到达后要么在等待,要么在运行。如果是又有计算、又有I/O操作的进程,其等待时间就是周转时间-运行时间-I/O操作的时间)

平均周转时间=(7+9+8+11)/4=8.75

平均带权周转时间=(1+2.25+8+2.75)/4=3.5

平均等待时间=(0+5+7+7)/4=4.75

短作业优先(SJF,Shortest Job First)

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

短作业/进程优先调度算法:每次调度时选择当前已到达运行时间最短的作业/进程。因此调度顺序为:P1–>P3–>P2–>P4

刚开始时刻为0的时候,只有P1进程,虽然它的运行时间很长,但P1仍是第一个被调度的,然后P3的运行时间是1,所以P3优先调度,而P2和P4的运行时间都是4,但是P2先来的,所以P2会优先调度。

周转时间=完成时间-到达时间 P1=7-0=7; P3=8-4=4; P2=12-2=10; P4=16-5=11

带权周转时间=周转时间/运行时间 P1=7/7=1; P3=5/1=5; P2=10/4=2.5; P4=11/4=2.75;

等待时间=周转时间-运行时间 P1=7-7=0; P3=4-1=3; P2=10-4=6; P4=11-4=7;

平均周转时间=(7+4+10+11)/4=8

平均带权周转时间=(1+4+2.5+2.75)/4=2.56

平均等待时间=(0+3+6+7)/4=4

对比FCFS算法的结果,显然SPF算法的平均等待/周转/带权周转时间都要更低

例题:各进程到达就绪队列的事件、需要的运行时间如下表所示。使用抢占式(抢占式的短作业优先算法又称"最短剩余时间优先算法(SRTN)")的短作业优先调度算法,计算各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间。

最短剩余时间优先算法:每当有进程加入就绪队列改变时就需要调度,如果新到达的进程运行的剩余时间比当前运行的进程运行的剩余时间更短,则由新进程抢占处理机,当前运行进程重新回到就绪队列。另外,当一个进程完成时也需要调度剩余时间最短的进程

需要注意的是,当有新进程到达时就绪队列就会改变,就要按照上述规则进行检查。一下Pn(m)表示当前Pn进程剩余时间为m。各个时刻的情况如下:

0时刻(P1到达):P1(7) 此时P1进程运行

2时刻(P2到达):P1(5),P2(4) 此时会停止P1进程运行,切换P2进程

4时刻(P3到达):P1(5),P2(2),P3(1) 此时会停止P2进程,切换P3进程

5时刻(P3完成且P4刚好到达):P1(5),P2(2),P4(4) 此时P2剩余运行时间最少,会切换到P2进程

7时刻(P2完成):P1(5),P4(4) 此时P4剩余运行时间最少,会切换到P4进程

11时刻(P4完成):P1(5) 此时只剩P1进程,会切换到P1进程

周转时间=完成时间-到达时间 P1=16-0=16; P2=7-2=5; P3=5-4=1; P4=11-5=6

带权周转时间 P1=16/7=2.28; P2=5/4=1.25; P3=1/1=1; P4=6/4=1.5

等待时间=周转时间-运行时间 P1=16-7=9; P2=5-4=1; P3=1-1=0; P4=6-4=2;

平均周转时间=(16+5+1+6)/4=7

平均带权周转时间=(2.28+1.25+1+1.5)/4=1.50

平均等待时间=(9+1+0+2)/4=3

对比非抢占式的短作业优先算法,显然抢占式的平均周转/带权周转/等待时间又要更低。

对FCFS和SJF两种算法的思考

FCFS算法是在每次调度的时候选择一个等待时间最长的作业(进程)为其服务。但是没有考虑到作业的运行时间,因此导致了对短作业不友好的问题。

SJF算法是选择一个执行时间最短的作业为其服务。但是又完全不考虑各个作业的等待时间,因此导致了对长作业不友好的问题,甚至还会造成饥饿问题。

能不能设计一个算法,即考虑到各个作业的等待时间,也能兼顾运行时间呢?可以,那就是高响应比优先算法。

高响应比优先算法(HRRN,Highest Response Ratio Next)

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

高响应比优先算法:非抢占式的调度算法,只有当前运行的进程主动放弃CPU时(正常/异常完成,或主动阻塞),才需要进行调度,调度时计算所有就绪进程的响应比,选响应比最高的进程上处理机。

0时刻:只有P1到达就绪队列,P1上处理机

7时刻(P1主动放弃CPU):就绪对垒中有P2(响应比=(5+4)/4=2.25)、P3((3+1)/1=3)、P4((2+4)/4=1.5)

8时刻(P3完成):P2(2.5),P4(1.75)

12时刻(P2完成):就绪队列中只剩下P4

FCFS、SJF、HRRN调度算法相关推荐

  1. FCFS,SJF,HRRN调度算法

    FCFS,SJF,HRRN调度算法 各种调度算法的学习思路 算法思想 算法规划 这种调度算法是用于作业调度还是进程调度 抢占式?非抢占式? 优缺点 是否会导致饥饿(某进程/作业长期得不到服务) 先来先 ...

  2. 【操作系统 - 1】先来先服务FCFS和短作业优先SJF进程调度算法

    操作系统系列 学习至此,发现很多学了但很久没用的知识,久而久之,慢慢遗忘.等哪天还需要的话,却发现已经忘得差不多了,即使整理了文档(word等),还是得从头再学一遍.读研第一学期,发现很多东西都可以从 ...

  3. FCFS,SJF以及PSA进程调度算法效率的比较

    实现 下面是用 Java 程序比较 FCFS,SJF 和 PSA 算法效率的示例代码: FCFS 思路 对于 FCFS 算法,我们可以定义一个 Process 类来表示一个进程,其中包含进程名称.到达 ...

  4. 《操作系统》实验一:先来先服务FCFS和短作业优先SJF进程调度算法

    [实验题目]:先来先服务FCFS和短作业优先SJF进程调度算法 [实验学时]:4学时 [实验目的] 通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变.进程调度的策略及对系统性能的评价方法. ...

  5. FCFS,SJF以及PSA进程调度算法的比较

    实现 下面是用 Java 程序比较 FCFS,SJF 和 PSA 算法效率的示例代码: FCFS 思路 对于 FCFS 算法,我们可以定义一个 Process 类来表示一个进程,其中包含进程名称.到达 ...

  6. 操作系统(五):FCFS/SJF/非抢占优先级/RR

    操作系统(五):FCFS/SJF/非抢占优先级/RR 一.题目1(书上170页5.7) 5.4 5.4 Consider the following set of processes, with th ...

  7. 最短作业优先(SJF)调度算法

    最短作业优先(SJF)调度算法将每个进程与其下次 CPU 执行的长度关联起来.当 CPU 变为空闲时,它会被赋给具有最短 CPU 执行的进程.如果两个进程具有同样长度的 CPU 执行,那么可以由 FC ...

  8. 计算机操作系统学习之FCFS、SJF和HRRN调度算法

    文章目录 一.FCFS算法(先来先服务) 二.SJF算法(短作业优先算法) 1.不可抢占的情况(即SJF算法) 2.可抢占的情况(最短剩余时间优先算法 即SRTN算法) 3.优缺点 4.补充 三.HR ...

  9. FCFS、SJF、HRRN调度算法以及时间片轮转、优先级调度算法、多级反馈队列算法总结

    先来先服务(FCFS) 算法思想 主要从"公平"角度考虑 算法规则 按照作业/进程到达的先后顺序进行服务 用于作业/进程调度? 用于作业调度时,考虑哪个作业先到达后备队列: 用于进 ...

最新文章

  1. 解决Oracle clob字段数据过大问题
  2. Android 制作类似支付圆圈和打钩界面ProgressWheel
  3. POJ - 3565 Ants(二分图最小权匹配+KM+思维)
  4. c语言程序输出时有没有分号,问什么C程序里总是提示缺少分号;,而明明有分号?...
  5. BigPipe 大的页面分割成一个一个管道
  6. 《软件工程》课程改进意见
  7. 【Java】java中 ==,equals,hashcode
  8. 消息中间件学习总结(6)——RocketMQ之RocketMQ大数据畅想
  9. 【明哥报错簿】之 mybatis异常invalid comparison: java.util.Date and java.lang.String
  10. 凯立德地图导航2020年最新版车载_高精度地图会把自动驾驶带跑偏吗?
  11. 编译原理递归下降语法分析器C++实现
  12. hive sql列转行
  13. Windows 7声卡驱动一键修复精灵3.0完美版(2009年11月9日发布)
  14. MYSQL存储过程的简单运用,包括传值、返回值、返回集合
  15. 我所能理解的编程境界
  16. Spring中Resource接口详解
  17. 我理解的Java栈与堆,String类
  18. git错误'fatal: cannot do a partial commit during a merge'
  19. qq空间动态设置在哪?
  20. 再添理事成员:麒麟软件、浪潮信息、中科曙光、新华三加入龙蜥

热门文章

  1. 文件上传中国菜刀 —— 【WUST-CTF2020】CV Maker
  2. 征信报告上哪些信息影响你的下卡率?
  3. 内外网数据摆渡新方式:跨终端中转站
  4. 戴师兄数据分析学习day03——周报制作
  5. 极光推出统计产品 极光统计(JAnalytics)正式上线
  6. MySQL数据库8(二十一)事务
  7. 计算机能否代替老师英语作文,雅思大作文范文关于电脑替代老师
  8. ActiveX控件在IE浏览器中自动下载
  9. 从神经学角度看边缘计算、雾计算与互联网云脑之间的关系
  10. 晶体管图示仪曲线追踪扫描仪 IV曲线CV曲线伏安特性