Here's a version of Dijkstra's famous self-stabilizing mutual-exclusion ring. The algorithm here is a version of Dijkstra's original algorithm transformed into a message passing environment by Afek and Brown in a 1993 paper.
The applet simulates a simple network of nodes connected together to
form a ring. The task of the algorithm is to guarantee mutual exclusion
by passing a token along the ring. A node having the token is pictured
as
. The good property
about the algorithm is that no matter in what state it starts (i.e. a state
with possibly more than one token or none at all), it will reach a state
in which the is exactly one token in bounded time.
You may click on the nodes and channels to inject faults into the system or press the ``reset all'' and ``perturb all'' buttons on the top panel.
[This Applet will only show if you have a Browser
for JDK1.1 (e.g. Hotjava, Netscape 4 and IE4.0).]
There's another simulation of Dijkstra's protocol done by Arul Kumaravel at The University of Iowa.
You may have a look at