Ricart–Agrawala algorithm

The Ricart–Agrawala algorithm is an algorithm for mutual exclusion on a distributed system. This algorithm is an extension and optimization of Lamport's Distributed Mutual Exclusion Algorithm, by removing the need for release messages.[1] It was developed by computer scientists Glenn Ricart and Ashok Agrawala.

Algorithm

edit

Terminology

edit
  • A site is any computing device which runs the Ricart-Agrawala Algorithm
  • The requesting site is the site which is requesting to enter the critical section.
  • The receiving site is every other site which is receiving a request from the requesting site.

Algorithm

edit

Requesting Site

  • Sends a message to all sites. This message includes the site's name, and the current timestamp of the system according to its logical clock (which is assumed to be synchronized with the other sites)

Receiving Site

  • Upon reception of a request message, immediately sending a timestamped reply message if and only if:
  • the receiving process is not currently interested in the critical section OR
  • the receiving process has a lower priority (usually this means having a later timestamp)
  • Otherwise, the receiving process will defer the reply message. This means that a reply will be sent only after the receiving process has finished using the critical section itself.

Critical Section:

  • Requesting site enters its critical section only after receiving all reply messages.
  • Upon exiting the critical section, the site sends all deferred reply messages.

Performance

edit
  • Max number of network messages:  
  • Synchronization Delays: One message propagation delay

Common optimizations

edit

Once site   has received a   message from site  , site   may enter the critical section multiple times without receiving permission from   on subsequent attempts up to the moment when   has sent a   message to  . This is called Roucairol-Carvalho optimization or Roucairol-Carvalho algorithm.

Problems

edit

One of the problems in this algorithm is failure of a node. In such a situation a process may starve forever. This problem can be solved by detecting failure of nodes after some timeout.

See also

edit

References

edit
  1. ^ Ricart, Glenn; Agrawala, Ashok K. (1 January 1981). "An optimal algorithm for mutual exclusion in computer networks". Communications of the ACM. 24 (1): 9–17. doi:10.1145/358527.358537. S2CID 1779615.
  • Maekawa, M., Oldehoeft, A., Oldehoeft, R.(1987). Operating Systems: Advanced Concept.Benjamin/Cummings Publishing Company, Inc.