5Aug

Qu'est-ce que le noyau Linux et que fait-il?


Avec plus de 13 millions de lignes de code, le noyau Linux est l'un des plus grands projets Open Source au monde, mais qu'est-ce qu'un noyau et à quoi sert-il?

Alors, quel est le noyau?

Un noyau est le plus bas niveau de logiciel facilement remplaçable qui s'interface avec le matériel de votre ordinateur. Il est responsable de l'interfaçage de toutes vos applications fonctionnant en "mode utilisateur" jusqu'au matériel physique et permettant aux processus, appelés serveurs, d'obtenir des informations les uns des autres à l'aide de la communication inter-processus( IPC).

Différents types de noyaux

Il y a, bien sûr, différentes façons de construire un noyau et des considérations architecturales lors de la construction d'un noyau à partir de zéro. En général, la plupart des grains appartiennent à l'un des trois types suivants: monolithique, micro-noyau et hybride. Linux est un noyau monolithique tandis que OS X( XNU) et Windows 7 utilisent des noyaux hybrides. Faisons un tour rapide des trois catégories afin que nous puissions aller plus en détail plus tard.


Image par pop-corn pop-up

Microkernel
Un micro-noyau prend l'approche de gérer seulement ce qu'il a à: CPU, mémoire, et IPC.Presque tout le reste d'un ordinateur peut être considéré comme un accessoire et peut être manipulé en mode utilisateur. Les micro-noyaux ont l'avantage de la portabilité car ils n'ont pas à s'inquiéter si vous changez votre carte vidéo ou même votre système d'exploitation tant que le système d'exploitation essaie toujours d'accéder au matériel de la même manière. Microkernels a également une très faible empreinte, à la fois pour la mémoire et l'espace d'installation, et ils ont tendance à être plus sécurisés car seuls des processus spécifiques s'exécutent en mode utilisateur qui n'a pas les permissions élevées en mode superviseur.

          • Le matériel peut réagir plus lentement car les pilotes sont en mode utilisateur
          • Les processus doivent attendre dans une file d'attente pour obtenir des informations
          • Les processus ne peuvent pasEn savoir plus

          Monolithic Kernel
          Les noyaux monolithiques sont à l'opposé des microkernels car ils englobent non seulement le processeur, la mémoire et l'IPC, mais aussi des éléments tels que les pilotes de périphériques, la gestion de système de fichiers et les appels système. Les noyaux monolithiques ont tendance à mieux accéder au matériel et au multitâche car si un programme a besoin d'informations de la mémoire ou d'un autre processus, il a une ligne plus directe pour y accéder et n'a pas besoin d'attendre dans une file pour faire les choses. Cependant, cela peut causer des problèmes car plus il y a de choses qui fonctionnent en mode superviseur, plus il y a de choses qui peuvent faire baisser votre système si vous ne vous comportez pas correctement.

          Plus

          • Plus d'accès direct au matériel pour les programmes
          • Plus facile pour les processus de communiquer entre eux
          • Si votre appareil est supporté, il devrait fonctionner sans installation supplémentaire
          • Les processus réagissent plus vite car il n'y a pas de file d'attente pour le processeur


        Moins sécurisé parce que tout fonctionne en mode superviseur


      Image via schoschie sur Flickr

      Kernel hybride
      Les noyaux hybrides ont la possibilité de choisir ce qu'ils veulent exécuter en mode utilisateur et ce qu'ils veulent exécuter en superviseurmode. Souvent, des éléments tels que les pilotes de périphériques et les E / S de système de fichiers sont exécutés en mode utilisateur tandis que les appels IPC et serveur sont conservés en mode superviseur. Cela donne le meilleur des deux mondes, mais nécessitera souvent plus de travail du fabricant du matériel, car toute la responsabilité du conducteur dépend d'eux. Il peut également avoir certains des problèmes de latence inhérents aux micro-noyaux.

      Avantages

      • Le développeur peut choisir ce qui fonctionne en mode utilisateur et ce qui fonctionne en mode superviseur
      • Plus petit pas d'installation que le noyau monolithique
      • Plus flexible que les autres modèles

      Inconvénient

      • Peut subir le même retard de processus que le micro-noyau
      • Les pilotes de périphériques doivent être gérés par l'utilisateur( typiquement)

      Où sont les fichiers noyau Linux?

      Le fichier kernel, sous Ubuntu, est stocké dans votre dossier / boot et s'appelle vmlinuz- version .Le nom vmlinuz vient du monde unix où ils appelaient leurs noyaux simplement "unix" dans les années 60, donc Linux a commencé à appeler leur noyau "linux" quand il a été développé pour la première fois dans les années 90.

      Lorsque la mémoire virtuelle a été développée pour faciliter les capacités multitâches, "vm" a été placé au début du fichier pour montrer que le noyau supporte la mémoire virtuelle. Pendant un certain temps, le noyau Linux s'appelait vmlinux, mais le noyau devenait trop grand pour tenir dans la mémoire de démarrage disponible, donc l'image du noyau était compressée et la fin x était changée en z pour montrer qu'elle était compressée avec la compression zlib. Cette même compression n'est pas toujours utilisée, souvent remplacée par LZMA ou BZIP2, et certains noyaux sont simplement appelés zImage.

      La numérotation des versions sera au format A.B.C.D où A.B sera probablement 2.6, C sera votre version, et D indique vos correctifs ou correctifs.

      Dans le dossier / boot, il y aura également d'autres fichiers très importants appelés initrd.img-version, system.map-version et config-version. Le fichier initrd est utilisé comme un petit disque RAM qui extrait et exécute le fichier noyau réel. Le fichier system.map est utilisé pour la gestion de la mémoire avant le chargement complet du noyau, et le fichier de configuration indique au noyau les options et les modules à charger dans l'image du noyau lors de sa compilation.

      Architecture du noyau Linux

      Parce que le noyau Linux est monolithique, il a la plus grande empreinte et la plus grande complexité sur les autres types de noyaux. C'était un élément de design qui faisait l'objet de beaucoup de débats dans les débuts de Linux et qui présente encore les mêmes défauts de conception que les noyaux monolithiques.

      Une chose que les développeurs du noyau Linux ont fait pour contourner ces failles était de faire des modules de noyau qui pourraient être chargés et déchargés à l'exécution, ce qui signifie que vous pouvez ajouter ou supprimer des fonctionnalités de votre noyau à la volée. Cela peut aller au-delà de l'ajout de fonctionnalités matérielles au noyau, en incluant des modules qui exécutent des processus serveur, comme la virtualisation de bas niveau, mais qui peut également remplacer l'intégralité du noyau sans avoir à redémarrer votre ordinateur.

      Imaginez si vous pouviez passer à un service pack Windows sans jamais avoir à redémarrer. ..

      Modules de noyau

      Et si Windows avait tous les pilotes déjà installés et que vous deviez simplement activer les pilotes dont vous aviez besoin? C'est essentiellement ce que font les modules du noyau pour Linux. Les modules du noyau, également connus sous le nom de module noyau chargeable( LKM), sont essentiels pour maintenir le fonctionnement du noyau avec tout votre matériel sans consommer toute la mémoire disponible.

      Un module ajoute généralement des fonctionnalités au noyau de base pour des choses comme les périphériques, les systèmes de fichiers et les appels système. Les LKM ont l'extension de fichier. ko et sont généralement stockés dans le répertoire des modules /lib/.En raison de leur nature modulaire, vous pouvez facilement personnaliser votre noyau en définissant des modules à charger ou à ne pas charger lors du démarrage avec la commande menuconfig ou en éditant votre fichier de configuration /boot/, ou charger et décharger des modules à la volée avec la commande modprobe.

      Des modules tiers et des sources fermées sont disponibles dans certaines distributions, comme Ubuntu, et peuvent ne pas être installés par défaut car le code source des modules n'est pas disponible. Le développeur du logiciel( c'est-à-dire nVidia, ATI, entre autres) ne fournit pas le code source mais construit ses propres modules et compile les fichiers. ko nécessaires à la distribution. Tandis que ces modules sont libres comme dans la bière, ils ne sont pas libres comme dans la parole et ne sont donc pas inclus par certaines distributions car les mainteneurs sentent que cela ternit le noyau en fournissant un logiciel non libre.

      Un noyau n'est pas magique, mais il est absolument essentiel à tout ordinateur fonctionnant correctement. Le noyau Linux est différent de OS X et Windows car il inclut des pilotes au niveau du noyau et rend beaucoup de choses supportées "out of the box".J'espère que vous en saurez un peu plus sur la façon dont votre logiciel et votre matériel fonctionnent ensemble et sur les fichiers dont vous avez besoin pour démarrer votre ordinateur.

      Kernel.org
      Image par ingridtaylar