  In an anonymous shared memory system, all inter-process communications are
via shared objects; however, unlike in standard systems, there is no a priori
agreement between processes on the names of shared objects [14,15].
Furthermore, the algorithms are required to be symmetric; that is, the
processes should execute precisely the same code, and the only way to
distinguish processes is by comparing identifiers for equality. For such a
system, read/write registers are called anonymous registers. It is known that
symmetric deadlock-free mutual exclusion is solvable for any finite number of
processes using anonymous registers [1]. The main question left open in [14,15]
is the existence of starvation-free mutual exclusion algorithms for two or more
processes. We resolve this open question for memoryless algorithms, in which a
process that tries to enter its critical section does not use any information
about its previous attempts. Almost all known mutual exclusion algorithms are
memoryless. We show that (1) there is a symmetric memoryless starvation-free
mutual exclusion algorithm for two processes using $m \geq 7$ anonymous
registers if and only if $m$ is odd; and (2) there is no symmetric memoryless
starvation-free mutual exclusion algorithm for $n\geq 3$ processes using (any
number of) anonymous registers. Our impossibility result is the only example of
a system with fault-free processes, where global progress (i.e.,
deadlock-freedom) can be ensured, while individual progress to each process
(i.e., starvation-freedom) cannot. It complements a known result for systems
with failure-prone processes, that there are objects with lock-free
implementations but without wait-free implementations [2,5].
