一篇文章帮你理解基于逻辑时钟的互斥算法。--分布式计算互斥算法

文章介绍了Lampor时间戳互斥算法,该算法用于进程间的资源竞争,通过时间戳和申请队列确保资源的有序分配。每个进程发送申请和承认报文,并基于时间戳顺序决定资源归属。改进后的算法减少了不必要的承认报文,降低了通信成本。
摘要由CSDN通过智能技术生成

        在介绍 Lampor 时间戳互斥算法'之前,我们做如下假定:最初只有一个进程获得穿 源,如 P.:P 向 P,发送报文时,P,能按发送的顺序接收到,并且最终总能收到;每个进程均 可向其他任何进程直接发送报文;每个进程均有一个申请队列,队列中最初只有一项 T: P。申请,这里 P。是最初获得资源的进程,T,是比其他任何逻辑时钟值均小的初值。 Lamport 时间戳互斥算法由以下5 条规则组成,为方便起见,认为每条规则定义的活动形成 单个事件。

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

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

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

(4)一个进程 P,如果收到 P,释放资源的报文,它从自己的申请队列中删除 T:P,申 请报文。

(5)当满足下述两个条件时,申请资源的进程 P,获得资源。 ①P,的申请队列中有T.:P,申请报文,并且根据时间戳它排在所有其他进程发来的 申请报文前面。 @ P 收到所有其他进程的承认报文,其上面的时间戳值大于'T.。

 

        其实很好理解这个图:每一段进程申请的资源都会获得承认报文,而只有当申请资源的两条请求报文都得到承认报文之后才能的到申请的资源,而根据时间戳前后顺序,由先申请的使用然后释放给后申请的

 

 改进Lamport时间戳互斥算法

        Lamport 时间戳互斥算法可以做如下改进:假设进程 P,在发出自己的请求后,收到一 个来自进程 P.的请求,而按照排序规则 P,的请求排在 P,的请求之后。在这种情况下,P 没有必要给 P 发送承认报文,这是因为当进程 P 收到进程 P,的请求时,它认为自己的请 求自动得到 P,的承认。改进以后,进入一次临界区最多需要 3(n-1)个报文。图 5.2.3 是图 5.2.2 改进后的情况。

意思其实也就是p2在发出请求之后收到了p1的请求就没有必要回复了,因为p2页向p1发出了请求

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值