第3章 处理机调度与死锁

3.1 分级调度

高级调度,中级调度,低级调度

3.2 作业的状态及转换

提交状态:作业从输入设备进入外部存储设备的过程。
后备状态:作业已经输入完毕但是还没进内存之前的状态。
运行状态:作业进入内存并且没有运行完毕。
完成状态:作业运行完成但资源尚未被回收。
请添加图片描述

3.2.1 调度的层次

高级,中级,低级

一、高级调度:作业调度,宏观调度,收容调度

1.按一定原则对外存上的作业进行调度,并建立进程PCB;
2.决定允许哪些作业竞争系统资源;
3.作业被系统收容后,就变成进程(或进程组)。

二、中级调度:交换调度

目的:提高内存利用率,系统吞吐量
1.决定允许哪些进程竞争处理机
2.通过对进程临时挂起和激活的方法对系统负载波动作出反映
3.是作业进入系统和将处理机分配给这些作业二者之间的一个缓冲

三、低级调度:进程调度

1.决定就绪队列中的哪个进程将获得处理机
2.进程调度程序应常驻内存。
3.方式:非抢占方式,抢占方式(时间片,优先级,短进程优先)

3.2.2 作业调度

1、功能:按某种算法从后备队列中挑选一个或一批作业调入内存,并创建PCB
2、调度过程
①按照某种调度算法从后备作业队列中选取作业
②为被选取的作业分配内存和外设资源(内存分配程序和外设分配);
③为作业建立相应的进程
④构造和读写作业运行时所需要的有关表格,建立负责其运行控制的作业运行控制程序
⑤完成作业的善后处理工作,如收回分配给他的全部资源。

3.2.3 作业调度目标与性能衡量

一、目标

1、对所有作业应该是公平合理
2、应使设备有高的利用率
3、每天执行尽可能多的作业
4、有快的响应时间

二、性能衡量

1、周转时间:提交—>结束
=完成时间-提交时间=等待时间+运行时间

等待时间包括等待进入内存、在就绪队列中等待调度、在阻塞队列中等待I/O的完成等。

2、平均周转时间
在这里插入图片描述
3、带权周转时间=该作业的周转时间与所需运行时间之比
在这里插入图片描述
4、平均带权周转时间
在这里插入图片描述
5、响应比=作业的周转时间与它所需的运行时间之比
在这里插入图片描述

三、调度性能衡量P69

1、面向用户的准则
周转时间短,响应时间长,截止时间有保证,优先权原则

截止时间:进程必须开始运行的最迟时间,或必须完成的最迟时间。

2、面向系统的准则
系统吞吐量高,CPU利用率高,各类资源的平衡利用

3.2.4 进程调度

1、只具有进程调度的调度队列模型
在这里插入图片描述
2、具有高级和低级调度的调度队列模型
在这里插入图片描述
3、具有三级调度的调度队列模型
在这里插入图片描述

3.3 作业调度算法和进程调度算法

一、先来先服务FCFS

即优先考虑等待时间长的

例1:在单道环境下,某批处理有四道作业,已知他们的进入系统的时刻和估计运算时间如下:
在这里插入图片描述

    请用FCFS算法计算作业的运行情况、平均周转时间和平均带权周转时间。

解:
在这里插入图片描述

例2:已知有五个作业,它们的进入时间和运行时间及需要内存情况如下表所示:
在这里插入图片描述
    现在共有用户空间100KB,系统规定作业相应程序装入内存的连续区域并且作业一旦装入就不允许移动,作业与进程均采用FCFS算法,请计算作业的调度次序和作业的平均带权周转时间。

解:
在这里插入图片描述

二、短者优先调度算法SJF/SPF

优先调度运行时间短的

例3:在单道环境下,某批处理显然有四道作业,已知他们的进入系统的时刻、估计运算时间如下图。请用SJF算法计算作业的平均周转时间和平均带权周转时间。
在这里插入图片描述

解:
在这里插入图片描述
平均周转时间 T=1.55h
平均带权周转时间T’=5.15h
运行顺序:1,3,4,2

例4:已知有五个作业,它们的进入时间和运行时间及需要内存情况如下表所示:
在这里插入图片描述

    现在共有用户空间100KB,系统规定作业相应程序装入内存的连续区域并且作业一旦装入就不允许移动,作业采用SJF调度算法,进程FCFS算法,请计算作业的调度次序和作业的平均带权周转时间。

解:
在这里插入图片描述
不足
1、不利于长作业或进程
2、非抢占方式,未考虑紧迫程度
3、算法实现难度大

三、最高响应比作业优先算法HPN

FCFS和SJF综合平衡
综合考虑进程等待时间和执行时间
满足短任务优先且不会发生"饥饿"现象
R=响应时间 / 要求运行时间
=(作业等待时间+需运行时间)/ 需运行时间
=1+已等待时间 / 需运行时间
=1+W/R

例5:在单道环境下,某批处理显然有四道作业,已知他们的进入系统的时刻、估计运算时间如下。请用HRN算法计算作业的平均周转时间和平均带权周转时间。

解:
在这里插入图片描述

每一轮都需要重新计算

四、轮转法RR

    在轮转法中,时间片长度的选取非常重要,时间片长度的选择会直接影响系统开销和响应时间
①当时间片很大时,每个进程得到比完成该进程多的处理机时间,此时轮转调度模式退化为先进先出模式。
②当时间片非常小时,上下文转换开销就成了决定因素,系统性能降低,大多数时间都消耗在处理机的转换上,只有少许用在用户的计算上。

例6:课本P74例4-4

例7:有一个多道程序设计系统,采用不可移动的可变分区方式管理主存空间,设主存空间为100K,采用最先适应分配算法分配主存,作业调度采用响应比高者优先算法,进程调度采用时间片轮转算法(即内存中的作业均分 CPU 时间),今有如下作业序列:
请添加图片描述
假定所有作业都是计算型作业且忽略系统调度时
间。回答下列问题:
(1)列表说明各个作业被装入主存的时间、完成时间和周转时间;(2)写出各作业被调入主存的顺序;
(3)计算5个作业的平均周转时间。

解:10:00,J1提交,调入主存,开始运行。10:15,J2调入主存。此时,J1已经运行15min,所以J1和J2还需要共同运行50min。10:30,J1运行22.5min,J2运行7.5min,因为二者都未运行结束,所以还没有空出足够的连续内存供其他作业调入主存,J3等待。10:35,J1和J2同样未运行结束,J4要等待。10:40,J1和J2还是未运行结束,J5也要等待。
11:05,J1运行时间(15+50/2)=40min,J1运行结束,退出主存,主存空出25k的连续空间,则对J4、J5采用响应比高者优先算法进行调度,J4响应比为11/5,J5响应比为8/3,所以将响应比更高的J5调入主存。
此时,J2已运行25min,J2和J5还需要共同运行10min,11:15,J2运行结束,退出主存,J5已运行5min。主存空出80k连续内存,J3和J4都可进入主存,J3响应比为13/4,J4响应比为13/5,所以J3先调入主存,J4随后。
即主存中有J3,J4,J5三个进程,J5已运行5min,三者还需要共同运行30min。

11:45,J5已运行15min,J5运行结束,退出主存。此时,J3,J4都运行了10min,二者还需要共同运行20min。
12:05,J3已运行20min,J3运行结束,退出主存。
12:10,J4已运行25min,J4运行结束,退出主存。
至此,进程都已运行结束。

综上,可得以下表格:
(1)

作业名装入主存时间完成时间周转时间
J110:0011:0565min
J210:1511:1560min
J311:1512:0595min
J411:1512:1095min
J511:0511:4565min
(2)结合以上分析,各作业被调入主存的顺序为<J1,J2,J5,J3,J4>。
(3)平均周转时间=(65+60+95+95+65)/5=76min=1.27h

五、优先级调度算法

1.算法思想:根据任务的紧急程度来决定处理顺序
2.算法规则:调度时选择优先级最高的作业/进程
3.可以用于作业/进程调度/I/O调度。
4.有抢占/非抢占
非抢占式:只需在进程主动放弃处理机时进行调度。
抢占式:在就绪队列变化时,查看优先级,检查是否会发生抢占。
5.优点:用优先级区分紧急、重要程度,适用于实时操作系统;可灵活地调整对各种作业/进程的偏好程度。
缺点:若一直有高优先级的进程来,那低优先级的可能会饥饿。
6.会导致饥饿

六、多级反馈队列调度算法

1.调度算法的实施过程
设置多级就绪队列;
各级就绪队列具有不同大小的时间片;
按队列优先级高到低进行进程调度;
一进程进入较高优先级队列时可能要重新调度。
2.具有较好的性能,能照顾到各种用户的利益

作业

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

请添加图片描述

3.4 死锁

一、死锁的概念

(一)定义

多个进程,因竞争资源而造成的一种僵局现象,若无外力作用,这些进程无法继续向前推进。
死锁进程:陷入死锁状态的进程
死锁模型:
在这里插入图片描述

(二)资源的性质
类别分类
1、按资源的固有属性分可剥夺资源CPU
不可剥夺资源打印机
2、按使用期限划分永久性资源硬件设备
临时性资源进程同步和通信中出现的消息、信号量等

系统若对不可剥夺资源和临时性资源使用不当,可能会导致死锁的发生。

(三)产生死锁的原因

1、竞争资源(资源不足) 根本原因
竞争临时性/不可剥夺资源
2、进程的推进顺序不当
请求和释放资源的顺序不当

(四)产生死锁的必要条件

互斥访问、请求和保持、不可剥夺、循环等待
1、互斥访问:对于独占性资源、必须互斥访问
2、请求和保持:进程已拥有并保持至少一个资源,又提出了新的资源请求却没有得到满足,此时请求该资源的进程被阻塞,但又不释放自己所拥有的资源
3、不可剥夺:进程所占用的资源在进程结束前都不能被剥夺
4、循环等待:死锁发生后,必然存在一个“进程-资源”的循环等待链,链中每个进程至少拥有链中下一个进程所需要的一个资源
全部满足时才会发生死锁

二、死锁的处理方法

(一)鸵鸟算法
(二)基本方法

预防、避免、检测和解除
1、预防死锁
(1)破坏“请求和保持”条件
一次性地申请完
简单方便、易于实现,存在资源浪费、饥饿现象
(2)破坏“不可剥夺”条件
申请新资源无法立即得到满足时,释放已占有的所有资源
算法实现复杂,系统开销大,吞吐量降低
(3)破坏“环路等待”条件
分配前进行线性排序
系统新设备增加困难、存在资源浪费、限制了用户编程的灵活性

2、避免死锁
存在安全序列-处于安全状态-不会死锁
不存在安全序列-处于不安全状态-可能死锁
避免死避锁实质就是确保系统总是处于安全状态
例:假设系统中有12台磁带机和3个进程P1、P2和P3,其中P1最多要求10台磁带机,P2最多要求4台磁带机,进程P3最多要求9台磁带机。T0时刻,P1、P2和P3分别获得了5台、2台和2台磁带机,请问系统是否会发生死锁?
在这里插入图片描述
答:T0 存在安全序列<P2、P1、P3>,系统是安全的,不会发生死锁。

【银行家算法】破坏循环等待
请添加图片描述
请添加图片描述

3、检测和解除死锁
(1)检测方法:看是否有环路
(2)资源分配图及其简化
例1:
在这里插入图片描述
解:
在这里插入图片描述
在这里插入图片描述
根据死锁定理,资源分配图可以完全化简,系统中不存在死锁。
例2:…
解:根据死锁定理,资源分配图不能完全化简,系统中潜在死锁,产生死锁的进程是P1、P3、P4。

(3)死锁的解除
①剥夺资源法
②撤销进程法
撤销所有死锁进程、逐个撤销死锁进程

预防死锁破坏必要条件的后三个的一个或几个/
避免死锁实质就是确保系统总是处于安全状态银行家算法
检测和解除死锁剥夺资源、撤销进程画简资源分配图

三、进程与资源

例1:在某系统中,三个进程共享四台设备资源,这些资源一次只能一台地为进程服务和释放,每个进程最多需要二台设备资源,试问在系统中是否会产生死锁?
答:不会。若所有的资源都被占用,而占用者又都不满足必须的全部资源,此时就有一个或几个进程无限期地等待更多的资源,系统就会出现死锁。本题中若4台设备资源都被占用,则其中一定有一个进程获得2台设备资源(满足其最大的需求量),这个进程必然会在有限的时间内完成其工作,并释放其所占用的2台资源,这样也就能满足其它ニ进程对设备资源的要求,继续完成它们各自的工作。

例2:设系统中仅有一类独占资源,进程一次只能申请一个资源.系统中多个进程竞争该类资源.试判断下述那些情况会发生死锁?为什么?
1.资源数为4,进程数为3,每个进程最多需要2个资源
2.资源数为6,进程数为2,每个进程最多需要4个资源
3.资源数为8,进程数为3,每个进程最多需要3个资源
4.资源数为20,进程数为8,每个进程最多需要2个资源
解:1.不会,3*(2-1)+1=4.4=4,那么:若资源均被占用,则一定有一个进程获得两个资源,这个进程必然会在有限的时间内完成其工作,并释放其占用的资源,这样也能满足其他进程对资源的要求,继续他们的工作。
2.会,2*(4-1)+1=7>6
3.不会,3*(3-1)+1=7<8
4.不会,8*(2-1)+1=9<20

进程数*(每个所需资源数-1)->应该是会死锁的情况下的最大资源数
再+1,则不会死锁

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值