Les systèmes d'exploitation
Introduction
Un système d’exploitation (OS - Operating System) est un logiciel fondamental qui agit comme une interface entre le matériel et les logiciels d’un ordinateur. Il gère les ressources matérielles, organise l’exécution des programmes et permet aux applications de fonctionner de manière efficace et coordonnée. Le rôle principal du système d’exploitation est de faciliter l’utilisation du matériel de la machine en en masquant la complexité et en offrant un environnement stable pour l’exécution des logiciels.
La section L’architecture logicielle système du chapitre Fonctionnement d’un ordinateur présente les fonctions des systèmes d’exploitation modernes en détail, en se concentrant sur les plus fondamentales et le rôle clé du noyau.
Dans ce chapitre, nous allons voir l’historique des systèmes d’exploitation, l’émergence des grandes familles actuelles et les jalons marquants de leur évolution.
Les premiers systèmes d’exploitation
Les premiers systèmes d’exploitation sont nés de la nécessité d’organiser et d’optimiser l’utilisation des ressources limitées des premiers ordinateurs. Ils ont jeté les bases des interactions entre le matériel et les programmes, transformant progressivement les machines rudimentaires en outils polyvalents capables d’exécuter des tâches complexes.
1. L’origine des systèmes d’exploitation
Les premiers ordinateurs des années 1940-1950, tels que l’ENIAC et l’EDSAC, n’étaient pas équipés d’un véritable système d’exploitation. Les programmes étaient exécutés directement sur le matériel brut, avec une interaction minimale de l’utilisateur. L’opérateur devait intervenir physiquement pour charger un programme soit en reliant des câbles, soit en insérant des cartes perforées. Ce processus était non seulement lent, mais aussi très inefficace, car les ordinateurs restaient inactifs pendant les périodes de chargement ou de débogage.
2. Les premiers jalons
Le besoin de gérer plus efficacement le temps de calcul a conduit au développement des premiers systèmes d’exploitation rudimentaires dans les années 1950, avec l’introduction...
L’ère d’Unix
Unix est un cas particulier dans le contexte de l’évolution des systèmes d’exploitation en raison de son influence durable sur de nombreuses familles de systèmes d’exploitation. Développé en 1969, il est à l’origine de Linux, BSD, macOS et d’autres variantes qui dominent encore aujourd’hui. L’une des innovations d’Unix a été sa portabilité, rendue possible par son développement en langage C, ce qui lui a permis d’être adopté sur différentes plateformes. Puisque l’écrasante majorité du système était écrit en langage C, il suffisait de porter le compilateur C sur le nouveau matériel ou architecture cible pour pouvoir ensuite très facilement y porter le système d’exploitation dans son entier.
L’impact d’Unix réside également dans son approche modulaire et multi-utilisateur, qui a inspiré de nombreux systèmes modernes. Il a servi de point de départ à plusieurs systèmes d’exploitation actuels, particulièrement dans les environnements de serveurs, les superordinateurs et les systèmes embarqués.
1. Un prétexte...
En 1969, Ken Thompson et Dennis Ritchie, deux chercheurs de Bell Labs, ont été mandatés par leur direction pour développer un logiciel de traitement de texte. Le besoin de Bell Labs était simplement de disposer d’un traitement de texte performant pour automatiser la production et l’édition de documents, notamment la rédaction et la mise en forme des documents techniques et des rapports internes. À cette époque, l’utilisation des ordinateurs pour des tâches administratives et documentaires devenait de plus en plus courante. En interne, Bell cherchait une solution pour remplacer des méthodes plus archaïques, comme la dactylographie manuelle, par un système plus efficace et automatisé.

Figure 5-1- Ken Thompson et Dennis Ritchie dans les années 70 (image dans le domaine public)
C’est à ce moment-là que Ken Thompson et Dennis Ritchie, inspirés par certaines idées de Multics, ont voulu créer un système plus simple et efficace....
MS-DOS, OS/2 et Windows
L’histoire de MS-DOS et Windows débute en 1980, lorsque Microsoft, une petite société dirigée par Bill Gates, acquiert un système d’exploitation nommé QDOS pour le transformer en MS-DOS. Ce système d’exploitation devient rapidement un standard de fait après que Microsoft l’ait vendu sous licence à IBM pour leurs premiers ordinateurs personnels (PC). MS-DOS, basé sur une interface en ligne de commande, est rudimentaire, mais sa simplicité et son intégration avec le matériel IBM en ont fait un succès.
1. MS-DOS
MS-DOS 1.0 sort en 1981, et tout au long des années 1980, Microsoft en améliore les versions avec de nouvelles fonctionnalités comme la gestion des disques durs. MS-DOS devient omniprésent dans le monde des PC, essentiellement par la stratégie de Microsoft consistant à licencier le système à différents fabricants d’ordinateurs compatibles IBM, profitant ainsi de la prolifération de machines IBM PC compatibles. À cette époque, Microsoft devient le fournisseur dominant de systèmes d’exploitation pour PC.

Figure 5-4 - Le Shell MS-DOS - Auteur : Gvtyhbiju - Wikimedia (image dans le domaine public)
Dans les années 1980, les fabricants de PC ont opté pour MS-DOS plutôt que pour Unix pour plusieurs raisons :
-
D’une part, MS-DOS était moins coûteux et plus simple à utiliser, ce qui le rendait plus adapté aux premiers ordinateurs personnels.
-
Contrairement à Unix, qui nécessitait du matériel plus sophistiqué et plus cher, MS-DOS pouvait fonctionner sur des machines beaucoup moins puissantes. Unix, bien plus puissant, complexe et multitâche, était réservé aux applications plus élaborées au sein des universités ou des entreprises.
-
Et surtout, à nouveau, Microsoft a conclu un accord stratégique avec IBM, dont les PC dominaient...
Minix, Linux et GNU
L’histoire de Minix, GNU, Linux et Hurd est riche et complexe, mêlant innovations, rivalités et collaborations. Considérant la place prépondérante de Linux aujourd’hui dans les contextes industriels et sur les smartphones, il est intéressant de s’y attarder.
1. Minix
Minix est un système d’exploitation développé par Andrew S. Tanenbaum en 1987, principalement à des fins éducatives. Conçu comme une version simplifiée d’Unix, il avait pour but de fournir un socle permettant d’enseigner et d’étudier les concepts fondamentaux des systèmes d’exploitation. Minix est un micro-noyau, ce qui signifie que seules les fonctions essentielles sont dans le noyau, tandis que la plupart des services système s’exécutent en dehors de celui-ci. Bien que Minix ne fût jamais aussi complet ou performant qu’Unix, son code source ouvert a attiré l’attention des développeurs, dont un jeune étudiant finlandais nommé Linus Torvalds. Nous y reviendrons.

Figure 5-6 - Le shell minix - Auteur : Huihermit / Wikimedia (image dans le domaine public)
2. GNU et la Free Software Foundation (FSF)
En parallèle, dans les années 1980, Richard Stallman lance le projet GNU (un acronyme récursif signifiant GNU’s Not Unix) avec l’objectif de créer un système d’exploitation libre et entièrement compatible avec Unix. Ce projet s’inscrit dans une vision plus large de la Free Software Foundation (FSF), qu’il fonde pour promouvoir la liberté logicielle en cherchant à créer un système d’exploitation complet, composé d’outils logiciels entièrement libres, permettant aux utilisateurs de modifier...
De NeXTSTEP à Mac OS X
L’évolution des systèmes d’exploitation d’Apple, de ses débuts rudimentaires avec Apple DOS à la révolution de macOS et iOS, est une aventure fascinante. Chaque génération a non seulement répondu aux besoins technologiques de son époque, mais a aussi défini des standards en matière d’expérience utilisateur. L’histoire d’Apple, qui est réellement celle de Steve Jobs, est passionnante et riche en rebondissements. Voyons-en un résumé.
1. Les premiers OS Apple
L’histoire des systèmes d’exploitation d’Apple avant Mac OS X commence en 1978 avec Apple DOS sur l’Apple II, un système simple pour gérer des fichiers sur disquette et quelques outils fonctionnant en mode console (notons qu’il exista des systèmes d’exploitation alternatifs pour l’Apple II comme ProDOS ou Apple Pascal). En 1983, l’Apple Lisa introduit une interface graphique élaborée, mais son coût élevé limita son adoption. En 1984, le Macintosh 128K propose le Macintosh System Software, qui popularise l’interface graphique et la souris. Les versions System 1 à 6 suivent et sont largement valorisées par leurs interfaces graphiques simplifiées, avec un accent sur la facilité d’utilisation.
Cependant, elles sont limitées par l’absence de gestion de la mémoire protégée et d’un multitâche réel.
En 1991, System 7 apporte le multitâche coopératif, le support des couleurs et une interface plus moderne. Cependant, il souffre de limitations technologiques et reste en dessous des capacités d’autres systèmes plus robustes.
Apple tente ensuite de développer Copland dans les années 1990, un projet ambitieux...
Android entre en scène
Android est un système d’exploitation mobile open source, développé par Google et lancé en 2008. Il est basé sur le noyau Linux, ce qui lui procure une grande stabilité, mais il s’en distingue en utilisant une architecture différente pour la gestion des applications et des interfaces utilisateur.
Android ne se contente pas de Linux : il intègre de nombreux composants open source, comme la bibliothèque standard GNU C, mais aussi des éléments propriétaires. L’une de ses caractéristiques centrales est l’utilisation de la machine virtuelle Dalvik (jusqu’à Android 5.0), qui permet à Android d’exécuter des applications Java compilées dans un format bytecode spécifique. Dalvik a été remplacée par ART (Android RunTime) dans les versions plus récentes pour améliorer les performances grâce à la compilation anticipée (AOT - Ahead of Time).
L’écosystème de développement d’Android repose sur Android SDK, un ensemble d’outils permettant de programmer en Java (et plus récemment en Kotlin). Les applications sont isolées dans des sandboxes pour renforcer la sécurité. Chaque application s’exécute dans son propre processus avec une instance unique de la machine...
Les micro-noyaux Mach et L4
Les familles de noyaux Mach et L4 sont des micro-noyaux, c’est-à-dire des noyaux minimalistes qui externalisent de nombreuses fonctions vers des services en espace utilisateur, mais ils ont des philosophies différentes en termes de conception et de performances. La section L’architecture logicielle systèmedu chapitre précédent s’attarde sur les différents types de noyaux et présente le concept de « micro-noyau ».
1. Mach
Développé dans les années 1980 à Carnegie Mellon University, Mach est devenu une base pour plusieurs systèmes d’exploitation, dont NeXTSTEP (utilisé par NeXT, l’entreprise fondée par Steve Jobs), puis macOS et iOS d’Apple. Mach est également utilisé dans le projet GNU Hurd. OSF/1, un autre système d’exploitation Unix-like développé par l’Open Software Foundation dans les années 1990, repose également sur Mach.
Mach permet des fonctionnalités telles que le multitâche et la gestion de la mémoire. Toutefois, dans ses premières itérations, il a été critiqué pour sa lenteur, notamment dans la gestion des communications interprocessus (IPC).
Les systèmes Apple macOS et iOS utilisent encore aujourd’hui une version dérivée de Mach, combinée...
Les hyperviseurs
La virtualisation et les hyperviseurs, dans la perspective de l’évolution des systèmes d’exploitation (OS), sont des concepts qui prennent racine dans les toutes premières innovations adoptées par les systèmes d’exploitation. Leur apparition n’est pas seulement le fruit d’une innovation isolée mais plutôt le résultat d’une évolution progressive des besoins, des concepts et des capacités techniques des OS.
Nous avons déjà parlé de la virtualisation dans le chapitre précédent à la section La virtualisation et la conteneurisation, mais il est intéressant d’y revenir par la perspective de l’évolution des systèmes d’exploitation.
1. Les prémices de la virtualisation
Les premiers véritables concepts de virtualisation remontent aux années 1960 avec les travaux d’IBM, notamment sur ses systèmes System/360 et System/370. IBM introduisit alors des hyperviseurs rudimentaires pour répondre à plusieurs besoins :
-
consolidation : maximiser l’utilisation du matériel coûteux en exécutant plusieurs systèmes simultanément ;
-
isolation et fiabilité : offrir un environnement isolé pour tester et exécuter différents systèmes sans risque pour les autres ;
-
partage efficace : fournir...
Derniers mots sur les systèmes d’exploitation
Pour conclure ce chapitre sur l’évolution des systèmes d’exploitation, voyons tout d’abord un modèle d’architecture des systèmes d’exploitation modernes plus complet, puis évoquons brièvement la différence fondamentale, presque philosophique, entre les systèmes propriétaires et open source.
1. Architecture moderne des Systèmes d’exploitation
Revenons un peu sur l’architecture des systèmes d’exploitation présentée initialement sur la figure 3-4 pour voir, cette fois-ci, un modèle plus complet.

Figure 5-12 - Vue plus complète de l’architecture des OS
Le schéma de la figure 5-12 montre l’architecture avancée d’un système d’exploitation moderne, en commençant par le matériel (CPU, RAM, disques durs, réseau, etc.) en bas, et en montant progressivement vers les applications de l’utilisateur. Au cœur, le noyau gère les fonctionnalités essentielles comme la gestion des processus, de la mémoire virtuelle et des pilotes de périphériques. Il utilise un ensemble de modules (comme le gestionnaire de fichiers ou le gestionnaire de mémoire) pour offrir un environnement multitâche. Les bibliothèques standards comme la librairie C standard (par exemple...