您的位置:首页 > 其它

分布式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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: