Maekawa's algorithm

Maekawa's algorithm is an algorithm for mutual exclusion on a distributed system. The basis of this algorithm is a quorum like approach where any one site needs only to seek permissions from a subset of other sites.

Algorithm

Terminology

  • A site is any computing device which is running the Maekawa's Algorithm
  • For any one request of the critical section:
    • The requesting site is the site which is requesting entry into the critical section.
    • The receiving site is every other site which is receiving the request from the requesting site.
  • ts refers to the local time stamp of the system according to its logical clock.

Algorithm

Requesting site:

  • A requesting site P_i sends a message \text{request}(ts, i) to all sites in its quorum set R_i.

Receiving site:

  • Upon reception of a \text{request}(ts, i) message, the receiving site P_j will:
    • If site P_j does not have an outstanding \text{grant} message (that is, a \text{grant} message that has not been released), then site P_j sends a \text{grant}(j) message to site P_i.
    • If site P_j has an outstanding \text{grant} message with a process with higher priority than the request, then site P_j sends a \text{failed}(j) message to site P_i and site P_j queues the request from site P_i.
    • If sites P_j has an outstanding \text{grant} message with a process with lower priority than the request, then site P_j sends an \text{inquire}(j) message to the process which has currently been granted access to the critical section by site P_j. (That is, the site with the outstanding \text{grant} message.)
  • Upon reception of a \text{inquire}(j) message, the site P_k will:
    • Send a \text{yield}(k) message to site P_j if and only if site P_k has received a \text{failed} message from some other site or if P_k has sent a yield to some other site but have not received a new \text{grant}.
  • Upon reception of a \text{yield}(k) message, site P_j will:
    • Send a \text{grant}(j) message to the request on the top of its own request queue. Note that the requests at the top are the highest priority.
    • Place P_k into its request queue.
  • Upon reception of a \text{release}(i) message, site P_j will:
    • Delete P_i from its request queue.
    • Send a \text{grant}(j) message to the request on the top of its request queue.

Critical section:

  • Site P_i enters the critical section on receiving a \text{grant} message from all sites in R_i.
  • Upon exiting the critical section, P_i sends a \text{release}(i) message to all sites in R_i.

Quorum set (R_x):
A quorum set must abide by the following properties:

  1. \forall i \,\forall j\, [R_i \bigcap R_j \ne \empty ]
  2. \forall i\, [ P_i \in R_i ]
  3. \forall i\, [ |R_i| = K ]
  4. Site P_i is contained in exactly K request sets
Therefore:
  • |R_i| \geq \sqrt{N-1}

Performance

  • Number of network messages; 3 \sqrt{N} to 6 \sqrt{N}
  • Synchronization delay: 2 message propagation delays
↑Jump back a section

References

  • Mamoru Maekawa, Arthur E. Oldehoeft, Rodney R. Oldehoeft (1987). Operating Systems: Advanced Concept. Benjamin/Cummings Publishing Company, Inc.
  • B. Sanders (1987). The Information Structure of Distributed Mutual Exclusion Algorithms. ACM Transactions on Computer Systems, Vol. 3, No. 2, pp. 145–59.
↑Jump back a section

Read in another language

This page is available in 2 languages

Last modified on 15 March 2013, at 07:23