Introduction
An important and fundamental feature in modern operating systems is concurrent execution of processes/threads. This feature is essential for the realization of multiprogramming, multiprocessing, distributed systems, and client-server model of computation.
Concurrency encompasses many design issues including communication and synchronization among processes, sharing of and contention for resources.
In this discussion we will look at the various design issues/problems and the wide variety of solutions available.