分布式process总结之二:Mutual Exclusion
2015-12-08 14:30
225 查看
没有单机情况下OS这个共同媒介。有的只是process之间互发消息。
三个目标
1)safety (essential) : 没有2个process同时进入CS (no bad thing happen)
2)liveness (essential) 最终每个进入CS的请求都会被满足 (wanted thing happen)
3)ordering (desirable) FIFO
central based solution
选举出一个master来做管理Token, 维护一个想要进入Critical Section的Process的队列。当一个process Pi 请求进入Critical Section的时候,如果Token在Master手上就把token给Pi,否者把Pi放进入等待队列,Pi则一直处在等待Reply Token的状态。当一个Process Pj 离开 CS的时候,会把Token交还给Master,Master再把Token交给队列里的Process。
缺点:Master 负载高,单点失败问题。基于共享文件系统的文件锁,也属于这一方式,master就是共享文件系统的OS。
Ring-based Solution
类似链路层的实现之一令牌环, Token在环上不停的传递,需要访问CS的时候,等待Token传到自己,然后访问CS,之后再把Token往下传,不需要访问CS的process则直接往下传。
Ricart-Agrawala Algorithm
每个Process三个状态 Released,Wanted,Held
访问CS的时候,状态变为Wanted,multicast 请求Request(Ti,i)t给所有其他Process,当收到所有其他Process的Reply(允许)时才进入,状态变为Held。收到请求的Process,如果自己状态是Held 或者Wanted 且自己的(Tj,j) < (Ti, i),把请求放到通知队列,否则直接Reply。自己访问过CS后给等待队列里的Process发 reply
T 是 Lamport time
Maekawa Algorithm
Ricart-Agrawala 需要征得所有其他process的允许才能进入CS,Maekawa则是只需要征得K(K > N/ 2)的process的允许就可以,只要确保一个process只投一票(只Reply一个Process的 request),就可以保证只有一个Process能过半数,也就是只有一个process能进入CS
可以看出,分布式系统算法用到的常见Topology
1)星形(中心)
2)环状
3)网状(all-to-all)
三个目标
1)safety (essential) : 没有2个process同时进入CS (no bad thing happen)
2)liveness (essential) 最终每个进入CS的请求都会被满足 (wanted thing happen)
3)ordering (desirable) FIFO
central based solution
选举出一个master来做管理Token, 维护一个想要进入Critical Section的Process的队列。当一个process Pi 请求进入Critical Section的时候,如果Token在Master手上就把token给Pi,否者把Pi放进入等待队列,Pi则一直处在等待Reply Token的状态。当一个Process Pj 离开 CS的时候,会把Token交还给Master,Master再把Token交给队列里的Process。
缺点:Master 负载高,单点失败问题。基于共享文件系统的文件锁,也属于这一方式,master就是共享文件系统的OS。
Ring-based Solution
类似链路层的实现之一令牌环, Token在环上不停的传递,需要访问CS的时候,等待Token传到自己,然后访问CS,之后再把Token往下传,不需要访问CS的process则直接往下传。
Ricart-Agrawala Algorithm
每个Process三个状态 Released,Wanted,Held
访问CS的时候,状态变为Wanted,multicast 请求Request(Ti,i)t给所有其他Process,当收到所有其他Process的Reply(允许)时才进入,状态变为Held。收到请求的Process,如果自己状态是Held 或者Wanted 且自己的(Tj,j) < (Ti, i),把请求放到通知队列,否则直接Reply。自己访问过CS后给等待队列里的Process发 reply
T 是 Lamport time
Maekawa Algorithm
Ricart-Agrawala 需要征得所有其他process的允许才能进入CS,Maekawa则是只需要征得K(K > N/ 2)的process的允许就可以,只要确保一个process只投一票(只Reply一个Process的 request),就可以保证只有一个Process能过半数,也就是只有一个process能进入CS
可以看出,分布式系统算法用到的常见Topology
1)星形(中心)
2)环状
3)网状(all-to-all)
相关文章推荐
- python(1)介绍和流程控制
- 基于JavaScript创建动态Dom
- 基于redis的Spring session配置
- 12306奇葩验证码引发思考之C#实现验证码程序
- ORACLE RAC的crsd.log频繁的出现警告处理
- Python元组tuple
- python之Wing IDE中文乱码问题
- 环境变量
- 黑马程序员————反射
- 《Android开发艺术探索》读书笔记 (9) 第9章 四大组件的工作过程
- 《JavaScript语言精粹》 学习笔记
- (五)关于Linux的历史习题整理
- 解决高德地图#import <MAMapKit/MAMapKit.h> file not found 问题
- 更改Tab页面标签字体大小
- java中Class.forName的作用浅谈
- easyUI parse.parse()
- codeforces 602B Approximating a Constant Range(线段树+尺取法)
- maven是什么
- ORACLE RAC工作原理
- Xcode-打开代码折叠带