多个并发进程要求访问共享资源时,进程在共享资源上如何协调工作,才能不致于发生冲突,且保证共享资源的正确性和完整性?
概念
- 分布式互斥:保证临界区资源的互斥利用
- 选举:从多个并发的进程中选择一个进行协调
- 事件排序、排序组播:就进程间事件的发生顺序进行协调达成一致
- 避免分布式死锁:要求一组进程对公共资源进行公平的原子访问,不出现死锁也不出现饿死
- 同步器:在异步网络中实现时钟滴答
分布式互斥
基于消息传送,保证在任何一个时刻只有一个进程访问临界区
互斥算法评价标准:消耗带宽、客户延迟时间、同步延迟(一个进程离开临界区和下一个进程进入临界区的时间差)
- 三大基准
ME1:至多一个进程在使用临界区
ME2:不发生死锁
ME3:顺序执行 - 中央服务器互斥算法(令牌token传递)
满足ME1,ME2,不满足ME3(消息传递延迟)。性能较差。 - 基于环的互斥算法
将进程安排成环,令牌token在环中顺序传递。
满足ME1,ME2,不满足ME3(环拓扑结构不是因请求顺序动态调整的)。
性能上:持续消耗网络带宽,相邻进程进入临界区的延迟可以是1到N个消息传输;但优点是退出只需要一次消息传输。 - Lamport算法
- Ricart-Agrawala算法
- Maekawa投票算法
选举
评价标准:发送消息总数,算法回转时间
- 基于环的选举算法
一组进程连接成环,全体人员依次传递消息,参与选举的人比较自己的标识符与传递过来的标识符,向下传较大的那一个。如果传过来的标识符是自己的,则在整个环中传递宣布当选信息,再在整个环中确认当选。 - 霸道算法
假设进程可能崩溃,消息传递可靠,且所有进程知道其他进程的标识符。在协调者发生故障时重新选举。`
排序组播
FIFO排序,因果排序,全排序, 混合排序