Typologie
Système batch
Il existe cinq générations de système d'exploitation : les systèmes d'exploitation batch, multiprogrammés, en temps partagé, temps réel et distribués. Chacun des principes mis en œuvre dans une génération se retrouve dans les générations suivantes.
Un système batch est prévu pour exécuter l'un après l'autre des grands calculs, avec peu d'intervention utilisateur.
À partir de la génération des systèmes d'exploitation multiprogrammés, plusieurs programmes sont exécutés simultanément par planification (scheduling) : Dans ces systèmes d'exploitation multitâches, plusieurs programmes résident en mémoire centrale et le système d'exploitation suspend régulièrement l'exécution d'un programme pour continuer l'exécution d'un autre.
Dans la génération des systèmes multiprogrammés, l'exécution simultanée de plusieurs programmes vise l'utilisation efficace de la puissance de calcul du processeur.
Dans la génération des systèmes en temps partagé l'exécution simultanée de plusieurs programmes vise à répondre rapidement aux demandes de plusieurs utilisateurs en communication directe avec l'ordinateur.
Un système d'exploitation temps réel doit garantir que toute opération se termine dans un délai donné, en vue de garantir la réussite du dispositif dans lequel l'ordinateur est utilisé.
Un système distribué dirige l'utilisation des ressources de plusieurs ordinateurs à la fois. Il utilise les capacités d'un réseau informatique, contrôle un groupe de machines, et les fait apparaître comme une machine unique, imaginaire, de très grande capacité.
Chaque système d'exploitation est conçu pour fonctionner avec une gamme particulière de machines (type de processeur, constructeur, architecture). Si un système d'exploitation est disponible pour plusieurs gammes de machines différentes, alors le même code source est compilé note 1 et adapté à chaque gamme de machines. La palette de pilotes inclus dans le système d'exploitation est adaptée au matériel informatique disponible sur le marché pour cette gamme de machines.
Les systèmes d'exploitation basés sur les batchs (anglicisme signifiant « lot ») sont apparus dans les années 1950. Dans ces systèmes le principal dispositif d'entrée sont les cartes perforées. Un programme (avec ses données) n'est autre qu'une pile de cartes. L'exécution d'un programme consiste à demander à un opérateur de placer la pile de cartes dans le lecteur, puis l'opérateur inverse quelques interrupteurs pour lancer l'exécution du programme. Le processeur central est au repos — sans rien à faire — durant les manipulations de l'opérateur.
Un batch est un lot de travaux à effectuer. L'opérateur compose un batch en posant les unes sur les autres les piles de cartes des différents programmes (avec leur données) demandés par les utilisateurs. Il forme une grande pile de cartes séparées par des marque-page, en général une carte de couleur particuliere, qu'il place ensuite dans le lecteur. Le regroupement de plusieurs programmes en un batch diminue les interventions de l'opérateur.
Dans un système basé sur les batch le cœur du système d'exploitation est un programme moniteur, qui réside continuellement en mémoire centrale, et qui permet à l'opérateur de demander de commencer ou d'arrêter l'exécution du lot. À la fin de l'exécution de chaque tâche du lot, le moniteur effectue des travaux de nettoyage, puis lance l'exécution de la tâche suivante. L'opérateur intervient ainsi uniquement au début et à la fin du lot.
Dans ces systèmes d'exploitation les commandes ajoutées au marque-pages, formulées dans le langage JCL (Job Control Language) sont un des seuls moyens qu'a l'utilisateur d'interagir avec le système d'exploitation.
Les systèmes d'exploitation batch sont adaptés à des applications où il y a de très gros calculs avec très peu d'implication de l'utilisateur : météo, statistiques, impôts... Les utilisateurs n'attendent pas les résultats, soumettent les demandes, puis reviennent un peu plus tard collecter les résultats.
En raison de la grande différence de vitesse entre le processeur et les périphériques, dans un système d'exploitation batch le processeur est inutilisé 90 % du temps parce que les programmes attendent qu'un périphérique ou un autre termine les opérations. Avec de tels systèmes d'exploitation il n'y a pas de concurrence entre les différentes tâches, la mise en œuvre de l'utilisation du processeur, de la mémoire et des périphériques est par conséquent triviale.
la multiprogrammation
Les systèmes d'exploitation multiprogrammés sont apparus dans les années 1960. Le but recherché de tels systèmes est d'augmenter l'efficacité de l'utilisation du processeur et des périphériques en utilisant la possibilité de les faire fonctionner en parallèle. Plusieurs programmes sont placés en mémoire centrale, et lorsque le programme en cours d'exécution attend un résultat de la part d'un périphérique, le système d'exploitation ordonne au processeur d'exécuter un autre programme.
Dans les systèmes d'exploitation multiprogrammés, l'utilisation du processeur est partagée par planification (scheduling) : À chaque utilisation d'un périphérique, le système d'exploitation choisit quel programme va être exécuté. Ce choix se fait sur la base de priorités. Le système d'exploitation comporte un mécanisme de protection qui évite que le programme en cours d'exécution lit ou écrit dans la mémoire attribuée à un autre programme. Les programmes sont exécutés dans un mode non-privilégié, dans lequel l'exécution de certaines instructions est interdite.
Les systèmes multiprogrammés nécessitent un ordinateur et des périphériques qui mettent en œuvre la technique du DMA (direct memory access) : Par cette technique le processeur ordonne à un périphérique d'effectuer une opération; le résultat de l'opération est placé en mémoire centrale par le périphérique pendant que le processeur exécute d'autres instructions. Dans les systèmes multiprogrammés tout comme les systèmes batch l'utilisateur n'a que peu de contact avec les programmes et de maigres possibilités d'intervention.
le temps partagé
Les systèmes d'exploitation en temps partagé sont apparus dans les années 1970. Ils sont utilisés dans des dispositifs interactifs où plusieurs utilisateurs sont simultanément en dialogue avec l'ordinateur. Un système d'exploitation en temps partagé est destiné à répondre rapidement aux demandes de l'utilisateur, et donner à chaque utilisateur l'impression qu'il est le seul à utiliser l'ordinateur.
Un système en temps partagé met en œuvre des techniques sophistiquées de multiprogrammation en vue de permettre l'utilisation interactive de l'ordinateur par plusieurs usagers et plusieurs programmes simultanément. L'arrivée de cette nouvelle génération de systèmes d'exploitation en 1970 résulte d'une forte demande des consommateurs et de la baisse du prix du matériel informatique qui a rendu possible sa réalisation.
Dans les systèmes d'exploitation en temps partagé la notion de batch n'a que peu d'importance. Ces systèmes mettent en œuvre de nouveaux mécanismes d'utilisation du processeur et de la mémoire, ce qui leur permet de répondre rapidement à des demandes provenant simultanément d'un grand nombre d'utilisateurs.
Dans ces systèmes, tout comme dans la génération précédente, l'utilisation du processeur est planifiée. Cependant contrairement aux systèmes de la génération précédente, dans les systèmes en temps partagé chaque programme est exécuté durant une tranche de temps déterminé, puis le système d'exploitation bascule sur l'exécution d'un autre programme, ce qui évite qu'un programme monopolise l'utilisation du processeur au service d'un utilisateur, entrainant des retards pour les autres usagers.
Les systèmes d'exploitation en temps partagé mettent en œuvre la technique du swap : lorsque le programme en cours d'exécution a besoin de plus de mémoire que ce qui est disponible, alors un autre programme inactif est retiré pour gagner de la place; le programme inactif est enregistré temporairement sur le disque dur. L'enregistrement sur disque provoque cependant une perte de temps non négligeable.
En 2011 de nombreux systèmes d'exploitation sont basés sur Unix, un système en temps partagé.
le temps réel
Les systèmes d'exploitation temps-réel sont apparus dans les années 1980. Ils sont destinés aux dispositifs qui doivent non seulement donner des résultats corrects, mais les donner à temps, c'est-à-dire dans un délai déterminé. Les systèmes d'exploitation temps réel sont souvent utilisés par des ordinateurs reliés à un appareil externe, où un retard de réponse de l'ordinateur entraînerait un échec de l'appareil : pilotes automatiques, les robots industriels, les applications vidéo et audio.
Dans les système d'exploitation temps réel l'accent est mis sur la durée nécessaire pour effectuer chaque opération : répondre aux demandes rapidement en vue de satisfaire aux contraintes de temps du système dans lequel il va être utilisé.
Certains services offerts par ces systèmes d'exploitation sont réalisés comme des logiciels applicatifs, et sont exécutés en concurrence avec ceux-ci. Un système d'exploitation temps réel autorise un contact direct entre les logiciels applicatifs et les périphériques. Dans certains systèmes temps réel les ressources sont réservées à l'avance, ce qui évite les ralentissements que provoqueraient les réservations à la volée, et garantit que les ressources seront continuellement disponibles.
Les systèmes d'exploitation temps-réel évitent d'utiliser la technique du swap en raison des risques de dépassement des délais5. Windows CE, Embedded Linux, Symbian OS, PalmOS et VxWorks sont des systèmes d'exploitation temps réel
les systèmes distribués
La baisse des prix du matériel informatique a permis, dans les années 1990, la création de systèmes informatiques composés de plusieurs ordinateurs, et donc plusieurs processeurs, plusieurs mémoires, et de nombreux périphériques. Un système distribué permet le partage des ressources entre les ordinateurs. Un utilisateur d'un ordinateur bon marché peut se servir de ressources coûteuses qui existent sur un autre ordinateur.
Mach, Amoeba, Andrew, Athena, et Locus sont des systèmes d'exploitation distribués. Ils ont tous été développés par des universités.