This textbook provides a comprehensive exploration of the principles of concurrent programming, focusing on both theoretical foundations and practical implementation techniques. Its content ranges from basic concepts such as thread creation and process management to more advanced topics such as inter-process communication, synchronization mechanisms, and memory management. It includes discussions on monitors, MPI, RMI, rendezvous, and rate monotonic analysis, providing both foundational knowledge and practical solutions.
The book is divided into four chapters, each building on fundamental aspects of concurrent and parallel programming. Chapter 1 introduces concurrent programming by explaining key concepts such as processes as independent execution units that perform tasks concurrently, concurrency models using techniques like mutual exclusion and synchronization primitives, and process creation through methods like fork/join and POSIX threads. Next, chapter 2 explores key process synchronization mechanisms in concurrent programming, focusing on both mutual exclusion problems and the use of monitors as a high-level solution for managing shared resources. Chapter 3 then focuses on message passing systems as a fundamental approach for communication and synchronization in distributed systems, where processes cannot share memory, and provides models like CSP and technologies like RMI to facilitate structured, reliable communication between processes. Eventually, chapter 4 dives into the scheduling mechanisms of real-time systems, focusing on how tasks are prioritized and scheduled to meet strict timing constraints with algorithms to address priority inversion while considering sporadic and aperiodic tasks.
This book is designed to be used as a textbook for undergraduate and graduate courses in concurrent programming, operating systems, and distributed systems. Its well-structured layout, comprehensive case studies, numerous exercises, and illustrating real-world examples make it an ideal teaching resource.