/**
* @同步化
* @时钟同步
* 在集中式系统中,时间是明确的,当进程想要知道时间则执行一个系统调用,内核便响应时间。在分布式系统中则不容易!
*
* @互斥
* @集中式算法
* 选举一个进程协作者。无论何时一个进程要访问共享资源,都要向协作者发送请求信息,说明访问资源并请求准许。
* 如果当前没有其他进程访问资源,协作者就发送准许的应答消息。
*
* @非集中式算法
* 只要进程需要访问共享资源,只需要从 m > n / 2个协作者中获得多数投票即可。
* 如果对资源的访问被拒绝。则将在一个随机的时间后继续尝试获取资源。
*
* @分布式算法
* 系统中所有事件完全排序的。事件发生是非常明确的。
* @当一个进程要访问一个共享资源,构造一个信息,其中包含访问的资源名,进程号,当前逻辑时间。
* 然后将消息发送给其他进程,包括自己,消息传输是可靠的。
*
* @当一个进程接收来自于另一个进程的请求消息时,根据自己与消息中的资源相关的状态来决定它要采取的动作。
* @若接受者没有访问资源,而且也不想访问它,就向发送者发送一个ok消息
* @若接受者已经获取对资源的访问,那么它就不进行问答,而是将请求者放入队列
* @如果接收者想访问资源但而尚未访问时。他将收的消息的时间戳与包含在它发送给其他进程的消息中的时间戳比较。
* 时间戳较早的获胜。
* @如果收到的时间戳较早,那么接受者向发送者发一个ok的回应
* @如果接受者时间戳早,那么接收者将收到的请求放入队列中,并且不发送任何消息。
*
* @发送许可请求后,进程进行等待,直到其他所有进程都给予了许可消息为止。
* 一旦得到所有进程的许可,继续执行。
* 当进程执行完成后,它向其队列中的所有进程发送ok,并从队列中移除。
*
* @真正需要的是对一种防止两个进程同时访问资源的方法。
* @当一个进程从大多数进程获得许可(而不是需要所有进程的许可),它就可以获得许可。
* @一个进程许可另一个进程,它在第一个进程释放许可之前,是不能授权给其他进程相同许可的。
*
* @令牌环算法
* 在软件中构造一个逻辑环,每个进程有唯一的标识并且知道下一个进程的位置。
* 生成令牌在环中传递,如果需要资源访问就需要获取令牌,使用完资源之后释放令牌继续传递。
*/
08-17
1810
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)