单处理器调度算法

这里写图片描述

一.什么是调度?

调度就是从就绪队列中挑选下一个占用 CPU 运行的进程。

调度分为:长程调度、中程调度、短程调度和 I/O 调度。

本文主要讲解短程调度。

二.为什么要进行进程调度?

  • 正在执行的进程正确完成,或由于某种错误而终止运行(陷阱或中断)
  • 执行中的进程提出 I/O 请求,等待 I/O 完成
  • 在分时系统中,分给进程的时间片用完
  • 按照优先级调度,有更高优先级进程变为就绪状态(抢占方式)
  • 执行中的进程执行了进程通信原语操作,如 wait 操作、阻塞原语或唤醒原语。

三.短程调度准则:

  • 面向用户的准则:响应时间、周转时间(周转时间 = 完成时间 - 到达时间)
  • 面向系统的准则:吞吐量、处理器利用率

四.选择调度策略

  • 先到先服务FCFS
  • 时间片轮转RR
  • 最短进程优先SPN
  • 最短剩余时间优先SRT
  • 最高相应比优先HRRN
  • 反馈法

五.进程调度算法的实例

这里写图片描述

进程调度方式有两种:

  1. 非抢占方式
    分配 CPU 后,进程一直运行到完成或异常终止
    简单、系统开销小
    批处理系统

  2. 抢占方式
    系统根据某种策略(抢占原则)收回正在运行进程的 CPU ,调度其它就绪进程运行
    及时响应各进程的需求
    分时/实时系统

抢占原则:

  • 时间片原则(时间片用完)
  • 优先级原则(更高优先级进程就绪)
  • 短进程优先原则(更短进程就绪)

1.先来先服务FCFS

FCFS 算法总是把处理机分配给最先进入就绪队列的进程,一个进程一旦分得处理机,便执行下去,直到该进程完成或阻塞时,才释放处理机。(非抢占调度)
这里写图片描述

FCFS 的优点:实现简单。
FCFS 的缺点:没有考虑进程的优先级,平均等待时间波动较大,短进程可能排在长进程后面,I/O 资源和 CPU 资源利用率低。
FCFS 有利于长作业(进程)


2.时间片轮转RR

RR 用于分时系统进程调度,其步骤如下:

  1. 就绪进程按照 FCFS 原则排成一个就绪队列
  2. 调度队首进程,执行一个时间片
  3. 在一个时间片结束时,发生时钟中断
  4. 调度程序暂停当前进程的执行,并送就绪队列尾
  5. 通过 CPU 现场切换执行当前的队首进程

这里的时间片 q = 1
这里写图片描述

RR 的优点:就绪队列中的所有进程都会有机会获得处理器运行;可提高进程并发性和资源利用率;缩短响应时间。

RR 的缺点:时间片的长度影响系统开销和响应时间。

时间片过短,则调度程序剥夺处理机的次数增多,增加进程上下文交换次数,加重了系统开销(时间片短,有利于短作业,不利于长作业);
时间片过长,大到进程能完成全部运行作业所需的时间,那么时间片轮转法就退化为 FCFS (长时间片,无法满足交互式用户需求)。
最佳时间片,长度略大于一次典型交互所需的时间(响应时间= 进程数目 × 时间片大小)


3.最短进程优先SPN

SPN 算法从就绪队列中选出估计运行时间最短的进程,为之分配处理机,如果运行时间相同,按 FCFS 调度。

SPN 算法有抢占方式非抢占方式两种:

  • 最短进程优先SPN(非抢占)
  • 最短剩余时间优先SRT(抢占)

这里写图片描述

SPN 的优点:能有效地降低平均等待时间,提高系统的吞吐量(平均周转时间最短),有利于短作业。
SPN 的缺点:不利于长作业当短作业持续不断到达时,长作业可能被饿死。无法准确估计作业的的确切执行时间,不一定能真正做到短作业(进程)优先调度。


4.最短剩余时间优先SRT

SRT 是对 SPN 的改进,采用了抢占机制,根据就绪队列里进程剩余需要服务的时间来排队。剩余时间越短的排在最前面。因为需要去记录进程的剩余服务时间,所以增加了系统的开销。

这里写图片描述

SRT 的优点:比 SPN 的性能更好,短作业只要就绪就可以抢占正在执行长进程的 CPU。
SRT 的缺点:增加了额外开销,长作业(进程)可能会被饿死。


5.最高相应比优先HRRN

为了防止长作业(进程)被饿死,选择最高相应比优先算法。
响应比 = 周转时间 / 运行时间 = (运行时间 + 等待时间 )/ 运行时间 = 1 + 等待时间 / 运行时间

这里写图片描述

HRRN 的优点:对短作业有利(运行时间越短优先级越高),长作业不会被饿死(运行时间相同时,等待时间越长优先级越高)
HRRN 的缺点:增加了系统的开销(每次重新调度需要估计运行时间,并计算响应比)


6.反馈法

多级队列调度:

  • 根据进程属性设置多个就绪队列,每个就绪队列有各自的调度算法、优先级或时间片长度
    前台(或交互式)RR
    后台(或批处理)FCFS
  • 队列之间必须有调度
    通常采用固定优先级可抢占调度
    另一种可能是在队列之间划分时间片。每个队列都有一定的 CPU 时间

多级反馈队列:

  • 基于多级队列调度(多个队列,不同优先级,不同时间片长度,不同调度算法)
  • 进程可以在不同队列间移动
  • 可抢占调度
  • 最通用和最复杂的 CPU 调度算法

多级反馈队列调度的优点:

  1. 短进程出现在优先级高的队列中,可提高系统吞吐量、缩短平均周转时间
  2. I/O 密集型进程放在最高优先级队列,保证及时 I/O 交互,提高 I/O 设备利用率、缩短响应时间
  3. 不必事先估计进程执行时间,可以在进程中动态调节

六.多种调度算法的比较

这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值