操作系统 | CPU调度

CPU调度概述

CPU调度是多任务操作系统的基础,目的是使得CPU尽可能用于执行指令,从而提高CPU效率。

进程之间存在竞争,需要操作系统选择一个进程来进行这种转换。

长程和短程调度

长程调度

  • 又称作业调度、高级调度。
  • 指从“新建”状态转换到“就绪”状态的调度过程。
  • 控制躲到程序的“道/度”。“道/度”:允许在内存运行的最多进程数。

短程调度

  • 又称CPU调度、低级调度。
  • 指调度进程选择下一个执行的进程。

长程与短程调度比较

切换频率切换开销操作系统中的应用
长程调度大(秒/分,切换慢)可选,非必须
短程调度小(毫秒级,切换快)必需

调度队列

为了方便进行CPU调度,操作系统需要对不同状态的进程进行组织和管理。为此,为某些特定的状态设立了一个或多个进程队列,用于管理这些进程。

就绪队列 --  在内存中处于就绪状态并等待执行的所有进程的集合。

设备队列 --- 等待某一I/O设备的进程队列。

进程的执行过程实际上就是进程在各种队列之间的迁移。

 图示有一个就绪队列;四个设备队列,四个设备队列均处于等待状态。

中程调度

中程调度,又称“交换”。指将进程在内存和外存间换进换出。(严格区别不属于进程调度,属于内存管理范畴)

目的:为了节省内存空间资源。

CPU脉冲周期

CPU调度过程

调度程序(Scheduler)

  • 根据某种策略选择一个就绪进程。
  • 一个CPU同时只能运行一个进程。

分派程序(Dispatcher)

  • 负责把CPU的控制权转交给CPU调度程序。
  • 切换上下文。
  • 切换到用户态。
  • 跳转到用户程序的适当位置并重新运行之。

分派延迟(Dispatch latency)--- 分派程序终止一个进程的运行并启动另一个进程运行所花的时间。

CPU调度方式和时机

非抢占调度(nonpreemptive)

  • 一旦把CPU分配给某进程后,系统不可以抢占已分配的CPU分配给其他进程。
  • 只有当进程自愿释放CPU,才可以把CPU分配给其它进程。
  • 优点:容易实现,调度开销小,适合批处理系统。
  • 缺点:响应时间长,不适合交互式系统。

抢占式调度(preemptive)

  • 调度程序可根据某种原则暂停某个正在执行的进程,将已分配给它的CPU重新分配给另一个进程。
  • 可以防止单一进程长时间独占CPU资源。
  • 系统开销大。

抢占式和非抢占式区别:运行的进程是否自愿放弃CPU资源。

CPU调度时机

  1. 从运行转到等待(非抢占式)
  2. 从运行转到就绪(抢占式)
  3. 从等待转到就绪(抢占式)
  4. 终止运行(非抢占式)

CPU调度准则

调度准则--基本指标

CPU利用率 --- 固定时间内CPU运行时间的比例。

吞吐量 --- 单位时间内运行完的进程数量。

周转时间 --- 进程从提交到运行结束的全部时间。

等待时间 --- 进程等待调度(不运行)的时间片总和。

响应时间 --- 从进程提交到首次运行(而不是输出结果)的时间段,也就是第一段的等待时间。

周转时间 = 等待时间 + 运行时间

响应时间 <= 等待时间

调度准则--优化方法

通过调度算法,使得达到下述的优化方法:

  • 最大的CPU利用率
  • 最大的吞吐量
  • 最短的周转时间
  • 最短的等待时间
  • 最短的响应时间

CPU调度算法1(FCFS和SJF)

先来先服务调度算法(FCFS)

先来先服务(First-Come, First-Served - FCFS)

按照进程请求CPU的先后顺序使用CPU。

算法特点

  • 实现简单,可使用FIFO队列实现。
  • 非抢占式。
  • 当一个长进程后面的多个短进程,让长进程先执行,会让后面的短进程等待较长的时间,从而导致CPU和设备利用率降低。
  • 公平。

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

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

关联到每个进程下次运行的CPU区间长度,调度最短的进程。

两种模式

非抢占式SJF调度,一旦进程拥有CPU,它的使用权限只能在该CPU区间结束后让出。

抢占式SJF调度,发生在有比当前进程剩余时间片更短的进程到达时,也称为最短剩余时间优先调度(Shortest-Remaining-Time-First, SRTF)。

SJF最优

对一组指定的进程而言,它给出了最短的平均等待时间。

下一个CPU区间长度的预测

SJF算法困难:如何知道下一个CPU区间的长度。

SJF通常用于长程调度。

指数估算法:通过先前的CPU区间长度及其指数平均进行预测。

CPU调度算法2(PR和RR)

CPU调度算法3(MLQ, MLFQ和多处理调度)

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值