Quelle est la différence entre un noyau monolithique et un micro-noyau?


114

Quelqu'un pourrait-il expliquer avec des exemples la différence entre le noyau monolithique et le micro-noyau? Aussi d'autres classifications du noyau?



2
Je recommanderais également les pages Wikipédia
David Heffernan

Réponses:


113

Le noyau monolithique est un seul grand processus s'exécutant entièrement dans un seul espace d'adressage. Il s'agit d'un seul fichier binaire statique. Tous les services du noyau existent et s'exécutent dans l'espace d'adressage du noyau. Le noyau peut invoquer des fonctions directement. Exemples d'OS basés sur un noyau monolithique: Unix, Linux.

Dans les micro-noyaux, le noyau est divisé en processus séparés, appelés serveurs. Certains des serveurs fonctionnent dans l'espace noyau et d'autres dans l'espace utilisateur. Tous les serveurs sont séparés et exécutés dans des espaces d'adressage différents. Les serveurs invoquent des "services" les uns des autres en envoyant des messages via IPC (Interprocess Communication). Cette séparation présente l'avantage que si un serveur tombe en panne, les autres serveurs peuvent toujours fonctionner efficacement. Exemples de systèmes d'exploitation basés sur un micro-noyau: Mac OS X et Windows NT.


35
Mac OS X et Windows sont tous deux des noyaux hybrides comme plus étroitement liés à un noyau monolithique. des exemples de micro-noyaux seraient: Mach QNX AmigaOS Minix
zeitue

7
GNU Hurd est un excellent exemple de système d'exploitation fonctionnant sur un micro-noyau. Il est toujours en développement actif et certaines distributions Linux populaires ont un port Hurd (Debian / Hurd, Arch Hurd, etc.).
beatgammit

77
  1. La conception du noyau monolithique est beaucoup plus ancienne que l'idée du micro-noyau, apparue à la fin des années 1980.

  2. Les noyaux Unix et Linux sont monolithiques, tandis que QNX, L4 et Hurd sont des micro-noyaux. Mach était initialement un micro-noyau (pas Mac OS X), mais plus tard converti en un noyau hybride. Minix (avant la version 3) n'était pas un pur micro-noyau car les pilotes de périphériques étaient compilés dans le cadre du noyau.

  3. Les noyaux monolithiques sont généralement plus rapides que les micro-noyaux. Le premier micro-noyau Mach était 50% plus lent que la plupart des noyaux monolithiques, tandis que les plus récents comme L4 étaient seulement 2% ou 4% plus lents que les conceptions monolithiques.

  4. Les noyaux monolithiques sont de grande taille, tandis que les micro-noyaux sont de petite taille - ils s'insèrent généralement dans le cache L1 du processeur (micro-noyaux de première génération).

  5. Dans les noyaux monolithiques, les pilotes de périphérique résident dans l'espace noyau tandis que dans les micro-noyaux, les pilotes de périphérique sont l'espace utilisateur.

  6. Étant donné que les pilotes de périphériques des noyaux monolithiques résident dans l'espace du noyau, les noyaux monolithiques sont moins sécurisés que les micro-noyaux et les échecs (exceptions) dans les pilotes peuvent entraîner des plantages (affichés sous forme de BSOD sous Windows). Les micro-noyaux sont plus sûrs que les noyaux monolithiques, donc plus souvent utilisés dans les dispositifs militaires.

  7. Les noyaux monolithiques utilisent des signaux et des sockets pour implémenter la communication inter-processus (IPC), les micro-noyaux utilisent des files d'attente de messages. Les micro-noyaux de 1ère génération n'implémentaient pas correctement IPC et étaient lents sur les changements de contexte - c'est ce qui a causé leurs mauvaises performances.

  8. Ajouter une nouvelle fonctionnalité à un système monolithique signifie recompiler tout le noyau ou le module de noyau correspondant (pour les noyaux monolithiques modulaires), alors qu'avec les micro-noyaux, vous pouvez ajouter de nouvelles fonctionnalités ou des correctifs sans recompiler.


1
en mentionnant MINIX de quelle version parlez-vous? La 3e version a séparé les pilotes de périphériques et le système de fichiers du noyau .
orustammanapov

À propos de 8. Cela signifie-t-il que lorsque vous installez un programme sous Linux, tout le binaire du noyau est recompilé? Où est également ce binaire du noyau? Merci.
Nikos

@ Nik-Lz: Pas de programme, mais des fonctionnalités. Les programmes fonctionnent généralement sur l'espace utilisateur. Si vous voulez exécuter du code dans l'espace du noyau, vous avez deux options: le construire dans le noyau ou le charger avec un module du noyau. ref
bayuah

25

Noyau monolithique

Toutes les parties d'un noyau telles que le planificateur, le système de fichiers, la gestion de la mémoire, les piles réseau, les pilotes de périphériques, etc., sont conservées dans une seule unité au sein du noyau dans le noyau monolithique

Avantages

• Traitement plus rapide

Désavantages

• Crash non sécurisé • Inflexibilité du portage • Explosion de la taille du noyau

Exemples • MS-DOS, Unix, Linux

Micro noyau

Seules les parties très importantes comme IPC (Inter process Communication), le planificateur de base, la gestion de la mémoire de base, les primitives d'E / S de base, etc., sont placées dans le noyau. La communication se fait via la transmission de messages. D'autres sont conservés en tant que processus serveur dans l'espace utilisateur

Avantages

• Résistant aux chocs, portable, de plus petite taille

Désavantages

• Traitement plus lent en raison de la transmission de messages supplémentaires

Exemples • Windows NT


14

1. noyau monolithique (monolithique pur):all

  • Tous les services du noyau à partir d'un seul composant

    (-) ajout / suppression impossible, moins / zéro flexible

    (+) La communication inter-composants est meilleure

par exemple: - Unix traditionnel

2. micro noyau:few

  • quelques services (gestion de la mémoire, gestion du processeur, IPC, etc.) du noyau central, d'autres services (gestion des fichiers, gestion des E / S, etc.) de différentes couches / composants

  • Approche partagée [Certains services sont en mode privilégié (noyau) et certains sont en mode normal (utilisateur)]

    (+) flexible pour les changements / les gradations

    (-) frais généraux de communication

par exemple: - QNX etc.

3. noyau modulaire (monolithique modulaire):most

  • Combinaison de noyau micro et monolithique

  • Collection de modules - les modules peuvent être -> Statique + Dynamique

  • Les pilotes se présentent sous la forme de modules

par exemple: - Linux Modern OS


1

Dans le spectre des conceptions de noyau, les deux points extrêmes sont les noyaux monolithiques et les micro-noyaux.

Le noyau Linux (classique) par exemple est un noyau monolithique (et il en est de même pour tous les systèmes d'exploitation commerciaux à ce jour - bien qu'ils puissent prétendre le contraire);

En ce que son code est un fichier C unique donnant lieu à un processus unique qui implémente tous les services ci-dessus.
Pour illustrer l'encapsulation du noyau Linux, nous remarquons que le noyau Linux n'a même pas accès à aucune des bibliothèques C standard. En effet, le noyau Linux ne peut pas utiliser les fonctions rudimentaires de la bibliothèque C telles que printf. Au lieu de cela, il implémente sa propre fonction d'impression (appelée impressions).

Cette séparation du noyau Linux et de l'auto-confinement fournit au noyau Linux son principal avantage: le noyau réside dans un seul espace d'adressage1 permettant à toutes les fonctionnalités de communiquer de la manière la plus rapide possible sans recourir à aucun type de passage de message. En particulier, un noyau monolithique implémente tous les pilotes de périphériques du système.

C'est cependant le principal inconvénient d'un noyau monolithique: l'introduction de tout nouveau matériel non pris en charge nécessite une réécriture du noyau (dans les parties pertinentes), une recompilation de celui-ci et la réinstallation de l'OS entier.
Plus important encore, si un pilote de périphérique tombe en panne, tout le noyau en souffre. Cette approche non modulaire des ajouts matériels et des pannes matérielles est le principal argument pour soutenir l'autre approche de conception extrême pour les noyaux. Un micro-noyau est en un sens un noyau minimaliste qui ne contient que les services de base du système d'exploitation (comme la gestion des processus et la gestion du système de fichiers). Dans un micro-noyau, les pilotes de périphérique se trouvent à l'extérieur du noyau, ce qui permet d'ajouter et de supprimer des pilotes de périphérique pendant que le système d'exploitation est en cours d'exécution et ne nécessite aucune alternance du noyau.


-2

Le noyau monolithique a tous les services du noyau ainsi que la partie noyau du noyau, ils sont donc lourds et ont un impact négatif sur la vitesse et les performances. D'autre part, le micro-noyau est léger, ce qui augmente les performances et la vitesse.
J'ai répondu à la même question sur le site wordpress. Pour la différence entre monolithique, micro-noyau et exokernel sous forme tabulaire, vous pouvez visiter ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.