📜  分布式系统互斥中的 Ricart-Agrawala 算法

📅  最后修改于: 2022-05-13 01:56:11.513000             🧑  作者: Mango

分布式系统互斥中的 Ricart-Agrawala 算法

先决条件:分布式系统中的互斥
Ricart-Agrawala 算法是 Glenn Ricart 和 Ashok Agrawala 提出的分布式系统中的互斥算法。该算法是Lamport分布式互斥算法的扩展和优化。与 Lamport 算法一样,它也遵循基于许可的方法来确保互斥。

在这个算法中:

  • 使用两种类型的消息( REQUESTREPLY ),并且假定通信通道遵循 FIFO 顺序。
  • 一个站点向所有其他站点发送 REQUEST消息以获得他们进入临界区的许可。
  • 一个站点向其他站点发送 REPLY消息以允许其进入临界区。
  • 使用 Lamport 的逻辑时钟为每个关键部分请求提供时间戳。
  • 时间戳用于确定临界区请求的优先级。较小的时间戳比较大的时间戳具有更高的优先级。临界区请求的执行总是按照它们的时间戳顺序执行。

算法:

  • 进入临界区:
    • 当站点 S i想要进入临界区时,它会向所有其他站点发送带时间戳的 REQUEST 消息。
    • 当一个站点的Sj接收来自站点S I请求消息,它发送一个应答信息,站点S I当且仅当
      • 站点 S j既不请求也不当前执行临界区。
      • 如果站点 S j正在请求,则站点 S i的请求的时间戳小于其自己的请求。

        否则请求会被站点 S j推迟。

  • 执行临界区:
    • 如果站点 S i已收到来自所有其他站点的 REPLY消息,则它进入临界区。
  • 释放临界区:
    • 在退出站点 S 时,向所有延迟请求发送 REPLY 消息。

消息复杂度:
Ricart–Agrawala 算法需要在每个临界区执行中调用 2(N – 1) 条消息。这 2(N – 1) 条消息涉及

  • (N – 1) 条请求消息
  • (N – 1) 条回复消息

Ricart-Agrawala 算法的缺点:



  • 不可靠的方法:系统中任何一个节点的故障都可以停止系统的进程。在这种情况下,该过程将永远处于饥饿状态。
    节点故障的问题可以通过在一定的超时后检测故障来解决。

表现:

  • 同步延迟等于最大消息传输时间
  • 每个临界区执行需要 2(N – 1) 条消息