Le noyau Linux est le niveau le plus bas d'un logiciel facilement remplaçable qui s'interface avec le matériel de votre ordinateur ; le noyau est responsable de la connexion de toutes les applications exécutées en « mode utilisateur » au matériel physique et permet aux processus d'utiliser l'inter -processus de communication pour se connecter à partir d'obtenir des informations les uns des autres.
L'environnement d'exploitation de cet article : système Linux5.9.8, ordinateur Dell G3.
Avec plus de 13 millions de lignes de code, le noyau Linux est l'un des plus grands projets open source au monde.
Alors, c'est quoi le noyau ?
Le noyau est le niveau le plus bas d'un logiciel facilement remplaçable qui s'interface avec le matériel de votre ordinateur. Il est chargé de connecter toutes les applications exécutées en « mode utilisateur » au matériel physique et permet 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
Bien sûr, il existe différentes façons de créer un noyau et des considérations architecturales lors de la construction d'un noyau à partir de zéro. Généralement, la plupart des noyaux appartiennent à l'un des trois types suivants : monolithiques, micronoyaux et hybrides. Linux est un noyau monolithique, tandis qu'OS X (XNU) et Windows 7 utilisent des noyaux hybrides. .
Noyaux monolithiques
Les noyaux monolithiques sont à l'opposé des micro-noyaux dans la mesure où ils contiennent non seulement le processeur, la mémoire et l'IPC, mais également les pilotes de périphériques, la gestion du système de fichiers et le serveur système. appels, etc Les cœurs monolithiques ont tendance à mieux 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 au lieu de devoir attendre dans une file d'attente pour qu'une tâche soit terminée. Cependant, cela peut poser des problèmes car plus les choses fonctionnent en mode hyperviseur, plus les choses peuvent planter en cas de mauvais comportement.
Avantages
Accès plus direct au matériel du programme
La communication entre les processus est plus facile à communiquer entre eux
Si votre Aucune installation supplémentaire n'est requise pour l'utilisation si l'appareil est pris en charge
Le processus est plus réactif car il n'y a pas de file d'attente de temps du processeur
Inconvénients
Encombrement de l'installation Grande surface
Grande utilisation de la mémoire
Pas très sûr car tout fonctionne en mode administrateur
Fichier du noyau Linux Où ?
Les fichiers du noyau dans Ubuntu sont stockés dans le dossier /boot et sont nommés vmlinuz-version. Le nom vmlinuz vient du monde Unix, ils appelaient leur noyau "unix" dans les années 60, donc Linux a 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 le multitâche, "vm" a été placé devant le fichier pour montrer que le noyau prend en charge la mémoire virtuelle. Pendant un certain temps, le noyau Linux s'appelait vmlinux, mais il est devenu trop volumineux 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é remplacée par az pour montrer qu'il a été compressé à l'aide de la compression zlib. Cette compression n'est pas toujours utilisée, souvent LZMA ou BZIP2 est utilisée à la place, certains noyaux l'appellent simplement zImage.
Le numéro de version sera au format ABCD, AB sera probablement 2.6, C est votre version, D signifie votre patch ou hotfix
dans /boot Il existe d'autres fichiers très importants dans le dossier nommés initrd.img-version, system.map-version et config-version. Le fichier initrd est utilisé comme un petit disque RAM pour extraire et exécuter les fichiers du noyau réels. Le fichier system.map est utilisé pour la gestion de la mémoire avant que le noyau ne soit complètement chargé, et le fichier de configuration indique au noyau les options et les modules à charger dans l'image du noyau lors de la compilation du noyau.
Architecture du noyau Linux
Le noyau Linux étant un noyau monolithique, il a la plus grande empreinte et la plus grande complexité par rapport aux autres types de noyaux. Il s'agit d'une fonctionnalité de conception qui a suscité un débat considérable au début de Linux et qui souffre encore de certains défauts de conception inhérents aux noyaux monolithiques.
Une chose que les développeurs du noyau Linux ont faite pour remédier à ces défauts est de créer des modules de noyau qui peuvent être chargés et déchargés au moment de l'exécution, ce qui signifie que vous pouvez ajouter ou supprimer dynamiquement des fonctionnalités du noyau. Il ne s'agit pas seulement d'ajouter des fonctionnalités matérielles au noyau en incluant des modules qui exécutent des processus serveur (tels que la virtualisation de bas niveau), mais cela peut également remplacer l'intégralité du noyau sans qu'il soit nécessaire de redémarrer l'ordinateur dans certains cas.
Imaginez si vous pouviez passer à un Service Pack Windows sans redémarrer...
Modules du noyau
Que se passe-t-il si Windows a déjà installé tous les pilotes disponibles et qu'il vous suffit d'ouvrir celui dont vous avez besoin ? C'est essentiellement ce que fait le module du noyau pour Linux. Les modules de noyau, également appelés modules de noyau chargeables (LKM), sont essentiels pour que le noyau continue de fonctionner avec tout le matériel sans consommer toute la mémoire disponible.
Les modules ajoutent généralement des fonctionnalités au noyau de base, telles que des périphériques, des systèmes de fichiers et des 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 le noyau en définissant les modules à charger ou non à l'aide de la commande menuconfig lors du démarrage ou en éditant le fichier /boot/config, ou vous pouvez charger et décharger dynamiquement les modules à l'aide de la commande modprobe.
Des modules tiers et à source fermée sont disponibles dans certaines distributions (telles que Ubuntu) et peuvent ne pas être installés par défaut car le code source du module n'est pas disponible. Les développeurs du logiciel (c'est-à-dire nVidia, ATI, etc.) ne fournissent pas le code source, mais construisent plutôt leurs propres modules et compilent les fichiers .ko requis pour la distribution. Bien que ces modules soient gratuits en termes de bière, ils ne le sont pas aussi en termes de voix, donc certaines distributions n'incluent pas ces modules parce que les responsables pensent que cela « entache » le noyau en fournissant des logiciels non libres.
Le noyau n'est pas magique, mais il est essentiel au bon fonctionnement de tout ordinateur. Le noyau Linux est différent d'OS X et de Windows dans le sens où il contient des pilotes au niveau du noyau et prend en charge de nombreuses choses « prêtes à l'emploi ». J'espère que vous en apprendrez davantage sur la façon dont vos logiciels et votre matériel fonctionnent ensemble ainsi que sur les fichiers dont vous avez besoin pour démarrer votre ordinateur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!