Quelle est la différence entre la multiprogrammation et le multitâche

10

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.

  1. Cette vue d'ensemble est-elle correcte? Si non, est-ce parce que WP est incorrect ou parce que j'ai mal lu WP?
  2. Pourquoi certaines sources semblent-elles confondre multiprogrammation et multitâche?
jsj
la source
1
"avec des sources moins réputées (comme mon professeur d'université)" - oh mon cher. J'espère qu'il est plus réputé que Wikipedia, qui a beaucoup de contenu à moitié cuit sur CS.
Raphael
la "multiprogrammation" semble être davantage une approche historique. le multitâche moderne est en effet lié au blocage des E / S mais ce n'est qu'un des facteurs utilisés pour jongler avec les processus. de plus, presque tous les multitâches modernes sont préemptifs avec le support du CPU (qui n'avait pas toujours ce support il y a des années et les processus bien élevés étaient censés appeler des méthodes d'attente basées sur le système d'exploitation qui soutenaient la coopération).
vzn
2
@Raphael, vous pouvez rendre service au monde entier en les préparant à la perfection.
vonbrand
1
@vonbrand J'ai essayé, mais malheureusement, il y a suffisamment d'experts à moitié cuits pour contrer de telles tentatives.
Raphael
@Raphael, et cette foule ne se présente pas ici aussi?
vonbrand

Réponses:

9

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.

vonbrand
la source
l'article WP semble impliquer que la multiprogrammation manque de mémoire virtuelle, par opposition au multitâche (systèmes). Historiquement, cela peut être vrai, mais la définition est-elle orthogonale?
didierc
1
Nous avions un IBM S / 370 multiprogrammé ici dans les années 70, et il n'avait certainement pas de mémoire virtuelle (je semble me souvenir qu'il avait un disque utilisé uniquement pour la mise en file d'attente). La mémoire virtuelle vous permet d'avoir encore plus de programmes dans la mémoire RAM limitée (car vous ne gardez que les parties "les plus utilisées" à portée de main), une meilleure utilisation de cette façon. Alors oui, je les considérerais comme totalement indépendants; mais dans la pratique aujourd'hui, vous ne trouverez pas l'un sans l'autre. Sauf peut-être dans votre routeur WiFi ou téléphone portable ...
vonbrand
D'accord. Je le pensais aussi, en fait. Les systèmes embarqués manquent en effet souvent d'une protection mémoire adéquate, j'en étais conscient. Néanmoins, avec des programmes bien comportés, cela ne devrait pas être un problème. Cela dépend bien sûr des fournisseurs de programmes.
didierc
@didierc orthogonal? vous voulez dire un droit mutuellement exclusif?
jsj
2

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.

Rajesh Amarnath
la source
0

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.

Vikash Jangra
la source