Son más o menos sinónimos. La multiprogramación se usa más cuando una CPU está involucrada, que se está cambiando de un proceso a otro, procesos que están resignando en la memoria simultáneamente. Llegaron los hilos, y ya no estaba cambiando entre programas ...
Los procesadores, particularmente la línea de inteligencia, tenían los mecanismos para una verdadera multitarea (interrupción del temporizador, instrucciones privilegiadas) desde al menos el 80286. El M68000 utilizado en la primera Mac era un procesador con capacidades de multitarea completas. Este no es un desarrollo reciente en arquitecturas. Tenga en cuenta que la primera vez que los sistemas compartidos cambiaron los programas del usuario dentro y fuera, y por lo tanto no estaban realmente multiprogramados en el sentido de tener varios programas en la memoria al mismo tiempo.
La idea es tener varios programas que residan en la memoria simultáneamente, de modo que cuando uno rinde la CPU (al terminar o al esperar) haya otros listos para usar la CPU, lo que aumenta la utilización de la CPU (y como puede considerar que cada ráfaga de CPU es prepararse para un uso de E / S, aumentar el uso general). Esto proporciona un mejor rendimiento (importante en los sistemas por lotes).
Junto con el tiempo compartido, varios usuarios interactivos se conectaron a la máquina. La misma idea, mantener sus programas alrededor pero cambiar entre ellos lo suficientemente rápido para que tengan la ilusión de "tener una computadora para ellos mismos". Requiere un temporizador que interrumpa la CPU para evitar la monopolización.
En las máquinas personales no había muchos incentivos para ejecutar varios programas a la vez, al menos inicialmente (un usuario frente a una máquina severamente limitada no esperaba mucho). A medida que las máquinas crecieron, una forma de evitar esto y permitir varios programas a la vez sin cambiar mucho el sistema operativoera "multitarea cooperativa", ya que se supone que cada programa cede periódicamente al sistema operativo para seleccionar otro para ejecutar. Como el programa que hace esto tiene el control total, puede seleccionar hacer esto cuando otros no puedan arruinar nada. Huelga decir que un programa que "olvida" cumplir su deber de rendimiento obtiene un impulso interesante en el rendimiento ... los primeros sistemas Mac funcionaron de esta manera, y por las razones anteriores esto no duró demasiado. En sistemas embebidos sin o con solo un sistema operativo rudimentario y un conjunto de programas estrictamente controlados, esta es ciertamente una opción atractiva.