Circuits #11 - Qu'est-ce que le Kernel, le coeur de votre système d'exploitation ?
Durée: 11m39s
Date de sortie: 23/06/2025
Le kernel Linux est le cœur du système d’exploitation, mais peu savent vraiment ce qu’il fait. Dans cet épisode, je vous explique son rôle, son fonctionnement, et pourquoi il est si central dans l’écosystème open source.
Notes de l'épisode :
- Qu'est-ce qu'un pilote logiciel : https://code-garage.com/podcast/classic/episode-12
Salut et bienvenue dans ce nouvel épisode du podcast de Code Garage et plus particulièrement
dans un nouvel épisode de notre série « Cirque » ! Aujourd'hui, on va parler du
kernel.
Le kernel, ou noyau, plutôt en anglais, la traduction directe, ce serait noyau, c'est
littéralement le cœur d'un système d'exploitation.
En fait, c'est lui qui fait le lien entre le matériel, que ce soit le processeur, la
mémoire, le disque dur, etc.
Et les logiciels, navigateurs, éditeurs de texte, peu importe, on peut en citer des
cent et des mille.
En fait, sans kernel, un ordinateur, il ne serait pas du tout comment exécuter des
applications ni comment gérer les ressources ou les périphériques.
Alors, on va parler principalement dans cet épisode du kernel Linux.
Mais en réalité, chaque OS a quand même un kernel.
Pour Windows, on a Windows NT kernel et on a XNU kernel, ou GNU, sous macOS.
Alors, le kernel Linux, c'est un noyau open source et libre qui a été créé par Linux
Torvald en 1991.
Et c'est le cœur des distributions Linux, évidemment, donc Ubuntu, Fedora, Debian et
toutes les autres, mais également des systèmes d'exploitation embarqués comme Android,
par exemple.
Alors, qu'est-ce que fait notre kernel exactement ?
Et bien en fait, il a plusieurs missions essentielles.
La première, c'est la gestion des ressources.
En fait, c'est lui qui va décider comment répartir la puissance disponible, donc du
processeur de la mémoire et d'autres ressources entre chaque application.
Ensuite, il va y avoir la gestion des périphériques.
C'est lui qui va communiquer avec le matériel via les pilotes, évidemment, pour s'assurer
simplement que le matériel et les logiciels vont pouvoir communiquer efficacement et puis
que ça marche tout simplement.
Alors, pour les pilotes, si jamais vous n'êtes pas trop familier avec le concept de pilotes
logiciels, je vous mettrai dans les notes de cet épisode un lien vers un épisode où
j'en parle et je vous explique un peu le concept justement des pilotes.
Le driver, évidemment, en anglais, c'est la même chose.
Ensuite, on a la gestion des processus.
Il va gérer l'exécution des programmes.
Il va s'assurer qu'il fonctionne correctement et surtout qu'ils ne vont pas pouvoir interférer
les uns avec les autres en théorie.
Et enfin, la sécurité puisque il protège le système en gérant les droits d'accès
et en veillant plus ou moins à ce que les applications puissent pas accéder à des
ressources de manière non autorisée.
Là, je vous fais vraiment une vue d'ensemble.
C'est assez haut niveau.
On ne va pas trop dans le détail, mais c'est important de savoir à peu près ce qu'il
fait.
Alors, deuxième petit point pour les pilotes parce que là, vous pouvez vous dire, ben
oui, mais si les pilotes y font partie du carnel, ça veut dire que théoriquement,
on ne peut pas en ajouter alors qu'ils vous arrivent d'installer de nouveaux pilotes
ou de faire des mises à jour, des choses comme ça.
En fait, pour les pilotes, il y en a certains effectivement qui sont compilés directement
avec le carnel.
Mais quand vous en installez directement depuis le terminal ou l'interface graphique,
eh bien le carnel, il va charger ses nouveaux pilotes de manière dynamique.
Et il n'y a pas honnêtement de grosses implications en termes de performance.
Voilà, c'est juste qu'ils seront chargés dynamiquement au lieu d'être compilés directement
à l'intérieur du carnel ou avec le carnel.
Alors, OK, c'est bien.
On sait ce que ça fait, mais comment est-ce qu'il est lancé ?
Qu'est-ce qu'il démarre ?
Eh bien, en fait, c'est le BIOS qui démarre tout simplement, qui va charger le carnel
en mémoire et qui va initialiser les entrées sorties pour les périphériques.
Alors BIOS, c'est évidemment un acronym pour Basic Inputs Outputs System.
Et la version, on va dire, plus moderne du BIOS, c'est l'UEFI.
Mais globalement, on ne va pas rentrer dans le détail.
C'est à peu près la même chose à quelques détails techniques prêts, bien évidemment.
Et en fait, ensuite, dès que le BIOS va avoir chargé le carnel en mémoire,
eh bien, le carnel, il va être indépendant pour donner des instructions au processeur,
lire et écrire dans la mémoire et supporter tout ce qui est nécessaire
pour faire fonctionner le reste du système d'exploitation,
les logiciels qui tournent dessus et, comme on l'a dit, les périphériques.
Alors, le carnel Linux, il est principalement écrit en C,
mais il utilise aussi de l'assembleur pour certaines tâches qui sont très spécifiques
et qui sont très proches du matériel, comme par exemple la gestion des interruptions.
Le C, évidemment, il a été choisi pour sa performance et son contrôle assez précis des ressources.
Mais depuis quelques années, on a des parties du carnel Linux qui sont réécrites en Rust,
qui, lui, est vraiment connu pour sa sécurité mémoire, on va dire, la robustesse, pardon.
Et on dit souvent qu'un logiciel qui est écrit en Rust et qui compile,
eh bien, n'aura absolument jamais de problème mémoire,
puisque, eh bien, en fait, il y a tous les gardefous qui sont présents dès la compilation.
Alors, pour l'instant, les contributions en Rust dans le carnel Linux,
ça concerne surtout des modules et des pilotes spécifiques.
Donc, ça permet de profiter des avantages de Rust en termes de sécurité et de robustesse,
mais, globalement, il n'y a pas besoin de tout changer
et ça permet de maintenir une espèce de compatibilité avec le code qui est déjà existant en C.
C'est un projet qui est en cours, mais ça va mettre, évidemment, des années et des années
pour que, éventuellement, le carnel, si un jour ça se passe, soit entièrement réécrit en Rust.
Alors, pourquoi est-ce que je dis que c'est, évidemment, compliqué ?
C'est qu'on ne se rend pas forcément compte d'à quel point le carnel,
c'est un projet qui est ultra complexe.
On l'a dit, il est open source, il est libre et il est extrêmement collaboratif,
puisque on estime qu'il y a à peu près 4 à 5 000 contributeurs par an,
et en fonction des différentes, évidemment, releases du carnel.
Les contributeurs, ils proviennent d'énormément d'entreprises,
il y en a évidemment qui sont aussi, comment dire, indépendants,
mais c'est une communauté open source qui est vraiment gigantesque.
Et donc, pour gérer tout ça, vous imaginez bien que c'est d'une complexité son nom.
Ok, on a parlé du carnel,
mais qu'est-ce qu'il faut, en plus du carnel, pour avoir un système d'exploitation complet et fonctionnel ?
Alors là, on va parler d'une distribution Linux.
Qu'est-ce qu'il va falloir, en plus, pour que ça fonctionne ?
Eh bien, on l'a dit, la base, c'est le carnel qui gère le matériel,
les processus et les ressources.
Ensuite, on va avoir un serveur d'affichage.
Alors, sous les nus, il y en a plusieurs.
On a Wayland, qui est un des plus modernes,
et on a X11, qui est un des plus connus, on va dire.
C'est lui, en fait, ce serveur qui va gérer l'affichage graphique
et la communication entre les applications
et l'écran, ce qui va vraiment devoir être affiché.
Ensuite, on a une interface graphique.
On va parler d'environnement de bureau,
donc comme GNOME, KDE, XFCE, etc.
C'est cet environnement de bureau qui va fournir une interface utilisateur
qui va devoir être conviviale
et surtout qui va devoir avoir toutes les fonctionnalités
qu'on s'attend pour utiliser un système d'exploitation classique,
les fenêtres, les icônes, les menus, etc.
Ensuite, on va avoir tout simplement des utilitaires, des bibliothèques de base,
comme la bibliothèque C-Standard par exemple,
mais des outils en ligne de commande comme Bache et d'autres utilitaires,
qui vont être essentiels au fonctionnement du système.
Donc tous les petits logiciels que vous utilisez sans le savoir,
en utilisant votre terminal par exemple,
en plus, vous allez avoir plein de commandes,
toute cette commande va falloir qu'elle soit créée à un moment.
Ce qui fait partie des utilitaires et des bibliothèques de base.
Ensuite, on a les gestionnaires de paquets,
on va avoir APT par exemple pour des bien au buntu,
mais on en a plein d'autres.
C'est ce qui va permettre d'installer, de mettre à jour
et de gérer des logiciels sur le système.
Et enfin, il va y avoir les applications utilisateurs.
Là, c'est créé soit par des communautés open source, soit par des entreprises,
mais tout ce qui est navigateur, éditeur de texte,
toutes les suites bureautiques, etc.
Tout ce qui constitue globalement l'environnement de travail d'un utilisateur.
En résumé, une distribution linux,
c'est vraiment un ensemble qui inclut le kernel,
mais toutes ces couches logiciels supplémentaires
pour avoir un système complet et prêt à l'emploi,
puisque sinon, c'est bien,
vous avez quelque chose qui communique entre le processeur, les périphériques, etc.
Mais pendant que vous n'avez pas quelque chose au-dessus,
la majorité des gens ne seraient pas capables d'utiliser un système d'exploitation.
Alors, le dernier petit point que je voulais aborder,
c'est qu'il y a quelque chose qui paraît impossible,
mais en fait, c'est possible et surtout,
c'est hyper intéressant au niveau technique,
c'est qu'il est possible de compiler son propre kernel.
Alors, attention, on ne parle pas de coder, de programmer son propre kernel.
Évidemment, ça, c'est inatteignable pour le commande-mortel,
même plus que le commande-mortel d'ailleurs,
il faut des milliers de personnes, donc voilà.
Mais compiler son propre kernel,
ça veut dire récupérer le code source du kernel linux
et le compiler sur sa machine et surtout pour sa machine.
Alors, pourquoi est-ce qu'on fait ça ?
En fait, il y a vraiment des gros avantages.
Le premier avantage, c'est que ça va permettre d'optimiser le kernel,
puisque en incluant uniquement les modules qui sont nécessaires à notre machine,
on obtient un kernel qui est plus léger
et donc potentiellement plus rapide éventuellement.
Mais c'est surtout plus sécurisé,
puisque en fait, moins de modules,
ça veut dire aussi moins de surface d'attaque,
il y a moins de risque de vulnérabilité,
d'un module qui serait installé, ajouté au kernel,
et pourtant, votre ordinateur n'a absolument pas besoin,
notamment parce que vous n'avez peut-être pas le matériel nécessaire.
Il faut savoir que quand vous téléchargez une distribution Linux,
il va y avoir tous les pilotes et tous les modules nécessaires
pour tourner sur quasiment toutes les machines du monde.
Mais en fait, votre machine est très différente de la machine du voisin
et de la machine de l'autre voisine.
Et pourtant, vous allez sûrement, si vous n'avez pas recompiler,
être avec le même kernel que tout le monde
et donc avoir plein de choses super flûts
et éventuellement, on désinstallant,
plutôt en n'ajoutant pas certains modules,
certains drivers à votre kernel,
ça va pouvoir déclencher des optimisations
qui n'auraient pas été possibles avec tous les modules,
puisque des fois, pour un module spécifique,
on va être obligé de se passer d'une optimisation
au moment de la compilation.
Et bien là, potentiellement, si cette dépendance n'est plus là,
on va pouvoir réactiver une de trois optimisations du compilateur.
Ça va se faire plutôt tout seul.
Et donc, vous allez vraiment avoir quelque chose d'un peu plus efficace et performant.
Voilà, c'était, je pense, tous des sujets que je voulais aborder avec vous
pour vous faire comprendre un petit peu ce qu'était le kernel,
comment l'utilise et à quoi ça sert et comment on interagit avec.
J'espère que vous aurez appris quelque chose.
Moi, je vous donne rendez-vous la semaine prochaine
pour un prochain épisode du podcast.
Mais surtout, comme d'habitude, je vous retrouve tous les jours
sur code-garage.com pour retrouver tous nos articles de blog,
tous nos épisodes du podcast et tous nos cours complets
pour apprendre, faire progresser votre carrière,
décrocher des certifications.
Il y a plein de belles choses qui arrivent,
donc venez faire un tour, vous allez voir, on s'amuse bien.
Rendez-vous la semaine prochaine, prenez soin de vous, salut !
Episode suivant:
Les infos glanées
Code-Garage
Découvrons ensemble des sujets passionnants autour du métier de dev et de la programmation en général !
Tags