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?
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?
Réponses:
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.
La conception du noyau monolithique est beaucoup plus ancienne que l'idée du micro-noyau, apparue à la fin des années 1980.
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.
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.
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).
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.
É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.
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.
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.
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
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
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.
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