【操作系统复习随手记】(三)调度——为CPU选择要运行的进程

232 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第18天,点击查看活动详情 这也是第23篇文章

调度时机

  • 进程退出
  • 进程阻塞
  • I/O中断
  • fork新进程后,选择父进程/子进程

调度算法分类

  • 批处理
  • 交互式
  • 实时

调度算法目标

  • 公平 但不同类型的进程没有可比性

Q:如何保证?

A:系统策略的强制执行

  • 保持系统各部分尽可能忙碌

批处理系统

几大性能指标

  • 吞吐量:系统每小时完成的作业数量
  • 周转时间:从作业提交(也可理解为作业进入/到达就绪队列)到终止(作业完成)的时间。
    • 平均周转时间:周转时间的算术平均
    • 带权周转时间:指的是单个的时间,它是单个周转时间/cpu执行时间
    • 平均带权周转时间:带权周转时间的算术平均
  • CPU利用率

几个算法:以下列情况为背景:

image.png

先来先服务(first come first served)

队列

image.png

最短作业优先(shortest first served)

非抢占式算法

  • 前提:优先级相同
  • 不过每次都得算一下才能知道哪个当前是最短的
  • 性能最好的时候:初始时所有作业均已到达就绪队列

image.png

最高响应比优先(highest response ratio first)

介于先来先服务和最短作业优先之间,是非抢占式算法

响应比:1+截至目前的等待时间/当前作业要求执行的时间

  • 短作业能获得良好服务,长作业也不会长时间等待而产生饥饿现象

image.png

image.png

最短剩余时间优先(shortest remaining time next)

!!新理解:最短作业的抢占式版本!!

吃着碗里的,看着新上的菜,因为其他在等待的进程运行完所需要的时间之前已经算过了,正是因为其他不是最好的选择所以才轮到当前这个进程,而且随着时间推移,当前正在执行的进程的所需剩余执行时间只会越来越短,其他在等待的并没有可比性。但新来的是未知的,有可能更好(完成所需的时间更短)

  • 特点:新的短作业容易获得良好的服务
  • 缺点:易造成大作业的饥饿现象

image.png

交互式系统

依然是以前述的示例为例: image.png

轮转调度(RR)

image.png

  • 时间片为1:

image.png

  • 时间片为2:

image.png

优先级调度

看优先级规则如何定义。我做的题目里序号越小优先级越高得多。

分抢占式和非抢占式两种。

多级队列

同级队列按同一种算法调度,不同级队列间的优先级有差异,越往后优先级越低;到最后还分配不完,就按时间片轮转法调度。

最短进程优先

和最短作业优先一样的原理

保证调度

作出一个保证,然后努力实现

彩票调度

被调度是个概率问题

公平分享调度

取决于怎么定义“公平”

实时系统

  • 硬实时:绝对不能出差错,如超过ddl
  • 软实时:可以允许错误出现

image.png

满足周期性的条件:可处理:i=1mcipi<=1\sum_{i=1}^m\frac{ci}{pi}<=1

否则会出现总共需要的CPU时间>提供的CPU时间

策略与机制分离

将调度算法参数化,参数可自定义

这样一来,机制位于内核,策略由用户进程定义。