Système D'exploitation
Système D'exploitation
Il existe sur le marché des dizaines de systèmes d'exploitation différents2, très souvent livrés
avec l'appareil informatique3. C'est le cas de Windows, Mac OS, Irix, Symbian OS,
GNU/Linux, (pour ce dernier il existe de nombreuses distributions) ou Android. Les
fonctionnalités offertes diffèrent d'un systèmes à l'autre et sont typiquement en rapport avec
l'exécution des programmes, l'utilisation de la mémoire centrale ou des périphériques, la
manipulation des systèmes de fichiers, la communication, ou la détection et la gestion
d'erreurs2.
La définition des systèmes d'exploitation est rendue floue par le fait que les vendeurs de ces
produits considèrent le système d'exploitation comme étant la totalité du contenu de leur
produit, y compris les vidéos, les images et les logiciels applicatifs l'accompagnant 1, sans
compter les modifications des constructeurs informatiques (dans les cas de licences OEM) qui
compliquent la donne.
En 2012, les deux familles de systèmes d'exploitation les plus populaires sont Unix (dont
macOS, GNU/Linux, iOS et Android) et Windows. Cette dernière détient un quasi-monopole
sur les ordinateurs personnels avec près de 90 % de part de marché depuis 15 ans4.
Sommaire
1 Fonctionnalités
o 1.1 Utilisation
o 1.2 Processeur
o 1.3 La communication inter-processus
o 1.4 Mémoire
1.4.1 La mémoire virtuelle
o 1.5 Périphériques
o 1.6 Fichiers
o 1.7 Réseau
o 1.8 Contrôle d'accès
o 1.9 Interface utilisateur
1.9.1 L'interface utilisateur graphique
o 1.10 Logiciels utilitaires
2 Typologie
o 2.1 Première génération : Traitement par lots
o 2.2 Deuxième génération : la multiprogrammation
o 2.3 Troisième génération : le temps partagé
o 2.4 Quatrième génération : le temps réel
o 2.5 Cinquième génération : les systèmes distribués
3 Histoire
o 3.1 1960, la multiprogrammation
o 3.2 1972, les micro-ordinateurs
o 3.3 1990, les systèmes d'exploitation sous licence libre
4 Organisation générale du noyau
o 4.1 Noyau monolithique
o 4.2 Noyau à micronoyau
o 4.3 Noyau hybride
o 4.4 Système organisé par couches
o 4.5 Appels système
o 4.6 Noyau client-serveur
o 4.7 Principe de machine virtuelle
5 Quelques exemples
6 Le marché
o 6.1 Choix par l'acheteur
o 6.2 Concurrence, compatibilité et interopérabilité
6.2.1 La guerre des Unix et l'Open Group
6.2.2 Microsoft et la concurrence
6.2.3 Les réseaux informatiques
7 Notes et références
o 7.1 Notes
o 7.2 Références
o 7.3 A.Tanenbaum, Systèmes d'exploitation
8 Bibliographie
9 Annexes
o 9.1 Articles connexes
o 9.2 Liens externes
Fonctionnalités
Le système d'exploitation offre une suite de services généraux facilitant la création et
l'utilisation de logiciels applicatifs. Les services offerts sont en rapport avec l'utilisation des
ressources de l'ordinateur par les programmes2. Ils permettent en particulier d'exécuter des
programmes, de lire et écrire des informations, de manipuler les fichiers, de communiquer
entre ordinateurs et de déceler des erreurs2. Ces services permettent à plusieurs usagers et
plusieurs programmes de se partager les ressources de l'ordinateur5. Le principal rôle du
système d'exploitation est alors de gommer les différences entre les différentes architectures
informatiques, et d'organiser l'utilisation des ressource de façon rationnelle :
La palette des services offerts et la manière de s'en servir diffère d'un système d'exploitation à
l'autre. Le standard industriel POSIX du IEEE définit une suite d'appels systèmes standard.
Un logiciel applicatif qui effectue des appels système selon POSIX pourra être utilisé sur tous
les systèmes d'exploitation conformes à ce standard6.
Le système d'exploitation assure la réservation des différentes ressources pour les besoins des
programmes exécutés simultanément. Les réservations peuvent être inscrites dans des
journaux d'activités à des fins de statistiques ou de dépannage et le système d'exploitation peut
refuser une réservation à un utilisateur n'ayant pas reçu d'autorisation2 préalable.
Le matériel informatique peut exécuter des instructions, celles-ci sont rarement plus que des
copies ou des additions. La traduction d'opérations complexes en suite d'instructions est une
tâche fastidieuse qui incombe au système d'exploitation5. Le système d'exploitation prend en
charge toute la manipulation du matériel, le logiciel applicatif ne peut donc pas voir de
différence entre une machine simple, rudimentaire et une machine riche et complexe : les
mêmes services sont offerts dans les deux cas1.
Utilisation
Les utilisateurs et les programmeurs peuvent demander des services au système d'exploitation
par son interface de programmation, ses commandes ou son interface graphique7.
Interface de programmation
Les appels système permettent des interactions entre un programme en cours d'exécution et le
système d'exploitation. L'utilisation d'appels système ressemble a celle de fonctions ou de
sous-routines ordinaires en langage C ou Pascal2.
Commandes
Interface graphique
POSIX (acronyme de l'anglais Portable Operating System Interface) est une norme relative à
l'interface de programmation du système d'exploitation. De nombreux systèmes d'exploitation
sont conformes à cette norme, notamment les membres de la famille Unix.
Processeur
Processus
Un processus est un ensemble d'instruction qui sont en train d'être exécutées. Les instructions
proviennent d'un programme, et l'exécution nécessite du temps, de la mémoire, des fichiers et
des périphériques8. Le système d'exploitation s'occupe de créer, d'interrompre, et de supprimer
des processus. Plusieurs processus se trouvent en mémoire centrale en même temps7.
La communication inter-processus
Protection
Mémoire
Pour éviter tel incident, le système d'exploitation réserve à chaque programme un espace
d'adressage - un emplacement en mémoire que seul le programme en question peut
manipuler6. Le système d'exploitation détecte toute tentative d'accès en dehors de l'espace
d'adressage et provoque l'arrêt immédiat du programme qui tente d'effectuer telles opérations 6,
par le biais d'une erreur de protection générale.
La mémoire virtuelle
Les programmes disposent d'un (ou plusieurs) espaces virtuels de mémoire continus pour
travailler. Les adresses des données sont dites virtuelles dans la mesure où l'information
adressée ne se trouve pas forcément ni en mémoire centrale, ni à l'adresse indiquée. Lorsque
le programme essaie de lire ou écrire une donnée dans sa mémoire virtuelle, l'unité de gestion
de mémoire cherche l'adresse physique correspondant à l'adresse virtuelle sollicitée grâce à
une table de correspondance. Si l'emplacement n'est pas présent en mémoire centrale (on
appelle cela une faute de page), il n'y aura évidemment aucune adresse physique
correspondante. Le système d'exploitation devra alors chercher à libérer un espace en
mémoire centrale en échangeant (anglais swap) le contenu d'un emplacement donné de
mémoire centrale avec le contenu sollicité, qui se trouve en mémoire de masse N 2,T 2. Cette
opération s'effectue automatiquement, à l'insu des programmes.
Chaque programme dispose de sa propre table de correspondance, ce qui permet de les isoler
les uns des autres. Lors d'une commutation de contexte, le système d'exploitation placera la
table du programme courant dans la mémoire associativeT 4. Le système d'exploitation crée
également de nouvelles tables pour les programmes qui démarrent et décide quels
emplacements de mémoire virtuelle seront ou ne seront pas présents en mémoire centrale T 5.
Périphériques
Les périphériques sont tous les dispositifs informatiques qui permettent au processeur de
communiquer avec l'extérieur: clavier, imprimante, carte réseau, mémoire, disque dur 6. Ils
permettent en particulier de recevoir des informations, d'en envoyer, ainsi que de stocker des
informations - les collecter dans le but de les renvoyer plus tard6.
Une des responsabilités du système d'exploitation est de suivre l'état d'utilisation - libre ou
réservé - de tout le matériel du système informatique. Lorsqu'un matériel libre est demandé
par un processus, il est alors réservé à ce processus9. Pour utiliser un periphérique, le système
d'exploitation se sert d'un contrôleur et d'un pilote de périphérique9.
Contrôleur
Un contrôleur est un composant électronique, qui comporte une mémoire tampon, et manipule
un certain type de périphérique (disque dur, imprimante, mémoire, lecteur de bande
magnétique...)9. Le contrôleur est souvent intégré au périphérique6. Les différents contrôleurs
disponibles sur le marché ne s'utilisent pas tous de la même manière6.
Les instructions de manipulation d'une gamme de contrôleurs donnée sont incluses dans un
pilote informatique: un logiciel qui exploite les possibilités offertes par les contrôleurs6. Les
pilotes informatiques font partie du système d'exploitation, et offrent des services uniformes
utilisés par les autres programmes du système d'exploitation6.
Il existe deux stratégies de manipulation des contrôleurs6: Les contrôleurs rapides sont
manipulés en programmed I/O. dans cette stratégie le processeur envoie des demandes
d'opérations au contrôleur puis vérifie de manière intermittente l'état du contrôleur pour
vérifier si l'opération demandée est terminée6.
Les contrôleurs moins rapides sont manipulés en interrupt driven I/O6. Dans cette stratégie le
processeur effectue une demande au contrôleur, puis continue d'exécuter des logiciels
applicatifs. Le contrôleur envoie un signal électrique lorsque l'opération est terminée. Lors de
la venue de ce signal, le processeur interrompt l'exécution des logiciels applicatifs et exécute
un programme particulier interrupt service routine qui vérifie le nouvel état du contrôleur6.
Certains périphériques ne peuvent pas être partagés, et leur utilisation est alors dédiée à un
seul programme à la fois. Certains périphériques peuvent être virtuels, ou leur utilisation peut
être indirecte. Par exemple l'utilisation d'une imprimante n'entraine pas une impression
immédiate parce que les informations sont tout d'abord mises en attente. Cette technique du
spool permet l'utilisation partagée d'un périphérique qui sans ça ne pourrait pas être partagé 2.
Fichiers
Article détaillé : Système de fichier.
Un fichier est une collection d'informations portant un nom, enregistrée sur un média tel qu'un
disque dur, une bande magnétique ou un disque optique8. Chaque médium a ses propres
caractéristiques et sa propre organisation8.
Le système d'exploitation tient compte du système de fichiers: la manière dont les fichiers
sont organisés et répartis sur un dispositif de stockage9.
Les mémoires amovibles telles que les CD ou les DVD ont une disposition normalisée dont
les spécifications sont publiques, ce qui assure leur reconnaissance par tous les systèmes
d'exploitation (voir ISO 9660 et UDF ainsi que l'hybride ISO/UDF).
Lorsque le système de fichier est distribué, et que les fichiers sont donc stockés sur différents
ordinateurs d'un réseau informatique, le système d'exploitation envoie une requête à
l'ordinateur stockant le fichier pour chaque opération à effectuer (voir NFS ou CIFS).
Réseau
Dans un réseau informatique, deux ordinateurs reliés communiquent dès lors que les
communications se font de part et d'autre selon les mêmes protocoles réseau. Selon le modèle
OSI, les différents protocoles existants sont répartis sur sept niveaux, où un protocole d'un
niveau donné peut être combiné avec n'importe quel protocole des niveaux situés en dessus et
en dessous (voir encapsulation).
Lors de l'envoi d'informations sur le réseau, un logiciel applicatif crée une information, la met
en forme conformément aux protocoles des niveaux 7 à 5, puis la transmet au système
d'exploitation. Divers programmes du système d'exploitation vont découper cette information
en trames, puis vont mettre en forme les trames et les envoyer conformément aux protocoles
des niveaux 4 à 1.
Le choix exact des protocoles utilisés dépend de l'ordinateur concerné et des liaisons réseau
qui vont être utilisées. Divers paramètres de configuration permettent d'influencer le choix des
protocoles. Ils permettent par exemple d'empêcher l'utilisation de protocoles interdits sur le
réseau concerné.
Contrôle d'accès
Pour éviter tel incident, le système d'exploitation réserve à chaque programme un espace
d'adressage - un emplacement en mémoire que seul le programme en question peut
manipuler6. Le système d'exploitation détecte toute tentative d'accès en dehors de l'espace
d'adressage et provoque l'arrêt immédiat du programme qui tente d'effectuer telles opérations 6.
Le système d'exploitation va également refuser la mise hors service de programmes centraux
tels que les logiciels serveur ou des programmes du système d'exploitation par tout utilisateur
qui n'a pas préalablement reçu le privilège d'effectuer cette opération — selon les règlements
introduits par l'administrateur de sécurité.
Les mécanismes de contrôle d'accès ont aussi pour effet de lutter contre les logiciels
malveillants — ceux-ci effectuent souvent des opérations susceptibles de perturber
l'utilisation de l'ordinateur.
Interface utilisateur
Le système d'exploitation peut dialoguer avec un usager par l'intermédiaire d'un autre
ordinateur ou d'un terminal (interface distribuée). Les informations envoyées par les logiciels
applicatifs seront alors envoyées à l'autre ordinateur selon un protocole prévu à cet effet,
tandis que l'autre ordinateur enverra les manipulations effectuées par l'utilisateur. Voir SSH,
RFB ou X Window System.
Lorsque l'interface est en mode texte, l'image numérique est une grille dans laquelle sont
placés des caractères d'imprimerie, la grille comporte typiquement 80 colonnes et 35 lignes.
L'interface se manipule avec un clavier. Ce type d'interface, qui existe depuis les débuts de
l'informatiqueN 3 est aujourd'hui remplacé par les interfaces graphiques.
Dans une interface utilisateur graphique (anglais Graphical User Interface abrégé GUI),
l'image numérique est composée par un programme du système d'exploitation par
superposition de points, de lignes, de pictogrammes et de caractères d'imprimerie. L'interface
se manipule typiquement avec une souris selon le principe WIMP (anglais Windows, Icons,
Menus and Pointer device). L'image numérique est créée à l'aide du processeur graphique de
l'ordinateur.
Lors des manipulations de la souris, le système d'exploitation déplace l'élément d'image qu'est
le pointeur et effectue les calculs nécessaires pour déterminer quel est l'élément de l'image qui
se trouve juste en dessous. À chaque élément de l'image peut être associé un programme. Un
widget est un programme qui dessine et anime un élément d'image dont l'aspect peut-être
celui d'un bouton poussoir, d'une lampe témoin, d'un ascenseur, d'une zone texte, d'un menu,
etc. Divers widgets sont fournis avec le système d'exploitation.
Les programmes pour interface graphique sont aujourd'hui (2011) inclus dans tous les
systèmes d'exploitation contemporains. Le X Window System est l'ensemble des programmes
pour interface utilisateur graphique inclus dans tous les systèmes d'exploitation de la famille
Unix. Pour Windows, l'équivalent est le programme Explorer, aussi nommé Explorateur
Windows (à ne pas confondre avec Internet Explorer).
Logiciels utilitaires
Un logiciel applicatif sert à assister l'utilisateur dans une activité. Les logiciels utilitaires sont
des logiciels applicatifs qui permettent à l'utilisateur d'effectuer des manipulations basiques
telles que démarrer des programmes, copier des fichiers ou modifier des paramètres de
configuration. Divers logiciels utilitaires sont fournis avec les systèmes d'exploitation.
D'autres programmes servent à installer des logiciels, c'est-à-dire copier les fichiers dans les
emplacements prévus à cet effet, et effectuer les modifications de configuration nécessaire
pour rendre le logiciel opérationnel. Ces programmes peuvent aussi servir à consulter la liste
des logiciels actuellement installés dans l'ordinateur.
Typologie
Il existe cinq générations de systèmes d'exploitation : par lots (batch), multi programmé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 suivantes5.
Un système de traitement par lots (batch) est prévu pour l'exécution de grands calculs
les uns après les autres, avec peu d'intervention utilisateur2.
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é2.
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éN 4 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 le traitement par « lots » (suites d'instructions et de
données dans un ensemble de cartes perforées) sont apparus dans les années 1950. Un
programme (avec ses données) n'est rien d'autre qu'une pile de cartes avec des indicateurs de
début et de fin de lot. L'exécution d'un programme consiste à demander à un opérateur de
placer la pile de cartes dans le lecteur, puis l'opérateur lance la lecture séquentielle des cartes.
Le processeur central est au repos, durant les manipulations de l'opérateur5.
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 leurs 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 particulière, qu'il place ensuite dans le lecteur. Le regroupement de
plusieurs programmes en un batch diminue les interventions de l'opérateur5.
Dans un système basé sur les batchs, le cœur du système d'exploitation est un programme
moniteur qui réside continuellement en mémoire centrale et permet à l'opérateur de demander
le début ou l'arrêt de 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. Ainsi,
l'opérateur intervient uniquement au début et à la fin du lot5.
Dans ces systèmes d'exploitation les commandes ajoutées au marque-page, 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'exploitation5.
Les systèmes d'exploitation batch sont adaptés à des applications nécessitant de très gros
calculs mais peu d'implication de l'utilisateur : météo, statistiques, impôts... Les utilisateurs
n'attendent pas immédiatement de résultats. Ils soumettent les demandes, puis reviennent
ultérieurement collecter les résultats5.
Les systèmes d'exploitation multi-programmés sont apparus dans les années 1960. Le but
recherché par 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 programme5.
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'ordinateur5.
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, qui leur permet de répondre rapidement à des demandes
provenant simultanément d'un grand nombre d'utilisateurs5.
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,
entraînant des retards pour les autres usagers5.
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 celle disponible, un autre
programme inactif est retiré pour gagner de la place, le programme inactif est alors enregistré
temporairement sur le disque dur. L'enregistrement sur disque provoque cependant une perte
de temps non négligeable5.
En 2011 de nombreux systèmes d'exploitation sont basés sur Unix, un système en temps
partagé3.
Les systèmes d'exploitation temps-réel sont apparus au milieu des années 1970, notamment
chez Hewlett-Packard11. Ils sont destinés aux dispositifs devant non seulement donner des
résultats corrects, mais les donner dans un délai déterminé. Ces systèmes d'exploitation sont
souvent utilisés par des ordinateurs reliés à un appareil externe (pilotes automatiques, robots
industriels, applications vidéo et audio5) pour lequel un retard de réponse de l'ordinateur
entraînerait un échec de l'appareil.
Dans ces systèmes d'exploitation, l'accent est mis sur la durée nécessaire pour effectuer
chaque opération, pour répondre aux demandes rapidement en vue de satisfaire aux
contraintes de temps du système dans lequel il est utilisé5.
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, évitant ainsi les ralentissements que
provoqueraient les réservations à la volée, et garantissant que les ressources sont
continuellement disponibles5.
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.
RTX, Windows CE, Embedded Linux, Symbian OS, Palm OS et VxWorks sont des systèmes
d'exploitation temps réel12.
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 existant sur un autre ordinateur5.
Mach, Amoeba, Andrew, Athena, et Locus sont des systèmes d'exploitation distribués. Ils ont
tous été développés par des universités13.
Histoire
L'histoire des systèmes d'exploitation est fortement liée à celle des ordinateurs. Les premières
générations d'ordinateurs, dans les années 1945 à 1955, ne comportaient pas de système
d'exploitation. Dans ces ordinateurs équipés de tubes à vide, les programmes manipulaient les
ressources matérielles de l'ordinateur sans passer par un intermédiaire14. L'ordinateur était
utilisé par une seule personne à la fois : la tâche de l'opérateur consistait à placer des piles de
cartes perforées dans le lecteur, où chaque carte comportait des instructions d'un programme
ou des données14. Les ordinateurs à tube à vide de cette génération n'avaient qu'une faible
puissance de calcul, ils étaient volumineux, peu commodes et peu fiables (les tubes à vide
grillaient souvent)14.
1960, la multiprogrammation
Dans les années 1960, avec l'arrivée des circuits électroniques à semi-conducteurs, la
puissance de calcul des processeurs a augmenté de manière significative14. Ce qui a permis la
réalisation de systèmes d'exploitation rudimentaires: Les ordinateurs ont été équipés d'un
spooler - file d'attente permettant d'utiliser la puissance de calcul du processeur pendant que
l'opérateur introduit les cartes. L'utilisation des ressources matérielles par les programmes se
faisaient alors par l'intermédiaire d'une bibliothèque logicielle14. Il a alors été possible de
placer en mémoire plusieurs programmes simultanément et les exécuter simultanément; un
programme dit resident monitor résidait continuellement dans la mémoire centrale et
contrôlait l'exécution des différents programmes14.
De plus, ces programmes pouvaient appartenir à des utilisateurs distincts, chacun ayant
l'impression que la machine travaille uniquement pour lui. La possibilité pour un ordinateur
de servir simultanément plusieurs personnes augmentait le retour sur investissement de l'achat
de matériel très coûteux par les entreprises et les institutions. Cependant, du fait de son
écriture dans un langage de programmation PL/I trop complexe pour les ordinateurs de
l'époque, Multics fut un échec commercial. Il a cependant inspiré en grande partie la gamme
de systèmes GCOS développés conjointement par Honeywell et Bull15.
En 1969, les ingénieurs Ken Thompson et Dennis Ritchie des laboratoires Bell rêvent
d'utiliser le système d'exploitation Multics, mais le matériel pour le faire fonctionner est
encore hors de prix. Thompson se lance dans l'écriture d'une version allégée de Multics pour
un PDP-7 inutilisé. Le système, fonctionnel, est surnommé Unics (pour UNiplexed
Information and Computing ServiceT 7), puis finalement baptisé UNIX. Rapidement
reprogrammé dans un langage de programmation plus approprié (le C, développé par Ritchie
pour l'occasion), UNIX se révèle particulièrement simple à porter sur de nouvelles
plateformes, ce qui assure son succèsT 8,16.
Dès 1980, les circuits électroniques à transistor ont été remplacés par des circuits intégrés,
plus petits, ce qui a permis de réaliser des appareils plus compacts et moins coûteux et lancé
le marché des ordinateurs personnels. De nombreux concepteurs de système d'exploitation qui
se sont lancés sur ce marché n'avaient pas d'expérience, ce qui a donné de nouveaux produits,
fondés sur des nouvelles idées, sans héritage ou influence de ce qui se faisait jusqu'alors14.
CP/M, mis sur le marché en 1974, a été le premier système d'exploitation pour micro-
ordinateur, son caractère très sympathique, facile à aborder et commode (user-friendly) l'a
rendu très populaire et influencé le marché des systèmes d'exploitation14.
En 1980, IBM prend contact avec Bill Gates, cofondateur de la société Microsoft, pour
l'adaptation du langage BASIC à son nouveau micro-ordinateur : le Personal Computer
(abrégé PC). IBM est également à la recherche d'un système d'exploitation, et Bill Gates leur
conseille de se tourner vers CP/M. Mais Gary Kildall refuse de signer le contrat avec IBM.
Bill Gates saute sur l'occasion : il rachète QDOS — un système d'exploitation quick-and-dirty
pour les processeurs Intel 8086 — pour proposer à IBM le package DOS/BASIC. Après
quelques modifications effectuées à la demande d'IBM, le système est baptisé MS-DOST 9,17.
Xerox, une des sociétés majeures de l'époque, s'intéresse à l'optique de Steve Jobs. Elle réunit
une poignée de scientifiques et d'ingénieurs dans son centre de recherche de Palo Alto et
développe le premier micro-ordinateur équipé d'une interface utilisateur graphique, sur la base
de thèses et d'études en ergonomie effectuées les années précédentes. Le résultat de ces
recherches, le Xerox Star, ne sera jamais commercialisé. Dix ans plus tard, c'est Apple avec le
Macintosh qui popularise les recherches effectuées par Xerox18.
En 1991, Linus Torvalds, étudiant à l'université d'Helsinki, inspiré par les travaux de
Tanenbaum, sort la toute première version (0.01) de son propre noyau : Linux, qui est au
départ une réécriture de Minix. Linux passe sous licence GNU en 199221 et il faut attendre
1994 pour voir la version 1.0T 10, donnant ainsi naissance à la distribution d'un système
d'exploitation entièrement libre, GNU/Linux.
C'est à la suite des initiatives et travaux de Linus Torvalds et de Richard Stallman, aidés par
des milliers de bénévoles, et consécutivement aux travaux des étudiants de l'université de
Berkeley que GNU/Linux et 4.4BSD sont devenus les premiers systèmes d'exploitation sous
licence libre24.
Le noyau (en anglais : kernel) est la pièce centrale du système d'exploitation27. C'est le second
programme chargé en mémoire (juste après le bootloader) et il y reste en permanence - ses
services sont utilisés continuellement27.
Il réside généralement dans un emplacement protégé de mémoire vive, qui ne peut pas être
modifié ni exploité par les autres programmes27 (c'est-à-dire dans le cas d'un système
d'exploitation en mode protégé).
C'est un composant critique: Si le kernel subit une erreur et s'arrête alors l'ordinateur cessera
de fonctionner, tandis que si un autre programme s'arrêtait (par exemple un programme
utilisateur) alors le système d'exploitation resterait opérationnel27.
Il offre typiquement des fonctions pour créer ou détruire des processus (i.e. exécuter des
programmes), diriger l'utilisation du processeur, de la mémoire et des périphériques. Il offre
également les fonctions qui permettent aux programmes de communiquer entre eux et de
s'aligner dans le temps (synchronisation)26.
Noyau monolithique
Dans une construction monolithique, le système d'exploitation est composé d'un seul
programme: le noyau. Celui-ci est typiquement organisé en couches28. La construction
monolithique est la plus courante, appliquée à la plupart des Unix27.
Noyau à micronoyau
Noyau hybride
Le principe de la répartition par couches est que chaque module d'une couche donnée utilise
uniquement des fonctions offertes par les modules qui se trouvent dans la couche au-
dessous26. L'organisation en couche n'est pas unique aux systèmes d'exploitation et est
couramment appliquée aux logiciels applicatifs28. Dans un système d'exploitation, les couche
inférieures concernent les périphériques et la mémoire ; au-dessus desquelles se trouvent les
systèmes de fichiers, puis les processus28. Ces couches constituent la normalisation de la
machine : pour un programme utilisateur et un système d'exploitation donné, tous les
ordinateurs seront identiques (ou presque). C'est ce que l'on nomme l'abstraction materielle 29
Appels système
Le kernel étant dans un emplacement protégé, il est impossible pour un logiciel applicatif
d'appeler directement ses fonctions27. Un mécanisme permet aux logiciels applicatifs de
demander des services au système d'exploitation28. Il est typiquement mis en œuvre par une
bibliothèque. Celle-ci comporte des fonctions bouchon qui consistent à placer les paramètres
selon une convention, puis utiliser une instruction du processeur qui provoque la mise en
pause du processus en cours et l'exécution du système d'exploitation28. Les fonctions de
bouchon s'utilisent comme les fonctions ordinaires d'une bibliothèque28.
Noyau client-serveur
Dans une construction client-serveur, le cœur du système d'exploitation a pour seule fonction
d'assurer la communication entre les modules26. Le système d'exploitation est divisé en
nombreux petits modules qui sont exécutés de la même manière que des logiciels applicatifs.
Cette construction est bien adaptée aux systèmes d'exploitation distribués26.
Le principe des machines virtuelles, est que le système d'exploitation crée l'illusion qu'il
existe plusieurs machines, aux capacités étendues, en utilisant une seule machine aux
capacités plus limitées26. Le cœur du système d'exploitation est un moniteur qui crée les
illusions - machine virtuelle -. Les caractéristiques techniques de ces machines virtuelles sont
identiques à celle de la machine réellement utilisée et celles-ci peuvent être utilisées pour
exécuter un autre système d'exploitation26.
Quelques exemples
Article détaillé : Liste des systèmes d'exploitation.
Comparaison des principaux systèmes d'exploitation
Matéri Multi
Année Te
Fami el pris Utilisatio Noy Graph Multit - Multipro
d'appa Nom Éditeur mps
lle en n au ique âche utilisa cesseur
rition réel
charge teur
ordinateu
rs
SYSM
1973 R2E Micral personnel
IC
s, stations
de travail
VAX,
DEC
serveurs,
Alpha,
ordinateu
1977 VMS DEC Hewlet
rs
t-
centraux
Packar
d
Amstra
d CPC,
ordinateu (cas
Comm
1978- Digital rs de
CP/M odore
1985 Research personnel MP/M
128,
s )
TRS-
80
ordinateu
Compa
1981- IBM & rs
DOS tible
1990 Microsoft personnel
PC
s
compat systèmes
ibles embarqué
Quantum PC, s,
1982 QNX Software MIPS, automate
Systems Power s
PC, industriel
ARM s
ordinateu
Apple
Mac rs
1984 Apple Macint
OS personnel
osh
s
1985 TOS Atari Atari ordinateu
ST, rs
Eagle, personnel
Medus s
a,
Hades,
Milan,
Firebee
,
ColdFi
re
ordinateu
Comm
rs
odore
Amiga Commod personnel 30
1985 Amiga,
OS ore s et
Power
consoles
PC
de jeu
ordinateu
rs
PS/2, personnel
RS/600 s,
31
1986 AIX Unix IBM 0, serveurs,
Power stations
PC de travail,
superordi
nateurs
stations
machin
de travail
1986 Irix Unix SGI es de
et
SGI
serveurs
Compa
tible
PC,
SPAR
1986- NeXT stations
Unix NeXT C,
1996 STEP de travail
Hewlet
t-
Packar
d
PS/2 et ordinateu
1987- IBM et Compa rs
OS/2
2006 Microsoft tible personnel
PC s
Compa
tible
Andrew
PC, (pédagogi 32
1987 Minix Tanenbau
m68k, que)N 8
m
SPAR
C
Nokia, téléphone
Siemen s
Symbi s, mobiles,
Symbian
1989 an OSN Samsu smartpho 33
9 ltdN 10
ng, ne,
Panaso assistants
nic personnel
Surcou
ordinateu
che
Windo Wind rs 34
1990 Microsoft logiciel
ws 3.x ows personnel
le à
s
DOS
serveurs,
machin
stations
es de
1991 Solaris Unix Sun de travail,
Sun et
superordi
x86/64
nateurs
N
GNU/ (commun nombre
1991 Unix tous
Linux autaire) uxN 11 12
serveurs,
stations
Compa de travail,
Windo Wind
1991N 13 Microsoft tible ordinateu
ws NT ows
PC rs
personnel
s
NetBS (commun nombre
1994N 14 Unix tous
D autaire) uxN 15
FreeB (commun nombre
1994N 14 Unix tous
SD autaire) uxN 16
OpenB (commun nombre
1994N 14 Unix tous
SD autaire) uxN 17
smartpho
ne,
assistants
x86, personnel
Windo Wind 36
1996 Microsoft MIPS, s,
ws CE ows
ARM35 automate
s
industriel
s
ordinateu
Intervalze x86, rs
1996 RTX
ro x6437 industriel
s
ordinateu
rs
x86,
personnel
Mac Power
1999N 18 Unix Apple s,
OS X PC de
serveurs,
Apple
station de
travail
1999 Black Research télépho smartpho ?? ??
Berry In Motion nes ne
OS mobile
s de
BlackB
erry
produit
s des
fabrica smartpho
consortiu
nts du ne,
Androi m Open
2007 Unix Open tablette ?? ??
d Handset
Handse électroniq
Alliance
t ue
Allianc
e
smartpho
apparei ne,
ls de tablette
Apple électroniq
2007 iOS Unix Apple ??
(iPhon ue,
e, iPod, baladeur
iPad...) numériqu
e
apparei
smartpho
ls de la
ne,
Sailfis firme
2007 Unix Jolla tablette ??
h OS Finland
électroniq
aise
ue
Jolla
Le marché
Née en 1985, la gamme des systèmes Windows de Microsoft équipe en 2008 près de 90 % des
ordinateurs personnels, ce qui la place en situation de monopole notamment auprès du grand
public. En 2008, ses parts de marché sont descendues en dessous de 90 % pour la première
fois depuis 15 ans39. Puis à la suite de la croissance très rapide du marché des smartphones, et
du retard pris par Microsoft sur ce marché, ses parts de marché sur les appareils personnels
sont passées de 95 % en 2005 à 20 % en 201340.
La famille Windows équipe aujourd'hui 38 % des serveurs tandis que la famille Unix équipe
31 %, dont à peu près la moitié avec GNU/Linux42. La famille Unix anime 60 % des sites web
dans le monde43 et GNU/Linux équipe 95 % des près de 500 superordinateurs du monde44. En
2012, la famille Unix anime 90 % des smartphones[réf. nécessaire].
Né en 1990, Symbian OS est en 2007 le système d'exploitation le plus répandu sur les
téléphones mobiles et assistants personnels, avec 67 % de part de marché45. En 2012, les
quatre systèmes d'exploitation Android de Google, Symbian, iOS de Apple et Blackberry de
Research In Motion occupent ensemble 95 % du marché des smartphones. Android, le plus
populaire (75 %), est en progression, tandis que les autres sont en recul. Les parts de marché
de Symbian ne sont plus que de 2,3 %46.
Du côté des tablettes tactiles, iOS de Apple était le premier système d'exploitation largement
diffusé avec plus de 80 % de part de marché en 201047. Trois ans plus tard sa part de marché
est de 20 % et celle de Android est de plus de 56 %48.
De nombreux logiciels applicatifs sur le marché sont construits pour fonctionner avec un
système d'exploitation en particulier, ou une famille en particulier et un système d'exploitation
est construit pour fonctionner avec une gamme de machines donnée. Pour l'acheteur le choix
de la famille de machine limite le choix du système d'exploitation, qui lui-même limite le
choix des logiciels applicatifs.
Chaque système d'exploitation, selon la palette de programmes qu'il contient, est construit
pour fonctionner avec certains réseaux informatiques. Pour l'acheteur qui possède un réseau
informatique (typiquement les entreprises et les institutions) le choix du système
d'exploitation dépend de son adéquation au réseau existant de l'acheteur.
L'utilité d'un système d'exploitation pour l'usager est proportionnel au nombre de logiciels
applicatifs qui sont prévus pour lui. La popularité élevée d'un système d'exploitation attire les
éditeurs de logiciels applicatifs, ce qui accroit encore sa popularité (effet réseau). Ce
phénomène fait que le marché est sujet aux situations de monopole.
Apple, Sun Microsystems et Silicon Graphics sont des marques qui fabriquent du matériel
informatique et développent des systèmes d'exploitation pour leur propre matériel. Certains
systèmes d'exploitation, comme Microsoft Windows et Android, sont vendus avec le matériel
informatique, conformément à des accords entre les fabricants.
La compatibilité d'un système d'exploitation est sa capacité à être utilisé à la place d'un autre,
en particulier à exécuter les logiciels applicatifs de l'autre. Le système d'exploitation est dit
« compatible » avec l'autre. La compatibilité au niveau source est la capacité pour un système
d'exploitation A d'exécuter un logiciel applicatif créé pour B après avoir compilé le code
source du logiciel pour la machine A. Et la compatibilité binaire est la capacité pour un
système d'exploitation A d'exécuter un logiciel applicatif créé pour B tel quel, sans avoir à le
recompiler.
L’interopérabilité est la capacité pour plusieurs systèmes à être utilisés ensemble, par exemple
dans un même appareil, ou dans un réseau informatique.
Pour être compatibles, deux systèmes d'exploitation doivent avoir des points communs,
notamment sur l'interface de programmation. La compatibilité binaire n'est possible qu'entre
deux systèmes d'exploitation qui fonctionnent avec la même famille de processeur.
La compatibilité et l'interopérabilité entre les systèmes d'exploitation sont assurées, par les
éditeurs, par alignement de leur produit sur des normes industrielles ainsi que des
technologies rendues publiques.
Le système d'exploitation Unix, créé en 1969, a servi de source d'inspiration pour toute une
famille de systèmes d'exploitation. Le jeu de la concurrence, très vif dans les années 1980, a
conduit les différents membres de la famille Unix à s'éloigner, et perdre la compatibilité les
uns avec les autres. Des organismes de normalisation tels que Open Group se sont penchés sur
le problème et ont édicté des normes garantissant la compatibilité à travers toute la famille
Unix.
Entre 1995 et 2007, Microsoft, éditeur de la suite de systèmes d'exploitation Windows a été
l'objet de plusieurs procès pour des pratiques anticoncurrentielles nuisant à la concurrence et à
l'interopérabilité. La société a été condamnée par le département de la justice des États-Unis
pour violation du Sherman Antitrust Act, ainsi que par la Commission européenne pour
violation des traités relatifs à la concurrence dans l'Union européenne.
Le système d'exploitation Unix a été développé par American Telephone & Telegraph
(AT&T). Jusqu'en 1975, un accord avec l'État fédéral américain lui interdisait de
commercialiser Unix, ayant le monopole de la téléphonie aux États-Unis, le code source du
système d'exploitation était par conséquent public. Mais en 1975, ce monopole fut attaqué en
justice et en 1982, la société était démembrée par décision de justice. AT&T, née de la
fragmentation des activités d’American Telephone & Telegraph, put enfin commercialiser
Unix : les ingénieurs de la société partirent du code source de la version 7 (ouverte) pour
aboutir à UNIX System V. Simultanément, d'autres éditeurs s'inspirèrent de la version 7 pour
créer des systèmes Unix, notamment l'université de Berkeley, avec sa Berkeley Software
Distribution50 (BSD, 1979). Puis ceux-ci ont servi de source d'inspiration pour d'autres
systèmes d'exploitation, et ainsi de suite. En 2009, la famille Unix comptait plus de 25
systèmes d'exploitation.
Le jeu de la concurrence a conduit chaque éditeur à ajouter ses propres améliorations et ses
propres fonctionnalités à son système d'exploitation optimisé pour un matériel en particulier.
Ceci a amené les différents membres de la famille Unix à s'éloigner, et perdre la compatibilité
l'un avec l'autre.
En 1987, dans le but de réunifier la famille Unix, AT&T conclut un accord avec Sun
Microsystems (un des principaux éditeurs de système d'exploitation fondé sur BSD). Les
autres éditeurs ne voyant pas cet accord d'un bon œil, créent la fondation Open Software
Foundation (OSF). Dans un même temps, l'Open Group, un consortium de normalisation,
publie des normes relatives aux systèmes d'exploitation de la famille Unix51. Les deux
institutions sont aujourd'hui fusionnées.
POSIX est le nom donné aux normes IEEE 1003. Cette famille de normes appartenant à
l'Open Group a été lancée en 1988 et concerne l'interface de programmation. La conformité
d'un système d'exploitation à cette norme assure la compatibilité au niveau source. En 2009,
de nombreux systèmes d'exploitations sont conformes à cette norme, y compris en dehors de
la famille Unix52.
POSIX fait partie de la Single Unix Specification, une norme lancée en 1994 par l'Open
Group, qui concerne les systèmes de fichiers, les logiciels utilitaires, ainsi que 1 742 fonctions
de l'interface de programmation53. Le nom « Unix » appartient à l'Open Group et tout système
d'exploitation doit être conforme à la Single Unix Specification pour être reconnu comme
faisant partie de la famille Unix54.
Microsoft et la concurrence
En 1995, conformément au Sherman Antitrust Act — une loi des États-Unis pour la
prévention de l'abus de position dominante, le département de la justice des États-Unis interdit
à Microsoft certaines de ses pratiques considérées comme nuisibles à la concurrence. Deux
ans plus tard, un procès est ouvert pour non-respect des interdictions de 1995 : Microsoft
obtient l'annulation du procès sur l'argument que « la justice n'est pas équipée pour juger du
bien-fondé du design des produits de haute technologie (sic) ».
Entre 1999 et 2001, une enquête est ouverte concernant la position de Microsoft. L'enquête,
menée par les juges Thomas Jackson et Richard Posner, amène à la conclusion que Microsoft
abuse de sa position de monopole pour pratiquer du « favoritisme » sur le marché connexe des
navigateurs Web, des pratiques qui nuisent à ses concurrents, gênent leur émergence et
freinent l'innovation55. La société échappe de peu à la scission, et se retrouve dans l'obligation
de publier les spécifications de ses technologies, en particulier les interfaces de
programmation et les protocoles réseau, ceci afin de préserver l'interopérabilité et la
concurrence56.
Plus tard, en 2007, Microsoft est condamné par la Commission européenne à une amende de
près de 500 millions d'euros pour violation de l'article 82 du traité CE et l'article 54 de
l'accord EEE (textes relatifs au droit de la concurrence et l'abus de position dominante) après
avoir refusé de publier une de ses spécifications techniques à son concurrent Sun
MicrosystemsN 19. Selon la Commission européenne, les agissements de Microsoft nuisent à
l'interopérabilité des systèmes d'exploitation et à la concurrence57.
Chaque système d'exploitation comporte une palette de programmes relatifs aux protocoles
réseau. La composition de la palette dépend du choix de l'éditeur et diffère d'un système
d'exploitation à l'autre. Toutefois, deux ordinateurs ne peuvent communiquer ensemble qu'à la
condition unique d'utiliser les mêmes protocoles.
La popularisation d'Internet dans les années 1990 a poussé de nombreux éditeurs à inclure
dans leur système d'exploitation des programmes relatifs aux protocoles TCP/IP (les
protocoles d'Internet), améliorant ainsi l'interopérabilité entre les systèmes d'exploitation.