Consider a system consisting of n processes, where each process has a segment of code called a critical section. The important feature of the system is that, when one process is executing in its critical section, no other process is allowed to execute in its critical section. Thus, the execution of critical sections by the processes is mutually exclusive in time. In this paper, the authors study the ℓ-exclusion problem, which is an extension of the traditional mutual exclusion problem. The ℓ-exclusion problem is to guarantee that the system does not enter a state in which more than ℓ processes are executing their critical sections. Clearly, the normal mutual exclusion problem is a special case of ℓ-exclusion with ℓ + 1 .
The proposed solution to the ℓ-exclusion problem is elegant, and a complete proof of its correctness is provided. This solution has two main features. It ensures first-in, first-enabled, a weaker form of the traditional first-come, first-served of entering processes. In the first-in, first-enabled condition, each requesting process is first enabled before actual entry. Second, only shared memory, a relatively weak model, is used as the communication primitive, as opposed to the read-modify-write and fetch-and-add primitives used in other known solutions.
The unnatural formulation of the first-in, first-enabled condition, as pointed out by the authors, may lead the reader to wonder about the significance of the results obtained in this paper. This should not diminish the authors’ contribution to this field. This paper is painstakingly thorough and well-organized. The results are impressive, and I enjoyed reading this paper enormously. I have one minor complaint: there are a number of typographical errors and several missing words, including one in an important algorithm.