第三章 处理机的调度和死锁

105
第第第 第第第 第第第第第第第第第 第第第第第第第第第

Upload: gisela

Post on 10-Jan-2016

168 views

Category:

Documents


3 download

DESCRIPTION

第三章 处理机的调度和死锁. 第三章 处理机调度与死锁. 3.1 处理机调度的基本概念 3.2 调度算法 3.3 实时调度 3.4 多处理机系统中的调度 3.5 产生死锁的原因和必要条件 3.6 预防死锁的方法 3.7 死锁的检测与解除. 3.1 处理机调度的基本概念. 3.1.1 高级、中级和低级调度 1. 高级调度 (作业调度、长程调度) 将外存作业调入内存,创建 PCB 等,插入就绪队列。 一般用于批处理系统,分 / 实时系统一般直接入内存,无此环节。 调度特性 接纳作业数(内存驻留数) 太多 ―――> 周转时间 T 长 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第三章 处理机的调度和死锁

第三章第三章

处理机的调度和死锁处理机的调度和死锁

Page 2: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

第三章 处理机调度与死锁第三章 处理机调度与死锁

3.1 处理机调度的基本概念3.2 调度算法3.3 实时调度3.4 多处理机系统中的调度3.5 产生死锁的原因和必要条件3.6 预防死锁的方法3.7 死锁的检测与解除

Page 3: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.1 3.1 处理机调度的基本概念处理机调度的基本概念3.1.1 高级、中级和低级调度

1. 高级调度(作业调度、长程调度)将外存作业调入内存,创建 PCB 等,插入就绪队列。

一般用于批处理系统,分 /实时系统一般直接入内存,无此环节。

调度特性接纳作业数(内存驻留数)

太多―――>周转时间 T长太少―――>系统效率低

接纳策略:即采用何种调度算法: FCFS 、短作业优先等

Page 4: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.13.1 处理机调度的基本概念处理机调度的基本概念

2. 低级调度(进程调度,短程调度)决定就绪队列中哪个进程获得处理机 ,然后由分派程序( Dispatcher )分派处理机。

1) 非抢占方式:在采用非抢占调度方式时,可能引起进程调度的因素可归结为这样几个:① 正在执行的进程执行完毕, 或因发生某事件而不能再继续执行; ② 执行中的进程因提出 I/O 请求而暂停执行;③ 在进程通信或同步过程中执行了某种原语操作,如 P操作 (wait 操作 )、 Block 原语、 Wakeup 原语等。

简单,实时性差

Page 5: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.13.1 处理机调度的基本概念处理机调度的基本概念

2) 抢占方式

( 1)时间片原则

( 2)优先权原则

( 3)短作业优先原则。

Page 6: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.13.1 处理机调度的基本概念处理机调度的基本概念

3. 中级调度(中程)为提高系统吞吐量和内存利用率而引入的一内 ------ 外存

对换功能(换出时,进程为挂起或就绪驻外状态)

运行频率:低级调度 > 中级调度 > 高级调度。

Page 7: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.13.1 处理机调度的基本概念处理机调度的基本概念

处理机的三级调度

Page 8: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

处理器调度与进程状态转换

高级调度

中级调度

低级调度

运行态

就绪态

终止态

新建态

挂起就绪态

中级调度

挂起等待态

等待态

高级调度

高级调度

中级调度

Page 9: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.1.23.1.2 调度的队列模型调度的队列模型

1. 仅有进程调度的队列模型

就绪队列 CPU

阻塞队列

交互用户

时间片完

进程调度进程完成

等待事件事件出现

Page 10: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.1.23.1.2 调度的队列模型调度的队列模型

2. 具有高 /低级模型

就绪队列 CPU

阻塞队列

时间片完

进程调度进程完成

等待事件 1事件 1 出现

后备队列

阻塞队列 等待事件 2事件 2 出现

作业调度

Page 11: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.1.23.1.2 调度的队列模型调度的队列模型

中级调度

处理器

低级调度高级调度

完成

超时

挂起就绪队列

挂起等待队列

等待队列

就绪队列

等待事件

交互式用户

事件出现

后备作业队列

中级调度

2. 同时具有三级调度的调度队列模型

Page 12: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.1.33.1.3 选择调度方式和算法的若干准则选择调度方式和算法的若干准则

一、面向用户的准则1 .周转时间短(常用于批处理系统)

概念:作业从提交――> 完成的时间 .包括四部分时间:( 1)驻外等待调度时间( 2)驻内等待调度时间( 3)执行时间( 4)阻塞时间

Page 13: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

一、面向用户的准则平均周转时间

平均带权周转时间

可见带权 w 越小越好 ,Ts 为实际服务时间。

3.1.33.1.3 选择调度方式和算法的若干准则 选择调度方式和算法的若干准则

][1

1

n

iiTn

T

][1

1

n

i s

i

T

T

nW

作业的周转时间 T 与系统为它提供服务的时间

TS 之比

Page 14: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

一、面向用户的准则2 .响应时间快:(对交互性作业)

概念:键盘提交请求到首次响应时间包括三部分时间( 1 )输入传送时间( 2 )处理时间( 3 )响应传送时间

3 .截止时间的保证(特别于实时系统)4 .优先权准则:(即需要抢占调度)

3.1.33.1.3 选择调度方式和算法的若干准则 选择调度方式和算法的若干准则

Page 15: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

二、面向系统的准则1 .吞吐量高(特别于批处理):单位时间完成作业数

2 .处理机利用率好 (因 CPU 贵,特别于大中型多用户系统)

3 .各类资源的平衡利用

3.1.33.1.3 选择调度方式和算法的若干准则 选择调度方式和算法的若干准则

Page 16: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.23.2 调度算法调度算法

3.2.1 先来先服务和短作业(进程)优先调度算法

1.FCFS 特点:简单,有利于长作业 即 CPU 繁忙性作业

Page 17: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

例例

进程名 到达时间

服务时间

开始执行时间

完成时间

周转时间

带权周转时间

A 0 1

B 1 100

C 2 1

D 3 100

0 1 1 1

进程名 到达时间

服务时间

开始执行时间

完成时间

周转时间

带权周转时间

A 0 1

B 1 100

C 2 1

D 3 100

0

1 101 100 1

101 102 100 100

102 202 199 1.99

Page 18: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.23.2 调度算法调度算法

2. 短作业进程优先调度算法: SJ(P)F

对短作业或短进程优先调度特点:对长作业不利完全未考虑作业的紧迫程度估计时间不易确定

Page 19: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

图图 3.4FCFS3.4FCFS 和和 SJFSJF 比较比较

作业 情况调度算法

进程名 A B C D E 平均到达时间 0 1 2 3 4

服务时间 4 3 5 2 4

FCFS 完成时间

周转时间

带权周转时间

SJF 完成时间周转时间带权周转时间

4

41

7

62

12

10

2

14

115.5

18

143.5

92.8

44

1

631.5

98

2.67

139

2.25

18163.1

82.1

Page 20: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.2.23.2.2 高优先权优先调度算法高优先权优先调度算法

1. 优先权调度算法类型非抢占式优先权算法主要用于批处理系统中;也可用于某些对实时性要求不严的实时系统中。

抢占式优先权算法

常用于要求比较严格的实时系统中, 以及对性能要求较高的批处理和分时系统中

Page 21: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.2.23.2.2 高优先权优先调度算法高优先权优先调度算法

2. 优先权类型:1) 静态优先权:

在创建进程时确定 ,且在进程整个运行期不变。确定优先权依据–( 1)进程类型–( 2)进程对资源的需求;–( 3)根据用户需求。

特点:简单,但低优先权作业可能长期不被调度。

Page 22: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.2.23.2.2 高优先权优先调度算法高优先权优先调度算法 2. 优先权类型:

2) 动态优先权:

动态优先权是指,在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能。

Page 23: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.2.23.2.2 高优先权优先调度算法高优先权优先调度算法

3. 高响应比优先算法:优先权的变化规律可描述为:

要求服务时间要求服务时间等待时间

优先权

由于等待时间与服务时间之和,就是系统对该作业的响应时间,故该优先权又相当于响应比 RP 。据此,又可表示为

要求服务时间响应时间

要求服务时间要求服务时间等待时间

优先权

Page 24: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.2.23.2.2 高优先权优先调度算法高优先权优先调度算法

(1) 如果作业的等待时间相同,则要求服务的时间愈短,其优先权愈高,因而该算法有利于短作业。

(2) 当要求服务的时间相同时,作业的优先权决定于其等待时间,等待时间愈长,其优先权愈高,因而它实现的是先来先服务。

(3) 对于长作业,作业的优先级可以随等待时间的增加而提高,当其等待时间足够长时,其优先级便可升到很高, 从而也可获得处理机。

Page 25: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.2.33.2.3 基于时间片的轮转调度算法基于时间片的轮转调度算法

1. 时间片轮转所有就绪进程按先来先服务的原则,排成一个队列,每

次调度时,把 CPU 分配给队首进程,并令其执行一个时间片 .

时间片大小的确定一般从几 ms 到几百 ms.太大:退化为 FCFS ;太小:系统开销过大

系统对响应时间的要求 :T=nq

用户数 时间片

Page 26: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.2.33.2.3 基于时间片的轮转调度算法基于时间片的轮转调度算法

思考题 :

1. 假设就绪队列中有 10 个进程 , 系统将时间片设为 200

ms , CPU 进行进程切换要花费 10ms ,试问系统开销所占的比率约为多少?

答案: 10/ ( 200+10 ) =4.8%2. 如果分时操作系统的时间片一定,那么 ,则相应

时间越长。 A. 用户数越少 B. 用户数越多 C. 内存越少 D. 内存越多答案: B

Page 27: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.2.33.2.3 基于时间片的轮转调度算法基于时间片的轮转调度算法

2. 多级反馈队列调度

( 1 )应设置多个就绪队列,并为各个队列赋予不同的优先级和时间片。在优先权愈高的队列中,为每个进程所规定的执行时间片就愈小。

(2) 当一个新进程进入内存后,首先将它放入第一队列的末尾,按 FCFS 原则排队等待调度。

(3) 仅当第一队列空闲时,调度程序才调度第二队列中的进程运行; 仅当第 1~(i-1) 队列均空时,才会调度第 i 队列中的进程运行。

Page 28: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

就绪队列 1至 CPUS1

就绪队列 2S2 至 CPU

就绪队列 3S3 至 CPU

就绪队列 nSn 至 CPU

时间片: S1<S2<S3

图 3 - 5 多级队列反馈调度算法

Page 29: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.2.33.2.3 基于时间片的轮转调度算法基于时间片的轮转调度算法

3. 多级反馈队列调度算法的性能

特点:长、短作业兼顾,有较好的响应时间

( 1)短作业一次完成;

( 2)中型作业周转时间不长;

( 3)大型作业不会长期不处理。

Page 30: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

作业作业

1. 下表给出作业 1 、 2 、 3 到达时间和运行时间。采用短作业优先调度算法和先来先服务调度算法,试问平均周转时间各为多少?是否还有更好的调度策略存在?(时间单位:小时,以十进制进行计算。)

作业号 到达时间 运行时间

1 0.0 8.0

2 0.4 4.0

3 1.0 1.0

Page 31: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

作业作业

2. 假设有四个作业 , 它们提交、运行时间如下表所示。若采用响应比高者优先调度算法,试问平均周转时间和带权周转时间为多少? (时间单位:小时,以十进制进行计算。)

作业号 到达时间 运行时间1 8.0 2.0

2 8.3 0.5

3 8.5 0.1

4 9.0 0.4

Page 32: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

作业作业

3. 若在后备作业队列中等待运行的同时有三个作业 ,已知它们各自的运行时间为 a 、 b 、 c ,且满足 a< b< c ,试证明采用短作业优先调度算法能获得最小平均周转时间。

Page 33: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

作业作业

4. 在单 CPU 和两台输入 /输出设备 (I1,I2) 的多道程序设计环境下 , 同时投入三个作业 Job1 、 Job2 、 Job3 运行。这三个作业对 CPU 和输入 /输出设备的使用顺序和时间如下所示: Job1: I2(30ms);CPU(10ms);I1(30ms);CPU(10ms);I2(20ms|)Job2: I1(20ms);CPU(20ms); I2(40ms|)Job3: CPU(30ms);I1(20ms);CPU(10ms);I1(10ms|)假定 CPU 、 I1 、 I2都能并行工作, Job1 优先级最高,

Job2次之, Job3 优先级最低,优先级高的作业可以抢占优先级低的作业的 CPU但不抢占 I1 和 I2 。试求:

( 1 )三个作业投入到完成分别需要的时间。( 2 )从投入到完成的 CPU 利用率。( 3 ) I/O 设备利用率

Page 34: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.33.3 实时调度实时调度

随着移动通信和网络计算技术的发展,实时系统正变得越来越重要。操作系统是实时系统中最重要的部分之一。它负责在用户要求的时限内进行事件处理和控制。实时系统与其他系统的最大区别在于,其处理和控制的正确性不仅仅取决于计算的逻辑结果,而且取决于计算和处理结果产生的时间。因此,实时系统的调度与工业生产中的生产过程调度有许多相同之处,即把给定的任务,按所要求的时限调配到相应的设备上去处理完成。

Page 35: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

1 .提供必要的调度信息

( 1 )就绪时间

( 2 )开始 /完成截止时间

( 3 )处理时间

( 4 )资源要求

( 5 )优先级

3.3.13.3.1 实现实时调度的基本条件实现实时调度的基本条件

Page 36: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.3.13.3.1 实现实时调度的基本条件实现实时调度的基本条件

2 .系统处理能力强

11

m

i i

i

P

C

( N为处理机的数量)

假定系统中有 m 个周期性的硬实时任务 , 它们的处理时间为Ci,周期时间为 Pi,则在单处理机情况下,应满足限制条件:

采用多处理机系统时,应满足:

NP

Cm

i i

i 1

Page 37: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.采用抢占式调度机制

在含有硬实时任务的实时系统中,广泛采用抢占机制。但调度机制比较复杂。

对于一些小的实时系统,如果能预知任务的开始截止时间,则可采用非抢占调度机制,以简化调度程序和系统开销。但要满足:

实时任务小

执行完关键性程序和临界区后,能及时阻塞自己,以释放 CPU 。

3.3.13.3.1 实现实时调度的基本条件实现实时调度的基本条件

Page 38: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.3.13.3.1 实现实时调度的基本条件实现实时调度的基本条件

4. 具有快速切换机制

具有快速响应外部中断能力。

具有快速硬件中断机构

禁止中断的时间间隔尽量短

快速任务分派

使系统中的每个运行功能单位适当的小

Page 39: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.3.23.3.2 实时调度算法的分类实时调度算法的分类按任务性质分

硬实时调度算法和软实时调度算法按调度方式分

非抢占调度算法和抢占调度算法按调度时间分

静态调度算法和动态调度算法

多处理机系统中分集中式调度和分布式调度

在进程执行前确定调度次序

在进程执行过程中确定调度次序

Page 40: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.3.23.3.2 实时调度算法的分类实时调度算法的分类1. 非抢占式调度算法

(1) 非抢占式轮转调度算法 响应时间数秒至数十秒 不太严格的实时系统

(2) 非抢占式优先调度算法响应时间数百毫秒 较为严格的实时任务(赋高优先权)

2. 抢占式调度算法(响应时间数十毫秒 )(1) 基于时钟中断的抢占式优先权调度算法

调度延迟可降为几十毫秒至几毫秒(2)立即抢占 immediate preemption

只要不在临界区即抢占(中断引发)调度延迟可降为几毫秒至 100 微秒,甚至更低

Page 41: 第三章 处理机的调度和死锁

进程 1 进程 2 进程 n 实时进程

实时进程要求调度 调度实时进程运行

a 非抢占轮转调度

当前进程 实时进程

实时进程要求调度 当前进程运行完成

b 非抢占优先权调度

调度时间

处理机调度与死锁处理机调度与死锁

调度时间

Page 42: 第三章 处理机的调度和死锁

c 基于时钟中断抢占的优先权抢占调度

当前进程 实时进程

实时进程要求调度 抢占时刻(其它中断)

b 立即抢占优先权调度

当前进程 实时进程

实时进程要求调度 时钟中断到达时

调度时间

调度时间

处理机调度与死锁处理机调度与死锁

当前进程 实时进程

Page 43: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.3.33.3.3 常用的几种实时调度算法常用的几种实时调度算法

1.最早截止时间优先 EDF 算法根据任务的截止时间来确定任务的优先级

截止时间越早,优先级越高

可以是抢占式或非抢占式

Page 44: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

最早截止时间优先最早截止时间优先 EDFEDF 例例

1 3 4 2

1 3 4 2

1 2 3 4

t

开始截止时间

任务到达

任务执行

图 3 - 7 EDF 算法用于非抢占调度方式

Page 45: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.3.33.3.3 常用的几种实时调度算法常用的几种实时调度算法2.最低松弛度优先即 LLF 算法:

该算法根据任务紧急 ( 或松弛 ) 的程度来确定任务的优先级 .

若 A进程需在 200ms 时完成,其本身运行需要 100ms ,当前时刻是 10ms ,则 A的松弛度为: 200 - 100 - 10 = 90

主要用于可抢占的调度方式中

实现该算法时要求系统中有一个按松弛度排序的实时任务就绪队列 .

Page 46: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.3.33.3.3 常用的几种实时调度算法常用的几种实时调度算法

例:在一个实时系统中 ,有两个周期性实时任务A和 B,任务 A 要求每 20ms 执行一次 , 执行时间为 10ms; 任务 B要求 50ms 执行一次 , 执行时间为 25ms.

A1 A2 A3 A4 A5 A6 A7 A8

B1 B2 B3

0 20 40 60 80 100 120 140 160t

图 3 - 8 A/B任务每次必须完成的时间

Page 47: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

最低松弛度优先最低松弛度优先 LLFLLF 算法算法 (2)(2)

A1(10) A2(10) A3(10) A4(10)

t0 10 20 30 40 50 60 70 80

t1=0B1(20) B1(5) B2(15) B2(10)

t1 t2 t3 t4 t5 t6 t7 t8

Page 48: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

作业作业

1. 对下面的 5 个非周期性实时任务 , 按最早开始截止时间优先权调度算法应如何进行 CPU 调度 ?

进程 到达时间 执行时间 开始截止时间

A 10 20 110

B 20 20 20

C 40 20 50

D 50 20 90

E 60 20 70

提示 :按抢占式和非抢占式分别计算

Page 49: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

作业作业

2. 在一个实时系统中 ,有三个周期性实时任务 ,任务 A 要求每 20ms 执行一次 , 执行时间为 10ms; 任务 B要求 50ms 执行一次 ,执行时间为 10ms; 任务 C要求 50ms 执行一次 , 执行时间为 15ms,应如何按最低松弛度优先算法对它们进行 CPU调度 ?

Page 50: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.43.4 多处理机系统中的调度多处理机系统中的调度

提高计算机系统性能的主要途径有两条:一是提高构成计算机的元器件的运行速度,特别是处理

器芯片的速度二是改进计算机系统的体系结构,特别是在系统中引入

多个处理器或多台计算机,以实现对信息的高度并行处理,达到提高系统吞吐量和可靠性的目的。

20世纪 70年代出现了多处理器系统即MPS (MultiP

rocessor System).

Page 51: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.4.13.4.1 多处理器系统的类型多处理器系统的类型1.紧密耦合 MPS 和松弛耦合 MPS

紧密耦合 (Tightly Coupted)MPS高速总线和交叉开关共享 RAM和 I/O主存划分为若干个能独立访问的存储器模块

系统中的资源和进程由操作系统实施统一管理

Page 52: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.4.13.4.1 多处理器系统的类型多处理器系统的类型1.紧密耦合 MPS 和松弛耦合 MPS

松弛耦合 (Loosely Coupled)MPS通道和通信线路独立 RAM和 I/O配置操作系统管理本地资源和在本地运行的进程,必要时可交换信息

Page 53: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.4.13.4.1 多处理器系统的类型多处理器系统的类型2. 对称多处理器系统和非对称多处理器系统

根据系统中处理器结构是否相同,分为

(1) 对称多处理器系统 SMPS(Symmetric MultiProcessor System) 。 在系统中所包含的各处理器单元,在功能和结构上都是相同的, 当前的绝大多数 MPS都属于 SMP 系统。

(2) 非对称多处理器系统。在系统中有多种类型的处理单元, 它们的功能和结构各不相同,其中只有一个主处理器,有多个从处理器。

Page 54: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.4.23.4.2 进程分配方式进程分配方式

1.SMP 中进程分配方式静态分配

指一个进程从开始执行直至其完成,都被固定地分配到一个处理器上执行。

为每一个处理器设置专用的就绪队列优点:进程调度开销小缺点:处理器的忙闲不均

Page 55: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.4.23.4.2 进程分配方式进程分配方式

1.SMP 中进程分配方式动态分配

将进程分配到任何一个处理器上在系统中设置一个公共的就绪队列优点:消除各处理器忙闲不均现象缺点:对松散耦合系统,增加调度开销

Page 56: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.4.23.4.2 进程分配方式进程分配方式

2. 非 SMP 中进程分配方式在主机上保持一个就绪队列进程调度在主处理器上执行优点:系统处理比较简单缺点:有潜在的不可靠性

Page 57: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.4.33.4.3 进程(线程)调度方式进程(线程)调度方式 1.自调度 (Self-Scheduling)

在系统中设置一个公共的进程或线程就绪队列各个处理机自行在就绪队列中取任务。优点:( 1)系统就绪队列的组织方式以及具体的进程或线

程调度算法都可沿用单处理机中的方式,容易实现( 2)不会发生处理器忙闲不均现象,有利于提高处理器利用率缺点:

瓶颈问题(公用就绪队列)低效性(需拷贝现场)线程切换频繁(当线程合作时 ,各线程并行的条件不容易满足)

Page 58: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.4.33.4.3 进程(线程)调度方式进程(线程)调度方式2. 成组调度 (Gang Scheduling) 方式 在成组调度时,如何为应用程序分配处理器时间,

1) 面向所有应用程序平均分配处理器时间

2) 面向所有线程平均分配处理器时间

Page 59: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.4.33.4.3 进程(线程)调度方式进程(线程)调度方式2. 成组调度 (Gang Scheduling) 方式

优点:

( 1)对相互合作的进(线)程组调度,可以减小切换,减小系统开销。

( 2)每次分配一组 CPU,减少了调度频率。

Page 60: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.4.33.4.3 进程(线程)调度方式进程(线程)调度方式

3. 专用处理器分配 (Dedicated Processor Assigement) 方式

引入:多处理机系统,每个处理已不再属宝贵资源。特点:每个进(线)程专用处理机,使其切换小,提高效

率。主要用于大型计算,实时系统

Page 61: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.53.5 产生死锁的原因和必要条件产生死锁的原因和必要条件

例 :

两个小孩在一起玩耍,一个在玩皮球,另一个玩自动步枪,如果这两个小孩都要对方手中的玩具,而又不肯先放掉自己拿着的玩具,这时就发生了僵持局面。

Page 62: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.53.5 产生死锁的原因和必要条件产生死锁的原因和必要条件

例 2: 设系统有一台打印机和一台扫描仪,进程 P1 、 P2 并发执行 .

进程P 进程Q

已分配读卡机 已分配打印机

请求打印机 请求读卡机

释放读卡机 释放读卡机

释放打印机 释放打印机

Page 63: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.53.5 产生死锁的原因和必要条件产生死锁的原因和必要条件

死锁定义 :

一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到该资源,这种现象称为进程死锁,这一组进程就称为死锁进程

Page 64: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.53.5 产生死锁的原因和必要条件产生死锁的原因和必要条件

参与死锁的进程最少是两个 (两个以上进程才会出现死锁)参与死锁的进程至少有两个已经占有资源参与死锁的所有进程都在等待资源参与死锁的进程是当前系统中所有进程的子集

注:如果死锁发生,会浪费大量系统资源,甚至导致系统崩溃

Page 65: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.5.13.5.1 产生死锁的原因产生死锁的原因 (1) 竞争资源。

(2) 进程间推进顺序非法。

Page 66: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.5.13.5.1 产生死锁的原因产生死锁的原因1.竞争资源引起死锁

1) 可剥夺和非剥夺性资源

可剥夺性资源:指某进程在获得这类资源后,该资源可以再被其他进程或系统剥夺。如 CPU 、内存

不可剥夺性资源:当系统把这类资源分配给某进程后,再不能强行收回,只能在进程用完后自行释放,如打印机、磁带机等。

Page 67: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.5.13.5.1 产生死锁的原因产生死锁的原因

1.竞争资源引起死锁2 )竞争非剥夺性资源――可造成死锁

p1

p2

R1 R2

Page 68: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.5.13.5.1 产生死锁的原因产生死锁的原因1.竞争资源引起死锁

3 )竞争临时性资源临时性资源是指由一个进程产生,被另一个进程使用一段时间后便无用的资源。

S2

P 1

S 3

P 3

S 1

P 2

Page 69: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

2.2. 进程推进顺序不当引起死锁进程推进顺序不当引起死锁2

1

3

DP2Req(R2)

P2Req(R1)

P1Req(R1)P1Req(R2)

P2Rel(R2)

P2Rel(R1)

P1Rel(R1) P1Rel(R2)

4

Page 70: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.5.2 3.5.2 产生死锁的必要条件产生死锁的必要条件

( 1 )互斥条件 ( 2 )请求和保持条件 ( 3 )不剥夺条件 ( 4)环路等待条件

Page 71: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

思考题思考题

1. 有相同类型的 5 个资源被 4 个进程所共享 ,且每个进程最多需要 2 个这样的资源就可以运行完毕 .问该系统是否会由于对这种资源的竞争而产生死锁 .

一台计算机有 8台磁带机。它们由 N 个进程竞争使用 , 每个进程可能需要 3台磁带机 .请问 N 为多少时 , 系统没有死锁危险 , 并说明理由 .

Page 72: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

思考题思考题

3. 考虑下列资源分配策略 : 对资源的申请和释放可以在任何时候进行 . 如果一个进程提出资源请求时得不到满足 , 若此时无由于等待资源而被阻塞的进程 , 则自己就被阻塞 ; 若此时已有等待资源而被阻塞的进程 , 则检查所有由于等待资源而被阻塞的进程 . 如果它们有申请进程所需要的资源 , 则将这些资源取出分配给申请进程 .

例如 , 考虑一个有 3类资源的系统 , 系统所有可用资源为(4,2,2), 进程 A申请 (2,2,1), 可满足 ; 进程 B申请 (1,0,1); 若 A再申请 (0,0,1), 则被阻塞 . 此时若 C请求 (2,0,0), 它可以分配到剩余资源 (1,0,0), 并从 A 已分到的资源中获得一个资源 .

①这种分配策略会导致死锁吗 ?

②这种分配方式回导致某些进程的无限等待吗 ?

Page 73: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.5.33.5.3 处理死锁的基本方法处理死锁的基本方法

1 .预防死锁2 .避免死锁3 .检测死锁4 .解除死锁

Page 74: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.63.6 预防死锁的方法预防死锁的方法

3.6.1 死锁预防 1.摒弃请求和保持条件全分配,全释放( AND )缺点:( 1)延迟进程运行

( 2)资源严重浪费2.摒弃“不剥夺”条件增加系统开销,且进程前段工作可能失效。

Page 75: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.6 3.6 死锁预防和避免死锁预防和避免

3.6.1 死锁预防 3.摒弃“环路”条件

有序资源分配法:为资源编号,申请时需按编号进行。缺点:( 1)新增资源不便,(原序号已排定)( 2)用户不自由( 3)资源与进程使用顺序不同造成浪费

Page 76: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.6.2 3.6.2 系统安全状态系统安全状态

1. 安全状态

所谓安全状态,是指系统能按某种进程顺序 (P1, P2, …, Pn)(称〈 P1, P2, …, Pn〉序列为安全序列 ) ,来为每个进程 Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利地完成。如果系统无法找到这样一个安全序列,则称系统处于不安全状态。

Page 77: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.6.2 3.6.2 系统安全状态系统安全状态 2.安全状态例

进程 最大需求 已分配 可用

P1 10 5 3

P2 4 2

P3 9 2

安全序列: p2p1p3

Page 78: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.6.2 3.6.2 系统安全状态系统安全状态 3.安全——不安全的转换

上例中,若 P3再申请一台

进程 最大需求 已分配 可用

P1 10 5 2

P2 4 2

P3 9 3

Page 79: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.6.2 3.6.2 系统安全状态系统安全状态① 死锁状态是不安全状态。② 如果系统处于不安全状态,并不意味着它就在

死锁状态,而是表示存在导致死锁的危机。③ 如果一个进程申请的资源当前是可用的,但为了避免死锁,该进程也可能必须等待。此时资源利用率会下降。

Page 80: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.6.33.6.3 利用银行家算法避免死锁利用银行家算法避免死锁银行家算法

银行家拥有一笔周转资金客户要求分期贷款,如果客户能够得到各期贷款,

就一定能够归还贷款,否则就一定不能归还贷款银行家应谨慎的贷款,防止出现坏帐

用银行家算法避免死锁操作系统(银行家)操作系统管理的资源 ( 周转资金 )进程(要求贷款的客户)

Page 81: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.6.33.6.3 利用银行家算法避免死锁利用银行家算法避免死锁银行家算法的设计思想是:当用户申请一组资源时,

系统必须做出判断;如果把这些资源分出去,系统是否还处于安全状态。若是,就可以分出这些资源;否则,该申请暂不予满足。

举例:设银行家有 10 万贷款, P, Q, R分别需要 8,3,9 万元搞项目,如果 P已申请到了 4万, Q 要申请 2万, R 要申请 4万 .

Page 82: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.6.33.6.3 利用银行家算法避免死锁利用银行家算法避免死锁 1 .银行家算法中的数据结构(1) 可利用资源向量 Available 。这是一个含有 m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态地改变。如果 Available[ j] =K ,则表示系统中现有 R

j 类资源 K个。

Page 83: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

(2) 最大需求矩阵Max 。这是一个 n×m的矩阵,它定义了系统中 n个进程中的每一个进程对 m类资源的最大需求。如果Max[ i,j] =K ,则表示进程 i 需要 Rj 类资源的最大数目为 K 。

(3) 分配矩阵 Allocation 。这也是一个 n×m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果 Allocation[ i,j] =K ,则表示进程 i当前已分得 Rj 类资源的数目为 K。

(4) 需求矩阵 Need 。这也是一个 n×m的矩阵,用以表示每一个进程尚需的各类资源数。如果 Need[ i,j] =K,则表示进程 i还需要 Rj 类资源 K个,方能完成其任务。

Need[ i,j] =Max[ i,j] -Allocation[ i,j]

Page 84: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.6.33.6.3 利用银行家算法避免死锁利用银行家算法避免死锁 2 .银行家算法

Requesti[j]≤Need[i,j] error

Requesti[j]≤Available[j] block

Page 85: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.6.33.6.3 利用银行家算法避免死锁利用银行家算法避免死锁 Available[j]=Available[j]-Requesti[j]

Allocation[i,j]= Allocation[i,j ]+ Requesti[j] Need[i,j]= Need[i,j] - Requesti[j]

Finish[i]=.F.Need[i,j]<=work[j]

work[j] =work[i]+ Allocation[i,j]Finish[i]=.T.

Finish[i]=.F.Work=Available

Page 86: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.6.33.6.3 利用银行家算法避免死锁利用银行家算法避免死锁

Max

A B C

Allocation

A B C

Need

A B C

Available

A B C

p0 7 5 3 0 1 0 7 4 3 3 3 2

p1 3 2 2 2 0 0 1 2 2

p2 9 0 2 3 0 2 6 0 0

p3 2 2 2 2 1 1 0 1 1

p4 4 3 3 0 0 2 4 3 1

T0 时刻的资源分配表

4.银行家算法之例

Page 87: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.6.33.6.3 利用银行家算法避免死锁利用银行家算法避免死锁

Work

A B C

Need

A B C

Allocation

A B C

Work+allocation

A B C Finish

p0 7 4 3 0 1 0

p1 1 2 2 2 0 0

p2 6 0 0 3 0 2

p3 0 1 1 2 1 1

p4 4 3 1 0 0 2

3 3 2 5 3 2 true

5 3 2 7 4 3 true

7 4 3 7 4 5 true

7 4 5 10 4 7 true

10 4 7 10 5 7 true

( 1 ) T0 时刻的安全性检查

T0 时刻的安全序列: P1 P4 P2 P0

Available (3 3 2)

P3

Page 88: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.6.33.6.3 利用银行家算法避免死锁利用银行家算法避免死锁

P1申请资源 (1,0,2) 时安全性检查

( 2 ) P1申请资源 (1,0,2) Max

A B C

Allocation

A B C

Need

A B C

Available

A B C

p0 7 5 3 0 1 0 7 4 3

p1 3 2 2

p2 9 0 2 3 0 2 6 0 0

p3 2 2 2 2 1 1 0 1 1

p4 4 3 3 0 0 2 4 3 1

3 3 22 3 0

Request1(1,0,2)≤Need1(1,2,2)

Request1(1,0,2)≤Available1(3,3,2)

1 2 22 0 03 0 2 0 2 0

Request1(1,0,2)≤Need1(1,2,2)

Request1(1,0,2)≤Available1(3,3,2)

Page 89: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.6.33.6.3 利用银行家算法避免死锁利用银行家算法避免死锁 ( 2 ) P1申请资源 (1,0,2) 时安全性检查

Work

A B C

Need

A B C

Allocation

A B C

Work+allocation

A B C Finish

p0 7 4 3 0 1 0

p1 0 2 0 3 0 2

p2 6 0 0 3 0 2

p3 0 1 1 2 1 1

p4 4 3 1 0 0 2

2 3 0 5 3 2 true

T1 时刻的安全序列: P1

5 3 2 7 4 3 true

P3

7 4 3 7 4 5 true

P4

7 4 5 10 4 7 true

P2

10 4 7 10 5 7 true

P0

Page 90: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.6.33.6.3 利用银行家算法避免死锁利用银行家算法避免死锁 ( 3 ) P4申请资源 (3,3,0) 时安全性检查

Max

A B C

Allocation

A B C

Need

A B C

Available

A B C

p0 7 5 3 0 1 0 7 4 3 2 3 0

p1 3 2 2 3 0 2 0 2 0

p2 9 0 2 3 0 2 6 0 0

p3 2 2 2 2 1 1 0 1 1

p4 4 3 3 0 0 2 4 3 1

Request4(3,3,0)≤Need4(4,3,1)

Request4(3,3,0)> Available1(2,3,0)让 P4 等

Page 91: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.6.33.6.3 利用银行家算法避免死锁利用银行家算法避免死锁

Allocation

A B C

Need

A B C

Available

A B C

p0

p1 3 0 2 0 2 0

p2 3 0 2 6 0 0

p3 2 1 1 0 1 1

p4 0 0 2 4 3 1

为 P0 分配( 0 , 2 , 0 )后的情况(不安全)

( 4 ) P0申请资源 (0,2,0)

0 3 0 2 3 00 1 0 7 4 37 2 3 2 1 0

Page 92: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.73.7 死锁的检测和解除死锁的检测和解除解决死锁问题的一条途径是死锁检测和解除,这种方法对资源的分配不加任何限制,也不采取死锁避免措施,但系统定时地运行一个“死锁检测”程序,判断系统内是否已出现死锁,如果检测到系统已发性了死锁,再采取措施解除它。

Page 93: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.7.13.7.1 死锁的检测死锁的检测 1. 资源分配图

p1

p2

Page 94: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.7.13.7.1 死锁的检测死锁的检测

Page 95: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.7.13.7.1 死锁的检测死锁的检测2. 死锁定理如果资源分配图中没有环路,则系统中没有死锁,如果图中存在环路则系统中可能存在死锁

如果每个资源类中只包含一个资源实例,则环路是死锁存在的充分必要条件

Page 96: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.7.13.7.1 死锁的检测死锁的检测

1 )在资源分配图中,找出一个既不阻塞又非孤立的进程 Pi, 消去 Pi 所求的请求边和分配边,将其变为孤立结点。

2 )重复以上步骤,若所有进程成为孤立结点,称该图是可完全简化的,否则称该图是不可完全简化的。

S 为死锁状态的充分条件是:当且仅当资源分配图是不可完全简化的。该充分条件称为死锁定理。

Page 97: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.7.13.7.1 死锁的检测死锁的检测

p1

p2

该图可完全简化。

Page 98: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.7.13.7.1 死锁的检测死锁的检测有环有死锁

P1 P2 P3

R1R2

R3

Page 99: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.7.13.7.1 死锁的检测死锁的检测有环无死锁

R1 R2

P1

P1P1 P3P2 P4

Page 100: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.检测死锁的算法:

Work= AvailableL={Li| Allocationi=0 ∩ Requesti=0} (孤立进程点 )for all Li L do∈{

for all Requesti ≤work do{

Work=work+Allocationi

L=Li∪L}

}Deadlock= ~(L={p1 … pn})

3.7.13.7.1 死锁的检测死锁的检测

Page 101: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3.7.2 3.7.2 死锁的解除死锁的解除

检测到死锁后,回退到上一状态(要进行资源剥夺,且需保存以前状态的分配信息),重新分配,若不行,继续回退……,

Page 102: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

操作系统处理死锁的三种方法比较

策略

死锁预防 死锁避免 死锁检测和恢复

很保守;对资源不做调配使用 介于预防和检测方法之间,安全状态下才分配

非常开放;申请资源就分配,但定期检测死锁

采用的不同方式

一次性分配所有资源

抢占式分配资源

资源编号,按序分配

至少应找出一个安全序列

定期调用检测算法,查看是否出现死锁

主要优点

·适用于执行单一突发活动的进程·不需要抢占

·适用于资源状态便于保存和恢复的情况

·由于系统设计时已解决问题,不需要运行时计算

不需要抢占 · 从来不延误进程的开始执行·便于联机处理

主要缺点

·效率低·延误进程的开始执行

· 抢占动作比实际需要的次数更多 ·易出现环路重启

·不允许增加对资源的申请

·必须知道以后对资源的申请情况·进程可能被阻塞很长时期

丧失固有的抢占性

Page 103: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

作业作业

1. 某系统有 R1 、 R2 和 R3共 3种资源,在 T0 时刻 P1 、 P2 、 P3 和 P4 这 4 个进程对资源的占用和需求情况见下表,此时系统的可用资源向量为( 2 , 1 , 2 ),问题:

①将系统中各种资源总数和此刻各进程对各资源的需求数目用向量或矩阵表示出来;

②如果此时 P1 和 P2 均发出资源请求向量 Request(1,0,1), 为了保证系统的安全性,应该如何分配资源给这两个进程,说明你所采用策略的原因。

③如果②中两个请求立即得到满足后,系统此刻是否处于死锁状态?

最大资源需求量

已分配资源数量

R1 R2 R3 R1 R2 R3

P1 3 2 2 1 0 0

P2 6 1 3 4 1 1

P3 3 1 4 2 1 1

P4 4 2 2 0 0 2

Page 104: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

2. 假定某计算机系统有 R1(2) 、 R2(1)两类可再使用资源 , 它们被进程 P1 、 P2 所共享 ,两个进程均以下列顺序使用资源 :

申请 R1申请 R2申请 R1释放 R1释放 R2释放 R1

试求出系统可能到达的死锁点,并画出死锁点的资源分配图。

Page 105: 第三章 处理机的调度和死锁

处理机调度与死锁处理机调度与死锁

3. 化简下图中的资源分配图(进程 -资源图),并利用死锁定理给出相应的结论。

P1

P2

(a)

P1

P2 P3

R1 R2

R1 R2

R3

R4 (b)