After you, Alfonse: a mutual exclusion toolkit

Teaching concurrency and synchronization is an important component of every computer science curriculum. With the increasing emphasis on parallel processing, knowledge concerning synchronization of concurrent processes is more necessary than ever. In order for our students to obtain a thorough understanding of concurrency, they must have practical experience writing concurrent programs with various synchronization techniques. This practical work supports the difficult theoretical concepts introduced in lectures and textbooks. Contemporary textbooks for operating system courses and concurrent programming books [1, 2, 3, 4] deal with a diverse set of concurrency issues (mutual exclusion, the critical section problem, starvation, deadlock, and classical synchronization problems), as well as a diverse set of synchronization techniques (semaphores, critical regions, monitors, shared memory communication, rendezvous, and CSP). Although these books provide extensive theoretical information on concurrency and synchronization, they can not provide the desired “hands-on” experience. To obtain this practical experience, three options exist:

[1]  Peter B. Galvin,et al.  Operating System Concepts, 4th Ed. , 1993 .

[2]  Alan Burns,et al.  Concurrent programming , 1980, Operating Systems Engineering.

[3]  Raymond W. Turner,et al.  Operating Systems: Design and Implementation , 1990 .

[4]  Alan Burns,et al.  The Teaching Language Pascal-FC , 1990, Comput. J..

[5]  Maurice Herlihy,et al.  A methodology for implementing highly concurrent data structures , 1990, PPOPP '90.

[6]  Patrick D. Terry Programming language translation - a practical approach , 1986 .

[7]  John F. Wakerly,et al.  The programming language PASCAL , 1979, Microprocessors and microsystems.

[8]  Abraham Silberschatz,et al.  Operating System Concepts, 5th Edition , 1994 .

[9]  Andrew S. Tanenbaum,et al.  Operating systems: design and implementation , 1987, Prentice-Hall software series.

[10]  G. L. Davies Teaching concurrent programming with Pascal-FC , 1990, SGCS.

[11]  Patrick D. Terry,et al.  Programming language translation , 1986 .

[12]  Gordon Davies Developments in Pascal-FC , 1989, SIGP.

[13]  Kwok-bun Yue An undergraduate course in concurrent programming using Ada , 1994, SGCS.

[14]  Stephen J. Hartley Operating Systems Programming: The SR Programming Language , 1995 .

[15]  Niklaus Wirth,et al.  Modula: A language for modular multiprogramming , 1977, Softw. Pract. Exp..

[16]  Alan Burns,et al.  Pascal-FC: a language for teaching concurrent programming , 1988, SIGP.

[17]  P. Brinch-Hansen,et al.  The programming language Concurrent Pascal , 1975 .

[18]  Ronald J. Leach Experiences teaching concurrency in Ada , 1987, ALET.

[19]  Sakti Pramanik,et al.  The implementation kit with monitors , 1984, SIGP.

[20]  David E. Boddy SOS: a monitor-based operating system for instruction , 1988, SIGP.

[21]  Richard C. Holt Structured concurrent programming with operating systems applications , 1978 .

[22]  Alan Burns Concurrent programming in Ada , 1985 .

[23]  C. A. R. Hoare,et al.  Monitors: an operating system structuring concept , 1974, CACM.

[24]  Mordechai Ben-Ari,et al.  Principles of concurrent programming , 1982 .

[25]  John A. Trono A new exercise in concurrency , 1994, SGCS.