in

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 niveau le plus bas de logiciel facilement remplaçable qui s’interface avec le matériel de votre ordinateur. Il est chargé d’interfacer toutes vos applications qui s’exécutent en «mode utilisateur» jusqu’au matériel physique et de permettre 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 existe, bien sûr, différentes manières de construire un noyau et des considérations architecturales lors de la création d’un à partir de zéro. En général, la plupart des noyaux 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. Prenons un rapide tour d’horizon des trois catégories afin que nous puissions entrer plus en détail plus tard.


Micro-noyau
Un micro-noyau adopte une approche consistant à ne gérer que ce qu’il doit: CPU, mémoire et IPC. Presque tout le reste d’un ordinateur peut être considéré comme un accessoire et peut être géré en mode utilisateur. Les micro-noyaux ont un avantage de 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 tente toujours d’accéder au matériel de la même manière. Les micro-noyaux ont également un très faible encombrement, à 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 ne dispose pas des autorisations élevées en mode superviseur.

Avantages

  • Portabilité
  • Petite empreinte d’installation
  • Petite empreinte mémoire
  • Sécurité

Les inconvénients

  • Le matériel est plus abstrait via les pilotes
  • 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 pas accéder à d’autres processus sans attendre

Noyau monolithique
Les noyaux monolithiques sont à l’opposé des micro-noyaux car ils englobent non seulement le processeur, la mémoire et l’IPC, mais ils incluent également des éléments tels que les pilotes de périphériques, la gestion du système de fichiers et les appels au serveur système. Les noyaux monolithiques ont tendance à être meilleurs pour accéder au matériel et au multitâche car si un programme a besoin d’obtenir des informations de la mémoire ou d’un autre processus en cours d’exécution, il dispose d’une ligne plus directe pour y accéder et n’a pas à attendre dans une file d’attente pour faire avancer les choses. Cela peut cependant causer des problèmes car plus il y a de choses qui s’exécutent en mode superviseur, plus il y a de choses qui peuvent faire tomber votre système si l’on ne se comporte pas correctement.

Avantages

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

Les inconvénients

  • Grande empreinte d’installation
  • Grande empreinte mémoire
  • Moins sécurisé car tout fonctionne en mode superviseur


Image via schoschie sur Flickr

Noyau 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 mode superviseur. Souvent, des éléments tels que les pilotes de périphériques et les E / S du système de fichiers seront exécutés en mode utilisateur tandis que les appels IPC et serveur seront conservés en mode superviseur. Cela donne le meilleur des deux mondes mais exigera souvent plus de travail de la part du fabricant du matériel, car toute la responsabilité du pilote incombe à eux. Il peut également avoir certains des problèmes de latence inhérents aux micro-noyaux.

Avantages

  • Le développeur peut choisir ce qui s’exécute en mode utilisateur et ce qui s’exécute en mode superviseur
  • Empreinte d’installation plus petite que le noyau monolithique
  • Plus flexible que les autres modèles

Les inconvénients

  • Peut souffrir du même retard de processus que le micro-noyau
  • Les pilotes de périphériques doivent être gérés par l’utilisateur (généralement)

Où sont les fichiers du noyau Linux?

Le fichier du noyau, dans Ubuntu, est stocké dans votre dossier / boot et s’appelle vmlinuz-. Le nom vmlinuz vient du monde unix où ils appelaient simplement leurs noyaux «unix» dans les années 60, alors Linux a commencé à appeler leur noyau «linux» lorsqu’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 le multitâche, «vm» a été placé au début du fichier pour montrer que le noyau prend en charge la mémoire virtuelle. Pendant un certain temps, le noyau Linux a été appelé vmlinux, mais le noyau est devenu trop grand pour tenir dans la mémoire de démarrage disponible, donc l’image du noyau a été compressée et la terminaison x a été changée en az pour montrer qu’il était compressé 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 de version sera au format ABCD où AB 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é par rapport aux autres types de noyaux. C’était une caractéristique de conception qui était sous pas mal de débats aux débuts de Linux et porte toujours certains des mêmes défauts de conception que les noyaux monolithiques sont inhérents à avoir.

Une chose que les développeurs du noyau Linux ont faite pour contourner ces failles a été de créer 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 cela peut également permettre de remplacer tout le noyau sans avoir besoin de redémarrer votre ordinateur dans certains cas.

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

Modules du noyau

Et si Windows avait tous les pilotes disponibles 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 de noyau, également connus sous le nom de module de noyau chargeable (LKM), sont essentiels pour que le noyau fonctionne 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 éléments tels que 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 / lib / modules. En raison de leur nature modulaire, vous pouvez facilement personnaliser votre noyau en définissant des modules à charger, ou ne pas charger, au démarrage avec la commande menuconfig ou en éditant votre fichier / boot / config, ou vous pouvez charger et décharger des modules à la volée avec le modprobe commander.

Des modules tiers et 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.-à-d. NVidia, ATI, entre autres) ne fournit pas le code source mais construit plutôt ses propres modules et compile les fichiers .ko nécessaires pour la distribution. Bien que ces modules soient libres comme dans la bière, ils ne sont pas libres comme dans la parole et ne sont donc pas inclus par certaines distributions parce que les mainteneurs sentent que cela «souille» le noyau en fournissant des logiciels non libres.

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 prises en charge «hors de la boîte». J’espère que vous en saurez un peu plus sur la manière dont vos logiciels et votre matériel fonctionnent ensemble et sur les fichiers dont vous avez besoin pour démarrer votre ordinateur.

Kernel.org

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Récupérez votre article prêté avec ces systèmes de suivi simples

Récupérez votre article prêté avec ces systèmes de suivi simples

Comment utiliser votre téléphone comme baromètre ou altimètre

Comment utiliser votre téléphone comme baromètre ou altimètre