Ils sont plus ou moins synonymes. La multiprogrammation est plus utilisée lorsqu'un processeur est impliqué, c'est-à-dire qu'il est commuté d'un processus à l'autre, processus qui resiguent simultanément en mémoire. Il y a eu des discussions, et il ne basculait plus entre les programmes ...
Les processeurs, en particulier la ligne Intel, disposaient des mécanismes d'un véritable multitâche (interruption de la minuterie, instructions privilégiées) depuis au moins le 80286. Le M68000 utilisé dans le tout premier Mac était un processeur doté de capacités de prise de vues à part entière. Ce n'est pas un développement récent dans les architectures. Notez que la toute première fois que les systèmes partagés ont échangé les programmes de l'utilisateur, ils n'étaient donc pas vraiment multiprogrammés dans le sens d'avoir plusieurs programmes en mémoire en même temps.
L'idée est d'avoir plusieurs programmes résidant en mémoire simultanément, de sorte que lorsque l'on cède le CPU (en finissant ou en attendant) il y en a d'autres prêts à utiliser le CPU, augmentant ainsi l'utilisation du CPU (et comme vous pouvez considérer que chaque rafale de CPU est préparation à l'utilisation des E / S, augmentation de l'utilisation globale). Cela donne un meilleur débit (important dans les systèmes batch).
Le partage du temps est venu, plusieurs utilisateurs interactifs se sont connectés à la machine. Même idée, gardez leurs programmes mais changez entre eux assez rapidement pour qu'ils aient l'illusion "d'avoir un ordinateur pour eux". Nécessite un temporisateur qui interrompt le CPU pour éviter la monopolisation.
Sur les machines personnelles, il n'y avait pas beaucoup d'incitation à exécuter plusieurs programmes à la fois, du moins au début (un utilisateur devant une machine très limitée ne s'attendait pas à grand-chose). Au fur et à mesure que les machines grandissaient, une façon de contourner cela et de permettre plusieurs programmes à la fois sans changer beaucoup le système d'exploitationétait "multitâche coopératif", en ce que chaque programme est supposé céder périodiquement au système d'exploitation pour en sélectionner un autre à exécuter. Comme le programme qui fait cela est en plein contrôle, il peut choisir de le faire quand rien ne pourrait être gâché par les autres. Inutile de dire qu'un programme "oubliant" de remplir son devoir de rendement obtient une augmentation intéressante des performances ... les premiers systèmes Mac fonctionnaient de cette façon, et pour les raisons ci-dessus, cela n'a pas duré trop longtemps. Sur les systèmes embarqués qui n'ont pas ou seulement un système d'exploitation rudimentaire et un ensemble de programmes étroitement contrôlés en cours d'exécution, c'est certainement une option intéressante.