Research Article
A Hybrid Distributed Mutual Exclusion Algorithm for Cluster-Based Systems
Algorithm 2
Raysuz’s algorithm for ordinary node.
Step 1. Upon or and receives request from | 1.1 if then | 1.1.1 enqueue to RaymQ | 1.1.2 if !Asked | 1.1.2.1 send own request to Dir | 1.1.2.2 set Asked True | 1.1.3 end if | 1.2 else | 1.2.1 increase corresponding request array element by 1 | 1.3 end if | Step 2. Upon or and receives ExToken | 2.1 set Asked False | 2.2 dequeue RaymQ and set Dir with dequeued node | 2.3 send ExToken to Dir | 2.4 if RaymQ.length 1 then | 2.4.1 send ExReq to Dir | 2.4.2 set Asked True | 2.5 end if | Step 3. Upon and receives Pulse | 3.1 increase corresponding request array element by 1 and broadcast request | 3.2 | Step 4. Upon receives InToken for and SuzQ.length = 0 | 4.1 enter CS | 4.2 update SuzQ | 4.3 send InToken to head of SuzQ | 4.4 set Dir as head | Step 5. Upon receives InToken for and SuzQ.length 0 | 5.1 enter CS | 5.2 update SuzQ | 5.3 | Step 6. Upon receives request from | 6.1 if then | 6.1.1 enqueue to RaymQ | 6.1.2 if !Asked | 6.1.2.1 send own request to Dir | 6.1.2.2 set Asked True | 6.1.3 end if | 6.2 else | 6.2.1 increase corresponding request array element by 1 | 6.2.2 update SuzQ | 6.2.3 send InToken to | 6.2.4 | 6.3 end if | Step 7. Upon and receives Pulse | 7.1 enter CS |
|