CSP/k(ID:796/csp005)Concurrent SP/kfor Concurrent SP/k. Holt et al Waterloo. 1975-8 Concurrent version of the SP/k educational subset dialects of PL/I, made by adding monitors after the fashion of Hoare Related languages
References: Since 1971, the introductory operating systems course at the University of Toronto has included substantial use of a concurrent programming language. Assignments have ranged from simple producer-consumer problems and the simulation of multiple-player card games (e.g., "Spoons") to the implementation of a sophisticated toy operating system involving multiprogramming, spooling, and virtual memory. Students have invariably reacted favorably to these assignments, and we feel that they are invaluable aids in reinforcing lecture material concerning process interaction and operating system structure. In our original concurrent programming language, TOPPS, processes communicated by requesting and releasing units of reusable and consumable resources with associated messages. (TOPPS is described in a technical report edited by Czarnik and Tsichritzis [1973].) Subsequently, a number of more disciplined synchronization and communication mechanisms were devised, and in early 1976, R. C. Holt and R. Menzel designed and implemented CSP/k by adding monitors to the SP/k language processor [Menzel 1976]. CSP/k offers a number of educational advantages. First and foremost, the SP/k language processor upon which it is based provides efficient compilation and execution, reliability, and excellent diagnostics. The CSP/k extensions are minimal (six man-months for the design and implementation) and have withstood the test of several hundred graduate and undergraduate users over an eighteen month period. Monitors provide an elegant solution to a large number of real and toy synchronization problems, and are well documented in the literature. in SIGPLAN Notices 13(05) May 1978 view details systems texts, or to be the sole text for a more specialized course on concurrent programming, such as might be offered to incoming graduate students. Written for a senior undergraduate or beginning graduate student level, it can be used independently of the language processor. The book begins with a general discussion of processes, concurrency, and communication in operating systems. It then discusses a number of the conmmnication and synchronization mechanisms that have been proposed, along with concepts such as busy waiting, deadlock, race conditions, and starvation. After introducing SP/k and CSP/k, the book derives solutions to several problems in concurrency: the dining philosophers, the readers and writers problem, a disk arm scheduler, and buffer allocation for large messages. These examples lead naturally to a more severe test of the expressive power of the language: the design of a sophisticated toy operating system. The book concludes by describing a kernel for the PDP-Ii family that supports monitors. Finally, a set of appendices provides further details of SP/k, CSP/k, and the operating system project. in SIGPLAN Notices 13(05) May 1978 view details in SIGPLAN Notices 13(05) May 1978 view details |