操作系统第五章-进程调度


前言

  • CPU调度:执行多到程序操作系统时,CPU进行上下文切换,并且有各种CPU调度算法
  • 当一个进程等待时,操作系统就从该进程接管CPU控制,并将CPU交给另一个进程执行

1.基本概念

1.抢占调度

  1. 需要进行CPU调度的情况
    1. 一个进程从运行状态切换到等待状态(非抢占)
    2. 一个进程从运行状态切换到就绪状态(抢占)
    3. 一个进程从等待状态切换到就绪状态(抢占)
    4. 一个进程终止时(非抢占)
  2. 在非抢占调度下,一旦进程分配到CPU,该进程就会一直使用CPU,直到它终止或切换到等待状态

2.调度程序

调度程序是一个模块,用来将CPU控制权交给由短期调度程序选择的进程.
功能有:

  • 切换上下文
  • 切换到用户模式
  • 跳转到用户程序的合适位置,以便开始程序

2.调度准则

指标:

  • CPU利用率: 0% ~ 100%,范围从40% ~ 90%
  • 吞吐量:单位时间内进程完成的数量
  • 周转时间:从进程提交到进程完成的时间段.
  • 等待时间:在就绪队列中等待所花时间之和
  • 响应时间:从提交请求到产生响应的时间

总之就是:

  • 最大化CPU使用率和吞吐量
  • 最小化周转时间,等待时间和响应时间

3.调度算法

1.单处理器系统

1.先到先服务(First-Come First-Served, FCFS)

FCFS是非抢占的.一旦CPU分配给一个进程,该进程就会一直使用CPU知道释放CPU
例子

进程执行时间
p124
p23
p33

执行顺序:p1,p2,p3
缺点:平均等待时间长:p1等待0,p2等待24,p3等待27

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

例子

进程执行时间
p16
p28
p37
p43

执行顺序:p4,p1,p3,p2
优点:平均等待时间最小

两种类型:

  1. 背景:当一个新进程到达就绪队列而以前进程正在执行时,就需要选择,因为新进程的执行时间可能比当前进程未完成部分的执行时间还要小
  2. 非抢占SJF算法:允许当前运行进程先完成CPU执行
  3. 抢占SJF算法(最短剩余时间优先调度):立即执行新进程

3.最短剩余时间优先调度(抢占SJF算法)

当一个新进程到达就绪队列而以前进程正在执行时,就需要选择,因为新进程的执行时间可能比当前进程未完成部分的执行时间还要小,这时立即执行新进程

例子

进程到达时间执行时间
p108
p214
p329
p435

执行的时间轴:
在这里插入图片描述

4.优先级调度

每个进程都一个优先级与其关联,具有最该优先级的进程会分配到CPU,相同优先级的进程按FCFS调度
例子

进程执行时间优先级
p1103
p211
p324
p415
p552

执行顺序:p2,p5,p1,p3,p4

两种类型

  1. 背景:当一个新进程到达就绪队列而以前进程正在执行时,就需要选择,因为新进程的优先级可能比当前进程的优先级还要小
  2. 非抢占:允许当前运行进程先完成CPU执行
  3. 抢占:立即执行新进程

可能导致的一个最主要的问题:无穷阻塞或者饥饿问题,即某个进程的优先级可能很低,一直得不到执行
解决:老化.老化逐渐增加在系统中等待很长时间的进程的优先级

5.轮转调度(Round-Robin, RR)

专门为分时系统设计的,总体上类似于FCFS调度,但是增加了抢占

时间片:一个较小的时间单元,10ms ~ 100ms
每个进分配不超过一个时间片的CPU执行
时间片时间到,产生中断,CPU进行上下文切换
RR算法的性能很大程度取决于时间片的大小:时间片很大,RR与FCFS一样;时间片很小,会导致频繁的上下文切换

6.多级队列调度

  • 将就绪队列按照某个指标(进程的属性,如队列的优先级)分成多个单独队列,一个进程永久分配到一个队列.每个队列都有自己的调度算法
  • 每个队列与更低层队列相比有绝对的优先
  • 可能存在饥饿问题

7.多级反馈队列调度

  • 高优先级队列中的进程的CPU使用时间过多,就会把该进程移到优先级更低的队列
  • 较低队列的进程等待时间过长,进程会被移动到更高优先级队列中
  • 优点:能够将IO密集型,交互进程(使用CPU时间少的进程)CPU密集型进程分开,前者向更高优先队列移动,后者向更低优先队列移动

3.多处理器系统

1.非对称多处理

让一个处理器处理所有调度决定,IO处理以及其他活动,其他处理器只执行用户代码

2.多对称处理(Symmetric MultProcessing, SMP)

  • 即每个处理器自我调度
  • 每个CPU都比较独立
  • 每个处理器的调度程序都检查共同就绪队列,以便选择执行一个进程

4.实时CPU调度

目的:为实现最小化延迟

软实时系统和硬实时系统:

  • 软实时系统不保证调度关键实时进程,只保证这类进程会优先于非关键进程
  • 硬实时系统要求一个任务应该在截止期限之前完成

1.最小化延迟

事件延迟:从事件发生到事件得到服务的这段事件

影响实时系统的性能的两种类型:

  • 中断延迟:从CPU收到中断到中断处理程序开始的时间.当一个中断发生时,操作系统应先完成正在执行的指令,再确定发生中断的类型,然后保存当前进程的状态,再采用特定的中断服务程序(Interrupt Service Routine, ISR)来处理中断.执行这些任务需要的总时间为中断延迟
  • 调度延迟:从停止一个进程到启动另一个进程所需要的时间量

2.优先权调度

  • 根据每个进程的重要性分配优先级.进程越重要,分配的优先级越高
  • 支持抢占
  • 提供抢占的,基于优先级调度程序仅保证软实时功能
  • 硬实时系统需要给任务附加调度特征,以保证实时任务在截止期限内得到服务
  • 硬实时系统在分时系统里面,获得CPU执行权的进程的调度特征:固定的处理时间t,CPU应处理的截止期限d和周期p,周期任务速率1/p,应满足t<=d<=p
  • 根据进程的截止期限或速率要求来分配优先级
  • 如果满足满足t<=d<=p,调度程序承认进程,保证进程完成;如果t>d,调度程序会拒绝请求

3.单调速率调度

  • 单调速率调度算法采用抢占的,静态优先级的策略,调度周期性任务
  • 进入系统时,每个周期性任务会分配一个优先级,优先级与周期成反比
  • 问题:两个进程p1和p2,周期分别为50和100,处理时间分别为20和35,截止时间为一个周期结束前,假设p2比p1的优先级更高,由于硬实时系统的优先权调度,就会使得p1的完成时间在55,超过了其截止时间50了
    在这里插入图片描述
    若使用的是单调速率调度的话,P1的优先级会比p2的优先级更高
    在这里插入图片描述
    但是假设p2 的周期是80的话,使用单调速率调度就会造成p2的完成时间在85,超过了截止期限,如图
    在这里插入图片描述
  • 所以单调速率调度的CPU利用率是有限的,调度N个进程的最坏情况下的CPU利用率为N(2 1 / N ^{1/N} 1/N-1),单调速率调度需要保证CPU利用率不超过这个值,否则就不能保证满足进程的截止期限

4.最早截止期限优先调度(Earlist-Deadline-First, EDF)

  • 根据截止期限动态分配优先级.截止期限越早,优先级越高
  • 根据EDF策略,当一个进程可运行时,应向系统公布截止期限要求,重新分配进程的优先级
  • 例子:p1的周期和执行时间分别为50,25;p2的周期和执行时间分别为80,35.如何理解动态分配:
    在这里插入图片描述
  • EDF调度不要求进程的CPU执行长度是固定的

5.比例分享调度

  • 将CPU所有的执行时间分成T股,若一个应用程序接收到N股的时间,那么这个应用将有N/T的总处理时间
  • 假设总的100股,A,B,C分别50,15,20股则ABC的处理时间分别为50%,15%,20%
  • 准入控制策略,100-50-15-20=15,如果进程D请求30股,那么准入控制器会拒绝D进入系统
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值