0% ont trouvé ce document utile (0 vote)
25 vues6 pages

Comprendre la multiprogrammation

La multiprogrammation permet à plusieurs programmes de s'exécuter simultanément sur un ordinateur à processeur unique en alternant rapidement entre les programmes. Le système d'exploitation exécute une partie d'un programme, puis une partie d'un autre, donnant l'impression à l'utilisateur que tous les programmes s'exécutent en même temps, bien qu'un seul utilise le processeur à un moment donné. La multiprogrammation vise à optimiser l'utilisation des ressources informatiques en exécutant des programmes supplémentaires lorsque l'un est en attente d'entrée/sortie. La mémoire virtuelle et les machines virtuelles permettent aux programmes d'accéder aux ressources de manière indépendante sans voir les autres programmes en cours d'exécution. La multiprogrammation se distingue du véritable multitâche, qui peut interrompre les programmes en cours d'exécution.

Traduit par

ScribdTranslations
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
25 vues6 pages

Comprendre la multiprogrammation

La multiprogrammation permet à plusieurs programmes de s'exécuter simultanément sur un ordinateur à processeur unique en alternant rapidement entre les programmes. Le système d'exploitation exécute une partie d'un programme, puis une partie d'un autre, donnant l'impression à l'utilisateur que tous les programmes s'exécutent en même temps, bien qu'un seul utilise le processeur à un moment donné. La multiprogrammation vise à optimiser l'utilisation des ressources informatiques en exécutant des programmes supplémentaires lorsque l'un est en attente d'entrée/sortie. La mémoire virtuelle et les machines virtuelles permettent aux programmes d'accéder aux ressources de manière indépendante sans voir les autres programmes en cours d'exécution. La multiprogrammation se distingue du véritable multitâche, qui peut interrompre les programmes en cours d'exécution.

Traduit par

ScribdTranslations
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Multiprogrammation

La multiprogrammation est une forme rudimentaire de traitement parallèle dans laquelle plusieurs programmes sont
s'exécuter en même temps sur un uniprocesseur. Puisqu'il n'y a qu'un seul processeur, il ne peut y avoir de vrai
exécution simultanée de différents programmes. Au lieu de cela, le système d'exploitation exécute une partie de l'un
programme, puis une partie d'un autre, et ainsi de suite. Pour l'utilisateur, il semble que tous les programmes s'exécutent à
le même temps.
La multiprogrammation informatique est l'allocation d'un système informatique et de ses ressources à plus
qu'une application, un travail ou un utilisateur simultané ("programme" dans cette nomenclature).

Au départ, cette technologie a été recherchée afin d'optimiser l'utilisation d'un système informatique, puisque le temps
et les ressources de traitement étaient souvent gaspillées lorsqu'un seul travail attendait une interaction humaine ou
autres opérations d'entrée/sortie de données.

La capacité de multiprogrammation a été développée comme une fonctionnalité des systèmes d'exploitation à la fin des années 1950.

et est devenu d'usage courant dans l'informatique de grande taille au milieu à la fin des années 1960. Cela a suivi le
développement de systèmes matériels qui possédaient la logique de circuit requise et les ensembles d'instructions pour
faciliter le transfert de contrôle entre le système d'exploitation et un ou plusieurs indépendants
applications, utilisateurs ou flux de travail.

L'utilisation de la multiprogrammation a été améliorée par l'arrivée de la mémoire virtuelle et de la virtuelle


la technologie des machines, qui a permis aux programmes individuels d'utiliser la mémoire et le fonctionnement
ressources système comme si d'autres programmes s'exécutant simultanément n'étaient, pour tous les effets pratiques, non-
existent et invisible pour eux.
La multiprogrammation doit être différenciée du multitâche, car toute multiprogrammation n'est pas multitâche.
implique²ou a la capacité de--"véritable" multitâche. C'est le cas même si l'utilisation de
le multitâche implique généralement l'utilisation de certaines méthodes de multiprogrammation.

Dans ce contexte, le mot racine "programme" ne fait pas nécessairement référence à une application compilée,
plutôt, tout ensemble de commandes soumis à l'exécution par un utilisateur ou un opérateur. Cela pourrait inclure un
script ou flux de contrôle des travaux et tous les appels inclus à des instructions macro, système
modules d'applications ou utilitaires. Une session utilisateur entière, interactive et connectée peut être
considéré comme un "programme" dans ce sens.

Un programme comprend généralement de nombreuses tâches, une tâche étant un groupe relativement petit de
instructions de traitement qui, ensemble, réalisent une étape logique définissable dans l'achèvement d'un travail
ou l'exécution d'un programme d'application fonctionnant en continu. Une tâche se termine fréquemment par quelque chose
demande nécessitant le déplacement de données, une opportunité pratique permettant à un autre programme d'avoir
ressources système, en particulier le temps CPU.
Dans le multiprogrammation, l'exécution concurrente (partage du processeur) est réalisée lorsque le
le système d'exploitation identifie les opportunités d'interrompre le traitement d'un programme entre
tâches (par exemple, lorsqu'il attend une saisie / sortie) et transférer le contrôle du processus à un autre programme
(application, emploi ou utilisateur). Dans une large mesure, la capacité d'un système à partager ses ressources
équitablement²ou selon certaines priorités²dépend du design des programmes
être géré et à quelle fréquence ils peuvent être interrompus.

Le multitâche élimine cette dépendance et s'appuie sur la multiprogrammation en permettant le


système d'exploitation superviseur pour interrompre les programmes en cours de tâches et transférer le processeur
contrôle si rapidement que chaque programme est désormais assuré d'une partie de chaque seconde de traitement, rendant
les interruptions imperceptibles pour la plupart des applications interactives humaines.

Multitâche

En informatique, le multitâche est une méthode où plusieurs tâches, également appelées processus, partagent
ressources de traitement courantes telles qu'un processeur. Dans le cas d'un ordinateur avec un seul processeur, uniquement

une tâche est dite en cours d'exécution à tout moment, ce qui signifie que le processeur exécute activement
Les instructions pour cette tâche. Le multitâche résout le problème en planifiant quelle tâche peut être la
un en cours d'exécution à tout moment donné, et quand une autre tâche en attente a son tour. L'acte de réaffecter
un processeur d'une tâche à une autre s'appelle un changement de contexte. Lorsque des changements de contexte se produisent

assez fréquemment, l'illusion de parallélisme est atteinte. Même sur des ordinateurs avec plus d'un
Le CPU (appelé machines multiprocesseurs), le multitâche permet d'exécuter beaucoup plus de tâches que là
sont des processeurs.

Les systèmes d'exploitation peuvent adopter l'une des nombreuses stratégies de planification différentes, qui tombent généralement

dans les catégories suivantes :

Dans les systèmes de multiprogrammation, la tâche en cours s'exécute jusqu'à ce qu'elle effectue une opération.
cela nécessite d'attendre un événement externe (par exemple, la lecture d'une bande) ou jusqu'à ce que l'ordinateur
le planificateur échange de force la tâche en cours d'exécution hors du processeur. Les systèmes de multiprogrammation sont

conçu pour maximiser l'utilisation du CPU.

Dans les systèmes de partage de temps, la tâche en cours est tenue de céder le processeur, soit volontairement
ou par un événement externe tel qu'une interruption matérielle. Les systèmes de partage de temps sont conçus pour
permettre à plusieurs programmes de s'exécuter apparemment simultanément. L'expression 'partage de temps'
était généralement utilisé pour désigner des ordinateurs partagés par des utilisateurs interactifs à des terminaux, tels que

TSO d'IBM et VM/CMS


Dans les systèmes en temps réel, certaines tâches en attente ont la garantie de recevoir le processeur lorsqu'un
un événement externe se produit. Les systèmes en temps réel sont conçus pour contrôler des dispositifs mécaniques tels que
robots industriels, qui nécessitent un traitement en temps opportun.

Le terme partage de temps n'est plus couramment utilisé, ayant été remplacé par
simplement le multitâche, et par l'avènement des ordinateurs personnels et des stations de travail plutôt que
systèmes interactifs partagés.

Multitâche préemptif / partage du temps


Le multitâche préemptif permet au système informatique de garantir de manière plus fiable à chaque processus un
tranche" régulière de temps de fonctionnement. Cela permet également au système de traiter rapidement des éléments externes importants.
des événements comme des données entrantes, qui pourraient nécessiter l'attention immédiate de l'un ou l'autre
processus.

Les systèmes d'exploitation ont été développés pour tirer parti de ces capacités matérielles et fonctionner
plusieurs processus de manière préemptive. Par exemple, le multitâche préemptif a été mis en œuvre dans le
la première version de Unix [1] en 1969, et est standard dans les systèmes d'exploitation Unix et semblables à Unix,
y compris Linux, Solaris et BSD avec ses dérivés.

multitâche coopératif/partage du temps


Les premiers systèmes de multitâche consistaient en des suites d'applications connexes qui cédaient volontairement du temps.
les uns les autres. Cette approche, qui a finalement été soutenue par de nombreux systèmes d'exploitation informatique
Les systèmes, aujourd'hui connus sous le nom de multitâche coopératif. Bien qu'il soit maintenant rarement utilisé dans les systèmes plus grands.
dans les systèmes, le multitâche coopératif était autrefois le schéma de planification utilisé par Microsoft
Windows (avant Windows 95 et Windows NT) et Mac OS (avant Mac OS X) afin de
activer l'exécution de plusieurs applications simultanément.

Parce qu'un système multitâche coopératif repose sur le fait que chaque processus abandonne régulièrement du temps pour
d'autres processus sur le système, un programme mal conçu peut consommer tout le temps CPU
pour lui-même ou provoquer le blocage complet du système. Dans un environnement serveur, c'est un risque qui rend
le réseau est fragile et délicat. Tous les logiciels doivent être évalués et approuvés pour une utilisation dans un test
environnement avant d'être installé sur le serveur principal, ou l'ensemble du réseau soit ralentit
ou s'arrête lorsqu'un programme sur le serveur se comporte mal.

Multithreading
Les ordinateurs multithreading ont un support matériel pour exécuter efficacement plusieurs threads. Ces
se distinguent des systèmes de multiprtype de traitement (comme les systèmes multicœurs) en ce que les fils
doivent partager les ressources d'un seul cœur : les unités de calcul, les caches CPU et le
mémoire cache de traduction (TLB). Là où les systèmes de multiprocesseurs incluent plusieurs complet
les unités de traitement, le multithreading vise à accroître l'utilisation d'un seul noyau en tirant parti de
le parallélisme au niveau des threads ainsi que le parallélisme au niveau des instructions. Comme les deux techniques sont complémentaires,

ils sont parfois combinés dans des systèmes avec plusieurs CPU multithread et dans des CPU avec
cœurs multithreading multiples.

Avantages

1. Si un fil subit beaucoup de manques de cache, les autres fils peuvent continuer, en profitant
des ressources informatiques inutilisées, ce qui peut ainsi conduire à une exécution globale plus rapide, car
ces ressources auraient été inoccupées si un seul fil d'exécution avait été exécuté.
2. Si un fil ne peut pas utiliser toutes les ressources de calcul du CPU (car les instructions
dépendre des résultats de chacun), faire tourner un autre thread permet de ne pas les laisser inactifs.
3. Si plusieurs threads travaillent sur le même ensemble de données, ils peuvent en fait partager leur cache,
menant à une meilleure utilisation du cache ou à une synchronisation de ses valeurs.

Inconvénients
1. Plusieurs threads peuvent interférer les uns avec les autres lorsqu'ils partagent des ressources matérielles telles que
mémoire cachée ou tampons de traduction (TLBs).
Les temps d'exécution d'un seul fil ne s'améliorent pas mais peuvent se dégrader, même lorsque seul
un fil est en cours d'exécution. Cela est dû à des fréquences plus lentes et/ou à un pipeline supplémentaire
étapes nécessaires pour accommoder le matériel de commutation de fils.
3. Le support matériel pour le multithreading est plus visible pour le logiciel, nécessitant donc plus
des changements tant dans les programmes d'application que dans les systèmes d'exploitation que le multiprocesseur.

Multiprocessing
Le traitement multiprocesseur est l'utilisation de deux unités centrales de traitement (CPU) ou plus au sein d'un seul
système informatique. Le terme fait également référence à la capacité d'un système à supporter plus d'un
processeur et/ou la capacité d'allouer des tâches entre eux.[1] Il existe de nombreuses variations sur cela
le thème de base, et la définition du multiprocessus peut varier selon le contexte, principalement en fonction de
comment les CPU sont définis (plusieurs cœurs sur une seule puce, plusieurs puces dans un seul paquet, plusieurs
packages dans une unité système, etc.).

Le multiprocessus fait parfois référence à l'exécution de plusieurs processus logiciels concurrents dans un
système par opposition à un seul processus à un instant donné. Cependant, les termes multitâche ou
la multiprogrammation est plus appropriée pour décrire ce concept, qui est principalement mis en œuvre
dans le logiciel, tandis que le multiprocédage est plus approprié pour décrire l'utilisation de plusieurs
processeurs matériels. Un système peut être à la fois multiprocessus et multiprogrammation, seulement l'un des
deux, ou aucun des deux.

Multiprocessing symétrique
En informatique, le multiprocesseur symétrique ou SMP implique un matériel informatique multiprocesseur
architecture où deux processeurs identiques ou plus sont connectés à une seule mémoire principale partagée
mémoire et sont contrôlés par une seule instance de système d'exploitation. Les systèmes multiprocesseurs les plus courants aujourd'hui

utiliser une architecture SMP. Dans le cas des processeurs multi-cœurs, l'architecture SMP s'applique à
les cœurs, les traitant comme des processeurs séparés. Les processeurs peuvent être interconnectés par des bus,
interrupteurs en croix ou réseaux maillés sur puce. Le goulet d'étranglement dans l'évolutivité des SMP utilisant
les bus ou les commutateurs de barres transversales sont la bande passante et la consommation d'énergie de l'interconnexion parmi
les différents processeurs, la mémoire et les ensembles de disques. Les architectures en maillage évitent cela.
goulots d'étranglement, et fournir une évolutivité presque linéaire à des nombres de processeurs beaucoup plus élevés au prix de
de programmabilité

Des défis de programmation sérieux subsistent avec ce type d'architecture car cela nécessite deux
modes de programmation distincts, un pour les processeurs eux-mêmes et un pour l'interconnexion
entre les CPU. Un langage de programmation unique devrait être capable non seulement de partitionner
la charge de travail, mais aussi comprendre la localité de la mémoire, qui est sévère dans un système basé sur un maillage

architecture.
Les systèmes SMP permettent à n'importe quel processeur de travailler sur n'importe quelle tâche peu importe où se trouvent les données pour cette tâche.

situé en mémoire, à condition que chaque tâche du système ne soit pas en cours d'exécution sur deux ou plusieurs
processeurs en même temps ; avec un support approprié du système d'exploitation, les systèmes SMP peuvent facilement
déplacer les tâches entre les processeurs pour équilibrer efficacement la charge de travail.

Multiprocessing asymétrique

Le traitement multiprocesseur asymétrique, ou AMP, était une solution logicielle temporaire pour gérer plusieurs unités centrales de traitement.
avant que le traitement multiprocesseur symétrique, ou SMP, ne soit disponible
Le multiprocessus signifie plus d'un CPU dans un système informatique. Le CPU est l'unité arithmétique et
moteur logique qui exécute des applications utilisateur ; une interface d'E/S telle qu'un GPU, même si c'est
implémenté à l'aide d'un processeur embarqué, ne constitue pas un CPU car il ne fonctionne pas
le programme d'application de l'utilisateur. Avec plusieurs CPU, plus d'une application utilisateur peut s'exécuter à
au même moment. Tous les processeurs ont le même jeu d'instructions en mode utilisateur, donc un travail en cours peut être

reprogrammé d'un CPU à un autre.

Vous aimerez peut-être aussi