Dijkstra's Self-stabilizing Ring in a message passing environment

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

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


Felix C. Gartner <fcg@acm.org>