Un système d'exploitation est multitâche (en anglais : multi-task) s’il permet d’exécuter, de façon apparemment simultanée, plusieurs programmes informatiques. On parle également de multiprogrammation.
Cette fonction est indépendante du nombre (La notion de nombre en linguistique est traitée à l’article « Nombre...) de processeurs présents physiquement dans l’ordinateur (un système multiprocesseur n'est pas nécessaire pour exécuter un système d'exploitation multitâche).
La simultanéité (En physique, la simultanéité de deux évènements est le fait qu'ils se...) apparente est le résultat de l’alternance rapide d’exécution des processus présents en mémoire (D'une manière générale, la mémoire est le stockage de l'information. C'est aussi le souvenir...). Le passage de l’exécution d’un processus à un autre est appelé commutation de contexte (Une commutation de contexte (context switch) en informatique consiste à sauvegarder l'état d'un...). Ces commutations peuvent être initiées 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).
Le multitâche coopératif est une forme simple de multitâche où chaque processus doit explicitement permettre à une autre tâche de s’exécuter. Il a été utilisé, par exemple, dans les produits Microsoft Windows (Windows (littéralement « Fenêtres » en anglais) est une gamme de...) jusqu’à Windows (Windows est une gamme de systèmes d'exploitation produite par Microsoft, principalement destinées...) 3.11 ou dans Mac OS (Mac OS (pour Macintosh Operating System) est le nom du système d'exploitation d'Apple pour ses...) jusqu’à Mac OS 9. Cette approche simplifie l’architecture du système d’exploitation mais présente plusieurs inconvénients :
Le premier ordinateur (Un ordinateur est une machine dotée d'une unité de traitement lui permettant...) multitâche dans le monde (Le mot monde peut désigner :) a été conçu par la firme Bull (Bull est une société française spécialisée dans l'informatique...) en 1958. Il s’agissait du Gamma 60. Cet ordinateur ne possédait toutefois pas encore de langage de programmation (Un langage de programmation est un langage informatique, permettant à un être humain...) (logiciel, software en anglais) à la hauteur (La hauteur a plusieurs significations suivant le domaine abordé.) des performances du système d’exploitation (matériel informatique (L´informatique - contraction d´information et automatique - est le domaine...), hardware en anglais).
Les systèmes multitâches se sont ensuite répandus dans le courant des années 1960 sous le nom de systèmes à temps partagé (Le temps partagé est une approche permettant de simuler le partage par plusieurs utilisateurs de...). Ils permettaient à plusieurs utilisateurs de travailler sur la même (grosse, selon les critères de l’époque) machine.
Le cas de Windows 95 (ainsi que de windows 98 et ME) est particulier dans le contexte (Le contexte d'un évènement inclut les circonstances et conditions qui l'entourent; le...) du multitâche. Ces systèmes embarquent en effet un multitâche « hybride », dans certains cas agissant en multitâche préemptif (Le traitement multitâche préemptif est une forme de traitement multitâche. Son but est de...), dans d'autres, en multitâche coopératif. La conception de ces systèmes d'exploitations était en effet régie par la nécessité de faire fonctionner des programmes conçus pour Windows 3.X (multitâche coopératif) en parallèle avec des exécutables exclusivement conçus pour Windows NT/95 (multitâche préemptif). Les programmes conçus pour un système multitâche coopératif ne pouvant pas fonctionner nativement en mode préemptif (pour des raisons de compatibilité avec les logiciels plus anciens), l'ordonnanceur de Windows a donc été conçu de manière à désactiver le mode préemptif lors de l'exécution de code « coopératif ». De cette manière, tout (Le tout compris comme ensemble de ce qui existe est souvent interprété comme le monde ou...) exécutable / bibliothèque conçu pour Windows 3.1 fonctionne sous Windows 95 en mode coopératif et tout exécutable / bibliothèque conçu exclusivement pour Windows 95 / NT fonctionne en mode préemptif.
Les effets de ce multitâche hybride (En génétique, l'hybride est le croisement de deux individus de deux variétés,...) sont observables lorsque l'on utilise des exécutables / bibliothèques compilés d'un côté pour Windows 3.X (Win16), et d'un autre côté pour Windows 95/NT (Win32). Prenons par exemple le cas d'un exécutable dont le code a été conçu de manière à rester bloqué dans une boucle sans fin. Si la boucle sans fin est placée dans un exécutable Win32 et que le programme est lancé, Windows reste réactif et il est toujours possible d'utiliser d'autres programmes en parallèle (la boucle sans fin est donc préemptée par le système). Si la boucle sans fin est placée dans un exécutable Win16 et que le programme est lancé, Windows reste « figé » ainsi que tous les programmes précédemment lancés, et seule une action ctrl+alt+suppr permettra de « récupérer » le système. Dans ce mode, le système ne préempte plus et attend que le programme rende la main. Plusieurs programmes Win32 font appel à des bibliothèques Win16 lors de leur fonctionnement, rendant leur fonctionnement complètement (Le complètement ou complètement automatique, ou encore par anglicisme complétion ou...) « hybrides » : préemptifs lors de l'exécution de code Win32 et coopératifs lors de l'exécution de la bibliothèque Win16, le système s'assurant de passer (Le genre Passer a été créé par le zoologiste français Mathurin Jacques...) d'un mode à l'autre de manière transparente.
Cette particularité ne s'applique pas à Windows NT/2000/XP qui utilisent un système de virtualisation (La virtualisation consiste à faire fonctionner sur un seul ordinateur plusieurs systèmes...) (Win16 on Win32 / WoW) pour effectuer les mêmes opérations.