Micro-noyau

Micro-noyau

Noyau de système d'exploitation

Page d'aide sur l'homonymie Pour les articles homonymes, voir noyau.

Un noyau de système dexploitation (abrégé noyau, ou kernel en anglais, de l'allemand kern), est la partie fondamentale de certains systèmes dexploitation. Il gère les ressources de lordinateur et permet aux différents composantsmatériels et logicielsde communiquer entre eux.

En tant que partie du système dexploitation, le noyau fournit des mécanismes dabstraction du matériel, notamment de la mémoire, du (ou des) processeur(s), et des échanges dinformations entre logiciels et périphériques matériels. Le noyau autorise aussi diverses abstractions logicielles et facilite la communication entre les processus.

Le noyau dun système dexploitation est lui-même un logiciel, mais ne peut cependant utiliser tous les mécanismes dabstraction quil fournit aux autres logiciels[1]. Son rôle central impose par ailleurs des performances élevées. Cela fait du noyau la partie la plus critique dun système dexploitation 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

Généralités

En informatique, le noyau dun système dexploitation est le logiciel qui assure :

  • la communication entre les logiciels et le matériel ;
  • la gestion des divers logiciels (tâches) dune machine (lancement des programmes, ordonnancement…) ;
  • la gestion du matériel (mémoire, processeur, périphérique, stockage…).

La majorité des systèmes dexploitation est construite autour de la notion de noyau. Lexistence dun noyau, cest-à-dire dun 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 darchitecture des processeurs.

Lexistence dun noyau présuppose[2] une partition virtuelle de la mémoire vive physique en deux régions disjointes, lune étant réservée au noyau (lespace noyau) et lautre aux applications (lespace utilisateur). Cette division fondamentale de lespace 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 (Linux, Windows, Mac OS X, etc.). Le noyau a de grands pouvoirs sur lutilisation des ressources matérielles, en particulier de la mémoire. Elle structure également le travail des développeurs : le développement de code dans lespace noyau est a priori plus délicat que dans lespace utilisateur car la mémoire nest pas protégée.

Le noyau offre ses fonctionnalités (laccès aux ressources quil gère) au travers des appels système. Il transmet ou interprète les informations du matériel via des interruptions. Cest ce que lon appelle les entrées et sorties.

Diverses abstractions de la notion dapplication sont fournies par le noyau aux développeurs. La plus courante est celle de processus (ou tâche). Le noyau du système dexploitation nest 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 dexécution dans le noyau sont des continuations des flots dexécution des processus utilisateurs bloqués lorsquils 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 dexécuter un seul processus, un multiprocesseur est capable de gérer autant de processus quil a de processeurs. Pour pallier cet inconvénient majeur, les noyaux multitâches permettent lexé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 sappuie sur les notions de :

Les entrées et les sorties font lobjet dun traitement spécifique par lordonnanceur.

Systèmes à noyaux restreints

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 dentre 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

Les noyaux ont comme fonctions de base dassurer le chargement et lexécution des processus, de gérer les entrées/sorties et de proposer une interface entre lespace noyau et les programmes de lespace 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, lensemble 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 dexploitation. Ces fonctions du système dexploitation peuvent être implantées tant dans lespace utilisateur que dans le noyau lui-même. Leur implantation dans le noyau est faite dans lunique but daugmenter les performances. En effet, suivant la conception du noyau, la même fonction appelée depuis lespace utilisateur ou lespace noyau a un coût temporel notoirement différent. Si cet appel de fonction est fréquent, il peut savérer utile dinté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 lespace utilisateur. En effet, lécriture en espace noyau suppose labsence de mécanismes tels que la protection de la mémoire. Il est donc plus complexe décrire un logiciel fonctionnant dans lespace noyau que dans lespace utilisateur, les bogues et failles de sécurité sont bien 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

Lordonnanceur dun système dexploitation na de sens quen système multitâche. Il gère lordre 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 dindiquer sur quel processeur sont exécutées les tâches. Certains permettent également de migrer des tâches sur dautres machines dune grappe de calcul.

Lalgorithme dordonnancement détermine quelle tâche doit sexécuter en priorité et sur quel processeur. Cet algorithme doit permettre dutiliser efficacement les ressources de la machine.

Lordonnancement 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 lexécution dune autre tâche. Lordonnancement peut être également de type préemptif : lordonnanceur a la responsabilité de linterruption des tâches et du choix de la prochaine à exécuter. Certains noyaux sont eux-mêmes préemptifs : lordonnanceur 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 système dexploitation qui permet de gérer la mémoire de lordinateur. Sa tâche la plus basique est dallouer de la mémoire à des processus lorsquils 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 lespace 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[4] :

  • la mémoire peut être étendue jusquaux capacités théoriques de la machine[5] ;
  • la mémoire est privée (protégée), un processus ne peut pas accéder à la mémoire dun autre processus (sauf allocations et autorisations spécifiques).

Lintérêt de ne pas indiquer au processus lemplacement 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 lorsquun processus demande un bloc de mémoire dune 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 lespace 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 dutiliser 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 lexistence dun accès fautif. Cest le noyau lui-même qui prend la décision de suspendre ou détruire immédiatement le processus fautif.

Appels système

Les appels système sont des fonctions :

  • appelées depuis un programme de lespace utilisateur ;
  • dont lexécution (le traitement) est effectuée dans lespace noyau ;
  • dont le retour est effectué dans le programme appelant dans lespace utilisateur.

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

Les entrées/sorties font également lobjet dun traitement par lordonnanceur.

Gestion du matériel

La gestion du matériel se fait par lintermé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 daccès à certains matériels (disques durs par exemple), certains pilotes sont très sollicités. Ils sont généralement inclus dans lespace noyau et communiquent avec lespace 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 lespace noyau. Les programmes utilisent ces périphériques au travers dun nombre restreint dappels système.

Cependant, indépendamment de larchitecture, de nombreux périphériques lents (certains appareils photographiques numériques, outils sur liaison série, etc.) sont/peuvent être pilotés depuis lespace utilisateur, le noyau intervenant au minimum.

Il existe des couches dabstraction de matériel (HAL) qui présentent la même interface à lespace utilisateur et simplifient ainsi le travail des développeurs dapplications. Dans les systèmes de type UNIX, labstraction utilisée est le système de fichiers : les primitives open, close, read et write sont présentées à lespace 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

Il existe toutes sortes de noyaux, plus ou moins spécialisés. Des noyaux spécifiques à une architecture, souvent monotâches, dautres généralistes et souvent multitâches et multiutilisateurs. Lensemble de ces noyaux peut être divisé en deux approches opposées darchitectures 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é dobsolè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 lessentiel des fonctions du noyau vers lespace utilisateur, est très intéressante en théorie mais savè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 quil fut finalement porté sur de très nombreuses plates-formes et quil 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, nont 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 dadressage. 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 dadressage afin de réduire les latences.

Ainsi, les deux approches darchitectures 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

Architecture monolithique

Certains systèmes dexploitation, comme danciennes versions de Linux, certains BSD ou certains vieux Unix ont un noyau monolithique. Cest-à-dire que lensemble 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 dexé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 sest 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 lempreinte 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 sest 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 darchitectures, alors que des noyaux tels que HURD ou celui de Windows XP utilisent des micro-noyaux censés faciliter le portage mais nexistent que pour quelques architectures.

Architecture dun 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 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 linstallation. Lensemble des pilotes matériels sont compilés en tant que modules. Le noyau peut alors supporter limmense variété de matériel trouvé dans les compatibles PC. Après linstallation, 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 dexécution reste excellente. Lutilisation de modules implique le découpage du code source du noyau en blocs indépendants. Ces blocs améliorent lorganisation 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.

Dun 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 aujourdhui les plus portés.

Systèmes à micro-noyaux

Architecture dun 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 dexploitation à lextérieur de ce noyau, cest-à-dire dans lespace utilisateur. Ces fonctionnalités sont alors fournies par de petits serveurs indépendants possédant souvent leur propre espace dadressage.

Un petit nombre de fonctions fondamentales est conservé dans un noyau minimaliste appelé « micro-noyau ». Lensemble 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 dexploitation 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 dun système à micro-noyau

Les avantages théoriques des systèmes à micro-noyaux sont la conséquence de lutilisation du mode protégé par les services qui accompagnent le micro-noyau. En effet, en plaçant les services dans lespace utilisateur, ceux-ci bénéficient de la protection de la mémoire. La stabilité de lensemble en est améliorée : une erreur dun service en mode protégé a peu de conséquences sur la stabilité de lensemble 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. Lajout ou le retrait dun service ne perturbe pas lensemble du système. La complexité de lensemble est réduite.

Le développement dun 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. Lintervention sur une fonctionnalité défectueuse consiste à arrêter lancien 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) nont pas tout de suite atteint ces avantages théoriques. Lutilisation de nombreux services dans lespace utilisateur engendre les deux problèmes suivants :

  1. La plupart des services sont à lextérieur du noyau et génèrent un très grand nombre dappels système ;
  2. Les interfaces de communication entre les services (IPC) sont complexes et trop lourdes en temps de traitement.

Le grand nombre dappels 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 dobtenir de bonnes performances mais elles ne doivent pas faire oublier quun micro-noyau doit être accompagné dun 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 dun micro-noyau enrichi par des services (micro-noyau enrichi)

Exemple dassociations micro-noyaux - noyaux enrichis - système dexploitation

Micro-noyau Micro-noyau enrichi Systèmes dexploitation 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

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.

Lorsquau 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 lespace noyau), certaines fonctions non critiques, mais très génératrices dappels système, sont réintégrées dans lespace noyau. Ce compromis permet damé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-noyau Mach 3.0 mais qui inclut du code du noyau monolithique BSD au sein de lespace noyau.

Cette dénomination est également utilisée pour désigner dautres 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

É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

Un « méta-noyau » est un ensemble de logiciels qui vise à appliquer la notion de noyau informatique au niveau dun réseau informatique, en créant une unique couche de gestion des périphériques au niveau dun réseau.

De cette manière, les logiciels peuvent être déployés et utilisés sur le réseau informatique comme sil sagissait dune machine unique, et lensemble 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 lutilisation dinformations dépendant de la localisation.

Cette notion rejoint les notions de grappe de calcul, de machine virtuelle, de serveur dapplication et de CORBA.

Noyaux temps réel

Une possibilité darchitecture 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 dexécution des tâches. Il ny 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 dexécution en comparaison aux critères temporels de lapplication industrielle (la réactivité dun système de freinage ABS na pas les mêmes critères temporels que le remplissage dune 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 nimporte quelle architecture précédemment listée. Ils fournissent souvent deux interfaces séparées, lune spécialisée dans le temps réel et lautre 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 sappuie sur la combinaison dun micro-noyau temps réel spécialisé, allouant du temps dexécution à un noyau de système dexploitation non spécialisé. Le système dexploitation non spécialisé fonctionne en tant que service du micro-noyau temps réel. Cette solution permet dassurer 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. Lenvironnement GNU (resp. Windows) peut alors être exécuté à lidentique 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 dexécutions.

VxWorks est un noyau propriétaire temps réel très implanté dans lindustrie 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

Noyau Noyau monolithique Noyau monolithique modulaire Micro-noyau Micro-noyau enrichi Noyau hybride Temps réel Exemples de systèmes dexploitation associés
AIX Yes check.svg Oui Non Non Yes check.svg Oui AIX
Amoeba Yes check.svg Oui Yes check.svg Oui
BeOS Yes check.svg Oui Yes check.svg Oui Yes check.svg Oui BeOS
Anciens BSD Yes check.svg Oui Non Non Non Non BSD
BSD 4.4 Yes check.svg Oui Non Non Non Non BSD - Solaris 1
Chorus Yes check.svg Oui Yes check.svg Oui
Fiasco Yes check.svg Oui Yes check.svg Oui GNU/L4Linux/Fiasco
HURD Yes check.svg Oui Non Non Non Non GNU/HURD
Irix Yes check.svg Oui Non Non Yes check.svg Oui Irix
Jaluna Yes check.svg Oui Yes check.svg Oui Yes check.svg Oui Jaluna/Chorus
L4 Yes check.svg Oui Yes check.svg Oui GNU/HURD ; GNU/L4linux
Linux < 1.2 Yes check.svg Oui Non Non Non Non GNU/Linux
Linux > 1.2 Yes check.svg Oui Non Non Non Non GNU/Linux
LynuxWorks Yes check.svg Oui Yes check.svg Oui Yes check.svg Oui GNU/Linux/LynuxWorks
Mach Yes check.svg Oui Yes check.svg Oui Mac OS X, Darwin, GNU/HURD, GNU/Mklinux
Minix Yes check.svg Oui Non Non Yes check.svg Oui (Extensions) Minix
NeXTStep Yes check.svg Oui Yes check.svg Oui Non Non NeXTStep
Nucleus Yes check.svg Oui Yes check.svg Oui Yes check.svg Oui Nucleus
OS/2 Yes check.svg Oui Non Non Non Non OS/2
OS/360 Yes check.svg Oui Non Non Non Non OS/360
QNX Yes check.svg Oui Yes check.svg Oui Yes check.svg Oui QNX
RTAI Yes check.svg Oui Yes check.svg Oui Yes check.svg Oui GNU/RTAI
RT-OS360/75 Yes check.svg Oui Non Non Yes check.svg Oui IBM RTOS
Unix SysVr4 / SunOS 5 Yes check.svg Oui Non Non Non Non Solaris 7 et suivant
VxWorks Yes check.svg Oui Yes check.svg Oui Yes check.svg Oui Windows/VxWorks, BSD/VxWorks
Windows NT (Noyau de) Yes check.svg Oui Yes check.svg Oui Non Non Windows NT
XNU Yes check.svg Oui Yes check.svg Oui Yes check.svg Oui Mac OS X, Darwin
Microware OS-9 Yes check.svg Oui OS-9

Voir aussi

Articles connexes

Bibliographie

  • Andrew Tanenbaum, Systèmes dexploitation, Pearson Education France, 2003, 2e éd. (ISBN 2-7440-7002-5) ;
  • Daniel P. Bovet, Marco Cesati, Le Noyau Linux, OReilly, août 2006, 3e éd. (ISBN 2-84177-243-8) ;
  • (en) David A. Peterson, Nitin Indurkhya, 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 dexploitation des ordinateurs : histoire, fonctionnement, enjeux, Vuibert, 2003 (ISBN 2-7117-5322-0)

Liens externes

Notes et références

  1. Diverses raisons empêchent lutilisation par le noyau des mécanismes dabstraction quil fournit. Entre autres causes, la gestion des interruptions, lespace dadressage 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 commence avec Windows XP et Mac OS X.
  4. Limplémentation de lensemble de ces propriétés par le gestionnaire de mémoire du noyau suppose lutilisation de microprocesseurs adaptés et équipés dune unité de gestion de la mémoire. (Gestionnaire de mémoire matériel).
  5. 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].
  6. (en)Linux vs. Tanenbaum
  • Portail de l’informatique Portail de linformatique
Goldenwiki 2.png
La version du 12 mars 2006 de cet article a été reconnue comme « article de qualité » (comparer avec la version actuelle).
Pour toute information complémentaire, consulter sa page de discussion et le vote layant promu.
Ce document provient de « Noyau de syst%C3%A8me d%27exploitation ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Micro-noyau de Wikipédia en français (auteurs)

Игры ⚽ Поможем написать реферат

Regardez d'autres dictionnaires:

  • micro-noyau — ● n. m. ►SYSTM Voir micronoyau …   Dictionnaire d'informatique francophone

  • Noyau (informatique) — Noyau de système d exploitation Pour les articles homonymes, voir noyau. Un noyau de système d’exploitation (abrégé noyau, ou kernel en anglais, de l allemand kern), est la partie fondamentale de certains systèmes d’exploitation. Il gère les… …   Wikipédia en Français

  • Noyau d'un système d'exploitation — Noyau de système d exploitation Pour les articles homonymes, voir noyau. Un noyau de système d’exploitation (abrégé noyau, ou kernel en anglais, de l allemand kern), est la partie fondamentale de certains systèmes d’exploitation. Il gère les… …   Wikipédia en Français

  • Noyau de systeme d'exploitation — Noyau de système d exploitation Pour les articles homonymes, voir noyau. Un noyau de système d’exploitation (abrégé noyau, ou kernel en anglais, de l allemand kern), est la partie fondamentale de certains systèmes d’exploitation. Il gère les… …   Wikipédia en Français

  • Noyau hybride — Noyau de système d exploitation Pour les articles homonymes, voir noyau. Un noyau de système d’exploitation (abrégé noyau, ou kernel en anglais, de l allemand kern), est la partie fondamentale de certains systèmes d’exploitation. Il gère les… …   Wikipédia en Français

  • Noyau modulaire — Noyau de système d exploitation Pour les articles homonymes, voir noyau. Un noyau de système d’exploitation (abrégé noyau, ou kernel en anglais, de l allemand kern), est la partie fondamentale de certains systèmes d’exploitation. Il gère les… …   Wikipédia en Français

  • Noyau monolithique — Noyau de système d exploitation Pour les articles homonymes, voir noyau. Un noyau de système d’exploitation (abrégé noyau, ou kernel en anglais, de l allemand kern), est la partie fondamentale de certains systèmes d’exploitation. Il gère les… …   Wikipédia en Français

  • Noyau Unix — Noyau Linux Pour les articles homonymes, voir Noyau et Linux (homonymie). Linux …   Wikipédia en Français

  • Noyau linux — Pour les articles homonymes, voir Noyau et Linux (homonymie). Linux …   Wikipédia en Français

  • Noyau windows NT — Le noyau de Windows NT est le composant Microsoft qui assure l accès sécurisé des différentes tâches de Windows à la couche du matériel (Hardware abstraction layer). Sur un système 32 bits classique monoprocesseur, le noyau s appelle… …   Wikipédia en Français

Share the article and excerpts

Direct link
https://fr-academic.com/dic.nsf/frwiki/1160008 Do a right-click on the link above
and select “Copy Link”