ch3-2-deadlock

合集下载

死锁

死锁

死锁(Deadlock),这里指的是进程死锁,是个计算机技术名词。

它是操作系统或软件运行的一种状态:在多任务系统下,当一个或多个进程等待系统资源,而资源又被进程本身或其它进程占用时,就形成了死锁。

有个变种叫活锁。

死锁的规范定义:集合中的每一个进程都在等待只能由本集合中的其他进程才能引发的事件,那么该组进程是死锁的。

一种情形,此时执行程序中两个或多个线程发生永久堵塞(等待),每个线程都在等待被其他线程占用并堵塞了的资源。

例如,如果线程A 锁住了记录1并等待记录2,而线程B锁住了记录2并等待记录1,这样两个线程就发生了死锁现象。

计算机系统中,如果系统的资源分配策略不当,更常见的可能是程序员写的程序有错误等,则会导致进程因竞争资源不当而产生死锁的现象。

在两个或多个任务中,如果每个任务锁定了其他任务试图锁定的资源,此时会造成这些任务永久阻塞,从而出现死锁。

例如:事务A 获取了行 1 的共享锁。

事务B 获取了行 2 的共享锁。

现在,事务A 请求行 2 的排他锁,但在事务 B 完成并释放其对行 2 持有的共享锁之前被阻塞。

现在,事务B 请求行 1 的排他锁,但在事务 A 完成并释放其对行 1 持有的共享锁之前被阻塞。

事务B 完成之后事务 A 才能完成,但是事务 B 由事务 A 阻塞。

该条件也称为循环依赖关系:事务 A 依赖于事务B,事务 B 通过对事务 A 的依赖关系关闭循环。

除非某个外部进程断开死锁,否则死锁中的两个事务都将无限期等待下去。

Microsoft SQL Server 数据库引擎死锁监视器定期检查陷入死锁的任务。

如果监视器检测到循环依赖关系,将选择其中一个任务作为牺牲品,然后终止其事务并提示错误。

这样,其他任务就可以完成其事务。

对于事务以错误终止的应用程序,它还可以重试该事务,但通常要等到与它一起陷入死锁的其他事务完成后执行。

在应用程序中使用特定编码约定可以减少应用程序导致死锁的机会。

有关详细信息,请参阅将死锁减至最少。

106273-操作系统(第5版)-ch3-3.7死锁

106273-操作系统(第5版)-ch3-3.7死锁

process
P0 P1 P2 P3 P4
allocation ABC 010 302 302 211 002
Need ABC 743 020 600 011 431
available ABC 230
实例说明系统所处的安全或
不安全状态(7)
• 判定新状态是否安全?可执行安全性测
试算法,找到一个进程序列
• P0 • P1 • P2 • P3 • P4
010 200 302 211 002
753 322 902 222 433
Available ABC 3 32
实例说明系统所处的安全或不
安全状态(3)
每个进程目前还需资源为Need[k,i]
process Need
ABC

P0
743

P1
122

P2
P1 3 3 2 1 2 2 P3 5 3 2 0 1 1 P4 7 4 3 4 3 1 P2 7 4 5 6 0 0 P0 10 4 7 7 4 3
allocation work+allocation AB C A B C 20 05 3 2 21 17 4 3 00 27 4 5 3 0 2 10 4 7 0 1 0 10 5 7
死锁的防止(3)
采用层次分配策略(破坏条件2和4)
– 资源被分成多个层次 – 当进程得到某一层的一个资源后,它
只能再申请较高层次的资源 – 当进程要释放某层的一个资源时,必
须先释放占有的较高层次的资源 – 当进程得到某一层的一个资源后,它
想申请该层的另一个资源时,必须先 释放该层中的已占资源
死锁防止(4)
work+allocation

操作系统ch3 调度死锁的重点题型

操作系统ch3 调度死锁的重点题型

第3章处理机调度与死锁习题三、名词解释高级调度:又称作业调度,用于决定把外存上处于后备队列中的哪些作业调入内存,并为之创建进程,排在就绪对列上。

低级调度: 又称进程调度,用于选择就绪队列上哪个进程可以获得处理机执行。

中级调度: 又称对换调度,用于将那些暂时不能运行的进程由内存调至外存,排在挂起对列中,待这些进程重又具备运行条件,且内存又有空闲,将其重新由外存调入内存,排在就绪队列中。

死锁:指在多道程序系统中,多个进程在运行过程中因争夺资源造成的一种僵局。

死锁避免:不需事先采用各种限制措施去破坏产生死锁的必要条件,而是在资源的动态分配过程中,用某种方式去防止系统进入不安全状态,从而避免发生死锁。

进程同步:程间共同完成一项任务时直接发生相互作用的关系,也就是说,这些具有伙伴关系的进程在执行时间次序上必须遵循确定的规律。

进程互斥:逻辑上本来完全独立的若干进程,由于竞争同一个资源而产生的相互制约关系。

四、问答题请分别给出在算法FCFS、SJF和HRN中这组作业的调度顺序、平周转时间和平均带权周转时间。

【解答】平均带权周转时间W=(1.0+2.0+3.5+7.0)/4=3.375SJF算法调度顺序:1,3,4,2,作业运行情况如下表平均周转时间T=(1.0+1.3+0.2+0.2)/4=0.675平均带权周转时间W=(1.0+2.6+1.0+2.0)/4=1.65HRN算法调度顺序:1,2,4,3,作业运行情况如下表平均周转时间T=(1.0+1.0+0.8+0.5)/4=0.825平均带权周转时间W=(1.0+2.0+4.0+5.0)/4=3.02、有一个具有两道作业的批处理系统,作业调度采用短作业优先的调度算法,进程调度采用以优先数为基础的抢占式调度算法,有如下表所示的作业序列,数值越小优先级越高。

① 列出所有作业进入内存的时间和结束时间。

②计算平均周转时间。

【解答】每个作业的运行将经历两级调度:作业调度和进程调度。

ch3-3.6死锁

ch3-3.6死锁
•系统每类资源总数--该m个元素的向量为 系统中每类资源的数量 Resource=(R1,R2,…,Rm) •每类资源未分配数量--该m个元素的向量 为系统中每类资源尚可供分配的数量 Avilable=(V1,V2,…,Vm)
银行家算法的数据结构(3)
• 最大需求矩阵--每个进程对每类资源的最大需 求量,Cij表示进程Pi需Rj类资源最大数
4个客户每个都有一个贷款额度
一个状态被称为是安全的
• 条件是存在一个状态序列能够使所 有的客户均得到其所有的贷款。 • 图示状态是安全的,以使Marvin运 行结束,释放所有的4个单位资金。 这 样 下 去 便 可 满 足 Suzanne 或 Barbara的请求。
不安全的状态
• 考虑给Barbara另一个她申请的 资源,则得到的状态是不安全的。 • 如果忽然所有的客户都申请,希 望得到最大贷款额,而银行家无 法满足其中任何一个的要求,则 发生死锁。
实例说明系统所处的安全或 不安全状态(3)
每个进程目前还需资源为Cki-Aki
process • • • • • P0 P1 P2 P3 P4 Cki-Aki A B C 7 4 3 1 2 2 6 0 0 0 1 1 4 3 1
实例说明系统所处的安全 或不安全状态(4) 可以断言目前系统处于安 全 状 态 , 因 为 , 序 列 {P1,P3,P4,P2,P0}能满足安 全性条件。
一种死锁避免策略
系统中若要启动一个新进程工作,其 对资源Ri的需求仅当满足下列不等式: Ri ≥ C(n+1)I + ∑Cki 对 i=1,..,m,k=1,..,n; 即应满足当前系统中所有进程对资源 Ri的最大资源需求数加上启动的新进 程的最大资源需求数不超过系统拥有 的最大数。

第八章 Deadlocks(死锁)

第八章 Deadlocks(死锁)

Applied Operating System Concepts
8.11
Silberschatz ,Galvin, and Gagne1999
Methods for Handling Deadlocks 处理死锁的方法
• • •
Ensure that the system will never enter a deadlock state. (确保系统永远不会进入死锁状态) Allow the system to enter a deadlock state and then recover.

No preemption: a resource can be released only voluntarily by the process holding it, after that process has completed its task. (不可抢占:一个资源只有当持有它的进程完成任务后,自由的释放) Circular wait: there exists a set {P0, P1, …, P0} of waiting processes such that P0 is waiting for a resource that is held by P1, P1 is waiting for a resource that is held by P2, …, Pn–1 is waiting for a resource that is held by Pn, and P0 is waiting for a resource that is held by P0.(循环等待:等待资源的进程之间存在环)

• •
If a deadlock occurs, it can be resolved if one car backs up (preempt resources and rollback).

ch4-2死锁

ch4-2死锁

利用银行家算法避免死锁
银行家拥有一笔周转资金可供多个用户 周转使用,为保证安全起见,银行家规定: 当一个用户对资金的最大需求量不超过银 行家现有的资金时就可接纳该用户; 用户可以分期贷款,但贷款的总数不能超 过最大需求量; 当银行家现有的资金不能满足用户的尚需 贷款数时,对用户的贷款可推迟支付,但 总能在有限时间里使用户得到所有贷款; 客户得到所需全部贷款后,一定要在有限 时间里归还所有贷款;
4.2 死锁
4.2.1 死锁的概念 4.2.2 产生死锁的原因和必要条件
4.2.3 死锁的预防和避免
4.2.4 死锁的检测和解除
4.2.1 死锁的概念
操作系统中死锁的定义:
系统中多个进程因竞争资源而造成 的一种僵局,若无外力作用,这些进 程都将无法向前推进,则称这一组进 程或系统此时发生了死锁。
操作系统中的死锁基于如下假定:
破坏不剥夺条件(2)
存在问题: 释放已获得资源可能会造成前一段工作 的失效,另外重复申请和释放资源会增 加系统开销,使系统工作效率降低; 因此,采用剥夺式调度方法只适用于 对主存资源和处理器资源的分配;
死锁的预防
破坏“请求和保持”条件:采用“静态分配”策 略 指一个进程必须在执行前就申请它所 要的全部资源,若系统有足够的资源可 以分配给该进程,便一次性把所有的资 源都分配给该进程,如有一种以上资源 不能分配给该进程,则该进程要求的资 源全部不予分配,进程等待。
破坏环路条件:按序分配策略
系统资源被分成多个层次,并赋予不同的序号; 所有进程对资源的请求必须严格按照序号递增的 次序提出;

例如:
输入机为1,打印机为2,穿孔机为3,磁带机为4,磁盘为5
进程A:需要1,3,4;可能先拥有1,3以后,运 行一段时间再申请4 进程B:需要3,4;按递增方向,先申请3,3被A 占用,等待,不再先占有4而使A、B陷入死锁

死锁问题及其解决方法

死锁问题及其解决方法

死锁问题及其解决方法一、死锁的介绍死锁(Deadlocks)通常发生在两个或多个进程(sessions)对被彼此锁住的资源发出请求的情况下。

其最常见的锁的类型为:行级锁(row-level locks)和块级锁(block-level locks)。

ORACLE会自动侦察到死锁情况,并通过回滚其中一个造成死锁的语句,从而释放其中一个锁来解决它,如上图中的C时间所示。

需要说明的,如果一个事务中的某个语句造成死锁现象,回滚的只是这个语句而不是整个事务。

二、行级死锁及其解决方法行级锁的发生如下图所示,在A时间,Transacrion1和Transction2分别锁住了它们要update的一行数据,没有任何问题。

但每个Transaction都没有终止。

接下来在B时间,它们又试图update当前正被对方Transaction锁住的行,因此双方都无法获得资源,此时就出现了死锁。

之所以称之为死锁,是因为无论每个Transaction等待多久,这种锁都不会被释放。

行级锁的死锁一般是由于应用逻辑设计的问题造成的,其解决方法是通过分析trace文件定位出造成死锁的SQL语句、被互相锁住资源的对象及其记录等信息,提供给应用开发人员进行分析,并修改特定或一系列表的更新(update)顺序。

以下举例说明出现行级死锁时如何定位问题所在。

1.环境搭建create table b (b number);insert into b values(1);insert into b values(2);commit;session1: update b set b=21 where b=2;session2: update b set b=11 where b=1;session1: update b set b=12 where b=1;session2: update b set b=22 where b=2;此时出现死锁现象。

CH3讲义

CH3讲义

本章知识点:1、进程的顺序性和并发性2、分析与时间有关的错误。

(★)3、进程同步与互斥的概念。

4、临界区及其调度。

(★)5、记录型信号量与PV操作。

(★★★)6、条件变量和管程。

(★★)7、进程通信种类8、消息传递的两种方式及其原语。

(★)本章思考题:1.叙述顺序程序设计的特点以及采用顺序程序设计的优缺点。

2.程序并发执行为什么会失去封闭性和结果可再现性?3.叙述并发程序设计的特点以及采用并发程序设计的优缺点。

4.解释并发进程的无关性和交往性。

5.并发进程的执行可能产生与时间有关的错误,试各举一例来说明与时间有关错误的两种表现形式。

6.解释进程的竞争关系和协作关系。

7.试说明进程的互斥和同步两个概念之间的区别。

8.什么是临界区和临界资源?对临界区管理的基本原则是什么?9.哪些硬件设施可以实现临界区管理?10.什么是信号量?如何对它进行分类。

11.为什么PV操作均为不可分割的原语操作?12.从信号量和PV操作的定义,可以获得哪些推论?13.叙述AND型信号量机制的特点14.叙述一般信量机制的特点15.有三个并发进程:R负责从输入设备读入信息,M负责对信号加工处理;P负责打印输出。

今提供;1)一个缓冲区,可放置K个信息;2)二个缓冲区,每个可放置K个信息;3)试用PV操作写出三个进程正确工作的流程16.没有n个进程共享一个互斥段,如果:1)每次只允许一个进程进入互斥段;2)每次最多允许m个进程(m≤n)同时进入互斥段。

试问:所采用的互斥信号量初值是否相同?信号量值的变化范围如何?17.三个进程并发活动,其算法描述如下,试分析是否有错,如有则指出原因并改正。

BeginS:=-1;CobeginP1:Begin……V(S);EndP2:Begin……V(S)End;P3:BeginP(S)……EndCobeginEnd18.何谓管程?它有哪些属性?管程中的过程在执行中能被中断吗?为什么?19.试比较Hanson和Hoare两种管程实现方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

归纳起来,可以采用以下策略之一来解决死锁问 题: 忽略该问题 采用破坏4个必要条件来预防死锁 采用有控分配方法(如银行家算法)来避免死锁 当死锁发生时检测死锁,并设法修复
鸵鸟算法The ostrich algorithm

UNIX潜在地受到了一些死锁的威协,但是这些死 锁从来没有发生,甚至从来没有被检测到. 处理死锁的UNIX办法是忽略它,由于大多数用 户宁可在极偶然的情况下产生死锁,也不愿被 限制只能创建一个进程,只能打开一个文件等 等. 象鸵鸟一样对死锁视而不见是最简单的方法. 每个人对该方法的看法都不相同. 数学家认为要彻底防止死锁的产生,不论代价 有多大; 工程师们想要了解死锁发生的频率,系统因各 种原因崩溃的频率,以及死锁的严重程度.
死锁的产生

操作系统的基本特征是并发与共享。
系统允许多个进程并发执行,并且共享系统的软、
硬件资源。 为了最大限度的利用计算机系统的资源,操作系统 应采用动态分配系统各种资源的策略。 采用动态分配策略,当对某类资源的申请数目超过 这类资源的可用数目时,若分配不当,可能出现进 程之间相互等资源又都不能向前推进的情况,即造 成进程相互封锁的危险。
Bridge Crossing Example



Traffic only in one direction. Each section of a bridge can be viewed as a resource. If a deadlock occurs, it can be resolved if one car backs up (preempt resources and rollback). Several cars may have to be backed up if a deadlock occurs. Starvation is possible.
The Deadlock Problem


A set of blocked processes each holding a resource and waiting to acquire a resource held by another process in the set. Example
Require process to request and be allocated all its resources before it begins execution, or allow process to request resources only when the process has none. Low resource utilization; starvation possible.
进程Q1:
P(s1) P(s2) 使用R1和R2 V(s1)
进程Q2:
P(s2) P(s1) 使用R1和R2 V(s2)
V(s2)
V(s1)
操作系统中的例子(进程推进不合法)
Hold and wait 1
2
OS 中的例子 有二个进程 P 、P ,两个设备打印机R ,读卡机R
1
2

设S1=1,打印机可用。S2=1,读卡机可用。
Deadlock Characterization

Deadlock can arise if 4 conditions hold simultaneously: Mutual exclusion: only one process at a time can use a resource. Hold and wait: a process holding at least one resource is waiting to acquire additional resources held by other processes. No preemption: a resource can be released only voluntarily by process holding it, after that process completed its task. Circular wait: there exists a set {P0, P1, …, P0} of waiting processes such that P0 is waiting for a resource that is held by P1, P1 is waiting for a resource that is held by P2, …, Pn– 1 is waiting for a resource that is held by Pn, and P0 is waiting for a resource that is held by P0.
问题:那么为什么没有斜 线的推进的进程顺序呢?
t
P2进展
y
路线1
路线2
释放r1 释放r2 申请r1 申请r2
D2
C2
B2 A2
死锁点
0
x
A1 申请r1 B1 C1 D1 释放r2
两进程均占用r2 P1进展
t
申请r2 释放r1
两进程均占用r1
死锁产生的原因
3、同类资源分配不当引起死锁 若系统中有m个资源被n个进程共享,当每个进 程都要求k个资源。而m<n*k时,即资源数小 于进程所需要的总数时,如果分配不得当就可 能引起死锁。 例3,m=5,n=5,k=2,采用的分配策略是为每 个进程轮流分配。
死锁产生的条件

以上前三个条件

互斥条件(mutual exclusion) 占有和等待条件(hold and wait) 不剥夺条件(no preemption)
是死锁存在的必要条件(necessary condition), 但不是充分条件。 也就是说发生了死锁,必然具备互斥、占有和 等待、不剥夺等条件。
CHAPTER 3 DEADLOCK
(死锁)
3.5 Deadlocks

System Model Deadlock Characterization Methods for Handling Deadlocks Deadlock Prevention Deadlock Avoidance Deadlock Detection Recovery from Deadlock Combined Approach to Deadlock Handling
进程P
请求读卡机 请求打印机 释放读卡机 释放打印机
进程Q
请求打印机 请求读卡机 释放读卡机 释放打印机
死锁产生的原因
2、PV操作使用不当产生死锁 例2: R1和R2为可再用资源;进程Q1和Q2共享两个资源R1和 R2。s1和s2分别代表资源R1和R2能否被使用的信号量,由于 R1和R2是共享的,必须使用互斥。因而s1和s2的初值为1。假 定两个进程都要求使用两个资源,它们的程序如下:
Traffic Gridlock/Deadlock

一个进程需要使用独占型资源必须有一定的次序:



申请资源 使用资源 释放资源


1968年Havender在评论OS/360操作系统时说:“原先 多任务的概念是让多个任务不加限制的竞争资源, ……但是随着系统的发展,很多任务被锁在系统中了 。” 1971年Lynch说:“1962年我们设计Exec2系统时并没 有认识到死锁的问题,系统中也没有任何防范措施, 结果现在一些程序中已被锁在系统中了。”
V(S1);
两种写法, 谁可能造 成死锁?


V(S2);

V(S2);
V(S1);
t
P2进展
y
路线1
路线2
释放r1
释放r2 申请r1
D2 C2 B2 A2 t2
0
A 死锁点
申请r2
A1
t1
x
B1 C1 D1 释放r2
P1进展
t
申请r1
申请r2 释放r1
两进程申请占用r1区域
两进程申请占用r2区域
System has 2 tape drives. P1 and P2 each hold 1 tape drive and each needs another one.


Example

semaphores A and B, initialized to 1
P0 wait (A); wait (B); P1 wait(B) wait(A)
而具备互斥、占有和等待、不剥夺等条件却不一定产 生死锁。
死锁产生的条件


第四个条件: 循环等待条件(circular wait) 是前三个条件同时存在时产生的结果,所 以,这些条件并不完全独立。 但单独考虑每个条件是有用的,只要能破 坏这四个必要条件之一,死锁就可防止。
死锁的解决策略

① ② ③ ④
什么是死锁?


死锁的定义: 一组进程中,每个进程都无限等待被该组进程 中另一进程所占有的资源,因而无限期地僵持下 去的局面 ,这种现象称为进程死锁。 这一组进程就称为死锁进程
死锁产生的原因
1、进程推进顺序不当产生死锁。
设系统有打印机、读卡机各一台,它们被进程P和Q共享。 两个进程并发执行,它们按下列次序请求和释放资源:
P1
P(S1); V(S1);
P2
P(S2); V(S2);
申请R1 S1:1-1=0 占用R1 申请R2,但 R2被P2占用
P1
P(S1); P(S2); V(S1);
P2
P(S2); P(S1
申请R2 S2:1-1=0 占用R2
申请R1,但 R1被P1占用 );
相关文档
最新文档