Vous êtes sur la page 1sur 35

Introduction à Microsoft Windows

ArticleTable des matières


• Windows
○ Windows
○ Installation
○ Icones
○ Fenêtres
○ Interface graphique
○ Structure des dossiers
○ Base de registre
○ Tâche
○ DirectX
○ Easter eggs
○ Astuces
 Utilisation
 Optimisation
 Personnalisation
 Outils de diagnostic
 Organisation
 Sécurité
○ A lire aussi
 Système d'exploitation
 UNIX
 Windows 2000/XP
 Mac OS
 MS-DOS
 AS/400
 OS
Historique de Windows
Windows est le système d'exploitation commercialisé par la société Microsoft, dont le siège est
implanté à Seattle. La société Microsoft, initialement baptisé «Traf-O-Data» en 1972 a été
rebaptisée «Micro-soft» en novembre 1975, puis «Microsoft» le 26 novembre 1976.
Microsoft a débuté son activité avec la commercialisation en août 1981 de la version 1.0 du
système d'exploitation Microsoft DOS (MS-DOS), un système d'exploitation 16 bits en ligne de
commande.
La première version de Microsoft Windows (Microsoft Windows 1.0) est apparue en novembre
1985. Il s'agissait d'une interface graphique, inspirée de l'interface des ordinateurs Apple de
l'époque. Windows 1.0 n'a pas eu de succès auprès du public, pas plus que Microsoft Windows
2.0, lancé le 9 décembre 1987.
C'est le 22 mai 1990 que le succès de Microsoft Windows a débuté avec Windows 3.0, puis
Windows 3.1 en 1992 et enfin Microsoft Windows for Workgroup, baptisé par la suite
Windows 3.11, comprenant des fonctionnalités réseau. Windows 3.1 ne peut pas être considéré
comme un système d'exploitation à part entière car il s'agit d'une interface graphique
fonctionnant au-dessus du système Ms-DOS.
Le 24 août 1995, Microsoft lance le système d'exploitation Microsoft Windows 95. Windows 95
marque la volonté de Microsoft de transférer des fonctionnalités de MS-DOS dans Windows,
mais cette version s'appuie encore largement sur le système DOS 16-bits et garde notamment les
limitations du systèmes de fichiers FAT16, si ce n'est la possibilité d'utiliser des noms de fichiers
longs.
Après des révisions mineures de Microsoft Windows 95, baptisées successivement Windows
95A OSR1, Windows 95B OSR2, Windows 95B OSR2.1 et Windows 95C OSR2.5, Microsoft
commercialise le 25 juin 1998 la version suivante de Windows : Windows 98. Windows 98
intègre nativement d'autres fonctionnalités de MS-Dos mais s'appuie toujours sur ce dernier.
D'autre part Windows 98 souffre d'une mauvaise gestion du partage de la mémoire entre
processus, pouvant provoquer des dysfonctionnement du système. Une seconde édition de
Windows 98 paraît, le 17 février 2000, elle se nomme Windows 98 SE (pour «Second Edition»).
Le 14 septembre 2000, Microsoft commercialise Windows Me (pour Millenium Edition),
également appelé Windows Millenium. Windows Millenium s'appuie largement sur Windows
98 (donc sur MS-DOS), mais apporte des fonctionnalités multimédia et réseau supplémentaires.
D'autre part, Windows Millenium intègre un mécanisme de restauration du système permettant
de revenir à un état précédent en cas de plantage.
Parallèlement, Microsoft a lancé dès octobre 1992 un système d'exploitation entièrement 32 bits
(ne s'appuyant donc pas sur MS-DOS) pour un usage professionel, à une époque où les
entreprises utilisaient essentiellement des mainframes. Il s'agit de Windows NT (pour Windows
«New Technology»). Windows NT n'est donc pas une version ou une évolution de Windows 95,
mais un système d'exploitation à part entière.
Le 24 mai 1993 la première version de Windows NT est commercialisée. Il s'agit de Windows
NT 3.1, puis Windows NT 3.5 sort en septembre 1994 et Windows 3.51 en juin 1995. C'est
avec Windows NT 4.0, lancé sur le marché le 24 août 1996, que Windows NT va enfin connaître
un réel succès.
En juillet 1998, Microsoft commercialise Windows NT 4.0 TSE (Terminal Server Emulation),
le premier système Windows à permettre la possibilité de brancher des terminaux sur un serveur,
c'est-à-dire d'utiliser des clients légers pour accéder à une session ouverte sur le serveur.
Le 17 février 2000, la version suivante de Windows NT 4.0 est baptisée Windows 2000 (en lieu
et place de Windows NT 5.0) afin de montrer la convergence des systèmes «NT» avec les
systèmes «Windows 9x». Windows 2000 est un système entièrement 32-bits possédant les
caractéristiques de Windows NT, ainsi qu'une gestion améliorée des processus et une prise en
charge complète des périphériques USB et Firewire.
Puis, le 25 octobre 2001, Windows XP fait son apparition. Il s'agit de la convergence des
systèmes précédents.
Enfin le 24 avril 2003, un système d'exploitation dédié pour les serveurs est commercialisé par
Microsoft : Windows Server 2003.
Dernière modification le mardi 14 octobre 2008 à 17:40:30 par Jeff
Ce document intitulé « Introduction à Microsoft Windows » issu de Comment Ça Marche
Informatique (www.commentcamarche.net) est mis à disposition sous les termes de la licence
Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions
fixées par la licence, tant que cette note apparaît clairement.
Installatio
n
Meilleures réponses
Le systeme d'exploitations windows - Rechercher

Windows Installer - Télécharger


Microsoft Windows Installer est un service d'installation et de configuration d'application. Il
permet de gérer les applications comportant l'extension MSI. WindowsInstaller-KB893803-v2-
x86.exe est le pack pour l'installation ou la mise à jour de...

Internet Explorer 8 - Télécharger


Cette nouvelle version du navigateur de Microsoft offre de nouvelles fonctions en plus des
précédentes. Vous aurez la possibilité d’effectuer facilement des recherches à partir des
services tels que : Digg, Facebook, Windows Live Spaces et bien...

Microsoft windows update - Fiches pratiques


Le moyen le plus commode pour tenir à jour son système est de passer par Démarrer>Tous les
programmes>Windows Update. Une fois sur le site, seules seront proposées les mises à jour
nécessaires. Cependant, un assez grand nombre d'utilisateurs...

Microsoft windows installer vista - Fiches pratiques


Pour rappel, Microsoft Windows Installer est un service d'installation et de configuration
d'application, permettant de gérer les applications comportant l'extension MSI. Lorsqu'une
application portant l'extension .MSI est corrompue ou endommagée,...

Windows Mobile Device Center - Télécharger


ActiveSync est l'ancienne application permettant de synchroniser les appareils mobiles Microsoft
avec un ordinateur. Avec l'arrivé de Windows Vista, il est désormais nécessaire d'utiliser
Windows Mobile Device Center. Windows Mobile Device Center...

System 7 intégral microsoftwindows - Guide d'achat

Logiciel Librairies (DLL) - Télécharger


Introduction à microsoft pour mac - Articles
La petite histoire du Macintosh Cet article a pour but de retracer l’histoire d’Apple (la firme à la
pomme) dans ses grandes lignes, et plus particulièrement celle de son produit phare : le
Macintosh. Steve Wozniak et Steve Jobs sont les deux...

Cd d'installation microsoftwindows 2000 telecharger - Fiches pratiques


Cette astuce s'applique à Windows XP et Windows 2000. Régulièrement, pour effectuer des
mises à jour ou ajouter des composants Windows, le système vous demande d'insérer le CD
d'installation de Windows dans le lecteur. Une solution permet...

Microsoft windows compatibility default - Fiches pratiques


Que vous ayez installé vous-mêmes la mise à jour SP2, ou que votre version de Windows soit
directement une SP2, vous pouvez découvrir que certains logiciels ne fonctionnent plus ou mal !
1 - Précisions générales 2 - Compatibilités...

Microsoft Windows 7 Integral OEM 32 bits - 3 postes - Guide d'achat


VERSION OEM : à l'origine, un logiciel OEM (Original Equipment Manufacturer) est un
programme dont la vente est subordonnée à l'achat d'un matériel "physique" (ordinateur). - Un
logiciel OEM peut être acheté par un particulier mais il faut savoir...

Support IPX pour Vista - Télécharger


Le protocole IPX/SPX sert à de nombreux anciens jeux pour pouvoir jouer en réseau (RedAlert,
Command &Conquer, etc.). Malheureusement, Microsoft a retiré le support du protocole
IPX/SPX dans Vista (32bit). Néanmoins, il est possible de...

Software\Microsoft\Windows\CurrentVersion et
Software\Microsoft\Windows\CurrentVersion\Policies\Explorer - Fiches pratiques
En temps normal, sous Windows 2000, XP, Vista, 7. une fenêtre s'ouvre automatiquement lors
de l'insertion d'un cd, d'un DVD, d'une clé USB ou d'une carte mémoire afin de proposer
différentes actions à effectuer ("ouvrir le dossier", "copier avec...",...

Verifier version microsoftwindows live messenger - Fiches pratiques


Pour connaître la version de windows que vous utilisez, la manière la plus simple est la suivante:
Démarrer ->Executer -> Tapez : Winver et cliquez sur OK. Vous aurez maintenant une fenêtre
qui va s'ouvrir, dans cette fenêtre il y aura la version...

TuxPaint - Télécharger
TuxPaint est un logiciel de dessin libre conçu pour les jeunes enfants âgés de 3 ans et plus. Il
possède une interface simple avec un assistant animé dont l'objectif est d'encourager les enfants à
créer des dessins. TuxPaint propose un canevas...
Plus

• Internet Explorer 8
La rédaction vous conseille de découvrir la nouvelle version d'IE 8 optimisée pour
CommentCaMarche

Top of Form

Système d'exploitation
ArticleTable des matières
• Systèmes d'exploitation
○ Système d'exploitation
○ Fichier
○ Répertoire
○ Extensions connues
○ Processus et PID
○ Types MIME
○ Gestion de la mémoire
○ Variables d'environnement
○ Le bug de l'an 2000
○ A lire aussi
 Linux
 UNIX
 Windows
 Windows 2000/XP
 Mac OS
 MS-DOS
 AS/400
 FAQ OS
Description du système d'exploitation
Pour qu'un ordinateur soit capable de faire fonctionner un programme informatique (appelé
parfois application ou logiciel), la machine doit être en mesure d'effectuer un certain nombre
d'opérations préparatoires afin d'assurer les échanges entre le processeur, la mémoire, et les
ressources physiques (périphériques).

Le système d'exploitation (noté SE ou OS, abréviation du terme anglais Operating System), est
chargé d'assurer la liaison entre les ressources matérielles, l'utilisateur et les applications
(traitement de texte, jeu vidéo, ...). Ainsi lorsqu'un programme désire accéder à une ressource
matérielle, il ne lui est pas nécessaire d'envoyer des informations spécifiques au périphérique, il
lui suffit d'envoyer les informations au système d'exploitation, qui se charge de les transmettre au
périphérique concerné via son pilote. En l'absence de pilotes il faudrait que chaque programme
reconnaisse et prenne en compte la communication avec chaque type de périphérique !

Le système d'exploitation permet ainsi de "dissocier" les programmes et le matériel, afin


notamment de simplifier la gestion des ressources et offrir à l'utilisateur une interface homme-
machine (notée «IHM») simplifiée afin de lui permettre de s'affranchir de la complexité de la
machine physique.
Rôles du système d'exploitation
Les rôles du système d'exploitation sont divers :
• Gestion du processeur : le système d'exploitation est chargé de gérer l'allocation du
processeur entre les différents programmes grâce à un algorithme d'ordonnancement.
Le type d'ordonnanceur est totalement dépendant du système d'exploitation, en fonction
de l'objectif visé.
• Gestion de la mémoire vive : le système d'exploitation est chargé de gérer l'espace
mémoire alloué à chaque application et, le cas échéant, à chaque usager. En cas
d'insuffisance de mémoire physique, le système d'exploitation peut créer une zone
mémoire sur le disque dur, appelée «mémoire virtuelle». La mémoire virtuelle permet de
faire fonctionner des applications nécessitant plus de mémoire qu'il n'y a de mémoire vive
disponible sur le système. En contrepartie cette mémoire est beaucoup plus lente.
• Gestion des entrées/sorties : le système d'exploitation permet d'unifier et de contrôler
l'accès des programmes aux ressources matérielles par l'intermédiaire des pilotes (appelés
également gestionnaires de périphériques ou gestionnaires d'entrée/sortie).
• Gestion de l'exécution des applications : le système d'exploitation est chargé de la
bonne exécution des applications en leur affectant les ressources nécessaires à leur bon
fonctionnement. Il permet à ce titre de «tuer» une application ne répondant plus
correctement.
• Gestion des droits : le système d'exploitation est chargé de la sécurité liée à l'exécution
des programmes en garantissant que les ressources ne sont utilisées que par les
programmes et utilisateurs possédant les droits adéquats.
• Gestion des fichiers : le système d'exploitation gère la lecture et l'écriture dans le
système de fichiers et les droits d'accès aux fichiers par les utilisateurs et les applications.
• Gestion des informations : le système d'exploitation fournit un certain nombre
d'indicateurs permettant de diagnostiquer le bon fonctionnement de la machine.

Composantes du système d'exploitation


Le système d'exploitation est composé d'un ensemble de logiciels permettant de gérer les
interactions avec le matériel. Parmi cet ensemble de logiciels on distingue généralement les
éléments suivants :
• Le noyau (en anglais kernel) représentant les fonctions fondamentales du système
d'exploitation telles que la gestion de la mémoire, des processus, des fichiers, des entrées-
sorties principales, et des fonctionnalités de communication.
• L'interpréteur de commande (en anglais shell, traduisez «coquille» par opposition au
noyau) permettant la communication avec le système d'exploitation par l'intermédiaire
d'un langage de commandes, afin de permettre à l'utilisateur de piloter les périphériques
en ignorant tout des caractéristiques du matériel qu'il utilise, de la gestion des adresses
physiques, etc.
• Le système de fichiers (en anglais «file system», noté FS), permettant d'enregistrer les
fichiers dans une arborescence.

Systèmes multitâches
Un système d'exploitation est dit «multi-tâche» (en anglais multithreaded) lorsque plusieurs
«tâches» (également appelées processus) peuvent être exécutées simultanément.

Les applications sont composées en séquence d'instructions que l'on appelle «processus légers»
(en anglais «threads»). Ces threads seront tour à tour actifs, en attente, suspendus ou détruits,
suivant la priorité qui leur est associée ou bien exécutés séquentiellement.
Un système est dit préemptif lorsqu'il possède un ordonnanceur (aussi appelé planificateur),
qui répartit, selon des critères de priorité, le temps machine entre les différents processus qui en
font la demande.

Le système est dit à temps partagé lorsqu'un quota de temps est alloué à chaque processus par
l'ordonnanceur. C'est notamment le cas des systèmes multi-utilisateurs qui permettent à plusieurs
utilisateurs d'utiliser simultanément sur une même machine des applications différentes ou bien
similaires : le système est alors dit «système transactionnel». Pour ce faire, le système alloue à
chaque utilisateur une tranche de temps.
Systèmes multi-processeurs
Le multiprocessing est une technique consistant à faire fonctionner plusieurs processeurs en
parallèle afin d'obtenir une puissance de calcul plus importante que celle obtenue avec un
processeur haut de gamme ou bien afin d'augmenter la disponibilité du système (en cas de panne
d'un processeur).

On appelle SMP (SymmetricMultiprocessing ou SymmetricMultiprocessor) une architecture dans


laquelle tous les processeurs accèdent à un espace mémoire partagé.

Un système multiprocesseur doit donc être capable de gérer le partage de la mémoire entre
plusieurs processeurs mais également de distribuer la charge de travail.
Systèmes embarqués
Les systèmes embarqués sont des systèmes d'exploitation prévus pour fonctionner sur des
machines de petite taille, telles que des PDA (personal digital assistants ou en français assistants
numériques personnels) ou des appareils électroniques autonomes (sondes spatiales, robot,
ordinateur de bord de véhicule, etc.), possédant une autonomie réduite. Ainsi, une caractéristique
essentielle des systèmes embarqués est leur gestion avancée de l'énergie et leur capacité à
fonctionner avec des ressources limitées.

Les principaux systèmes embarqués «grand public» pour assistants numériques personnels sont :
• PalmOS
• Windows CE / Windows Mobile / Window Smartphone

Systèmes temps réel


Les systèmes temps réel (real time systems), essentiellement utilisés dans l'industrie, sont des
systèmes dont l'objectif est de fonctionner dans un environnement contraint temporellement. Un
système temps réel doit ainsi fonctionner de manière fiable selon des contraintes temporelles
spécifiques, c'est-à-dire qu'il doit être capable de délivrer un traitement correct des informations
reçues à des intervalles de temps bien définis (réguliers ou non).

Voici quelques exemples de systèmes d'exploitation temps réel :


• OS-9 ;
• RTLinux (RealTime Linux) ;
• QNX ;
• VxWorks.

Les types de systèmes d'exploitation


On distingue plusieurs types de systèmes d'exploitation, selon qu'ils sont capables de gérer
simultanément des informations d'une longueur de 16 bits, 32 bits, 64 bits ou plus.

Système Codage Mono-utilisateur Multi-utilisateur Mono-tâche Multitâche


DOS 16 bits X X
Windows3.1 16/32 bits X non préemptif
Windows95/98/Me 32 bits X coopératif
WindowsNT/2000 32 bits X préemptif
WindowsXP 32/64 bits X préemptif
Windows7 32/64 bits X préemptif
Unix / Linux 32/64 bits X préemptif
MAC/OS X 32 bits X préemptif
VMS 32 bits X préemptif
ordinateur à ses paramètres d’usine par défaut ou à une image système personnalisée à partir
d’une image stockée dans une partition masquée sur le disque...

Systeme d'exploitation windows - Articles


Supprimer le mot de passe de l'écran de veille Il est possible de désactiver l'utilisation du mot de
passe dans la mise en veille, par l'intermédiaire de la base de registre sans connaître celui-ci.
Pour cela, lancez RegEdit, allez dans...

Systeme d'exploitation ms dos - Articles


La création du DOS Le DOS est le système d'exploitation le plus connu, sa version la plus
commercialisée est celle de Microsoft, baptisée MS-DOS (il en existe d'autres comme DR-DOS).
MS-DOS a vu le jour en 1981 lors de son utilisation sur un IBM...

Logiciel Système - Télécharger


La section "système" propose des utilitaires permettant d'optimiser votre système d'exploitation,
de surveiller son fonctionnement et de gérer vos fichiers.

Windows Vista SP1 - Télécharger


Fiabilité et Compatibilité Nous avons collecté un grand nombre d’informations via les outils
divers et connus (Analyseur de crash en ligne, Windows ErrorReporting ou encore le programme
d’amélioration d’expérience utilisateur) pour nous permettre de...

Votre ordinateur ne peut pas exécuter cette version du systeme d'exploitation - Fiches
pratiques
La liste ci-dessous détaille les codes d'erreur s'affichant dans les boîtes de dialogue sous
Windows : Code Description ------------------------ 1 Fonction incorrecte. 2 Le fichier spécifié est
introuvable. 3 Le chemin d'accès spécifié...

Comment installer un système d'exploitation - Articles


Installation Pour installer MS-DOS, il faut s'assurer que les paramètres du BIOS sont configurés
de telle façon que le disque s'amorce sur le lecteur A puis sur le disque (boot sequence: A,C). Il
faut ensuite mettre la disquette 1 dans l'unité A,...

HTC P3470 - Guide d'achat


P 3470, Autonomie en conversation : 7 heures, autonomie en veille : 240 heures, Appareil
photo : Oui, Integré, WAP, GPRS, MP3, Système d'Exploitation:Windows Mobile, Écran
couleur, Nombre de couleurs:65, 536, Écran tactile, Taille de l'écran:240x320 ...
Chapitre 1: Introduction

Rôle de systèmed'exploitation
L'activité principale du système d'exploitation est de gérer les ressources matérielles en
permettant leur allocation et leur partage. Ce dernier point augmente les performances du
système en autorisant à plusieurs programmes d'applications d'utiliser simultanément
différentes parties de la machine. Il est ainsi pour beaucoup l'interface, construisant pour
l'utilisateur, une machine virtuelle plus facile à programmer que la machine réelle.
Le système d'exploitation transforme donc, par sa gestion des ressources matérielles, la
machine physique en une machine virtuelle aux capacités infiniment plus grandes que la
machine réelle et certainement beaucoup plus souples et plus faciles à exploiter :
 C'est ainsi que la gestion de l'unité centrale assurée par un système temps-partagé
va permettre à chacun des utilisateurs de ce système d'avoir l'illusion de posséder
chacun un processeur (virtuel) qui travaille exclusivement pour exécuter ses
programmes.

 De même, la gestion appropriée de la mémoire centrale permettra :


○ Le chargement de plusieurs programmes à la fois dans cette même mémoire
centrale.
○ L'exécution de programmes bien plus grands que la taille de la mémoire
centrale
Pour se rendre compte de l'importance du rôle du système en tant qu'interface pour les
programmes d'applications, il suffit de considérer le cas d'une machine, fort heureusement
irréel, démunie d'un système d'exploitation et sur laquelle nous devons développer quelques
programmes d'applications. Imaginez l'effort et le temps, nécessaires à la mise au point des
parties des programmes devant interagir avec le matériel et les périphériques. Ces efforts et
ces difficultés sont indépendants de la nature de l'application traitée. Et pour se convaincre
encore plus, il suffit d'imaginer la quantité de travail de maintenance devant être portée au
programme si un de ces périphériques d'entrée-sortie est amené à être remplacé par un
autre non nécessairement compatible.
Top of Form
| Version sans menu |

Systèmes d'exploitation

But : Expliquer le fonctionnement et les principes d'un système d'exploitation.


• Généralités
• Gestion de la mémoire
• Multitâche
• Interface graphique
• Rôle d'un pilote de périphérique
Généralités | (Haut de page) |
Un ordinateur seul ne peut effectuer rien de très utile. Pour lui un disque dur n'est qu'un endroit
pour stocker des 0 et des 1 et une carte graphique n'est qu'un module mis dans un emplacement.
Pour lui dire que faire de tout cela, il y a une première couche logicielle qui est le système
d'exploitation (sur un PC il y a le BIOS avant tout). On y trouve dedans tout ce qui est nécessaire
pour gérer le matériel et fournir à l'utilisateur les fonctions de base.
Certains systèmes d'exploitation relativement récents rendent tout cela un peu confus en
mélangeant toutes les couches. L'interface graphique est fournie avec le système d'exploitation
comme c'est le cas par exemple avec Windows depuis la version 95. Pour qui souhaite un peu
mieux comprendre l'architecture interne, il vaut mieux s'intéresser à un système comme
GNU/Linux qui met plus en évidence ce découpage.
Gestion de la mémoire | (Haut de page) |
Un des premiers rôles du système d'exploitation est de gérer la mémoire disponible sur la
machine. Par cela, il s'agit de la RAM présente sur la machine, mais pas seulement, comme cela
sera expliqué ci-après.
Sur une machine plusieurs programmes peuvent s'exécuter simultanément comme expliqué dans
la section suivante. Il ne faut pas que ceux-ci puissent interférer les uns avec les autres. Durant
son déroulement, une application a besoin de sauvegarder des données temporairement. Quand
vous utilisez un traitement de texte par exemple, il conserve la police actuellement utilisée. Cela
se fait dans la mémoire. Et il ne faut pas que le jeu qui est en train d'être utilisé en même temps
puisse altérer cette valeur lorsqu'il enregistre l'emplacement actuel du joueur.
Pour réaliser cela, les programmes ne peuvent pas écrire directement dans la RAM de la
machine. Pour eux tout se passe comme si c'était le cas, mais le système d'exploitation se charge
d'écrire dans certaines zones indépendantes les unes des autres. Le programme voit un espace de
mémoire virtuelle dans lequel il peut faire ce qu'il veut sans risquer de déranger les autres. Cet
espace a une taille de 4 Go sur une machine 32 bits (il est divisé en plusieurs parties, mais en dire
plus ne sera pas utile dans cet article).
Un PC standard actuel a 256 Mo de RAM. Il n'est donc pas possible d'y mettre les 4Go évoqués
précédemment. D'autant plus si cela doit être multiplié par le nombre de programmes.
Pour résoudre ce problème, il y a la notion de fichier d'échange (ou swap). La place
supplémentaire nécessaire est prise sur le disque dur. Si la mémoire est pleine et qu'il faut y
écrire de nouvelles données, les plus anciennes (ou les moins fréquemment utilisées) seront
sauvegardées sur le disque pour libérer de l'espace. Un programme ne peut travailler directement
qu'avec les données en mémoire vive. Donc si celles qui avaient été sauvegardées sont requises,
elles suivront le chemin inverse pour revenir en mémoire depuis le disque.
Tout ce mécanisme est invisible pour l'application. C'est le système d'exploitation qui se charge
de ces opérations selon les besoins. Les temps d'accès au disque dur sont coûteux. Donc si la
mémoire est insuffisante par rapport aux applications utilisées, l'utilisation du swap sera
intensive et ralentira la machine.
Multitâche | (Haut de page) |
Sur un PC standard, on a un seul processeur. Celui-ci ne peut globalement exécuter qu'une
opération à la fois. Or lorsqu'on l'utilise, on peut en même temps regarder une vidéo, relever ses
mails et graver un CD-ROM par exemple. Vu de l'utilisateur, c'est comme si tous ces
programmes s'exécutaient simultanément.
En fait il n'en est rien du fait des limitations matérielles. Le rôle du système d'exploitation est de
faire exécuter tour à tour ces applications. Chacune va à son tour disposer de l'unité de calcul (le
processeur) pour réaliser ce qu'il désire. Cet intervalle de temps (time-slice en anglais) peut
varier selon les systèmes de quelques millisecondes à plusieurs dizaines de millisecondes. Plus la
valeur est faible, plus l'impression de multitâche sera grande. Mais le passage d'une application à
une autre a un coût en termes de temps. Il faut restaurer le contexte dans lequel se trouvait
l'application avant que l'accès au processeur lui ait été retiré. Il faut donc trouver le bon
compromis pour que tout le temps ne soit pas passé à basculer.
Cette restauration de contexte comprend notamment le rétablissement de l'espace de mémoire
virtuelle évoqué ci-dessus. Il y a aussi le processeur qui doit être remis comme il était lorsque le
programme a été interrompu.
Il faut noter qu'une application ne sait pas quand elle ne sera plus exécutée pour laisser la place à
une autre. On parle de multitâche préemptif. C'est le système d'exploitation qui prend la
décision.
Sur d'anciens systèmes on avait un multitâche coopératif, appelé parfois aussi pseudo-
multitâche. Dans ce cas-là, c'étaient les applications qui décidaient qu'elles n'avaient pendant un
certains temps plus besoin du processeur (par exemple si elles attendent des données provenant
du disque dur ou du réseau) et peuvent donc être mise en sommeil. Windows 3.1 rajoutait cette
couche de multitâche coopératif sur MS DOS qui était monotâche.
Interface graphique | (Haut de page) |
Comme dit précédemment, l'interface graphique ne fait pas réellement partie du système
d'exploitation lui-même. L'interface graphique vient se placer au-dessus de ce dernier et se divise
encore en plusieurs parties.
Tout d'abord la partie la plus proche du matériel qui comprend les pilotes des cartes graphiques
(voir section suivante). Cette partie utilise les spécificités du matériel pour fournir des fonctions
de base (afficher ou déplacer un rectangle par exemple) ou plus avancées (gestion de la 3D
notamment). Sous GNU/Linux c'est le plus souvent géré par XFree86.
Ensuite vient le gestionnaire de fenêtres. Il permet d'avoir comme son nom l'indique des
fenêtres pour les applications. Celles-ci peuvent être agrandies, réduites,... Et le passage d'une
application à une autre est facilité. Sous GNU/Linux on peut citer Window Maker, KWM ou
Sawfish parmi de nombreux autres.
Et enfin on trouve la partie la plus optionnelle, le gestionnaire de bureau. Il permet d'avoir un
environnement de travail avec un ou plusieurs bureaux virtuels sur lesquels peuvent être placés
des liens vers des programmes. Il y a aussi généralement d'autres outils comme une barre des
tâches ou des menus configurables. Les deux représentants les plus connus sous GNU/Linux sont
KDE et GNOME.
Rôle d'un pilote de périphérique | (Haut de page) |
Appelé driver en anglais, le pilote de périphérique est l'interface entre le matériel et le système
d'exploitation. Il permet de faire l'abstraction de celui-ci (on parle de Hardware Abstraction
Layer) en fournissant une interface toujours identique. Les différents matériels ne sont pas
constitués des mêmes composants électroniques. Mais les fonctionnalités qu'ils présentent sont
les mêmes.
Comme exemple simple, on peut considérer les cartes graphiques. Pour faire afficher un point à
l'écran, différentes cartes ne procéderont pas de la même manière. Mais le pilote de périphérique
va se charger de dialoguer avec la carte selon ses spécifications techniques. Le système
d'exploitation appelera une méthode toujours identique pour demander à voir apparaître ce point.
Ces différences matérielles peuvent être atténuées avec l'apparition de normes. Pour en revenir
aux cartes graphiques, la norme VGA permet de standardiser l'initialisation et l'utilisation de la
carte. Cette norme ne prévoit pas les hautes résolutions, ni les fonctions 3D. Pour ces dernières,
on en revient à des spécificités pour chaque fabricant/modèle.
Les drivers sont considérés comme faisant partie du système d'exploitation. Ils ne le sont pas
forcément au sens logiciel, car ils peuvent être fournis séparément par le constructeur. Mais ils
s'exécutent dans un mode spécial, appelé mode réel. Ce mode leur permet de contourner les
protections du système d'exploitation du mode protégé (dont notamment le contrôle de la
mémoire).

| |

Bottom of Form
Lisez l'appel personnel
de Jimmy Wales,
fondateur de Wikipédia

Noyau de système d'exploitation

Un article de Wikipédia, l'encyclopédie libre.

Aller à : Navigation, rechercher

Pour les articles homonymes, voir noyau.

Un noyau de système d’exploitation, ou simplement noyau, ou kernel (de l'anglais),


est la partie fondamentale de certains systèmes d’exploitation. Il gère les
ressources de l’ordinateur et permet aux différents composants — matériels et
logiciels — de communiquer entre eux.

En tant que partie du système d’exploitation, le noyau fournit des mécanismes


d’abstraction du matériel, notamment de la mémoire, du (ou des) processeur(s), et
des échanges d’informations entre logiciels et périphériques matériels. Le noyau
autorise aussi diverses abstractions logicielles et facilite la communication entre les
processus.

Le noyau d’un système d’exploitation est lui-même un logiciel, mais ne peut


cependant utiliser tous les mécanismes d’abstraction qu’il fournit aux autres
logiciels[note 1]. Son rôle central impose par ailleurs des performances élevées.
Cela fait du noyau la partie la plus critique d’un système d’exploitation et rend sa
conception et sa programmation particulièrement délicates. Plusieurs techniques
sont mises en œuvre pour simplifier la programmation des noyaux tout en
garantissant de bonnes performances.

Sommaire

[masquer]

1 Généralités

1.1 Systèmes à noyaux restreints


2 Fonctions généralement remplies par un noyau

2.1 Ordonnanceur

2.2 Gestionnaire de mémoire

2.3 Appels système

2.4 Gestion du matériel

3 Différents types de noyaux

3.1 Noyaux monolithiques non modulaires

3.2 Noyaux monolithiques modulaires

3.3 Systèmes à micro-noyaux

3.3.1 Avantages et inconvénients d’un système à micro-noyau

3.3.2 Exemple d’associations micro-noyaux - noyaux enrichis -


système d’exploitation

3.4 Noyaux hybrides

3.5 Exo-noyaux

3.6 Méta-noyaux

4 Noyaux temps réel

5 Synthèse des principaux noyaux et de leurs architectures

6 Notes et références

7 Voir aussi

7.1 Bibliographie

7.2 Articles connexes


7.3 Liens externes
Généralités [modifier]

En informatique, le noyau d’un système d’exploitation est le logiciel qui assure :

la communication entre les logiciels et le matériel ;

la gestion des divers logiciels (tâches) d’une machine (lancement des programmes,
ordonnancement…) ;

la gestion du matériel (mémoire, processeur, périphérique, stockage…).


La majorité des systèmes d’exploitation est construite autour de la notion de noyau.
L’existence d’un noyau, c’est-à-dire d’un programme unique responsable de la
communication entre le matériel et le logiciel, résulte de compromis complexes
portant sur des questions de performance, de sécurité et d’architecture des
processeurs.

L’existence d’un noyau présuppose[1] une partition virtuelle de la mémoire vive


physique en deux régions disjointes, l’une étant réservée au noyau (l’espace noyau)
et l’autre aux applications (l’espace utilisateur). Cette division fondamentale de
l’espace mémoire en un espace noyau et un espace utilisateur contribue beaucoup
à donner la forme et le contenu actuels des systèmes généralistes (GNU/Linux,
Windows, Mac OS X, etc.). Le noyau a de grands pouvoirs sur l’utilisation des
ressources matérielles, en particulier de la mémoire. Elle structure également le
travail des développeurs : le développement de code dans l’espace noyau est a
priori plus délicat que dans l’espace utilisateur car la mémoire n’est pas protégée.

Le noyau offre ses fonctionnalités (l’accès aux ressources qu’il gère) au travers des
appels système. Il transmet ou interprète les informations du matériel via des
interruptions. C’est ce que l’on appelle les entrées et sorties.

Diverses abstractions de la notion d’application sont fournies par le noyau aux


développeurs. La plus courante est celle de processus (ou tâche). Le noyau du
système d’exploitation n’est en lui-même pas une tâche, mais un ensemble de
routines pouvant être appelées par les différents processus pour effectuer des
opérations requérant un certain niveau de privilèges. Les flots d’exécution dans le
noyau sont des continuations des flots d’exécution des processus utilisateurs
bloqués lorsqu’ils effectuent des appels systèmes. En général, un processus bloqué
ne consomme pas de temps processeur, il est réveillé par le processus système
lorsque celui-ci se termine.

Un processeur est capable d’exécuter un seul processus, un multiprocesseur est


capable de gérer autant de processus qu’il a de processeurs. Pour pallier cet
inconvénient majeur, les noyaux multitâches permettent l’exécution de plusieurs
processus sur un processeur, en partageant le temps du processeur entre les
processus.

Lorsque plusieurs tâches doivent être exécutées de manière parallèle, un noyau


multitâche s’appuie sur les notions de :

commutation de contexte ;

ordonnancement ;

temps partagé.

Les entrées et les sorties font l’objet d’un traitement spécifique par l’ordonnanceur.
Systèmes à noyaux restreints [modifier]

Il existe de nombreux noyaux aux fonctionnalités restreintes tels que les micro-
noyaux, les systèmes sans noyau (MS-DOS, CP/M) ou les exo-noyaux.

Ces systèmes sont généralement adaptés à des applications très ciblées mais
posent des problèmes variés (de sécurité avec MS-DOS, de performances avec
HURD ou QNX). La plupart d’entre eux sont actuellement inadaptés pour une
utilisation généraliste, dans des serveurs ou ordinateurs personnels.

Fonctions généralement remplies par un noyau [modifier]

Les noyaux ont comme fonctions de base d’assurer le chargement et l’exécution


des processus, de gérer les entrées/sorties et de proposer une interface entre
l’espace noyau et les programmes de l’espace utilisateur.

À de rares exceptions, les noyaux ne sont pas limités à leurs fonctionnalités de


base. On trouve généralement dans les noyaux les fonctions des micro-noyaux : un
gestionnaire de mémoire et un ordonnanceur, ainsi que des fonctions de
communication inter-processus.

En dehors de fonctions précédemment listées, de nombreux noyaux fournissent


également des fonctions moins fondamentales telles que :

la gestion des systèmes de fichiers ;

plusieurs ordonnanceurs spécialisés (batch, temps réel, entrées/sorties, etc.) ;

des notions de processus étendues telles que les processus légers ;

des supports réseaux (TCP/IP, PPP, pare-feu, etc.) ;

des services réseau (NFS, etc.).

Enfin, la plupart des noyaux fournissent également des modèles de pilotes et des
pilotes pour le matériel.

En dehors des fonctionnalités de base, l’ensemble des fonctions des points suivants
(y compris les pilotes matériels, les fonctions réseaux et systèmes de fichiers ou les
services) n'est pas nécessairement fourni par un noyau de système d’exploitation.
Ces fonctions du système d’exploitation peuvent être implantées tant dans l’espace
utilisateur que dans le noyau lui-même. Leur implantation dans le noyau est faite
dans l’unique but d’augmenter les performances. En effet, suivant la conception du
noyau, la même fonction appelée depuis l’espace utilisateur ou l’espace noyau a un
coût temporel notoirement différent. Si cet appel de fonction est fréquent, il peut
s’avérer utile d’intégrer ces fonctions au noyau pour augmenter les performances.
Ces techniques sont utilisées pour pallier des défauts des noyaux tels que les
latences élevées. Autant que possible, il est préférable d’écrire un logiciel hors du
noyau, dans l’espace utilisateur. En effet, l’écriture en espace noyau suppose
l’absence de mécanismes tels que la protection de la mémoire. Il est donc plus
complexe d’écrire un logiciel fonctionnant dans l’espace noyau que dans l’espace
utilisateur, les bugs et failles de sécurité sont bien plus dangereux.

Ordonnanceur [modifier]

Article détaillé : Ordonnancement dans les systèmes d'exploitation.

L’ordonnanceur d’un système d’exploitation n’a de sens qu’en système multitâche.


Il gère l’ordre dans lequel les instructions de différentes tâches sont exécutées et
est responsable de la sauvegarde et de la restauration du contexte des tâches (ce
contexte est constitué des registres processeurs), appelée également commutation
de contexte.

La plupart des ordonnanceurs modernes permettent d’indiquer sur quel processeur


sont exécutées les tâches. Certains permettent également de migrer des tâches sur
d’autres machines d’une grappe de calcul.

L’algorithme d’ordonnancement détermine quelle tâche doit s’exécuter en priorité


et sur quel processeur. Cet algorithme doit permettre d’utiliser efficacement les
ressources de la machine.

L’ordonnancement peut être de type « coopératif » : les tâches doivent être écrites
de manière à coopérer les unes avec les autres et ainsi accepter leur suspension
pour l’exécution d’une autre tâche. L’ordonnancement peut être également de type
préemptif : l’ordonnanceur a la responsabilité de l’interruption des tâches et du
choix de la prochaine à exécuter. Certains noyaux sont eux-mêmes préemptifs :
l’ordonnanceur peut interrompre le noyau lui-même pour faire place à une activité
(typiquement, toujours dans le noyau) de priorité plus élevée.

Gestionnaire de mémoire [modifier]

Le gestionnaire de mémoire est le sous-ensemble du système d’exploitation qui


permet de gérer la mémoire de l’ordinateur. Sa tâche la plus basique est d’allouer
de la mémoire à des processus lorsqu’ils en ont besoin. Cette mémoire allouée est
par défaut propre au processus qui en fait la demande.

Sur les noyaux récents[note 2], le gestionnaire de mémoire masque la localisation


physique de la mémoire (en mémoire vive ou sur disque dur, dans l’espace de
mémoire paginée) et présente au programme une mémoire globale uniforme dite
mémoire virtuelle. Ainsi, tout processus croit manipuler une mémoire "logique" qui
a les propriétés suivantes[note 3] :

la mémoire peut être étendue jusqu’aux capacités théoriques de la machine[note


4] ;

la mémoire est privée (protégée), un processus ne peut pas accéder à la mémoire


d’un autre processus (sauf allocations et autorisations spécifiques).

L’intérêt de ne pas indiquer au processus l’emplacement physique des données est


de permettre au gestionnaire de mémoire de placer et déplacer à sa convenance
les données en mémoire, sans affecter les processus. Ces données peuvent
notamment être fragmentées dans la mémoire vive lorsqu’un processus demande
un bloc de mémoire d’une taille supérieure au plus grand bloc physique libre. Le
contenu de la mémoire peut aussi être migré. Cette migration est faite sur les
différents supports mémoires tels que dans la mémoire physique (plus ou moins
proche du processeur), dans la mémoire paginée, dans la mémoire accessible par
réseaux (grappe de calcul).

La virtualisation de la mémoire permet aussi une gestion optimiste des ressources :


la mémoire allouée mais pas encore utilisée peut être virtuellement allouée à
plusieurs processus (noyau Linux).

Les programmes dans l’espace utilisateur disposent de pouvoirs restreints sur la


mémoire : ils doivent demander au noyau de la mémoire. Le noyau fait appel à son
gestionnaire de mémoire pour allouer (ou non) la mémoire au processus qui la
demande. Si un processus tente d’utiliser des zones de mémoire ne lui appartenant
pas, il est évincé automatiquement. Le mécanisme d’éviction repose sur un
mécanisme du processeur, nommément une unité de gestion de la mémoire, ou
MMU, qui signale au noyau l’existence d’un accès fautif. C’est le noyau lui-même
qui prend la décision de suspendre ou détruire immédiatement le processus fautif.

Appels système [modifier]

Les appels système sont des fonctions :

appelées depuis un programme de l’espace utilisateur ;

dont l’exécution (le traitement) est effectuée dans l’espace noyau ;

dont le retour est effectué dans le programme appelant dans l’espace utilisateur.

En plus d’un changement de mode d’exécution, l’appel système suppose au moins


deux commutations de contextes :

Contexte du programme appelant ;

changement de contexte ;

Contexte du noyau ;

changement de contexte ;

Contexte du programme appelant.

Le coût d’un appel système est nettement plus élevé qu’un simple appel de
fonction intra-processus : alors qu’un appel de fonction ne suppose que quelques
instructions primitives (chargement et exécution d’une zone mémoire), le coût d’un
appel système se compte en milliers ou dizaines de milliers d’instructions
primitives, générant à la fois une charge et des délais d’exécution supplémentaires.
Pour ces raisons, les fonctions qui sont utilisées de manière intense sont déplacées
dans l’espace noyau. Les programmes utilisateurs font alors un nombre restreint
d’appels système de haut niveau. Les nombreuses interactions de bas niveau
générées par ces appels système sont effectuées dans l’espace noyau. Cela
concerne notamment les pilotes de périphériques.

Les entrées/sorties font également l’objet d’un traitement par l’ordonnanceur.

Gestion du matériel [modifier]

La gestion du matériel se fait par l’intermédiaire de pilotes de périphériques. Les


pilotes sont des petits logiciels légers dédiés à un matériel donné qui permettent de
faire communiquer ce matériel. En raison du très grand nombre d’accès à certains
matériels (disques durs par exemple), certains pilotes sont très sollicités. Ils sont
généralement inclus dans l’espace noyau et communiquent avec l’espace
utilisateur via les appels système.

En effet, comme cela a été vu dans le précédent paragraphe, un appel système est
coûteux : il nécessite au moins deux changements de contexte. Afin de réduire le
nombre des appels système effectués pour accéder à un périphérique, les
interactions basiques avec le périphérique sont faites dans l’espace noyau. Les
programmes utilisent ces périphériques au travers d’un nombre restreint d’appels
système.

Cependant, indépendamment de l’architecture, de nombreux périphériques lents


(certains appareils photographiques numériques, outils sur liaison série, etc.)
sont/peuvent être pilotés depuis l’espace utilisateur, le noyau intervenant au
minimum.

Il existe des couches d’abstraction de matériel (HAL) qui présentent la même


interface à l’espace utilisateur et simplifient ainsi le travail des développeurs
d’applications. Dans les systèmes de type UNIX, l’abstraction utilisée est le système
de fichiers : les primitives open, close, read et write sont présentées à l’espace
utilisateur pour manipuler toutes sortes de périphériques. On parle dans ce cas de
système de fichiers synthétique.

Différents types de noyaux [modifier]

Il existe toutes sortes de noyaux, plus ou moins spécialisés. Des noyaux spécifiques
à une architecture, souvent monotâches, d’autres généralistes et souvent
multitâches et multiutilisateurs. L’ensemble de ces noyaux peut être divisé en deux
approches opposées d’architectures logicielles : les noyaux monolithiques et les
micro-noyaux.

On considère généralement les noyaux monolithiques, de conception ancienne,


comme obsolètes car difficiles à maintenir et moins « propres ». Le noyau Linux
était déjà qualifié d’obsolète par Andrew Tanenbaum[2], dès sa création en 1991. Il
ne croyait pas, à l’époque, pouvoir faire un noyau monolithique multiplate-forme et
modulaire. La mise en place de micro-noyaux, qui consiste à déplacer l’essentiel
des fonctions du noyau vers l’espace utilisateur, est très intéressante en théorie
mais s’avère difficile en pratique. Ainsi les performances du noyau Linux
(monolithique) sont supérieures à celles de ses concurrents (noyaux généralistes à
micro-noyaux), sans compter qu’il fut finalement porté sur de très nombreuses
plates-formes et qu’il est modulaire depuis 1995.

Pour ces raisons de performance, les systèmes généralistes basés sur une
technologie à micro-noyau, tels que Windows et Mac OS X, n’ont pas un « vrai »
micro-noyau enrichi. Ils utilisent un micro-noyau hybride : certaines fonctionnalités
qui devraient exister sous forme de mini-serveurs se retrouvent intégrées dans leur
micro-noyau, utilisant le même espace d’adressage. Pour Mac OS X, cela forme
XNU : le noyau monolithique BSD fonctionne en tant que service de Mach et ce
dernier inclut du code BSD dans son propre espace d’adressage afin de réduire les
latences.

Ainsi, les deux approches d’architectures de noyaux, les micro-noyaux et les noyaux
monolithiques, considérées comme diamétralement différentes en termes de
conception, se rejoignent quasiment en pratique par les micro-noyaux hybrides et
les noyaux monolithiques modulaires.

Noyaux monolithiques non modulaires [modifier]

Architecture monolithique

Certains systèmes d’exploitation, comme d’anciennes versions de Linux, certains


BSD ou certains vieux Unix ont un noyau monolithique. C’est-à-dire que l’ensemble
des fonctions du système et des pilotes sont regroupés dans un seul bloc de code et
un seul bloc binaire généré à la compilation.

De par la simplicité de leur concept mais également de leur excellente vitesse


d’exécution, les noyaux monolithiques ont été les premiers à être développés et mis
en œuvre. Cependant, au fur et à mesure de leurs développements, le code de ces
noyaux monolithiques a augmenté en taille et il s’est avéré difficile de les
maintenir. Le support par les architectures monolithiques des chargements à chaud
ou dynamiques implique une augmentation du nombre de pilotes matériels
compilés dans le noyau, et par suite, une augmentation de la taille de l’empreinte
mémoire des noyaux. Celle-ci devint rapidement inacceptable. Les multiples
dépendances créées entre les différentes fonctions du noyau empêchaient la
relecture et la compréhension du code. L’évolution du code s’est faite en parallèle à
l’évolution du matériel, et des problèmes de portage ont alors été mis en évidence
sur les noyaux monolithiques.

En réalité les problèmes de la portabilité de code se sont révélés avec le temps


indépendants de la problématique de la technologie des noyaux. Pour preuve,
NetBSD est un noyau monolithique et est porté sur un très grand nombre
d’architectures, alors que des noyaux tels que HURD ou celui de Windows XP
utilisent des micro-noyaux censés faciliter le portage mais n’existent que pour
quelques architectures.

Architecture d’un noyau monolithique

Noyaux monolithiques modulaires [modifier]


Architecture d’un système à noyau monolithique modulaire

Pour répondre aux problèmes des noyaux monolithiques, ces derniers sont devenus
modulaires. Dans ce type de noyau, seules les parties fondamentales du système
sont regroupées dans un bloc de code unique (monolithique). Les autres fonctions,
comme les pilotes matériels, sont regroupées en différents modules qui peuvent
être séparés tant du point de vue du code que du point de vue binaire.

La très grande majorité des systèmes actuels utilise cette technologie : Linux, la
plupart des BSD ou Solaris. Par exemple avec le noyau Linux, certaines parties
peuvent être non compilées ou compilées en tant que modules chargeables
directement dans le noyau. La modularité du noyau permet le chargement à la
demande de fonctionnalités et augmente les possibilités de configuration. Ainsi les
systèmes de fichiers peuvent être chargés de manière indépendante, un pilote de
périphérique changé, etc. Les distributions Linux, par exemple, tirent profit des
modules chargeables lors de l’installation. L’ensemble des pilotes matériels sont
compilés en tant que modules. Le noyau peut alors supporter l’immense variété de
matériel trouvé dans les compatibles PC. Après l’installation, lors du démarrage du
système, seuls les pilotes correspondants au matériel effectivement présent dans la
machine sont chargés en mémoire vive. La mémoire est économisée.

Les noyaux monolithiques modulaires conservent les principaux atouts des noyaux
monolithiques purs dont ils sont issus. Ainsi, la facilité de conception et de
développement est globalement maintenue et la vitesse d’exécution reste
excellente. L’utilisation de modules implique le découpage du code source du noyau
en blocs indépendants. Ces blocs améliorent l’organisation et la clarté du code
source et en facilitent également la maintenance.

Les noyaux monolithiques modulaires conservent également un important défaut


des noyaux monolithiques purs : une erreur dans un module met en danger la
stabilité de tout le système. Les tests et certifications de ces composants doivent
être plus poussés.
D’un point de vue théorique, le grand nombre de lignes de code exécutées en mode
noyau engendre des problèmes de portabilité. La pratique contredit largement la
théorie et les noyaux modulaires sont aujourd’hui les plus portés.

Systèmes à micro-noyaux [modifier]

Architecture d’un système à micro-noyau

Les limitations des noyaux monolithiques ont amené à une approche radicalement
différente de la notion de noyau : les systèmes à micro-noyaux.

Les systèmes à micro-noyaux cherchent à minimiser les fonctionnalités


dépendantes du noyau en plaçant la plus grande partie des services du système
d’exploitation à l’extérieur de ce noyau, c’est-à-dire dans l’espace utilisateur. Ces
fonctionnalités sont alors fournies par de petits serveurs indépendants possédant
souvent leur propre espace d’adressage.

Un petit nombre de fonctions fondamentales est conservé dans un noyau


minimaliste appelé « micro-noyau ». L’ensemble des fonctionnalités habituellement
proposées par les noyaux monolithiques est alors assuré par les services déplacés
en espace utilisateur et par ce micro-noyau. Cet ensemble logiciel est appelé
« micro-noyau enrichi ».

Ce principe a de grands avantages théoriques : en éloignant les services « à


risque » des parties critiques du système d’exploitation regroupées dans le noyau, il
permet de gagner en robustesse et en fiabilité, tout en facilitant la maintenance et
l’évolutivité. En revanche, les mécanismes de communication (IPC), qui deviennent
fondamentaux pour assurer le passage de messages entre les serveurs, sont très
lourds et peuvent limiter les performances.

Avantages et inconvénients d’un système à micro-noyau [modifier]

Les avantages théoriques des systèmes à micro-noyaux sont la conséquence de


l’utilisation du mode protégé par les services qui accompagnent le micro-noyau. En
effet, en plaçant les services dans l’espace utilisateur, ceux-ci bénéficient de la
protection de la mémoire. La stabilité de l’ensemble en est améliorée : une erreur
d’un service en mode protégé a peu de conséquences sur la stabilité de l’ensemble
de la machine.

De plus, en réduisant les possibilités pour les services de pouvoir intervenir


directement sur le matériel, la sécurité du système est renforcée. Le système gagne
également en possibilités de configuration. Ainsi, seuls les services utiles doivent
être réellement lancés au démarrage. Les interdépendances entre les différents
serveurs sont faibles. L’ajout ou le retrait d’un service ne perturbe pas l’ensemble
du système. La complexité de l’ensemble est réduite.

Le développement d’un système à micro-noyau se trouve également simplifié en


tirant parti à la fois de la protection de la mémoire et de la faible interdépendance
entre les services. Les erreurs provoquées par les applications en mode utilisateur
sont traitées plus simplement que dans le mode noyau et ne mettent pas en péril la
stabilité globale du système. L’intervention sur une fonctionnalité défectueuse
consiste à arrêter l’ancien service puis à lancer le nouveau, sans devoir redémarrer
toute la machine.

Les micro-noyaux ont un autre avantage : ils sont beaucoup plus compacts que les
noyaux monolithiques. 6 millions de lignes de code pour le noyau Linux 2.6.0 contre
en général moins de 50 000 lignes pour les micro-noyaux. La maintenance du code
exécuté en mode noyau est donc simplifiée. Le nombre réduit de lignes de code
peut augmenter la portabilité du système.

Les premiers micro-noyaux (comme Mach) n’ont pas tout de suite atteint ces
avantages théoriques. L’utilisation de nombreux services dans l’espace utilisateur
engendre les deux problèmes suivants :

La plupart des services sont à l’extérieur du noyau et génèrent un très grand


nombre d’appels système ;

Les interfaces de communication entre les services (IPC) sont complexes et trop
lourdes en temps de traitement.

Le grand nombre d’appels système et la communication sous-jacente sont un


défaut inhérent à la conception des micro-noyaux. Dans L4, il a été résolu en
plaçant encore plus de services en espace utilisateur. La rapidité de traitement des
IPC a pu être améliorée en simplifiant les communications au maximum, par
exemple en supprimant toute vérification des permissions, laissant ce soin aux
serveurs externes.

Ces modifications radicales ont permis d’obtenir de bonnes performances mais elles
ne doivent pas faire oublier qu’un micro-noyau doit être accompagné d’un grand
nombre de services pour fournir des fonctionnalités équivalentes à celles des
noyaux monolithiques. De plus, la grande liberté dont disposent les services au
niveau de la sécurité et de la gestion de la mémoire accroît la difficulté et le temps
de leur développement (ils doivent fournir leurs propres interfaces).

Architecture d’un micro-noyau enrichi par des services (micro-noyau enrichi)

Exemple d’associations micro-noyaux - noyaux enrichis - système d’exploitation


[modifier]

Micro- Systèmesd’exploitationas
Micro-noyau
noyauenrichi sociés
L4 HURD GNU/HURD
Mach (GNU
HURD GNU/HURD
Mach)
Mach XNU Darwin
Mach XNU Mac OS X
Noyauxhybrides [modifier]
Architecture hybride

Architecture hybride : XNU

La dénomination de « noyaux hybrides » désigne principalement des noyaux qui


reprennent des concepts à la fois des noyaux monolithiques et des micro-noyaux,
pour combiner les avantages des deux.

Lorsqu’au début des années 1990 les développeurs et concepteurs se sont aperçus
des faiblesses des premiers micro-noyaux, certains réintégrèrent diverses
fonctionnalités non fondamentales dans le noyau, pour gagner en performance. Les
micro-noyaux « purs » semblaient condamnés à l’échec.

Alors que la philosophie générale des systèmes à micro-noyaux est maintenue


(seules les fonctions fondamentales sont dans l’espace noyau), certaines fonctions
non critiques, mais très génératrices d’appels système, sont réintégrées dans
l’espace noyau. Ce compromis permet d’améliorer considérablement les
performances en conservant de nombreuses propriétés des systèmes à micro-
noyaux. Un exemple de ce type de noyau hybride est le noyau XNU de Mac OS X. Il
est basé sur le micro-noyauMach 3.0 mais qui inclut du code du noyau monolithique
BSD au sein de l’espace noyau.

Cette dénomination est également utilisée pour désigner d’autres types de noyaux,
notamment les noyaux monolithiques sur micro-noyaux (temps réel ou non) tels
que L4Linux (Linux sur L4), MkLinux (le noyau Linux sur Mach), Adeos, RTLinux et
RTAI.

Plus rarement, on peut rencontrer le terme « noyau hybride » pour remplacer


improprement « noyau monolithique modulaire » ou « micro-noyau enrichi ».

Exo-noyaux [modifier]

Étymologiquement, 'exo' signifie en grec 'hors de'. Un exo-noyau est donc un


système d'exploitation fonctionnant en espace utilisateur (en 'user-space', au lieu
du 'kernel-space' dans le cas des autres noyaux). Les fonctions et services du
système d'exploitation sont assurés par de petits modules qui, selon les approches
techniques, sont des librairies dynamiques (MIT, LibOSes) ou des démons
(IntraServices).

Méta-noyaux [modifier]

Un « méta-noyau » est un ensemble de logiciels qui vise à appliquer la notion de


noyau informatique au niveau d’un réseau informatique, en créant une unique
couche de gestion des périphériques au niveau d’un réseau.

De cette manière, les logiciels peuvent être déployés et utilisés sur le réseau
informatique comme s’il s’agissait d’une machine unique, et l’ensemble des
logiciels fonctionnant sur cette plate-forme peuvent se partager les ressources de
manière intégrée, comme elle le ferait sur un noyau simple.

Un méta système doit également permettre la personnalisation, la gestion des


permissions ainsi que l’utilisation d’informations dépendant de la localisation.

Cette notion rejoint les notions de grappe de calcul, de machine virtuelle, de


serveur d’application et de CORBA.

Noyaux temps réel [modifier]


Une possibilité d’architecture de noyau temps réel hybride

Les noyaux temps réel sont fonctionnellement spécialisés. Ce sont des noyaux
généralement assez légers qui ont pour fonction de base stricte de garantir les
temps d’exécution des tâches. Il n’y a pas à proprement parler de notion de rapidité
de traitement ou de réactivité dans les noyaux temps réel, cette notion est plutôt
implicite à la garantie des temps d’exécution en comparaison aux critères
temporels de l’application industrielle (la réactivité d’un système de freinage ABS
n’a pas les mêmes critères temporels que le remplissage d’une cuve de pétrole).

Très utilisés dans le monde de l’électronique embarquée, ils sont conçus pour
tourner sur des plates-formes matérielles limitées en taille, puissance ou
autonomie.

Les noyaux temps réel peuvent adopter en théorie n’importe quelle architecture
précédemment listée. Ils fournissent souvent deux interfaces séparées, l’une
spécialisée dans le temps réel et l’autre générique. Les applications temps réel font
alors appel à la partie temps réel du noyau.

Une des architectures souvent retenue est un noyau hybride qui s’appuie sur la
combinaison d’un micro-noyau temps réel spécialisé, allouant du temps d’exécution
à un noyau de système d’exploitation non spécialisé. Le système d’exploitation non
spécialisé fonctionne en tant que service du micro-noyau temps réel. Cette solution
permet d’assurer le fonctionnement temps réel des applications, tout en
maintenant la compatibilité avec des environnements préexistants.

Par exemple, on peut avoir un micro-noyau temps réel allouant des ressources à un
noyau non temps réel tel que Linux (RTLinux, RTAI) ou Windows. L’environnement
GNU (resp. Windows) peut alors être exécuté à l’identique sur le noyau pour lequel
il a été conçu, alors que les applications temps réel peuvent faire directement appel
au micro-noyau temps réel pour garantir leurs délais d’exécutions.
VxWorks est un noyau propriétaire temps réel très implanté dans l’industrie bien
que les systèmes à base de noyau Linux se déploient énormément et aient un
succès grandissant via RTAI (RTLinux étant breveté).

Synthèse des principaux noyaux et de leurs architectures [modifier]

Article détaillé : Liste des noyaux de systèmes d'exploitation.

Mic Exemples de
Micro-
Noyaumon Noyaumonolithi ro- Noyauh Temps systèmes
Noyau noyau d’exploitatio
olithique quemodulaire noy ybride réel
enrichi n associés
au

AIX AIX
Oui Non Oui
Amoeb
a Oui
Oui
BeOS Oui Oui Oui BeOS
Ancien
BSD
s BSD Oui Non Non
BSD BSD - Solaris
4.4 Oui Non Non 1

Chorus Oui
Oui
GNU/L4Linux
Fiasco
Oui /Fiasco
Oui
HURD GNU/HURD
Oui Non Non
IRIX IRIX
Oui Non Oui
Jaluna/Choru
Jaluna Oui Oui Oui s
GNU/HURD ;
L4 Oui GNU/L4linux
Oui
Linux
GNU/Linux
< 1.2 Oui Non Non
Linux
GNU/Linux
> 1.2 Oui Non Non
Lynux GNU/Linux/Ly
Works Oui Oui Oui nuxWorks
Mac OS X,
Darwin,
Mach Oui GNU/HURD,
Oui
GNU/Mklinux

Oui
Minix Minix
Oui Non (Exten
sions)
NeXTS
NeXTStep
tep Oui Oui Non
Nucleu
s Oui Oui Oui Nucleus

OS/2 OS/2
Oui Non Non
OS/36
OS/360
0 Oui Non Non
QNX Oui Oui Oui QNX
RTAI GNU/RTAI
Oui Oui Oui
RT-
OS360 Oui Non Oui IBM RTOS
/75
Unix
SysVr4
Solaris 7 et
/ Oui Non Non suivant
SunOS
5
Windows/Vx
VxWor Works,
ks Oui Oui Oui BSD/VxWork
s
Windo
ws NT
Windows NT
(Noya Oui Oui Non
u de)
Mac OS X,
XNU Oui Oui Oui Darwin
Microw
are Oui OS-9
OS-9
Notes etréférences [modifier]

Notes
↑ Diverses raisons empêchent l’utilisation par le noyau des mécanismes
d’abstraction qu’il fournit. Entre autres causes, la gestion des interruptions, l’espace
d’adressage et la non réentrance.

↑ Le concept de mémoire virtuelle date des années 1960. La généralisation de


cette technologie au grand public commence avec Windows XP et Mac OS X.

↑ L’implémentation de l’ensemble de ces propriétés par le gestionnaire de mémoire


du noyau suppose l’utilisation de microprocesseurs adaptés et équipés d’une unité
de gestion de la mémoire. (Gestionnaire de mémoire matériel).

↑ Sur la plupart des noyaux, seule une fraction des capacités théoriques de la
machine peut être allouée à un processus. Ainsi avec Linux sur x86 (32 bits), seuls
les 3 premiers gigaoctets sont disponibles par défaut pour les processus
[1] [archive].

Références

↑Andrew Tanenbaum, Operating Systems: Design and Implementation, Prentice


Hall,, 3rd ed. (ISBN 0-13-142938-8), chapitre 1,3 - 1,4 - 4.

↑ (en)Linux vs. Tanenbaum [archive]

Voir aussi [modifier]

Bibliographie [modifier]

: source utilisée pour la rédaction de cet article

Andrew Tanenbaum, Systèmes d’exploitation, Pearson Education France, 2003, 2e

éd. (ISBN 2-7440-7002-5) ;

Daniel P. Bovet, Marco Cesati, Le Noyau Linux, O’Reilly, août 2006, 3e éd. (ISBN 2-
84177-243-8) ;

(en) David A. Peterson, NitinIndurkhya, Patterson, Computer Organization and


Design, Morgan Koffman (ISBN 1-55860-428-6) ;

(en) James L. Peterson, Abraham Silberschatz, Peter B. Galvin (dir.), Operating


system concepts, Addison-Wesley, 1990 (ISBN 0-201-51379-X) ;

(en) B.S. Chalk, Computer Organisation and Architecture, Macmillan P. (ISBN 0-333-
64551-0).

Laurent Bloch, Les systèmes d’exploitation des ordinateurs : histoire,


fonctionnement, enjeux, Vuibert, 2003 (ISBN 2-7117-5322-0)

Articles connexes [modifier]


Système d'exploitation ;

Mémoire :

Mémoire virtuelle, mémoire vive, mémoire paginée,

Unité de gestion mémoire ;

Multitâche :

Processus, processus léger,

Ordonnancement, temps partagé,

Commutation de contexte,

Communication inter-processus ;

Espace noyau, espace utilisateur :

Interruption, Entrées-Sorties, appel système,

Pilote ;

Temps réel ;

Liste des noyaux de systèmes d’exploitation.

Liens externes [modifier]

Projet SOS : introduction à la programmation d’un noyau

Programmer son propre noyau : une introduction avec Pépin

osdev.org, des documents et un forum très actif sur la programmation de noyaux

(en) kernelnewbiesproject, articles et documents divers sur le fonctionnement des


noyaux, en particulier Linux

Sur les micro-noyaux :

Interview de Marcus Brinkmann, développeur principal de Hurd/L4 (présente


l’intérêt du portage sur un micro-kernel, L4 en particulier)

(en) On Micro-KernelConstruction[pdf], écrit par Jochen Liedtke, créateur de L3 et L4

Passe d’armes entre Linus Torvalds et Andrew Tanenbaum sur le choix d’une
architecture monolithique pour le noyau Linux

[Enrouler]
v·d·m

Noyaux de systèmes d'exploitation

Noyaux
Linux · Windows NT · XNU
courants
Autresnoyau Accent · GNU Mach · Linux-libre · L4 · Mach · Trix
x
Communication inter-processus · Commutation de contexte ·
Multitâche Ordonnancement · Processus · Temps partagé · Thread · Thread
Local Storage

Matériel Entrées-sorties · Interruption · Interruption matérielle · Pilote

Mémoire Paginée · Virtuelle · Vive · Unité de gestion mémoire

Technique Appel système · BigKernelLock · Espace noyau · Espace utilisateur

Pour une liste complète, voir la liste des noyaux de systèmes d'exploitation et la
catégorie informatique

Vous aimerez peut-être aussi