第3章-1 处理机调度与死锁

前言

第3章 处理机调度与死锁完整目录如下:(分两节记录)

3.1调度层次与调度算法的目标
3.2 作业调度
3.3 进程调度
3.4 实时调度
3.5 死锁概述
3.6 预防死锁
3.7 避免死锁
3.8 死锁检测与解除
在这里插入图片描述

3.1调度层次与调度算法的目标

在多道程序环境下,进程数目往往多于处理机数目,致使它们争用处理机。OS按处理机调度算法,动态地把处理机分配给就绪队列中的一个进程,使之执行。

分配处理机是由进程调度程序完成,是OS设计的中心问题之一.

作业从提交到获得处理机执行,运行完成,需要经历多级调度。

处理机调度分成三个层次:高级调度、中级调度、低级调度;
在这里插入图片描述

3.1.1 处理机调度的层次

  1. 高级调度(作业调度、长程调度) 调度对象:作业
  1. 根据调度算法选择外存上后备作业队列中的作业,并调入内存,为它们创建进程,分配资源,并将他们插入就绪队列。
  2. 主要用于多道批处理系统中,分时和实时系统中不设置高级调度;
  3. 高级调度是外存与内存之间的调度,每个作业只调入、调出一次
  1. 中级调度(内存调度,中程调度)

内存使用紧张时,将内存中暂时无法运行的进程挂起,即由内存调至外存等待;中级调度决定把外存上具备运行条件的就绪进程调入内存,等待运行。
存储器管理中使用对换调度功能。
目的:提高内存利用率和吞吐量。

  1. 低级调度-进程调度
  1. 按照一定的调度算法将CPU分派给就绪队列中的某个进程。
  2. 运行频率最高,几十毫秒执行一次,调度算法不宜太复杂。

在这里插入图片描述
在这里插入图片描述

3.1.2 处理机调度算法的目标

1、处理机调度算法的共同目标

  1. 资源利用率高(特别是CPU利用率): C P U 的 利 用 率 = C P U 的 有 效 工 作 时 间 C P U 有 效 工 作 时 间 + C P U 空 闲 等 待 时 间 CPU的利用率=\frac{CPU的有效工作时间}{CPU有效工作时间+CPU空闲等待时间} CPU=CPU+CPUCPU
  2. 具有公平性:各进程都能获得合理的CPU时间,不会发生进程饥饿现象。
  3. 保证平衡性:不同类型的进程配合调度,例如计算型和输出型配合调度。
  4. 策略强制执行:例如,执行安全策略,即使花费时间,若需要必须执行。
  1. 批处理系统的目标

(1)周转时间短:周转时间指作业由提交到完成所花费的时间。
作业i周转时间Ti=作业i完成时间-作业i提交时间
作业i周转时间Ti=作业i运行时间+作业i等待时间
N个作业的平均周转时间: T = 1 N ∑ i = 1 N 作 业 i 周 转 时 间 T i T=\frac{1}{N}\sum_{i=1}^{N}{作业i周转时间T_i} T=N1i=1NiTi
作业带权周转时间: W i = 作 业 i 周 转 时 间 T i 作 业 i 运 行 时 间 W_i=\frac{作业i周转时间T_i}{作业i运行时间} Wi=iiTi
N个作业的平均带权周转时间: T = 1 N ∑ i = 1 N 作 业 i 带 权 周 转 时 间 W i T=\frac{1}{N}\sum_{i=1}^{N}{作业i带权周转时间W_i} T=N1i=1NiWi

(2)系统吞吐量高:是指单位时间内系统所完成的作业数。
系统吞吐量= 总 共 完 成 了 多 少 道 作 业 总 共 花 了 多 少 时 间 \frac{总共完成了多少道作业}{总共花了多少时间}

(3)处理机利用率高。

  1. 分时系统的目标
    特点: 同时性,独立性,交互性、及时性

(1)响应时间快
从提交一个请求到产生响应的时间间隔。
响应时间=从键盘输入的请求信息传送到处理机的时间
+处理机对请求信息处理的时间
+响应信息回送到终端显示器的时间

(2)均衡性
系统响应时间与用户所请求服务的复杂性相适应。

  1. 实时系统的目标
    特点:实时性,高安全可靠性。如飞机运行导弹发射自动控制等
    目标:截止时间的保证,可预测性。

在这里插入图片描述

3.1.3 调度队列模型

同时具有三级调度的调度队列模型图:
在这里插入图片描述
作业调度:选择作业,建立进程,插入就绪队列
进程调度:选择进程,执行;一个就绪队列,多个阻塞队列

仅有进程调度的调度队列模型-分时系统、实时系统:
在这里插入图片描述

3.2 作业调度

3.3 进程调度(和3.2合并变为主要的调度算法)

先来先服务算法(First Come First Served );
最短作业优先算法(Shortest Job First);
最高响应比优先算法(Highest Response Ratio First)
优先级调度算法( priority scheduling)
基于时间片的调度算法:时间片轮转(Round-Robin)、多队列反馈调度算法(Multilevel Feedback)

有些算法可用于作业调度,也可用于进程调度。

CPU调度策略

  1. 非抢占方式(nonpreemptive):
    把处理机分配给某进程后,便让其一直执行,直到该进程完成或发生某事件而被阻塞时,才把处理机分配给其它进程,不允许其他进程抢占已经分配出去的处理机。
    优点:实现简单、系统开销小,适用于大多数批处理系统环境;
    缺点:难以满足紧急任务的要求,不适用于实时、分时系统要求;
  1. 抢占方式(Preemptive mode):
    允许调度程序根据某个原则,去停止某个正在执行的进程,将处理机重新分配给另一个进程。
  1. 抢占的原则
    1)时间片原则:各进程按时间片运行,当一个时间片用完后,便停止该进程的执行而重新调度,这个原则适用于分时系统。
    2)优先权原则:通常对一些重要的和紧急的进程赋予较高的优先权。当这种进程进入就绪队列时,如果其优先权比正在执行的进程优先权高,便停止正在执行的进程,将处理机分配给优先权高的进程。
    3)短作业优先原则:当新到达的作业比正在执行的作业短时,将暂停当前长作业的执行,将处理机分配给新到的短作业,使之执行。

3.3.1 先来先服务算法FCFS

先来先服务算法(First-Come First-Served)
基本思想:按照作业进入系统的先后次序来挑选作业,先进入系统的作业优先被挑选。
非抢占式算法:作业一直在运行,直到它运行完成或阻塞后,再进行调度。
适用于:作业调度、进程调度
不是主调度算法,经常和其他调度算法相结合使用,形成一种更有效的调度算法。
在这里插入图片描述
算法优缺点:

公平、算法容易实现;
适用于作业调度和进程调度;
效率不高,只顾及作业等候时间,没考虑作业要求服务时间的长短;
不利于短作业。

3.3.2 最短作业优先算法SJF

基本思想:以进入系统的作业所要求的CPU时间为标准,总选取估计运行时间最短的作业投入运行。
在这里插入图片描述
结论: SJF的平均作业周转时间比FCFS要小,调度性能比FCFS好.
算法优缺点:

算法容易实现;
适用于作业调度SJF、进程调度SPF;
能有效降低作业的平均等待时间;
忽视了作业等待时间,对长作业不利;
如果作业的到来顺序及运行时间不合适,会出现饥饿现象;
如果题目中未特别说明,则SPF默认是非抢占式;

思考:

FCFS算法是在每次调度的时候选择一个等待时间最长的作业为其服务,但是没有考虑到做作业的运行时间。因此导致了对短作业不友好的问题。
SJF算法是选择一个执行时间最短的作业为其服务,但是又完全不考虑各个作业的等待时间,因此导致了对长作业不友好的问题,可能会导致饥饿。

3.3.3 最高响应比优先HRRN

最高响应比优先(Highest Response Ratio Next):综合考虑作业/进程的等待时间、作业运行时间。

响应比概念: R p = 等 待 时 间 + 要 求 服 务 时 间 要 求 服 务 时 间 = 1 + 等 待 时 间 要 求 服 务 时 间 R_p=\frac{等待时间+要求服务时间}{要求服务时间}=1+\frac{等待时间}{要求服务时间} Rp=+=1+

公式理解:

等待时间相近,要求服务时间越短,优先权越高(SJF)
要求服务时间相近,等待时间越长,优先权越高(FCFS)

算法基本思想:在当前作业执行完时,计算剩余作业的响应比,选取响应比最高的作业投入运行。
在这里插入图片描述
在这里插入图片描述
算法优缺点:

算法适用于作业调度或进程调度;
既考虑作业等待时间,又考虑作业的运行时间 ;
既照顾短作业又不使长作业的等待时间过长 ;
非抢占的调度算法;
计算响应比需要耗费时间。

3.3.4 进程调度机制和方式

1、进程调度的时机
在这里插入图片描述
2、进程调度的任务

(1) 保存当前进程的处理机的现场信息,如PC,R。
(2) 按某种算法选取进程。
(3) 把处理器分配给进程。现场恢复,把CPU的控制权交给进程。
说明:进程调度是有代价的,并不是调度越频繁,效率越高
在这里插入图片描述
3、进程调度方式

  1. 非抢占方式(NON-Preemptive Mode):
    把处理机分配给某进程后便让它一直运行下去,直到进程完成或发生某事件而阻塞时,才把处理机分配给另一个进程。
  2. 抢占方式(Preemptive Mode):
    当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给它的处理机,将之分配给其它进程。
    主要剥夺原则有:优先权原则、短进程优先原则、时间片原则。
    优先级的类型:
    静态优先级:创建进程时确定的,在进程的整个运行期间保持不变。
    动态优先级:创建时赋初值,随着进程的推进改变优先级。

4、进程调度过程,应具有三个基本部分:

  1. 排队器:当进程转变为就绪状态时,排队器将它插入就绪队列。
  2. 分派器:把由调度程序所选定的进程,从就绪队列中取出该进程,然后进行上下文切换,将处理机分配给它 。
  3. 上下文切换机制:OS保存当前进程的上下文;或者把新选进程的CPU现场信息装入到处理机的各个相应寄存器中。
    在这里插入图片描述

3.3.5 时间片轮转法RR

时间片轮转法(Round-Robin):
算法基本思想: 系统按照固定的时间片依次轮流执行就绪队列中的各个进程,主要用于分时系统中。

基本原理:每间隔一段时间(如30ms)产生一次中断,进程调度程序分配CPU给队首进程,令其执行。

进程切换时机:

①时间片尚未用完,正在运行的进程已经结束
②时间片用完
③进程阻塞

算法举例:有三个进程P1、P2、P3先后到达,分别需要20、4和2个单位时间运行完毕,假如用时间片轮转法进行调度,时间片为2个时间单位。计算各进程的周转时间和平均周转时间。
在这里插入图片描述

算法优缺点:

  1. 算法主要针对分时系统,适用于进程调度;
  2. 对用户的响应及时、快速;
  3. 时间片的长度确定比较困难;
  4. 进程切换开销比较大。

时间片短:频繁地执行进程调度和进程上下文切换,增加系统开销。
时间片长:无法满足交互作业和交互式用户需求。(假设时间片为5)
典型时间片大小:略大于一次典型的交互所需要的时间,使大多数交互式进程能在一个时间片完成,响应时间快。

3.3.6 优先级调度算法(PSA)

优先级调度算法 priority scheduling algorithm
**算法基本思想:**选取优先级最高的作业/进程投入运行;

如何确定作业的优先级?

  1. 先来先服务:等待时间为优先级;
  2. 短作业优先:作业运行时间为优先级。

抢占式、非抢占式都有:
非抢占式只需在进程主动放弃处理机时进行调度即可
抢占式还需在就绪队列变化时,检查是否会发生抢占。

调度算法总结

在这里插入图片描述

3.3.7 多级反馈队列调度算法

基本思想:

1)设置多个就绪队列。就绪队列分为N级(优先级由高到),每个就绪队列分配给不同的时间片,队列优先权越高,每个进程的执行时间片就越小。当运行进程用完一个时间片时,进入下一级队列。
2)等待进程被唤醒时,进入原来的就绪队列;当进程第一次就绪时,进入第一级队列 。
3)每个队列都采用FCFS。
4)按队列优先级调度,可抢占方式
在这里插入图片描述

优点:短进程能够得到优先处理;系统开销不大;交互型请求
通常能够在第一个就绪队列中完成。

缺点:如果优先级较高的队列一直不为空,则优先级较低队列
中的进程可能长时间无法得到运行,即会导致发生饥饿现象。

例题及参考答案

  1. 例:某计算机只支持单道程序,某个作业刚开始需要在CPU上运行5秒,再用打印机打印输出5秒,之后再执行5秒,才能结束。在此过程中,CPU利用率、打印机利用率分别是多少?

答:CPU利用率:10/15=66.7%;
打印机利用率“5/15=33.3%

  1. 下列关于调度算法的论述中,正确的是:(D)
    A FCFS调度算法对长作业有利,又对短作业有利
    B 时间片RR调度算法只对长作业有利
    C 实时调度算法也要考虑作业的长短问题
    D 高响应比优先调度算法既有利于短作业,又兼顾长作业

  2. 对于相同的进程序列,下列进程调度算法中平均周转时间最短的是:(B)
    A FCFS
    B SJF
    C 优先级调度算法
    D RR调度算法

  3. 下列选项中,降低进程优先级的合理时机是(A)
    A 进程时间片用完
    B 进程刚完成IO操作,进入就绪队列(已经进入就绪了)
    C 进程长期处于就绪队列(本来就一直饥饿,再降低更饥饿)
    D 进程从就绪状态转为运行状态(刚运行,降低可能就暂停运行)

  4. 有如表所示的进程:
    在这里插入图片描述
    1) 画一个图来说明它们的执行过程,分别按以下算法:
    a. FCFS
    b. SPN(Shortest Process Next)
    c. RR ( 时间片长度为1 )
    2)计算各种算法下的平均周转时间。

解:

  1. FCFS:
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
3. RR
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值