分布计算系统学习随笔 第六章分布式系统中的死锁

6.1

1、死锁发生的条件:

1) 互斥。正如我们第五章所讨论的,互斥是一种资源分配方式,保证同一个资源在同一时刻最多只能被一个进程占用,它用于防止多个进程同时共享访问不可同时共享访问的资源。

2) 不可剥夺的资源分配。系统将一个资源的访问权分配给某一个进程后,系统不能强迫该进程放弃对该资源的控制权。

3) 占有并等待。必然有一个进程占用了至少一个资源,同时在等待获取被其他进程占用的资源。

4) 循环等待。在等待图中有一个循环路径。

2、处理死锁的策略死锁:

可以使用PAID来概括死锁处理的各种方法:预防(Prevent)、避免(Avoid)、忽略(Ignore)和检测(Detect) 。

1)预防死锁。通过限制请求,保证四个死锁条件中至少有一个不能发生,从而预防死锁。

2)避免死锁。如果资源分配会导致一个安全的结果状态,就将资源动态地分配给进程。如果至少有一个执行序列使所有的进程都能完成运行,那么这个状态就是安全的。

3)忽略死锁。忽略死锁是UNIX常采用的一种方法,这种方法只是简单地忽略死锁问题。

4)检测死锁和从死锁中恢复。允许死锁发生,然后发现并解除死锁。

3、死锁的AND条件和OR条件:

资源死锁和通信死锁:在通信死锁中,进程等待的资源就是报文。资源死锁和通信死锁的真正区别在于资源死锁通常使用AND条件,而通信死锁通常使用OR条件。

所谓AND条件就是当进程取得所有所需资源时,它才能继续执行;所谓OR条件就是当进程得到至少一个所需资源,它就能继续执行。

在使用AND条件的系统中,死锁条件是在等待图中存在回路。但是在使用OR条件的系统中,等待图中的回路未必会引发死锁。在使用OR条件的系统中,死锁条件是存在结(knot)。一个结K是一个节点集合,对于K中的任何节点a,a能到达K中的所有节点,并且只能到达K中的节点。

6.2

1、基于时间戳的预防死锁方法:

包括两种死锁预防方案。这两种方案相互补充,这种方法常用于分布式数据库系统中。

1)等待—死亡方案(wait-die scheme)。该方案是基于非剥夺方法。当进程Pi请求的资源正被进程Pj占有时,只有当Pi的时间戳比进程Pj的时间戳小时,即Pi比Pj老时,Pi才能等待。否则Pi被卷回(roll-back),即死亡。

2)伤害—等待方案(wound-wait scheme)。它是一种基于剥夺的方法。当进程Pi请求的资源正被进程Pj占有时,只有当进程Pi的时间戳比进程Pj的时间戳大时,即Pi比Pj年轻时,Pi才能等待。否则Pj被卷回(roll-back),即死亡。

6.3

1、Mitchell-Merritt算法与Chandy-Misra-Hass算法的区别:

其限制是每个进程每次只能请求一个资源。 探测报文在等待图中,沿等待方向的相反方向传送,这样的图叫反向等待图(reversed wait-for graph)。 每当进程收到探测报文时,它将自己的标识符和探测报文发起者的标识符相比较,如果自己的标识符大于探测报文发起者的标识符,它就用自己的标识符取代探测报文发起者的标识符,自己变成探测报文的发起者。 当几个进程同时发起死锁检测时,只有一个进程能够成为唯一的探测者。

时间: 2024-08-01 13:55:53

分布计算系统学习随笔 第六章分布式系统中的死锁的相关文章

分布计算系统学习随笔 第四章 命名与保护

4.1 1.名字的两种形式:地址和标识符 2.对一个对象进行操作或访问时,往往需要将它的标识符变换为它的地址,变换的过程中需要用到变换表,这个表换表叫做上下文. 3.为了支持资源的迁移,命名系统应至少支持两种形式的名字,即标识符和地址,并且可动态地结合. 4.同一个对象可以有用户定义的多个局部名字,需要一种机制把局部名字和全局标识符结合起来. 5.在分布计算系统中,一个实体可能包含多个不同的对象,就需要一个进程标识符.这样就可以支持广播或小组标识符. 6.名字按结构可分成绝对名字和相对名字两种:

分布计算系统学习随笔 第五章同步和互斥

5.1 1.资源管理方式 1)全集中管理方式:所有资源都由一个服务员管理: 2)集中分布管理方式:一个资源由一个服务员管理: 3)全分布管理方式:一个资源是由多个服务员共同管理. 2.多个服务员参加对同一个资源进行控制的方式 1)顺序方式:按某种顺序,先由一个服务员控制一段时间,之后再由另一个服务员控制一段时间. 2)分工方式:由不同的服务员并发或顺序地控制同一资源执行不同的活动. 3)民主方式:所有服务员共同协商一致对同一资源执行每个管理活动. 5.2 1.同步机构在互斥控制中的作用是对活动的

分布计算系统学习随笔 第一章绪论

1.1 1.促进分布计算系统发展的两大技术: 1)计算机硬件技术和软件技术的发展 2)计算机网络技术的发展 1.2 1.什么是分布计算系统? 分布计算系统是由多个相互连接的处理资源组成的计算系统,它们在整个系统的控制下可合作执行一个共同的任务,最少依赖于集中地程序.数据和硬件.这些处理资源可以是物理上相邻的,也可以是在地理上分散的. 2.分布计算系统定义的说明 1)系统是由多个处理器或计算机系统组成 2)两类结构:这些计算资源可以是物理上相邻的.由机器内部总线或开关连接的处理器,通过共    

CCNA学习指南 第六章 下载

本章讲述静态路由和动态路由的配置.动态路由协议涉及RIPv1.RIPv2和IGRP,这三个动态路由协议都属于距离矢量型路由协议. CCNA学习指南 第六章 下载

cocos2d-html5学习笔记(六)--alpha2中cc.Sequence.create中的bug

cocos2d-html5学习笔记(六)--alpha2中cc.Sequence.create中的bug http://blog.csdn.net/allenice1/article/details/7747425 分类: javascript cocos2d-html52012-07-14 20:08 3005人阅读 评论(0) 收藏 举报 actionfunctionnullobject 今天学习了action,可是练习cc.Sequence.create的时候.发现了问题. cc.Sequ

C++ Primer Plus学习:第六章

C++入门第六章:分支语句和逻辑运算符 if语句 语法: if (test-condition) statement if else语句 if (test-condition) statement1 else statement2 if else if else语句 if (test-condition1) statement1 else if (test-condition2) statement2 else statement3 2 逻辑表达式 逻辑OR运算符:|| 当两个条件中有一个或全部

Android学习笔记—第六章 Asynctask异步加载

第六章 Asynctask 异步加载 1.好处:不需要创建线程就可管理线程 缺点:步骤多 2.步骤: (1)创建一个类继承Asynctask<xxx,xxx,xxx>; 三个泛型参数: 第一个:决定了execute()方法的传入值类型,决定了doInBackground()方法的传入值类型 第二个:决定了publishProgress()方法的传入值类型,决定了onProgressUpdate()方法的传入值类型 第三个:决定了doInBackground()方法的返回值类型,决定了onPos

Java学习笔记—第六章 流程控制语句

第六章  熟悉Java的流程控制语句 Java的程序流程控制分为顺序结构.选择结构.循环结构和跳转语句. 顺序结构:按照程序代码自上而下执行,直到程序结束,中间没有任何判断和跳转. 选择结构(分支结构):判断给定的条件,根据判断结果控制程序的流程.包括if语句和switch语句. 2.1 if语句:通过判断给定表达式的值来决定程序的流程.常见if语句的形式有三种: (1)if(expression){ statement: } (2)if(expression){ statement; }els

小甲鱼零基础汇编语言学习笔记第六章之包含多个段的程序

在前面的几个章节中,我们的程序都是只有一个代码段,本章我们开始学习如何编写包含多个段的程序. 1.在代码段中使用数据 首先考虑这样一个问题,计算以下8个数据的和,结果存放在ax寄存器中: 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H 在前面的课程中,我们都是累加某些内存单元中的数据,并不关心数据本身,可现在我们要累加就是已经给定了数值的数据. 代码如下: 1 assume cs:codesg 2 codesg segment 3 dw 0123H