What is the use of multiprogramming on individual processors?
In the usual multiprocessor, which is dealing with independent or coarse-grained synchronization granularity, it is clear that every individual processor must be able to switch among a number of processes to achieve high use and therefore better performance. But when we deal with medium grained applications running on a multiprocessor with several processors then the situation is less clear. When several processors are available, it is no longer dominant that each single processor be busy as much as possible. Relatively, we are apprehensive to provide the best performance on average for the applications. The application that consists of a number of threads may possibly run poorly unless all its threads are available to run concurrently.