【操作系统】调度算法介绍

前言

不同操作系统中可能根据不同的需求而采用不同的调度算法。常见的调度算法有先来先服务(FCFS)、短作业优先(SJF)、高响应比优先调度(HRRN)、优先级调度(PSA)、时间片轮转调度(RR)、多级反馈队列调度(MFQ)。

调度算法又可以分成两类,如下图:

在这里插入图片描述

先来先服务(FCFS)

算法内容:调度作业/就绪队列中最先入队者,等待操作完成或阻塞;

算法原则:按作业/进程到达顺序执行;

调度方式:非抢占式调度;

适用场景:作业/进程调度

优缺点:

  • 有利于CPU繁忙型作业,充分利用CPU资源;
  • 不利于I/O繁忙型作业;
    在这里插入图片描述

短作业优先(SJF)

算法内容:所需服务时间最短的作业/进程优先执行;

算法原则:最求最少的平均(带权)周转时间;

调度方式:SJF/SPF,非抢占式;

使用场景:作业/进程调度;

优缺点:

  • 平均等待/周转时间最少;
  • 长作业周转时间会增加;
  • 估计时间不准确,不能保证紧迫任务及时处理;

在这里插入图片描述

高响应比优先调度(HRRN)

算法内容:结合FCFS和SJF,综合考虑等待时间和服务时间计算相应比,高的优先调度;

算法原则:综合考虑作业/进程的等待时间和服务时间;

调度方式:非抢占式;

使用场景:作业/进程调度

相应比计算:

  • 相应比=(等待时间+服务时间)/服务时间,大于等于1。服务时间指的是CPU的计算时间;
  • 只有当前进程放弃执行权(完成/阻塞)时,重新计算所有的进程相应比;
  • 长作业等待越久,相应比越高,更容易获得处理机;
    在这里插入图片描述

优先级调度(PSA)

算法内容:又叫做优先权调度,按作业/进程的优先级(紧迫程度)进行调度;

算法原则:优先级最高(最紧迫)的作业/进程先调度;

调度方式:抢占/非抢占式(并不能获得及时执行);

适用场景:作业/进程调度;

优先级设置原则:

  • 静态/动态优先级。静态指一开始就设置优先级,固定的;动态优先级指的是在整个调度过程中优先级会进行变化,是一个动态的值;
  • 系统>用户;交互型>非交互型;I/O型>计算型;
  • 缺点:低优先级进程可能会迟迟得不到执行,从而产生“饥饿”;

在这里插入图片描述

时间片轮转调度(RR)

算法内容:按进程到达就绪队列的顺序,轮流分配一个时间片去执行,时间用完则剥夺;

算法原则:公平、轮流的为每个进程服务,进程在一定时间内都能得到相应;

调度方式:抢占式,同时由时钟中断确定执行时间是否到;

适用场景:进程调度;

优缺点:

  • 公平、响应快,适用于分时系统;
  • 时间片决定因素:系统相应时间、就绪队列进程数量、系统处理能力;
  • 时间片太大,相当于FCFS;太小,处理机切换频繁,开销会增大;

在这里插入图片描述

多级反馈队列调度

算法内容:设置多个按优先级排序的就绪队列,优先级从高到低,时间片从小到大,新进程采用队列降级法(解释:首先进入第一级队列,按FCFS分时间片,如果没有执行完,移动到第二级,第三级…);如果前面的高优先级队列不为空,则不会执行后续队列中的进程

算法原则:集前几种算法有点,相当于PSA+RR

调度方式:抢占式;

适用场景:进程调度;

优缺点:

  • 对各类型相对公平,快速相应;
  • 终端型作业用户:短作业优先;
  • 批处理作业用户:周转时间段;
  • 长批处理作业用户:在前几个队列部分执行;

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Honey Ro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值