Aller au contenu

« Multitâche » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Wishmaster (discuter | contributions)
typo + gramm + etreinte mortelle + flag
Aurelienc (discuter | contributions)
m 95 -> 3.11
(4 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
[[da:Multitasking]] [[de:Multitasking]] [[en:Computer multitasking]] [[es:Multitarea]] [[it:Multitasking]] [[hu:Többfeladatos]] [[nl:Multitasking]] [[ja:マルチタスク]] [[sv:Multikörning]]
[[da:Multitasking]] [[de:Multitasking]] [[en:Computer multitasking]] [[es:Multitarea]] [[it:Multitasking]] [[hu:Többfeladatos]] [[nl:Multitasking]] [[ja:マルチタスク]] [[sv:Multikörning]]


En [[informatique]] un [[système d'exploitation]] est dit '''multitâche''' s'il permet d'exécuter, apparemment simultanément, plusieurs [[programme informatique|programmes]] sur un [[ordinateur]]. Ceci est accompli en alternant rapidement l'exécution de plusieurs [[processus informatique|processus]]. Le passage de l'exécution d'un processus à un autre est appelé [[commutation de contexte]]s. Ces commutations peuvent être initié par les programmes eux-m��mes (multitâche coopératif) ou par le système d'exploitation lors d'événements externes (multitâche préemptif).
En [[informatique]] un [[système d'exploitation]] est dit '''multitâche''' s'il permet d'exécuter, apparemment simultanément, plusieurs [[programme informatique|programmes]] sur un [[ordinateur]]. Ceci est accompli en alternant rapidement l'exécution de plusieurs [[processus informatique|processus]]. Le passage de l'exécution d'un processus à un autre est appelé [[commutation de contexte]]. Ces commutations peuvent être initié par les programmes eux-mêmes (multitâche coopératif) ou par le système d'exploitation lors d'événements externes (multitâche préemptif).


Les premiers système multitâche sont apparus dans les [[années 1960]] sous le nom de systèmes à temps partagés. Ils permettait à plusieurs utilisateurs de travailler sur la même machine. Le nom temps partagés est devenus obsolète et est remplacé de nos jours par multitâche.
Les premiers système multitâche sont apparus dans les [[années 1960]] sous le nom de systèmes à temps partagés. Ils permettait à plusieurs utilisateurs de travailler sur la même de .


Le multitâche coopératif est une forme simple de multitâche ou chaque [[processus informatique|processus]] doit explicitement, dans le code du [[programme]], permettre à une autre tâche de s'exécuter par le biais de drapeaux indicateurs (''flags''). Il a été utilisé par exemple dans les produits [[Microsoft Windows]] jusqu'à [[Windows 95]] ou dans [[MacOS]] jusqu'à [[MacOS X]]. Cette approche simplifie l'architecture du système d'exploitation mais présente plusieurs inconvénients :
Le multitâche coopératif est une forme simple de multitâche ou chaque [[processus informatique|processus]] doit explicitement permettre à une autre tâche de s'exécuter par le biais de drapeaux indicateurs (''flags''). Il a été utilisé par exemple dans les produits [[Microsoft Windows]] jusqu'à [[Windows ]] ou dans [[MacOS]] jusqu'à [[MacOS ]]. Cette approche ' mais présente plusieurs inconvénients :
* Si un des processus ne redonne pas la main à un autre processus, par exemple si le processus est [[bogue|bogué]], le système entier peut s'arrêter. On parle dans ce cas d'une étreinte mortelle (''Deadly embrace'' ou ''deadlock'').
* Le partage des ressources (temps [[CPU]], mémoire etc.) peut-être inefficace.


* Si un des processus ne redonne pas la main à un autre processus, par exemple si le processus est [[bogue|bogué]], le système entier peut s'arrêter.
Pour remédier à cette situation, la plupart des systèmes à temps partagé ont rapidement évolué pour utiliser une approche nommée «&nbsp;multitâche préemptif&nbsp;». </br>Dans un tel système, c'est l'électronique de la machine qui signale au système d'exploitation que le processus en cours d'exécution doit être mis en pause pour permettre l'exécution d'un autre processus. Le système doit alors sauver l'état du processus en cours qui pourra ainsi être restauré plus tard lorsque son tour viendra d'utiliser à nouveau le [[processeur]]. À la différence du «&nbsp;multitâche coopératif&nbsp;», du point de vue des [[programme]]s préemptés, la [[commutation de contexte]] est transparente.
* Le partage des ressources (temps [[CPU]], mémoire etc.) peutêtre inefficace.

Pour remédier à cette situation, systèmes ont évolué pour utiliser une approche nommée «&nbsp;multitâche préemptif&nbsp;». </br>Dans un tel système, signale au système d'exploitation que le processus en cours d'exécution doit être mis en pause pour permettre l'exécution d'un autre processus. Le système doit alors sauver l'état du processus en cours d' . À la différence du «&nbsp;multitâche coopératif&nbsp;», du point de vue des [[programme]]s préemptés, la [[commutation de contexte]] est transparente.


Le multitâche préemptif est plus robuste que le multitâche coopératif, une tâche ne peut bloquer l'ensemble du système. Le système d'exploitation peut aussi utiliser plus efficacement les ressources disponibles, par exemple si des données sont disponibles via un [[périphérique (informatique)|périphériques]] d'entrée, le processus devant traiter ces données peut être immédiatement activé. </br>
Le multitâche préemptif est plus robuste que le multitâche coopératif, une tâche ne peut bloquer l'ensemble du système. Le système d'exploitation peut aussi utiliser plus efficacement les ressources disponibles, par exemple si des données sont disponibles via un [[périphérique (informatique)|périphériques]] d'entrée, le processus devant traiter ces données peut être immédiatement activé. </br>
De plus, une tâche en attente de données ne consommera pas de temps processeur avant que ces données ne soient réellement disponibles. Ces caractéristiques sont très utiles pour les systèmes en [[temps réel]]s.
De plus, une tâche en attente de données ne consommera pas de temps processeur avant que ces données ne soient réellement disponibles.


Bien qu'au départ le multitâche ait été conçu pour permettre à plusieurs utilisateurs d'utiliser le même ordinateur, il est apparu très rapidement qu'il était très pratique même pour un seul utilisateur. Utiliser son [[traitement de texte]] favori tout en butinant sur le [[Web]] est de nos jours une caractéristique incontournable.
Bien qu'au départ le multitâche ait été conçu pour permettre à plusieurs utilisateurs d'utiliser le même ordinateur, il est apparu très rapidement qu'il était très pratique même pour un seul utilisateur. Utiliser son [[traitement de texte]] favori tout en butinant sur le [[Web]] est de nos jours une caractéristique incontournable.
Ligne 27 : Ligne 28 :
Voir aussi&nbsp;:
Voir aussi&nbsp;:
*[[temps partagé]]
*[[temps partagé]]

[[Catégorie:Système d'exploitation]]

Version du 2 juillet 2004 à 13:09


En informatique un système d'exploitation est dit multitâche s'il permet d'exécuter, apparemment simultanément, plusieurs programmes sur un ordinateur. Ceci est accompli en alternant rapidement l'exécution de plusieurs processus. Le passage de l'exécution d'un processus à un autre est appelé commutation de contexte. Ces commutations peuvent être initié par les programmes eux-mêmes (multitâche coopératif) ou par le système d'exploitation lors d'événements externes (multitâche préemptif).

Les premiers système multitâche sont apparus dans les années 1960 sous le nom de systèmes à temps partagés. Ils permettait à plusieurs utilisateurs de travailler sur la même (grosse, selon les critères de l'époque) machine.

Le multitâche coopératif est une forme simple de multitâche ou chaque processus doit explicitement permettre à une autre tâche de s'exécuter par le biais de drapeaux indicateurs (flags). Il a été utilisé par exemple dans les produits Microsoft Windows jusqu'à Windows 3.11 ou dans MacOS jusqu'à MacOS 9. Cette approche est nécessaire lorsqu'on utilise des processeurs sans MMU sophistiquée, mais présente plusieurs inconvénients :

  • Si un des processus ne redonne pas la main à un autre processus, par exemple si le processus est bogué, le système entier peut s'arrêter.
  • Le partage des ressources (temps CPU, mémoire, accès disque, etc.) peut être inefficace.

Pour remédier à cette situation, les systèmes grand-public ont évolué pour utiliser une approche nommée « multitâche préemptif ».
Dans un tel système, le processeur signale au système d'exploitation que le processus en cours d'exécution doit être mis en pause pour permettre l'exécution d'un autre processus. Le système doit alors sauver l'état du processus en cours (le compteur ordinal, les valeurs des registres) ; le processus est placé dans une file d'attente ; lorsqu'il est en bout de file, son contexte d'exécution est restauré. À la différence du « multitâche coopératif », du point de vue des programmes préemptés, la commutation de contexte est transparente.

Le multitâche préemptif est plus robuste que le multitâche coopératif, une tâche ne peut bloquer l'ensemble du système. Le système d'exploitation peut aussi utiliser plus efficacement les ressources disponibles, par exemple si des données sont disponibles via un périphériques d'entrée, le processus devant traiter ces données peut être immédiatement activé.
De plus, une tâche en attente de données ne consommera pas de temps processeur avant que ces données ne soient réellement disponibles.

Bien qu'au départ le multitâche ait été conçu pour permettre à plusieurs utilisateurs d'utiliser le même ordinateur, il est apparu très rapidement qu'il était très pratique même pour un seul utilisateur. Utiliser son traitement de texte favori tout en butinant sur le Web est de nos jours une caractéristique incontournable.

Une autre utilité du multitâche provient du fait qu'il est plus facile de concevoir et d'écrire plusieurs programmes simples, plutôt qu'un seul programme capable de tout faire, puis de les faire coopérer pour effectuer les tâches nécessaires.

Les algorithmes implémentant le multitâche on été raffinés au cours du temps. Les systèmes modernes peuvent gérer des processus avec des priorités différentes ainsi que des ordinateurs comportant de un à quelques centaines de processeurs.

Une amélioration, parfois décriée, les processus légers ou threads en anglais, a été permise grâce à l'introduction de la mémoire virtuelle. Les processus légers partagent toute ou portion de la mémoire virtuelle d'un processus existant. Ce partage permet, entre autre, une commutation de contexte plus rapide et un partage de données plus efficace entre les processus légers. En contrepartie, de tels programmes sont plus complexes et peuvent se montrer difficiles à mettre au point.

Une autre innovation clé a été l'introduction des niveaux de privilèges : les processus possédant un niveau de privilège bas ne peuvent pas effectuer certaines opérations, par exemple écrire sur des portions de mémoire vitales pour la sécurité du système.
Si un tel processus effectue une opération interdite, le programme est interrompu et un programme superviseur (souvent le système d'exploitation) préempte le processus en cours, puis l'arrête définitivement. Cette technique permet de créer des machines virtuelles où le système « réel » émule le fonctionnement d'une ou plusieurs machines virtuelles, par exemple afin d'accroître la sécurité (une machine virtuelle ne peut pas interférer avec une autre machine virtuelle).

Voir aussi :