The execution is normally accomplished in single-processor systems by switching the processor rapidly among the separate tasks or processes of the single user. As the level of parallelism increases, operating system overhead increases. More system resources are devoted to managing the parallel processes. The overhead is at times seen as a disadvantage, but has generally been considered worthwhile because of the added value of parallel computation. Process-level parallelism can be implemented on uniprocessor or multiprocessor systems, but the real performance gains are realized on multiprocessors that execute parallel activities truly simultaneously.
Processes are expensive.
Today, huge numbers of processes are normally supported on microprocessor systems, because not all the processes need to be active at once, and active processes rarely need all the processor's attention to make reasonable progress. The operating system rapidly switches among processes to give the illusion of continuous service. This protection contributes to the substantial overhead of maintaining separate concurrent activities. Because processes require such great overhead, it is only practical to put them to work on the most substantial parallel tasks. But many problems consist of large numbers of simple parallel activities.