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

5.1

1、资源管理方式

1)全集中管理方式:所有资源都由一个服务员管理;

2)集中分布管理方式:一个资源由一个服务员管理;

3)全分布管理方式:一个资源是由多个服务员共同管理。

2、多个服务员参加对同一个资源进行控制的方式

1)顺序方式:按某种顺序,先由一个服务员控制一段时间,之后再由另一个服务员控制一段时间。

2)分工方式:由不同的服务员并发或顺序地控制同一资源执行不同的活动。

3)民主方式:所有服务员共同协商一致对同一资源执行每个管理活动。

5.2

1、同步机构在互斥控制中的作用是对活动的执行进行排序。同步机构的目的就是给进程提供某种手段,使系统保持一致状态。

2、分布计算系统的计算方式分为三种:

1)完全复制的计算。任何操作所激发的每个活动必须由所有的消费者共同处理,要求所有的活动均应完成。这时同步机构的目的是保证消费者处理活动的次序必须相同。

2)完全分割的计算。一个操作所激发的不同活动由不同的消费者分别独自处理。在这种情况下,同步机构的目的是保证所有相互干扰的活动成为有序的,使得该操作保持原子性(要么完成操作,要么干脆不发生)。

3)分割和部分复制的计算。一个操作所激发的活动中,某些是由不同的消费者独自处理的,某些操作是由一些消费者共同处理。它兼有前面两种计算形式的特点。对于不同的计算方式,同步机构的目的和要求也是不同的。

3、物理时钟的同步过程:

1)A通过网络向B发送请求;

2)B读取本地时钟值;

3)B的时钟值通过网络传递给A;

4)按照网络所需的传输延迟对B的时钟值进行校正;

5)比较A的时钟值和B的时钟值。

4、集中式物理时钟的实现方式:基于广播的方式、请求驱动的方式。

5、逻辑时钟可以给分布计算系统中的事件一个唯一的排序。逻辑时钟的本质是基于Lamport定义的“在先发生关系” 。

6、标量逻辑时钟:

每个进程Pi有一个逻辑时钟LCi,LCi被初始化为init(init≥0)并且它是一个非减的整数序列。进程Pi发送的每个报文m都被标上LCi的当前值和进程的标号i,从而形成一个三元组(m,LCi,i)。任何一个逻辑时钟LCi基于以下两条规则更新它的逻辑时钟值:

1)当发生一个事件(一个外部发送或内部事件)之前,我们更新LCi: LCi:=LCi+d (d>0)

2)当收到一个带时间戳的报文(m,LCj,j)时,我们更新LCi: LCi:=max(LCi,LCj)+d (d>0)

7、向量逻辑时钟:

在向量逻辑时钟中,每个进程Pi和一个时间向量LCi[1,…,n]相关联,其中

1)向量元素LCi[i]描述了进程Pi的逻辑时间进展情况,即自身的逻辑时间进展情况;

2)向量元素LCi[j]表示进程Pi所知的关于进程Pj的逻辑时间进展情况;

3)向量LCi[1,…,n]组成进程Pi对于逻辑全局时间的局部视图。

任何一个逻辑时钟LCi基于以下两条规则更新它的逻辑时钟值:

1)当发生一个事件(一个外部发送或内部事件)之前,Pi更新LCi[i]: LCi[i]:=LCi[i]+d (d>0)

2)每个报文捎带发送方在发送时的时钟向量,当收到一个带时间戳的报文(m,LCj,j)时,Pi更新LCi: LCi[k]:=max(LCi[k],LCj[k]) 1≤k≤n LCi[i]:= LCi[i]+d (d>0)

5.3

1、全局状态的获取(快照算法):

1)假如启动算法的进程为P,那么它首先记录自己的局部状态,然后它沿着它的输出通道发送一个标志(marker),指示接收者应该参与记录一个全局状态的工作。

2)当接收者Q通过它的输入通道C收到一个标志,它将依据不同条件执行以下不同操作:

a)如果Q还没有记录自己的局部状态,它首先记录自己的局部状态,并记录通道C的状态为空报文序列,然后也沿着它自己的输出通道发送一个标志。

b)如果Q已经记录了自己的局部状态,通过通道C收到的标志用来指示Q应该记录通道的状态。通道的状态是Q记录它的局部状态以来到收到这个标志前所收到的报文系列。

3)如果一个进程已经沿它的每个输入通道接收到一个标志,并对每个标志进行了处理,就称它已经完成了它的那部分算法。

4)一个进程的局部状态,连同它的所有输入通道的状态将被发送到这个快照的发起进程。

2、一致性定理:一个检查点集S,其中每个检查点属于不同的进程,它们属于同一个一致性的全局状态当且仅当S中不存在这样的检查点,它有一条到S中任何其他检查点(包括它自身)的Z字形路径。

推论:

1)检查点C可以属于一个一致性全局状态当且仅当C不属于一个Z字形循环;

2)属于不同进程的两个检查点A和B,它们可以属于同一个一致性全局状态当且仅当

a)没有包括A或B的Z字形循环;

b)在A和B之间不存在Z字形路径。

5.4

1、互斥问题就是定义一些基本的操作来解决共享资源的多个并发进程的冲突问题。

2、互斥算法的主要目标是保证在任一个时刻只能有一个进程访问临界区。一个正确的互斥算法必须避免冲突(死锁和饿死)和保证公平性。为此,算法应满足以下三个条件:

1)已获得资源的进程必须先释放资源之后,另一个进程才能得到资源;

2)不同的请求应该按照这些请求的产生顺序获得满足,请求应该按照某种规则进行排序,例如使用逻辑时钟确定请求的顺序;

3)若获得资源的每个进程最终都释放资源,则每个请求最终都能满足。

3、Lamport时间戳互斥算法由以下5条规则组成 :

1)一个进程Pi如果为了申请资源,它向其它各个进程发送具有时间戳Tm:Pi的申请资源的报文,并把此报文也放到自己的申请队列中;

2)一个进程Pj如果收到具有时间戳Tm:Pi的申请资源的报文,它把此报文放到自己的申请队列中,并将向Pi发送一个带有时间戳的承认报文。如果Pj正在临界区或正在发送自己的申请报文,则此承认报文要等到Pj从临界区中退出之后或Pj发送完自己的申请报文之后再发送,否则立即发送;

3)一个进程Pi如果想释放资源,它先从自己的申请队列中删除对应的Tm:Pi申请报文,并向所有其他进程发送具有时间戳的Pi释放资源的报文;

4)一个进程Pj如果收到Pi释放资源的报文,它从自己的申请队列中删除Tm:Pi申请报文;

5)当满足下述两个条件时,申请资源的进程Pi获得资源:

a)Pi的申请队列中有Tm:Pi申请报文,并且根据时间戳它排在所有其它进程发来的申请报文前面;

b)Pi收到所有其它进程的承认报文,其上面的时间戳值大于Tm。

4、Ricart-Agrawala互斥算法

1)一个进程申请资源时向所有其他进程发出申请报文;

2)其它进程收到申请报文后若不在临界区并且自己未申请进入临界区,或者自己虽然发出了申请报文,但自己的报文排在收到的申请报文之后,则回答表示同意;

3)申请资源的进程仅在收到所有进程的回答报文后才进入临界区使用资源;

4)一个进程使用完资源后,它向所有未给回答的其它申请发送回答报文。

5、Maekawa互斥算法

请求子集:在Maekawa互斥算法中,一个进程P在发出申请报文后,不用得到所有其他进程的回答,而只须得到一个进程子集S中的所有进程的回答即可进入临界区。称S是P的请求子集。假设Ri和Rj分别是进程Pi和Pj的请求子集,要求Ri∩Rj≠NULL。

1)当进程Pi请求进入临界区时,它只向Ri中的进程发送请求报文。

2)当进程Pj收到一个请求报文时,如果它自上一次临界区释放后还没有发出过回答报文给任何进程,且自己的请求队列中无任何请求,它就给该请求报文一个回答。否则,请求报文被放入请求队列中。

3)进程Pi只有收到Ri中的所有进程的回答后,才能进入临界区。 在释放临界区时,进程Pi只给Ri中的所有进程发送释放报文。

6、自稳定系统:一个系统,如果无论它的初始状态是什么,总是能在有限的步骤内达到一个合法的状态,那么它是自稳定的。

时间: 2024-10-12 17:02:32

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

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

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

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

6.1 1.死锁发生的条件: 1) 互斥.正如我们第五章所讨论的,互斥是一种资源分配方式,保证同一个资源在同一时刻最多只能被一个进程占用,它用于防止多个进程同时共享访问不可同时共享访问的资源. 2) 不可剥夺的资源分配.系统将一个资源的访问权分配给某一个进程后,系统不能强迫该进程放弃对该资源的控制权. 3) 占有并等待.必然有一个进程占用了至少一个资源,同时在等待获取被其他进程占用的资源. 4) 循环等待.在等待图中有一个循环路径. 2.处理死锁的策略死锁: 可以使用PAID来概括死锁处理的各种

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

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

java学习之第五章编程题示例(初学篇)

1 /* 2 Animal.java 3 */ 4 package animal; 5 6 public abstract class Animal { 7 public abstract void cry(); 8 public abstract String getanimalName(); 9 } 1 //Dog.java 2 package animal; 3 4 public class Dog extends Animal 5 { 6 7 String aa="旺旺"; 8

CCNA学习指南 第五章 下载

在一个陌生的环境里如果想到达某一个地点,可以有三种方法:第一种方法请一位向导,只要把你要去的目的地说清楚了,一路上不用操心,向导自然会带你到达.第二种方法找一张相关的地图,按图索骥.第三种方法是朝着目的地的方向边走边问,根据被询问的人提供的信息选择一条最近的路径. CCNA学习指南 第五章 下载

《Spring实战》学习笔记-第五章:构建Spring web应用

之前一直在看<Spring实战>第三版,看到第五章时发现很多东西已经过时被废弃了,于是现在开始读<Spring实战>第四版了,章节安排与之前不同了,里面应用的应该是最新的技术. 本章中,将会接触到Spring MVC基础,以及如何编写控制器来处理web请求,如何通明地绑定请求参数到业务对象上,同时还可以提供数据校验和错误处理的功能. Spring MVC初探 跟踪Spring MVC请求 在请求离开浏览器时,会带有用户所请求内容的信息,例如请求的URL.用户提交的表单信息. 请求旅

C++ Primer Plus学习:第五章

C++入门第五章:循环和关系表达式 for循环 for循环的组成部分 设置初始值. 执行测试,看循环是否应该继续执行. 执行循环操作. 更新用于测试的值. 以上操作由括号括起,每个部分均是一个表达式,彼此分号隔开,控制部分后面的语句叫循环体,若测试表达式均为true,它被执行. for(initialization;test-expression;update-expression) body C++将整个for循环看成一个语句. 循环只进行一次初始化. for循环和后面的括号加一个空格,以区别

构建之法学习(第五章 团队和流程)

第五章团队和流程 本章主要讲了一些典型的软件团队模式和开发流程以及它们的优缺点 1.团队的共同特点: -应该有一致的集体目标,团队要一起完成这目标   -团队成员有各自的分工,互相依赖合作,共同完成任务 2.软件团队的模式 主治医师模式(有首席工程师,其他成员支持其工作):明星模式:社区模式:   业余剧团模式:秘密团队(软件项目在秘密状态下进行):   特工团队(由特殊技能的专业人士组成):交响乐团模式(各司其职,重在执行):   爵士乐模式:功能团队模式(平等协作,共同完成):官僚模式 3.

javascript高级程序设计 学习笔记 第五章 上

第五章 引用类型的值(对象)是引用类型的一个实例.在 ECMAScript 中,引用类型是一种数据结构, 用于将数据和功能组织在一起.它也常被称为类,但这种称呼并不妥当.尽管 ECMAScript 从技术上讲是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和接口等基本结构.引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法. 对象是某个特定引用类型的实例.新对象是使用 new 操作符后跟一个构造函数来创建的. 构造函数本身就是一个函数,只不过该函数是出于创建新