调度算法先来先服务(FCFS)、最短作业优先(SJF)和最高响应比优先(HRRN)算法

一、调度算法

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

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

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

1. 短作业/进程优先调度算法

  • 例题:各进程到达就绪队列的时间、需要的运行时间如下表所示。使用非抢占式短作业优先调度算法,计算各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间。
  • 短作业/进程优先调度算法:每次调度时选择当前已到达运行时间最短的作业/进程。
    在这里插入图片描述

2. 抢占式的短作业优先算法

  • 例题:各进程到达就绪队列的时间、需要的运行时间如下表所示。使用抢占式短作业优先调度算法,计算各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间。
  • 抢占式的短作业优先算法又称“最短剩余时间优先算法(SRTN)”
  • 最短剩余时间优先算法:每当有进程加入就绪队列改变时就需要调度,如果新到达的进程剩余时间比当前运行的进程剩余时间更短,则由新进程抢占处理机,当前运行进程重新回到就绪队列。另外,当一个进程完成时也需要调度。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
注意几个小细节:
  1. 如果题目中未特别说明,所提到的“短作业/进程优先算法”默认非抢占式
  2. 很多书上都会说“SJF 调度算法的平均等待时间、平均周转时间最少”
    ①、严格来说,这个表述是错误的,不严谨的。之前的例子表明,最短剩余时间优先算法得到的平均等待
    时间、平均周转时间还要更少。
    ②、应该加上一个条件“在所有进程同时可运行时,采用SJF调度算法的平均等待时间、平均周转时间最少”;
    ③、或者说“在所有进程都几乎同时到达时,采用SJF调度算法的平均等待时间、平均周转时间最少”;
    ④、如果不加上述前提条件,则应该说“抢占式的短作业/进程优先调度算法(最短剩余时间优先, SRNT算法)的平均等待时间、平均周转时间最少”
  3. 虽然严格来说,SJF的平均等待时间、平均周转时间并不一定最少,但相比于其他算法(如 FCFS),SJF依然可以获得较少的平均等待时间、平均周转时间
  4. 如果选择题中遇到“SJF 算法的平均等待时间、平均周转时间最少”的选项,那最好判断其他选项是不是有很明显的错误,如果没有更合适的选项,那也应该选择该选项

3. 对FCFS和SJF两种算法的思考

  • FCFS 算法是在每次调度的时候选择一个等待时间最长的作业(进程)为其服务。但是没有考虑到作业的运行时间,因此导致了对短作业不友好的问题.
  • SJF 算法是选择一个执行时间最短的作业为其服务。但是又完全不考虑各个作业的等待时间,因此导致了对长作业不友好的问题,甚至还会造成饥饿问题.
  • 能不能设计一个算法,即考虑到各个作业的等待时间,也能兼顾运行时间呢? 【高响应比优先算法】

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

  • 例题:各进程到达就绪队列的时间、需要的运行时间如下表所示。使用高响应比优先调度算法,计算各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 注:这几种算法主要关心对用户的公平性、平均周转时间、平均等待时间等评价系统整体性能的指标,但是不关心“响应时间”,也并不区分任务的紧急程度,因此对于用户来说,交互性很糟糕。因此这三种算法一般适合用于早期的批处理系统,当然,FCFS算法也常结合其他的算法使用,在现在也扮演着很重要的角色。而适合用于交互式系统的调度算法
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值