The importance of Concurrent Programming within an Operating System course is largely recognized. The aim of this unit is to provide a student with a sound grounding of the process interation paradigms inside and outside the kernel. After a brief summary of the principles of sequential programming, the basic features of dataflow programming are introduced. Some general definitions are given and some properties are discussed. The data dependency graph is introduced providing the student with simple and effective programming paradigms to rewrite in parallel form some classical sequential algorithms.
The general paradigm of message passing is easily derived from the dataflow principles thinking at the instruction nodes in a coarse-grained fashion. The semaphore-controlled shared memory is obtained as a special case of message passing with empty messages exchanged.
The last part concerns the deadlock problem which is introduced and discussed within the framework of resource allocation graphs. Some important cases are defined, even formally, providing some interesting results on the corresponding graph structure.
All the preceeding topics are broadly discussed in the lecture Paradigmi di Programmazione Concorrente whose contents, chapter by chapter, are breafly summarized.