Page d'accueil » comment » Qu'est-ce que le noyau Linux et que fait-il?

    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 exécutées en «mode utilisateur» avec le 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 cerneaux

    Il y a bien sûr différentes manières de construire un noyau et des considérations architecturales lors de la construction d'un noyau. 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. Faisons un tour rapide des trois catégories pour pouvoir entrer plus en détail dans la suite..


    Image par pop-corn des quartiers chics

    Micro-noyau
    Un micro-noyau a pour principe de 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 manipulé en mode utilisateur. Les micro-noyaux ont l'avantage de la portabilité, car ils n'ont pas à s'inquiéter si vous changez de carte vidéo ou même de 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 une très petite empreinte, à la fois en mémoire et en espace d'installation, et ils ont tendance à être plus sécurisés, car seuls des processus spécifiques s'exécutent en mode utilisateur, sans autorisations élevées en mode superviseur..

    Avantages

    • Portabilité
    • Petite installation au sol
    • Petite empreinte mémoire
    • Sécurité

    Les inconvénients

    • Le matériel est plus abstrait grâce aux 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 le contraire 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érique, la gestion du système de fichiers et les appels au serveur système. Les noyaux monolithiques ont tendance à être plus efficaces pour accéder au matériel et au multitâche, car si un programme doit obtenir des informations de la mémoire ou 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 mener à bien ses tâches. Cela peut toutefois poser problème car plus il y a de choses qui fonctionnent en mode superviseur, plus cela peut faire tomber votre système si 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

    • Grand empreinte d'installation
    • Large 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érique 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écessite souvent plus de travail de la part du fabricant de matériel, car toute la responsabilité du conducteur lui appartient. Il peut également avoir certains 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
    • Empreinte d'installation plus petite que le noyau monolithique
    • Plus flexible que d'autres modèles

    Les inconvénients

    • Peut subir le même retard de traitement qu'un micro-noyau
    • Les pilotes de périphérique doivent être gérés par l'utilisateur (généralement)

    Où sont les fichiers du noyau Linux?

    Le fichier du noyau, 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. Linux a donc commencé à appeler son noyau «linux» lors de son développement dans les années 90..

    Lorsque la mémoire virtuelle a été développée pour faciliter les tâches multitâches, «vm» a été placé au début du fichier pour indiquer que le noyau prend en charge la mémoire virtuelle. Pendant un certain temps, le noyau Linux s'appelait vmlinux, mais le noyau était devenu trop gros pour tenir dans la mémoire de démarrage disponible. L'image du noyau était donc compressée et la fin de x était remplacée par un z pour indiquer qu'il était compressé avec la compression zlib. Cette même compression n'est pas toujours utilisée, elle est 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 de 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 config indique au noyau les options et modules à charger dans l'image du noyau lors de la compilation..

    Architecture du noyau Linux

    Le noyau Linux étant monolithique, il possède la plus grande empreinte et la plus grande complexité par rapport aux autres types de noyaux. C’était une caractéristique de conception qui a fait l’objet de nombreuses discussions au début de Linux et qui présente toujours certains des mêmes défauts de conception que les noyaux monolithiques sont inhérents à l’avoir..

    Une des choses que les développeurs du noyau Linux ont fait pour contourner ces failles était de créer des modules de noyau pouvant être chargés et déchargés au moment de 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 exécutant des processus serveur, tels que la virtualisation de bas niveau, mais en autorisant le remplacement de l'intégralité du noyau sans avoir à redémarrer votre ordinateur dans certains cas..

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

    Modules de noyau

    Et si tous les pilotes disponibles étaient déjà installés sur Windows 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 appelés modules de noyau chargeables (LKM), sont essentiels pour que le noyau continue à fonctionner avec tout votre matériel sans utiliser toute votre 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 configurant les modules pour qu'ils soient chargés, lors du démarrage à l'aide de la commande menuconfig ou en modifiant votre fichier / boot / config. Vous pouvez également charger et décharger des modules à la volée avec le modprobe. commander.

    Les modules sources tiers et fermés sont disponibles dans certaines distributions, telles que 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 (par exemple, nVidia, ATI, entre autres) ne fournit pas le code source, mais crée plutôt ses propres modules et compile les fichiers .ko nécessaires à la distribution. Bien que ces modules soient gratuits comme dans Beer, ils ne le sont pas non plus comme dans les discours, et ne sont donc pas inclus dans certaines distributions car les mainteneurs ont le sentiment que cela «fausse» 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 permet la prise en charge de nombreuses choses «prêtes à l'emploi». 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 nécessaires au démarrage de votre ordinateur..

    Kernel.org
    Image par Ingridtaylar