第三章
This presentation is the property of its rightful owner.
Sponsored Links
1 / 105

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


  • 98 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

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

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


4890535

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


4890535

第三章 处理机调度与死锁

  • 3.1 处理机调度的基本概念

  • 3.2 调度算法

  • 3.3 实时调度

  • 3.4 多处理机系统中的调度

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

  • 3.6 预防死锁的方法

  • 3.7 死锁的检测与解除


4890535

3.1 处理机调度的基本概念

  • 3.1.1高级、中级和低级调度

    • 1.高级调度(作业调度、长程调度)

      • 将外存作业调入内存,创建PCB等,插入就绪队列。

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

    • 调度特性

      • 接纳作业数(内存驻留数)

        太多―――>周转时间T长

        太少―――>系统效率低

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


4890535

3.1处理机调度的基本概念

  • 2.低级调度(进程调度,短程调度)

    决定就绪队列中哪个进程获得处理机,然后由分派程序(Dispatcher)分派处理机。

    • 1)非抢占方式:

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

      • 简单,实时性差


4890535

3.1处理机调度的基本概念

  • 2)抢占方式

    (1)时间片原则

    (2)优先权原则

    (3)短作业优先原则。


4890535

3.1处理机调度的基本概念

  • 3.中级调度(中程)

    • 为提高系统吞吐量和内存利用率而引入的一内------外存对换功能(换出时,进程为挂起或就绪驻外状态)

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


4890535

3.1处理机调度的基本概念

处理机的三级调度


4890535

中级调度

高级调度

高级调度

中级调度

中级调度

低级调度

高级调度

新建态

终止态

运行态

挂起就绪态

挂起等待态

就绪态

等待态

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


3 1 2

3.1.2调度的队列模型

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

时间片完

进程完成

交互用户

CPU

就绪队列

进程调度

事件出现

等待事件

阻塞队列


3 1 21

3.1.2调度的队列模型

  • 2.具有高/低级模型

作业调度

时间片完

进程完成

CPU

就绪队列

后备队列

进程调度

等待事件1

事件1出现

阻塞队列

等待事件2

事件2出现

阻塞队列


3 1 22

等待事件

超时

3.1.2调度的队列模型

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

高级调度

后备作业队列

就绪队列

低级调度

完成

处理器

中级调度

挂起就绪队列

交互式用户

中级调度

挂起等待队列

事件

出现

等待队列


3 1 3

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

  • 一、面向用户的准则

    • 1.周转时间短(常用于批处理系统)

      • 概念:作业从提交――> 完成的时间.

      • 包括四部分时间:

        (1)驻外等待调度时间

        (2)驻内等待调度时间

        (3)执行时间

        (4)阻塞时间


3 1 31

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

  • 一、面向用户的准则

    • 平均周转时间

    • 平均带权周转时间

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

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


3 1 32

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

  • 一、面向用户的准则

    • 2.响应时间快:(对交互性作业)

      • 概念:键盘提交请求到首次响应时间

      • 包括三部分时间

        (1)输入传送时间

        (2)处理时间

        (3)响应传送时间

    • 3.截止时间的保证(特别于实时系统)

    • 4.优先权准则:(即需要抢占调度)


3 1 33

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

  • 二、面向系统的准则

    • 1.吞吐量高(特别于批处理):单位时间完成作业数

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

    • 3.各类资源的平衡利用


4890535

3.2调度算法

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

    • 1.FCFS

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


4890535

0

0

1

1

1

1

101

100

1

101

100

100

102

102

202

199

1.99


4890535

3.2调度算法

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

    • 对短作业或短进程优先调度

    • 特点:

      对长作业不利

      完全未考虑作业的紧迫程度

      估计时间不易确定


3 4fcfs sjf

图3.4FCFS和SJF比较

4

7

12

14

18

4

6

10

11

14

9

1

2

2.8

2

5.5

3.5

4

9

18

6

13

4

8

16

3

9

8

3.1

1.5

2.25

2.1

1

2.67


3 2 2

3.2.2高优先权优先调度算法

  • 1.优先权调度算法类型

    • 非抢占式优先权算法

      主要用于批处理系统中;也可用于某些对实时性要求不严的实时系统中。

    • 抢占式优先权算法

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


3 2 21

3.2.2高优先权优先调度算法

  • 2.优先权类型:

    • 1)静态优先权:

      • 在创建进程时确定,且在进程整个运行期不变。

      • 确定优先权依据

        • (1)进程类型

        • (2)进程对资源的需求;

        • (3)根据用户需求。

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


3 2 22

3.2.2高优先权优先调度算法

  • 2.优先权类型:

    • 2)动态优先权:

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


3 2 23

3.2.2高优先权优先调度算法

  • 3.高响应比优先算法:

    • 优先权的变化规律可描述为:

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


3 2 24

3.2.2高优先权优先调度算法

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

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

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


3 2 3

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

  • 1.时间片轮转

    • 所有就绪进程按先来先服务的原则,排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片.

    • 时间片大小的确定

      • 一般从几ms到几百ms.

      • 太大:退化为FCFS;

      • 太小:系统开销过大

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

用户数

时间片


3 2 31

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

  • 思考题:

    • 1.假设就绪队列中有10个进程,系统将时间片设为200ms,CPU进行进程切换要花费10ms,试问系统开销所占的比率约为多少?

      答案:10/(200+10)=4.8%

    • 2.如果分时操作系统的时间片一定,那么,则相应时间越长。

      A.用户数越少 B.用户数越多

      C.内存越少 D.内存越多

      答案:B


3 2 32

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

  • 2.多级反馈队列调度

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

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

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


4890535

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

S1

至CPU

就绪队列1

S2

至CPU

就绪队列2

S3

至CPU

就绪队列3

Sn

至CPU

就绪队列n

时间片:S1<S2<S3


3 2 33

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

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

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

      • (1)短作业一次完成;

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

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


4890535

作业

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


4890535

作业

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


4890535

作业

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


4890535

作业

  • 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设备利用率


4890535

3.3实时调度

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


3 3 1

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

  • 1.提供必要的调度信息

    • (1)就绪时间

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

    • (3)处理时间

    • (4)资源要求

    • (5)优先级


3 3 11

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

  • 2.系统处理能力强

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

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

(N为处理机的数量)


3 3 12

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

  • 3.采用抢占式调度机制

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

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

      • 实时任务小

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


3 3 13

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

  • 4.具有快速切换机制

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

      • 具有快速硬件中断机构

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

    • 快速任务分派

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


3 3 2

3.3.2实时调度算法的分类

  • 按任务性质分

    • 硬实时调度算法和软实时调度算法

  • 按调度方式分

    • 非抢占调度算法和抢占调度算法

  • 按调度时间分

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

  • 多处理机系统中分

    • 集中式调度和分布式调度

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

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


3 3 21

3.3.2实时调度算法的分类

  • 1.非抢占式调度算法

    • (1)非抢占式轮转调度算法

      • 响应时间数秒至数十秒 不太严格的实时系统

    • (2)非抢占式优先调度算法

      • 响应时间数百毫秒 较为严格的实时任务(赋高优先权)

  • 2.抢占式调度算法(响应时间数十毫秒 )

    • (1)基于时钟中断的抢占式优先权调度算法

      • 调度延迟可降为几十毫秒至几毫秒

    • (2)立即抢占immediate preemption

      • 只要不在临界区即抢占(中断引发)

      • 调度延迟可降为几毫秒至100微秒,甚至更低


4890535

调度实时进程运行

实时进程要求调度

进程1

进程2

进程n

实时进程

调度时间

a 非抢占轮转调度

实时进程要求调度

当前进程运行完成

当前进程

实时进程

调度时间

b 非抢占优先权调度

处理机调度与死锁


4890535

实时进程要求调度

时钟中断到达时

实时进程

当前进程

实时进程

当前进程

调度时间

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

实时进程要求调度

抢占时刻(其它中断)

当前进程

实时进程

调度时间

b 立即抢占优先权调度

处理机调度与死锁


3 3 3

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

  • 1.最早截止时间优先EDF算法

    • 根据任务的截止时间来确定任务的优先级

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

    • 可以是抢占式或非抢占式


4890535

最早截止时间优先EDF例

1

3

4

2

开始截止时间

1

3

4

2

任务执行

t

任务到达

1

2

3

4

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


3 3 31

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

  • 2.最低松弛度优先即LLF算法:

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

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

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

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


3 3 32

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

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

A5

A1

A2

A3

A4

A6

A7

A8

t

0

20

40

60

80

100

120

140

160

B1

B2

B3

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


Llf 2

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

A1(10)

A2(10)

A3(10)

A4(10)

t1

t2

t3

t4

t5

t6

t7

t8

t

0

10

20

30

40

50

60

70

80

t1=0

B1(20)

B1(5)

B2(10)

B2(15)


4890535

作业

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

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


4890535

作业

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


4890535

3.4多处理机系统中的调度

  • 提高计算机系统性能的主要途径有两条:

    • 一是提高构成计算机的元器件的运行速度,特别是处理器芯片的速度

    • 二是改进计算机系统的体系结构,特别是在系统中引入多个处理器或多台计算机,以实现对信息的高度并行处理,达到提高系统吞吐量和可靠性的目的。

  • 20世纪70年代出现了多处理器系统即MPS (MultiProcessor System).


3 4 1

3.4.1多处理器系统的类型

  • 1.紧密耦合MPS和松弛耦合MPS

    • 紧密耦合(Tightly Coupted)MPS

      • 高速总线和交叉开关

      • 共享RAM和I/O

      • 主存划分为若干个能独立访问的存储器模块

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


3 4 11

3.4.1多处理器系统的类型

  • 1.紧密耦合MPS和松弛耦合MPS

    • 松弛耦合(Loosely Coupled)MPS

      • 通道和通信线路

      • 独立RAM和I/O

      • 配置操作系统管理本地资源和在本地运行的进程,必要时可交换信息


3 4 12

3.4.1多处理器系统的类型

  • 2.对称多处理器系统和非对称多处理器系统

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

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

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


3 4 2

3.4.2进程分配方式

  • 1.SMP中进程分配方式

    • 静态分配

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

      • 为每一个处理器设置专用的就绪队列

      • 优点:进程调度开销小

      • 缺点:处理器的忙闲不均


3 4 21

3.4.2进程分配方式

  • 1.SMP中进程分配方式

    • 动态分配

      • 将进程分配到任何一个处理器上

      • 在系统中设置一个公共的就绪队列

      • 优点:消除各处理器忙闲不均现象

      • 缺点:对松散耦合系统,增加调度开销


3 4 22

3.4.2进程分配方式

  • 2.非SMP中进程分配方式

    • 在主机上保持一个就绪队列

    • 进程调度在主处理器上执行

    • 优点:系统处理比较简单

    • 缺点:有潜在的不可靠性


3 4 3

3.4.3进程(线程)调度方式

  • 1.自调度(Self-Scheduling)

    • 在系统中设置一个公共的进程或线程就绪队列

    • 各个处理机自行在就绪队列中取任务。

    • 优点:(1)系统就绪队列的组织方式以及具体的进程或线程调度算法都可沿用单处理机中的方式,容易实现

      (2)不会发生处理器忙闲不均现象,有利于提高处理器利用率

    • 缺点:

      • 瓶颈问题(公用就绪队列)

      • 低效性(需拷贝现场)

      • 线程切换频繁(当线程合作时,各线程并行的条件不容易满足)


3 4 31

3.4.3进程(线程)调度方式

  • 2.成组调度(Gang Scheduling)方式

    在成组调度时,如何为应用程序分配处理器时间,

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

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


3 4 32

3.4.3进程(线程)调度方式

  • 2.成组调度(Gang Scheduling)方式

    • 优点:

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

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


3 4 33

3.4.3进程(线程)调度方式

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

  • 引入:多处理机系统,每个处理已不再属宝贵资源。

  • 特点:每个进(线)程专用处理机,使其切换小,提高效率。

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


4890535

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

  • 例:

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


4890535

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

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

    进程P 进程Q

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

    请求打印机 请求读卡机

    释放读卡机 释放读卡机

    释放打印机 释放打印机


4890535

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

  • 死锁定义:

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


4890535

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

  • 参与死锁的进程最少是两个

    (两个以上进程才会出现死锁)

  • 参与死锁的进程至少有两个已经占有资源

  • 参与死锁的所有进程都在等待资源

  • 参与死锁的进程是当前系统中所有进程的子集

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


3 5 1

3.5.1产生死锁的原因

  • (1) 竞争资源。

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


3 5 11

3.5.1产生死锁的原因

  • 1.竞争资源引起死锁

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

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

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


3 5 12

3.5.1产生死锁的原因

  • 1.竞争资源引起死锁

    • 2)竞争非剥夺性资源——可造成死锁

p1

R2

R1

p2


3 5 13

3.5.1产生死锁的原因

  • 1.竞争资源引起死锁

    • 3)竞争临时性资源

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


4890535

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

2

P2Rel(R1)

P2Rel(R2)

P2Req(R1)

1

D

P2Req(R2)

3

4

P1Req(R1)

P1Req(R2)

P1Rel(R1)

P1Rel(R2)


3 5 2

3.5.2 产生死锁的必要条件

  • (1)互斥条件

  • (2)请求和保持条件

  • (3)不剥夺条件

  • (4)环路等待条件


4890535

思考题

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

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


4890535

思考题

  • 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已分到的资源中获得一个资源.

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

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


3 5 3

3.5.3处理死锁的基本方法

  • 1.预防死锁

  • 2.避免死锁

  • 3.检测死锁

  • 4.解除死锁


4890535

3.6预防死锁的方法

  • 3.6.1 死锁预防

    • 1.摒弃请求和保持条件

      全分配,全释放(AND)

      缺点:(1)延迟进程运行

      (2)资源严重浪费

    • 2.摒弃“不剥夺”条件

      增加系统开销,且进程前段工作可能失效。


4890535

3.6 死锁预防和避免

  • 3.6.1 死锁预防

  • 3.摒弃“环路”条件

    有序资源分配法:为资源编号,申请时需按编号进行。

    缺点:

    (1)新增资源不便,(原序号已排定)

    (2)用户不自由

    (3)资源与进程使用顺序不同造成浪费


3 6 2

3.6.2 系统安全状态

  • 1. 安全状态

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


3 6 21

3.6.2 系统安全状态

  • 2.安全状态例

安全序列:p2p1p3


3 6 22

3.6.2 系统安全状态

  • 3.安全——不安全的转换

    • 上例中,若P3再申请一台


3 6 23

3.6.2 系统安全状态

  • ① 死锁状态是不安全状态。

  • ② 如果系统处于不安全状态,并不意味着它就在死锁状态,而是表示存在导致死锁的危机。

  • ③ 如果一个进程申请的资源当前是可用的,但为了避免死锁,该进程也可能必须等待。此时资源利用率会下降。


3 6 3

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

  • 银行家算法

    • 银行家拥有一笔周转资金

    • 客户要求分期贷款,如果客户能够得到各期贷款,就一定能够归还贷款,否则就一定不能归还贷款

    • 银行家应谨慎的贷款,防止出现坏帐

  • 用银行家算法避免死锁

    • 操作系统(银行家)

    • 操作系统管理的资源(周转资金)

    • 进程(要求贷款的客户)


3 6 31

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

  • 银行家算法的设计思想是:当用户申请一组资源时,系统必须做出判断;如果把这些资源分出去,系统是否还处于安全状态。若是,就可以分出这些资源;否则,该申请暂不予满足。

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


3 6 32

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

  • 1.银行家算法中的数据结构

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


4890535

  • (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]


3 6 33

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

  • 2.银行家算法

Requesti[j]≤Need[i,j]

error

Requesti[j]≤Available[j]

block


3 6 34

3.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.

Work=Available

Finish[i]=.F.

Need[i,j]<=work[j]

work[j] =work[i]+ Allocation[i,j]

Finish[i]=.T.


3 6 35

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

4.银行家算法之例

T0时刻的资源分配表


3 6 36

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

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

Available (3 3 2)

true

10 4 7

10 5 7

3 3 2

true

5 3 2

7 4 5

true

10 4 7

true

5 3 2

7 4 3

7 4 5

true

7 4 3

T0时刻的安全序列:

P1

P3

P4

P2

P0


3 6 37

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

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

3 3 2

2 3 0

1 2 2

0 2 0

2 0 0

3 0 2

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

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

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

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

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


3 6 38

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

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

true

10 4 7

10 5 7

2 3 0

true

5 3 2

7 4 5

true

10 4 7

5 3 2

7 4 3

true

7 4 5

7 4 3

true

T1时刻的安全序列:

P1

P3

P4

P2

P0


3 6 39

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

  • (3)P4申请资源(3,3,0)时安全性检查

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

让P4等待

Request4(3,3,0)>Available1(2,3,0)


3 6 310

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

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

0 3 0

0 1 0

7 4 3

7 2 3

2 3 0

2 1 0

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


4890535

3.7死锁的检测和解除

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


3 7 1

3.7.1死锁的检测

  • 1.资源分配图

p1

p2


3 7 11

3.7.1死锁的检测


3 7 12

3.7.1死锁的检测

  • 2.死锁定理

    如果资源分配图中没有环路,则系统中没有死锁,如果图中存在环路则系统中可能存在死锁

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


3 7 13

3.7.1死锁的检测

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

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

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


3 7 14

3.7.1死锁的检测

p1

p2

该图可完全简化。


3 7 15

3.7.1死锁的检测

  • 有环有死锁

R2

R1

P1

P2

P3

R3


3 7 16

R1

R2

3.7.1死锁的检测

  • 有环无死锁

P1

P1

P2

P1

P3

P4


3 7 17

3.7.1死锁的检测

  • 3.检测死锁的算法:

  • Work= Available

  • L={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 2

3.7.2 死锁的解除

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


4890535

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


4890535

作业

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

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

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

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


4890535

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

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

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


4890535

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

P1

P1

R1

R2

R2

R1

R3

P2

P2

P1

P3

(a)

R4

(b)


  • Login