Multiprocessing is the practice of using multiple central processing units to execute programs in a single computer. In such systems more than one processor shares work: they may be identical or different in design, and they may share memory or communicate through explicit messages. The term covers both physical multi‑socket configurations and modern multicore chips.

Characteristics and organization

Key design choices include how CPUs access memory and I/O. In symmetric multiprocessing (SMP) all processors are peers and the operating system treats them uniformly. Other arrangements include asymmetric multiprocessing (one processor handles OS tasks, others run user code) and non‑uniform memory access (NUMA), where memory latency varies by processor. Multiprocessing systems rely on interprocessor communication, caches, schedulers and hardware support for interrupts and coherency.

History and development

Multiprocessing evolved from early attempts to increase throughput by adding additional CPUs to a single machine. Over decades it progressed from large mainframes and supercomputers to commodity servers and personal devices as chip manufacturers integrated multiple cores. Advances in operating systems, compilers and hardware coherence protocols made parallel execution increasingly practical.

Uses and importance

Multiprocessing is widely used to improve performance, responsiveness and reliability. Typical applications include server workloads, scientific computing, virtualization, real‑time embedded systems and desktop multitasking. Developers often write multithreaded programs so different threads can run on separate processors, increasing parallelism and reducing wall‑clock time for many tasks.

Benefits and challenges

  • Benefits: higher throughput, better utilization, fault tolerance and improved responsiveness.
  • Challenges: synchronization, race conditions, deadlocks, memory consistency and scalable load balancing.

Multiprocessing should be distinguished from distributed computing: multiprocessing shares a single system image and often shared memory, while distributed systems run across multiple networked machines. For background reading on processor technology, see material about central processing units.