
This set of example programs shows a historical perspective of solutions
to the problem of critical sections using software as the only mechanism.
These programs illustrate a number of the problems in trying to achieve
a working solution to this problem. The programs should to taught in the
following order, from non-working solutions to working solutions:

   Alternation
   PermissionLock
   DeclareIntent
   RetractIntent
   PrioritizeEntry
   Dekker
   GLPeterson

Finally, there is a simple example of an N process solution to the problem
of a critical section. This program illustrates, as simply as possible, the
complexity of such solutions.
