CS 551: Distributed Operating Systems
A Tree-Based, Mutual Exclusion, Token Algorithm Example
A Tree-Based, Mutual Exclusion, Token Algorithm Example
by Raymond (1989)
- Initially, P0 holds the token.
Also, P0 is the current root.
- P3 wants the token
to get into its critical section.
- So, P3 adds itself to its own FIFO queue
and sends a request message to its parent P2.
- P2 receives the request from P3.
It adds P3 to its FIFO queue
and passes the request message to its parent P1.
- P1 receives the request from P2.
It adds P3 to its FIFO queue
and passes the request message to its parent P0.
- At this point, P3 also wants the token.
Since its FIFO queue is not empty,
it adds itself to its own FIFO queue.
- P0 receives the request message from
P3 though P1.
It surrenders the token
and passes it on to P1.
- It also changes the direction of the arrow between them,
making P1 the root, temporarily.
- P1 removes the top element of its FIFO queue
to see which node requested the token.
- Since the token needs to go to P3,
P1 surrenders the token
and passes it on to P2.
- It also changes the direction of the arrow between them,
making P2 the root, temporarily.
- P2 removes the top element of its FIFO queue
to see which node requested the token.
- Since the token needs to go to P3,
P2 surrenders the token
and passes it on to P3.
- It also changes the direction of the arrow between them,
making P3 the root.
- Now, P3 holds the token.
and can execute its critical section.
- It is able to clear the top (and only)
element of its FIFO queue.
- Note that P3 is the current root.
- In the meantime, P2 checks the top element
of its FIFO queue
and realizes that it also needs to request the token.
- So, P2 sends a request message
to its current parent, P3,
who appends the request to its FIFO queue.
- As soon as P3 completes its critical section,
it checks the top element of its FIFO queue
to see if it is needed elsewhere.
- In this case, P2 has requested it,
so P3 sends it back to P2.
- It also changes the direction of the arrow between them,
making P2 the new root.
- P2 holds the token
and is able to complete its critical section.
- Then it checks its FIFO queue, which is empty.
So it waits until some other node requests the token.
-
(Adapted from ChoJoh97)
Comments: