Je trouve difficile de différencier clairement entre la multiprogrammation et le multitâche.
Ma principale source est Wikipédia , mais l'article de WP semble être un peu en contradiction avec des sources moins réputées (comme mon professeur d'université).
Comme je lis WP, la multiprogrammation est un moyen rudimentaire d'augmenter le débit du processeur, en changeant de contexte lorsqu'un processus attend des E / S.
La multiprogrammation ne donne aucune garantie qu'un programme s'exécutera en temps opportun. En effet, le tout premier programme peut très bien fonctionner pendant des heures sans avoir besoin d'accéder à un périphérique.
Le partage de temps coopératif , synonyme de multitâche coopératif , est une amélioration de la multiprogrammation (avec laquelle il n'est pas synonyme). Le CPU change de contexte régulièrement pour donner l'impression d'une exécution simultanée, mais les processus doivent encore céder - et des programmes mal conçus peuvent affamer le reste du système.
Le multitâche préemptif prend un contrôle plus agressif de la planification, donnant la priorité à certains processus par rapport à d'autres, etc.
- Cette vue d'ensemble est-elle correcte? Si non, est-ce parce que WP est incorrect ou parce que j'ai mal lu WP?
- Pourquoi certaines sources semblent-elles confondre multiprogrammation et multitâche?
Réponses:
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.
la source
Différence entre le multitâche et la multiprogrammation? Le multi-tâches est une extension logique de la multi-programmation. Classiquement, dans un environnement multi-programmation, plus d'un utilisateur partage le processeur et le processeur passe rapidement d'un utilisateur à un autre, offrant une totale transparence les uns des autres. En multitâche, l'utilisateur est remplacé par des programmes, c'est-à-dire que plus d'un programme partage le processeur et le processeur passe rapidement d'un programme à un autre. En fait, un logiciel résidant sur le disque est un programme. Lorsqu'il est introduit dans la RAM pour exécution, il est appelé processus ou tâche et lorsqu'il se trouve à l'intérieur du processeur et en cours d'exécution, il est appelé thread. Le multiprograaming est donc essentiellement destiné aux utilisateurs multiples, et le multitâche est destiné aux utilisateurs uniques avec plusieurs programmes. Étant donné que la plupart des systèmes d'exploitation modernes prennent en charge les deux, ils sont souvent orthographiés de manière interchangeable.
la source
Il existe de nombreuses différences entre le multitâche et la multiprogrammation.
Le multitâche exécute plus d'une tâche à la fois. Par exemple, vous écoutez une chanson, imprimez un papier et saisissez MS-Word en même temps.
Lors de la multiprogrammation, dans ce type de système d'exploitation, nous améliorons l'utilisation du processeur en utilisant la mise en mémoire tampon et la mise en file d'attente. En exécution séquentielle, la CPU reste inactive après l'exécution d'un programme et charge le programme suivant à partir de la mémoire principale. Pendant les opérations d'E / S, l'unité centrale de traitement se trouve également en mode idel, la CPU reste également inactive, mais en utilisant un environnement multiprogrammation, la CPU passe au programme suivant et le traite. Il s'agit d'une technique utilisée à l'aide de la mise en mémoire tampon et de la mise en file d'attente.
la source