Noyau de système d'exploitation

Un noyau de dispositif d'exploitation, est la partie principale de certains dispositifs d'exploitation. Il gère les ressources de l'ordinateur et permet aux divers composants — matériels et logiciels — de communiquer entre eux.



Catégories :

Noyau informatique - Système d'exploitation

Recherche sur Google Images :


Source image : opera.inrialpes.fr
Cette image est un résultat de recherche de Google Image. Elle est peut-être réduite par rapport à l'originale et/ou protégée par des droits d'auteur.

Page(s) en rapport avec ce sujet :

  • Comprendre les dispositifs d'exploitation : au cœur de Linux... veulent comprendre comment est conçu et implémenté le noyau du dispositif Linux.... (source : editions-eyrolles)
  • mais il manquait toujours le noyau, le cœur du dispositif d'exploitation, ..... De même on vit apparaître le support pour certains systèmes liés aux dispositifs... (source : blaess)

Un noyau de dispositif d'exploitation (abrégé noyau, ou kernel en anglais, de l'allemand kern), est la partie principale de certains dispositifs d'exploitation. Il gère les ressources de l'ordinateur et permet aux divers composants — matériels et logiciels — de communiquer entre eux.

Comme partie du dispositif d'exploitation, le noyau apporte des mécanismes d'abstraction du matériel, surtout 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 favorise la communication entre les processus.

Le noyau d'un dispositif d'exploitation est lui-même un logiciel, mais ne peut cependant utiliser l'ensemble des mécanismes d'abstraction qu'il apporte aux autres logiciels[1]. Son rôle central impose d'autre part des performances élevées. Cela fait du noyau la partie la plus critique d'un dispositif d'exploitation et rend sa conception et sa programmation spécifiquement délicates. Plusieurs techniques sont mises en œuvre pour simplifier la programmation des noyaux tout en garantissant de bonnes performances.

Généralités

En informatique, le noyau d'un dispositif d'exploitation est le logiciel qui assure :

La majorité des dispositifs 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[2] 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 principale de l'espace mémoire en un espace noyau et un espace utilisateur contribue énormément à donner la forme et le contenu actuels des dispositifs généralistes (Linux, Windows, Mac OS X, etc. ). Le noyau a de grands pouvoirs sur l'utilisation des ressources matérielles, surtout de la mémoire. Elle structure aussi 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 dispositif. Il transmet ou interprète les informations du matériel via des interruptions. C'est ce qu'on nomme les entrées et sorties.

Diverses abstractions de la notion d'application sont apportées par le noyau aux développeurs. La plus courante est celle de processus (ou tâche). Le noyau du dispositif d'exploitation n'est en lui-même pas une tâche, mais un ensemble de routines pouvant être nommé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 quand ils effectuent des appels dispositifs. Généralement, un processus bloqué ne consomme pas de temps processeur, il est réveillé par le processus dispositif quand ce dernier se termine.

Un processeur est capable d'exécuter un seul processus, un multiprocesseur est capable de gérer tout 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.

Quand plusieurs tâches doivent être exécutées de manière parallèle, un noyau multitâche s'appuie sur les notions de :

Les entrées et les sorties font l'objet d'un traitement spécifique par l'ordonnanceur.

Dispositifs à noyaux restreints

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

Ces dispositifs sont le plus souvent adaptés à des applications particulièrement ciblées mais posent des problèmes variés (de sécurité avec MS-DOS, de performances avec HURD ou QNX). La majorité d'entre eux est aujourd'hui inadaptée pour une utilisation généraliste, dans des serveurs ou ordinateurs personnels.

Fonctions le plus souvent remplies par un noyau

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 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 le plus souvent dans les noyaux les fonctions des micro-noyaux : un gestionnaire de mémoire et un ordonnanceur, mais aussi des fonctions de communication inter-processus.

En dehors de fonctions auparavant listées, de nombreux noyaux fournissent aussi des fonctions moins principales telles que la gestion des dispositifs 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 majorité des noyaux fournissent aussi des modèles de pilotes et des pilotes pour le matériel.

En dehors des fonctionnalités de base, la totalité des fonctions des points suivants (y compris les pilotes matériels, les fonctions réseaux et dispositifs de fichiers ou les services) n'est pas obligatoirement apporté par un noyau de dispositif d'exploitation. Ces fonctions du dispositif 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 nommée depuis l'espace utilisateur ou l'espace noyau a un coût temporel notoirement différent. Si cet appel de fonction est habituel, 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. Dans la mesure du 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 par conséquent plus complexe d'écrire un logiciel fonctionnant dans l'espace noyau que dans l'espace utilisateur, les bogues et failles de sécurité sont énormément plus dangereux.

Ordonnanceur

4 tâches ordonnancées. La tâche 3 est en priorité haute, la tâche 4 est en priorité faible. Ce diagramme est explicatif, en pratique les instructions ordonnées sont directement exécutées

L'ordonnanceur d'un dispositif d'exploitation n'a de sens qu'en dispositif 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), nommée aussi commutation de contexte.

La plupart des ordonnanceurs modernes permettent d'indiquer sur quel processeur sont exécutées les tâches. Certains permettent aussi 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 rédigées de façon à 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 aussi 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

Le gestionnaire de mémoire est le sous-ensemble du dispositif d'exploitation qui sert à gérer la mémoire de l'ordinateur. Sa tâche la plus basique est d'allouer de la mémoire à des processus quand ils en ont besoin. Cette mémoire allouée est par défaut propre au processus qui en fait la demande.

Gestionnaire de mémoire, espace utilisateur et espace noyau

Sur les noyaux récents[3], 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 qui a les propriétés suivantes[4] :

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 surtout être fragmentées dans la mémoire vive quand 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 toujours 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, appelé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 dispositif

Les appels dispositif sont des fonctions :

En plus d'un changement de mode d'exécution, l'appel dispositif suppose au moins deux commutations de contextes :

  1. Contexte du programme appelant ;
    • changement de contexte ;
  2. Contexte du noyau ;
    • changement de contexte ;
  3. Contexte du programme appelant.

Le coût d'un appel dispositif est nettement plus élevé qu'un simple appel de fonction intra-processus : tandis 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 dispositif 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 dispositif de haut niveau. Les nombreuses interactions de bas niveau générées par ces appels dispositif sont effectuées dans l'espace noyau. Cela concerne surtout les pilotes de périphériques.

Les entrées/sorties font aussi l'objet d'un traitement par l'ordonnanceur.

Gestion du matériel

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 particulièrement grand nombre d'accès à certains matériels (disques durs par exemple), certains pilotes sont particulièrement sollicités. Ils sont le plus souvent inclus dans l'espace noyau et communiquent avec l'espace utilisateur via les appels dispositif.

En effet, comme cela a été vu dans le précédent paragraphe, un appel dispositif est coûteux : il nécessite au moins deux changements de contexte. Pour diminuer le nombre des appels dispositif 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 dispositif.

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 qui présentent la même interface à l'espace utilisateur et simplifient ainsi le travail des développeurs d'applications. Dans les dispositifs de type UNIX, l'abstraction utilisée est le dispositif 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 dispositif de fichiers synthétique.

Différents types de noyaux

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

On considère le plus souvent les noyaux monolithiques, de conception ancienne, comme obsolètes car complexes à maintenir et moins «propres». Le noyau Linux était déjà qualifié d'obsolète par Andrew Tanenbaum[6], 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 la majeure partie des fonctions du noyau vers l'espace utilisateur, est particulièrement intéressante en principe mais s'avère complexe 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 particulièrement nombreuses plates-formes et qu'il est modulaire depuis 1995.

Pour ces raisons de performance, les dispositifs 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 comme «service» de Mach et ce dernier inclut du code BSD dans son propre espace d'adressage pour diminuer les latences.

Ainsi, les deux approches d'architectures de noyaux, les micro-noyaux et les noyaux monolithiques, reconnues comme diamétralement différentes en termes de conception, se rejoignent presque en pratique par les micro-noyaux hybrides et les noyaux monolithiques modulaires.

Noyaux monolithiques non modulaires

Architecture monolithique

Certains dispositifs d'exploitation, comme d'anciennes versions de Linux, certains BSD ou certains vieux Unix ont un noyau monolithique. C'est-à-dire que la totalité des fonctions du dispositif 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é complexe de les maintenir. Le support par les architectures monolithiques des chargements à chaud ou dynamiques implique une augmentation du nombre de pilotes matériel compilés dans le noyau, et par suite, une augmentation de la taille de l'empreinte mémoire des noyaux. Celle-ci devint rapidement intolérable. 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, tandis que des noyaux tels que HURD ou celui de Windows XP utilisent des micro-noyaux censés favoriser le portage mais n'existent que pour quelques architectures.

Architecture d'un noyau monolithique

Noyaux monolithiques modulaires

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

La particulièrement grande majorité des dispositifs actuels utilise cette technologie : Linux, la majorité des BSD ou Solaris. Par exemple avec le noyau Linux, certaines parties peuvent être non compilées ou compilées comme 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 dispositifs 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. La totalité des pilotes matériel sont compilés comme 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 dispositif, seuls les pilotes correspondant 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 tenue 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 perfectionnent l'organisation et la clarté du code source et en favorisent aussi la maintenance.

Les noyaux monolithiques modulaires conservent aussi un important défaut des noyaux monolithiques purs : une erreur dans un module met en danger la stabilité de tout le dispositif. Les tests et certification 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 génère des problèmes de portabilité. La pratique contredit beaucoup la théorie et les noyaux modulaires sont actuellement les plus portés.

Dispositifs à micro-noyaux

Architecture d'un dispositif à micro-noyau

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

Les dispositifs à micro-noyaux cherchent à minimiser les fonctionnalités dépendantes du noyau en plaçant la plus grande partie des services du dispositif d'exploitation hors de ce noyau, c'est-à-dire dans l'espace utilisateur. Ces fonctionnalités sont alors apportées par de petits serveurs indépendants possédant fréquemment leur propre espace d'adressage.

Un petit nombre de fonctions principales sont conservées dans un noyau minimaliste nommé «micro-noyau». La totalité des fonctionnalités généralement 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 nommé «micro-noyau enrichi».

Ce principe a de grands avantages théoriques : en éloignant les services «à risque» des parties critiques du dispositif d'exploitation regroupées dans le noyau, il sert à gagner en robustesse et en fiabilité, tout en facilitant la maintenance et l'évolutivité. Par contre, les mécanismes de communication (IPC) qui deviennent fondamentaux pour assurer le passage de messages entre les serveurs, sont particulièrement lourds et peuvent limiter les performances.

Avantages et inconvénients d'un dispositif à micro-noyau

Les avantages théoriques des dispositifs à 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 la totalité en est perfectionnée : une erreur d'un service en mode protégé a peu de conséquences sur la stabilité de la totalité de la machine.

Qui plus est , en réduisant les possibilités pour les services de pouvoir intervenir directement sur le matériel, la sécurité du dispositif est renforcée. Le dispositif gagne aussi 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 la totalité du dispositif. La complexité de la totalité est réduite.

Le développement d'un dispositif à micro-noyau se trouve aussi simplifié en tirant parti à la fois de la protection de la mémoire et de la faible interdépendance entre les services. Les erreurs génèré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 dispositif. 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 bien plus compacts que les noyaux monolithiques. 6 millions de lignes de code pour le noyau Linux 2.6.0 contre généralement moins de 50 000 lignes pour les micro-noyaux. La maintenance du code exécuté en mode noyau est par conséquent simplifiée. Le nombre réduit de lignes de code peut augmenter la portabilité du dispositif.

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 génère les deux problèmes suivants :

  1. La plupart des services sont hors du noyau et génèrent un très grand nombre d'appels dispositif ;
  2. Les interfaces de communication entre les services (IPC) sont complexes et trop lourdes en temps de traitement.

Le grand nombre d'appels dispositif 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 toujours plus de services en espace utilisateur. La rapidité de traitement des IPC a pu être perfectionné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é de la plupart de services pour apporter des fonctionnalités équivalentes à celles des noyaux monolithiques. Qui plus est , 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 apporter leurs propres interfaces).

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

Exemple d'associations micro-noyaux - noyaux enrichis - dispositif d'exploitation

Micro-noyau Micro-noyau enrichi Dispositifs d'exploitation associés
L4 HURD GNU/HURD
Mach (GNU Mach) HURD GNU/HURD
Mach XNU Darwin
Mach XNU Mac OS X

Noyaux hybrides

Architecture hybride
Architecture hybride : XNU

L'expression de «noyaux hybrides» sert à désigner essentiellement des noyaux qui reprennent des concepts à la fois des noyaux monolithiques et des micro-noyaux, pour combiner les avantages des deux.

Quand 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 principales dans le noyau, pour gagner en performance. Les micro-noyaux «purs» semblaient condamnés à l'échec.

Tandis que la philosophie générale des dispositifs à micro-noyaux est tenue (seules les fonctions principales sont dans l'espace noyau), certaines fonctions non critiques, mais particulièrement génératrices d'appels dispositif, sont réintégrées dans l'espace noyau. Ce compromis permet de perfectionner énormément les performances en conservant de nombreuses propriétés des dispositifs à micro-noyaux. Un exemple de ce type de noyau hybride est le noyau XNU de Mac OS X. Il est basé sur le micro-noyau Mach 3.0 mais qui inclut du code du noyau monolithique BSD au sein de l'espace noyau.

Cette expression est aussi utilisée pour désigner d'autres types de noyaux, surtout 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

Étymologiquement, 'exo'veut dire en grec'hors de'. Un exo-noyau est par conséquent un dispositif 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 dispositif 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

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 la totalité 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 dispositif doit aussi permettre la personnalisation, la gestion des permissions mais aussi 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

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

Les noyaux temps réel sont fonctionnellement spécialisés. Ce sont des noyaux le plus souvent 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 dispositif 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 principe n'importe quelle architecture auparavant listée. Ils fournissent fréquemment deux interfaces scindé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 fréquemment 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 dispositif d'exploitation non spécialisé. Le dispositif d'exploitation non spécialisé fonctionne comme service du micro-noyau temps réel. Cette solution permet d'assurer le fonctionnement temps réel des applications, tout en désormais la compatibilité avec des environnements préexistants.

A titre d'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é comme une copie conforme sur le noyau pour lequel il a été conçu, tandis 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 particulièrement implanté dans l'industrie quoique les dispositifs à base de noyau Linux se déploient beaucoup et aient un succès grandissant via RTAI (RTLinux étant breveté).

Synthèse des principaux noyaux et de leurs architectures

Noyau Noyau monolithique Noyau monolithique modulaire Micro-noyau Micro-noyau enrichi Noyau hybride Temps réel Exemples de dispositifs d'exploitation associés
AIX Oui Oui Non Non Oui Oui AIX
Amœba Oui Oui Oui Oui
BeOS Oui Oui Oui Oui Oui Oui BeOS
Anciens BSD Oui Oui Non Non Non Non BSD
BSD 4.4 Oui Oui Non Non Non Non BSD - Solaris 1
Oui Oui Oui Oui
Oui Oui Oui Oui
HURD Oui Oui Non Non Non Non GNU/HURD
Irix Oui Oui Non Non Oui Oui Irix
Oui Oui Oui Oui Oui Oui Jaluna/Chorus
L4 Oui Oui Oui Oui
Linux < 1.2 Oui Oui Non Non Non Non GNU/Linux
Linux > 1.2 Oui Oui Non Non Non Non GNU/Linux
LynuxWorks Oui Oui Oui Oui Oui Oui GNU/Linux/LynuxWorks
Mach Oui Oui Oui Oui
Minix Oui Oui Non Non Oui Oui (Extensions) Minix
NeXTStep Oui Oui Oui Oui Non Non NeXTStep
Nucleus Oui Oui Oui Oui Oui Oui Nucleus
OS/2 Oui Oui Non Non Non Non OS/2
OS/360 Oui Oui Non Non Non Non OS/360
QNX Oui Oui Oui Oui Oui Oui QNX
RTAI Oui Oui Oui Oui Oui Oui GNU/RTAI
RT-OS360/75 Oui Oui Non Non Oui Oui IBM RTOS
Unix SysVr4 / SunOS 5 Oui Oui Non Non Non Non Solaris 7 et suivant
VxWorks Oui Oui Oui Oui Oui Oui Windows/VxWorks, BSD/VxWorks
Windows NT (Noyau de ) Oui Oui Oui Oui Non Non Windows NT
XNU Oui Oui Oui Oui Oui Oui Mac OS X, Darwin
Microware OS-9 Oui Oui OS-9

Voir aussi

  • Multitâche :
  • Espace noyau, espace utilisateur :
  • Temps réel ;
  • Liste des noyaux de dispositifs d'exploitation.
  • Bibliographie

    Liens externes

    Notes et références

    1. Diverses raisons empêchent l'utilisation par le noyau des mécanismes d'abstraction qu'il apporte. Entre autres causes, la gestion des interruptions, l'espace d'adressage et la non réentrance.
    2. Voir Andrew Tanenbaum, Operating Systems : Design and Implementation, Prentice Hall, , 3rd ed. (ISBN 0-13-142938-8), chapitre 1, 3 - 1, 4 - 4.
    3. Le concept de mémoire virtuelle date des années 1960. La généralisation de cette technologie au grand public débute avec Windows XP et Mac OS X.
    4. L'implémentation de la totalité 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).
    5. Sur la majorité 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].
    6. (en) Linux vs. Tanenbaum

    Recherche sur Amazone (livres) :




    Ce texte est issu de l'encyclopédie Wikipedia. Vous pouvez consulter sa version originale dans cette encyclopédie à l'adresse http://fr.wikipedia.org/wiki/Noyau_de_syst%C3%A8me_d%27exploitation.
    Voir la liste des contributeurs.
    La version présentée ici à été extraite depuis cette source le 23/03/2009.
    Ce texte est disponible sous les termes de la licence de documentation libre GNU (GFDL).
    La liste des définitions proposées en tête de page est une sélection parmi les résultats obtenus à l'aide de la commande "define:" de Google.
    Cette page fait partie du projet Wikibis.
    Accueil Recherche Aller au contenuDébut page
    ContactContact ImprimerImprimer liens d'évitement et raccourcis clavierAccessibilité
    Aller au menu