Linux mascot sitting on a chip with blurred code in the background.
Agence web » Actualités du digital » Qu'est-ce que le noyau Linux et pourquoi est-ce important ?

Qu'est-ce que le noyau Linux et pourquoi est-ce important ?

Points clés à retenir

  • Le noyau d'un système d'exploitation gère les ressources, gère les appels système, régit l'accès au matériel et contrôle les processus.

  • Le noyau Linux a été lancé comme un moyen de surmonter les limitations de licence de MINIX et de permettre à Linus Torvalds d'apprendre à programmer le processeur 80386.

  • Le noyau Linux, une fois associé aux utilitaires GNU, a produit un système d'exploitation fonctionnel de type Unix. S'il n'y avait pas de noyau, il n'y aurait pas de Linux tel que nous le connaissons.

Le noyau Linux est le cœur battant de chaque installation Linux. Nous regardons d'où il vient, quel est son but et pourquoi, sans le noyau, il n'y aurait pas de Linux.

L'histoire derrière le noyau Linux

Irrité par l'adoption d'une licence commerciale par Unix, le projet GNU a commencé à écrire son propre système d'exploitation similaire à Unix en 1983.

En 1987, le système d'exploitation MINIX est sorti. Il s’agissait d’un système d’exploitation simple de type Unix, utilisé comme exemple concret dans un manuel d’informatique. MINIX était sous licence pour un usage non commercial uniquement.

En 1991, le projet GNU avait créé de nombreux outils de ligne de commande d'un système d'exploitation de type Unix, mais il n'avait pas produit de noyau. Le noyau est le contrôleur central d'un système d'exploitation. Il se situe entre le matériel et tous les autres logiciels, gérant les ressources et de nombreuses autres tâches critiques.

Linus Torvalds a découvert MINIX en tant qu'étudiant en informatique. Agacé par le modèle de licence MINIX et désireux d'apprendre à programmer le CPU 80386 sur son ordinateur personnel, il s'est mis à écrire son propre noyau.

Le développement a eu lieu sur MINIX, en utilisant le compilateur GNU C. En septembre 1991, le noyau de Torvalds, combiné aux utilitaires principaux de GNU, fonctionnait comme un système d'exploitation fonctionnel.

Le projet GNU et le noyau Linux avaient besoin l'un de l'autre pour fournir quelque chose de fonctionnel, ce qui a incité à suggérer que Linux devrait être appelé GNU/Linux. Aujourd'hui, les distributions Linux contiennent bien plus que les outils GNU et le noyau Linux et, que cela soit juste ou non, c'est le terme « Linux » qui est resté.

Différentes architectures de noyau

Le noyau Linux est un monolithique noyau. Il s'agit principalement d'un grand programme, mais il interagit étroitement avec d'autres programmes distincts tels que les pilotes et les modules du noyau. Le noyau, les pilotes et les modules fonctionnent tous dans espace noyauune région de mémoire dédiée et restreinte qui est strictement interdite aux autres processus réguliers, qui s'exécutent dans espace utilisateur.

Une autre approche de la conception du noyau, privilégiée par l'auteur de MINIX, Andrew S. Tanenbaum, est la micronoyau architecture. Un micro-noyau est un très petit noyau s'exécutant dans l'espace noyau, avec ses processus de support s'exécutant dans l'espace utilisateur. Les critiques de Tannenbaum sur la conception du noyau Linux ont déclenché le célèbre débat Tannebaum-Torvalds de 1992.

À titre de comparaison de taille, le noyau MINIX 3 contient environ 12 000 lignes de code. Le noyau Linux 6.12.1 compte près de 40 millions de lignes.

        find ./linux-6.12.1/ -type f -exec wc -l {} ; | awk '{lines += $1} END {print lines}'
    

C'est un chiffre approximatif, car il inclut tout ce qui se trouve dans le référentiel, comme les licences, les README et les makefiles, pas seulement le code source.

UN noyau hybride contient une combinaison de fonctionnalités triées sur le volet provenant des architectures monolithique et micro-noyau. Le noyau macOS, XNU, est un noyau hybride combinant les fonctionnalités et le code des noyaux Mach et FreeBSD.

Les fichiers du noyau Linux

Généralement, le noyau est un fichier appelé vmlinuz, situé dans le répertoire /boot.

Le noyau Unix s'appelait « Unix ». Par la suite, le noyau Linux a été appelé « Linux ». Le « vm » a été ajouté lorsque la prise en charge de la mémoire virtuelle a été ajoutée, et le « x » a été remplacé par un « z » lorsque l'image du noyau a été compressée ou compressée.

Parfois, le fichier vmlinuz est un lien symbolique vers le fichier réel du noyau. Cela peut être utile, car le nom de fichier complet contient souvent des identifiants de version et de build qui sont perdus lorsque vous le renommez en vmlinuz.

        ls -hl
    

Vous pouvez également voir la version du noyau en utilisant la commande uname, avec l'option -r (version du noyau).

        uname -r
ls -hl /boot/vmlinuz

Ou vous pouvez consulter le contenu du pseudo-fichier /proc/version.

        cat /proc/version
    

Que fait le noyau Linux ?

Le noyau Linux, comme tous les noyaux, gère les ressources système de manière à ce que les processus obtiennent une part du temps CPU et de la RAM. Il gère également les appels système et contrôle l'accès au matériel, tel que les périphériques de stockage permanents, les cartes graphiques et la pile réseau.

Gestion des ressources

Avec des réserves limitées de RAM et de temps CPU, il est impossible de répondre à toutes les demandes de tous les processus pour tous les utilisateurs, à tout moment. Le noyau doit gérer les requêtes afin que tous les processus voient leurs requêtes traitées. Pour y parvenir, les processus reçoivent une priorité, les tâches de priorité plus élevée obtenant plus de temps CPU que les tâches de priorité inférieure. Vous pouvez utiliser la commande renice pour modifier la belle valeur d'un processus.

Le noyau dispose également de routines pour créer et terminer des processus et des tâches, ainsi que pour basculer l'exécution entre les processus et les threads.

Entrée et sortie

Le noyau Linux donne accès au stockage persistant et non persistant. En plus d'éviter les conflits et d'imposer la sécurité via des autorisations, le noyau cache aux processus l'implémentation de bas niveau du périphérique de stockage et des systèmes de fichiers. Le noyau fournit un ensemble d'appels système que les applications utilisent pour demander des actions et des réponses au noyau.

Appels système

Les appels système sont les requêtes que les processus adressent au noyau pour des actions que seul le noyau peut effectuer. Habituellement, un processus effectue un appel système via une fonction wrapper dans le langage dans lequel le processus a été écrit. Le wrapper peut être une fonction dans une bibliothèque liée ou un environnement d'exécution.

Gestion des appareils

Le noyau permet aux programmes de s'interfacer avec une grande variété de périphériques pouvant être connectés ou intégrés à un ordinateur. Cela inclut les périphériques tels que les disques durs, les interfaces réseau et les cartes graphiques. Les modules de noyau Linux (LKM) constituent la méthode la plus courante d'implémentation de ces interfaces.

Modules du noyau Linux

Les modules du noyau Linux (LKM, également appelés modules de noyau chargeables) sont de petits programmes que le noyau peut charger au moment de l'exécution. Ils constituent un moyen idéal de fournir des pilotes pour le matériel, des interfaces vers les systèmes de fichiers et d'autres fonctionnalités du système telles que les extensions de sécurité.

Pour voir les LKM utilisés par votre noyau, utilisez la commande lsmod.

        lsmod
    

Le noyau de cet ordinateur de test utilise 67 modules, ce qui est assez faible. Sur une autre machine que j'ai vérifiée, le chiffre était de 138.

        lsmod | wc
    

Vous pouvez obtenir une vue plus détaillée d'un seul module en utilisant la commande modinfo et en fournissant le nom du module qui vous intéresse.

        modinfo autofs4
    

Pourquoi le noyau est-il important ?

Sans noyau, un système d’exploitation ne peut tout simplement pas fonctionner. Et sans le noyau lancé dans le cadre d'un projet étudiant à Helsinki, en 1991, nous n'aurions pas Linux. Et Linux est utilisé dans le monde entier, de nombreuses manières surprenantes.

★★★★★