GNU/Linux >> Tutoriels Linux >  >> Linux

Comment le noyau Linux se compare-t-il aux architectures de micro-noyau ?

Les micro-noyaux nécessitent moins de code pour être exécutés dans le mode le plus interne et le plus fiable que les noyaux monolithiques. Cela a de nombreux aspects, tels que :

  • Les micro-noyaux permettent de charger et de décharger à volonté des fonctionnalités non fondamentales (telles que des pilotes pour du matériel non connecté ou non utilisé). Ceci est principalement réalisable sous Linux, via des modules.
  • Les micro-noyaux sont plus robustes :si un composant non-noyau tombe en panne, il n'emportera pas tout le système avec lui. Un système de fichiers ou un pilote de périphérique bogué peut planter un système Linux. Linux n'a aucun moyen d'atténuer ces problèmes autres que les pratiques de codage et les tests.
  • Les micro-noyaux ont une base informatique fiable plus petite. Ainsi, même un pilote de périphérique ou un système de fichiers malveillant ne peut pas prendre le contrôle de l'ensemble du système (par exemple, un pilote d'origine douteuse pour votre dernier gadget USB ne pourrait pas lire votre disque dur).
  • Une conséquence du point précédent est que les utilisateurs ordinaires peuvent charger leurs propres composants qui seraient des composants du noyau dans un noyau monolithique.

Les interfaces graphiques Unix sont fournies via X window, qui est du code utilisateur (à l'exception de (une partie) du pilote de périphérique vidéo). De nombreux unices modernes permettent aux utilisateurs ordinaires de charger des pilotes de système de fichiers via FUSE. Une partie du filtrage de paquets du réseau Linux peut être effectuée en mode utilisateur. Cependant, les pilotes de périphériques, les planificateurs, les gestionnaires de mémoire et la plupart des protocoles réseau sont toujours réservés au noyau.

Une lecture classique (si datée) sur Linux et les micro-noyaux est le débat Tanenbaum-Torvalds. Vingt ans plus tard, on peut dire que Linux évolue très très lentement vers une structure de micro-noyau (les modules chargeables sont apparus très tôt, FUSE est plus récent), mais le chemin est encore long.

Une autre chose qui a changé est la pertinence accrue de la virtualisation sur les ordinateurs de bureau et les ordinateurs embarqués haut de gamme :pour certaines applications, la distinction pertinente n'est pas entre le noyau et l'espace utilisateur, mais entre l'hyperviseur et les systèmes d'exploitation invités.


Un micro-noyau limite le temps pendant lequel le système est en mode noyau, par opposition à l'espace utilisateur, au minimum absolu possible.

Si un plantage se produit en mode noyau, tout le noyau tombe en panne, ce qui signifie que tout le système tombe en panne. Si un plantage se produit en mode utilisateur, seul ce processus s'arrête. Linux est robuste à cet égard, mais il est toujours possible pour n'importe quel sous-système du noyau d'écrire sur la mémoire de n'importe quel autre sous-système du noyau, volontairement ou accidentellement.

Le concept de micro-noyau met beaucoup de choses qui sont traditionnellement en mode noyau, comme la mise en réseau et les pilotes de périphériques, dans l'espace utilisateur. Étant donné que le micro-noyau n'est pas vraiment responsable de beaucoup, cela signifie également qu'il peut être plus simple et plus fiable. Pensez à la façon dont le protocole IP, en étant simple et stupide, conduit vraiment à des réseaux robustes en poussant la complexité vers les bords et en laissant le noyau maigre et méchant.


Vous devriez lire l'autre côté du problème :

Le calcul extrêmement haute performance ou pourquoi les micro-noyaux sont nuls

Le système de fichiers appartient au noyau


Linux
  1. Comment mettre à niveau le noyau sur Linux Desktop

  2. Comment vérifier la version du noyau sous Linux

  3. Linux - Comment recharger correctement un module du noyau ?

  4. Linux - Comment le noyau Linux se compare-t-il aux architectures de micro-noyau ?

  5. Comment fonctionne copy_from_user du noyau Linux en interne ?

Comment comparer des répertoires avec Meld sous Linux

Comment comparer deux fichiers dans un terminal Linux

Comment construire le noyau Linux à partir de zéro

Comment fonctionne la mémoire d'échange sous Linux ?

Comment Docker exécute-t-il un noyau Linux sous un hôte macOS ?

Comment Linux charge-t-il l'image 'initrd' ?