A new self-stabilizing K-out-of-L exclusion algorithm on rings
We present an efficient self-stabilizing solution to the κ-outof-ℓ exclusion problem on a ring. The κ-out-of-ℓ exclusion problem is a generalization of the well-known mutual exclusion problem — there are ℓ units of a shared resource, any process can request at most κ (1 ≤ κ ≤ ℓ) units of the shared resource, and no resource unit can be allocated to more than one process at one time. This solution is based on the circulation of ℓ tokens around the ring. A processor requesting NEED (NEED ≤ κ ≤ ℓ) units of the resource can enter the critical section only upon receipt of NEED tokens. We propose a simple and pessimistic method to handle the deadlock problem. So, after stabilization, no mechanism is needed for the deadlock detection. Moreover, in this paper, we give a formal definition of a new efficiency property, called (κ, ℓ)-liveness, which is a desirable property of any κ-out-of-ℓ exclusion solution. This property allows as many processors as possible to execute their critical sections simultaneously without violating the safety property. We generalize the technique introduced in  to maintain the right number (ℓ) tokens in the system. The tokens are counted without using any counter variable for all processors except one, called the Root. This solution improves the waiting time of an earlier solution  by maintaining a reasonable stabilization time. The waiting time is reduced from (ℓ+ 2)(n − 1) to 2(n − 1), where n is the size of the ring. The stabilization time is 8n instead of 4nin . One nice characteristic of our algorithm is that its space requirement is independent of ℓfor all processors except the Root.
Datta, A. K.,
A new self-stabilizing K-out-of-L exclusion algorithm on rings.
Symposium on Self-Stabilizing Systems, 2003