Connexion Premium

Dis Next, ça sert à quoi un noyau et des pilotes dans un système ?

Le noyau et ses pépins

Dis Next, ça sert à quoi un noyau et des pilotes dans un système ?

Illustration : Flock

Chez Next, on aime bien proposer des articles reprenant une notion qui semble élémentaire, mais dont beaucoup ignorent le fonctionnement concret. Cette fois, on se penche sur le noyau et les pilotes, des composants essentiels à tout système d’exploitation.

Avant de plonger dans ces deux notions, commençons par une question élémentaire : qu’est-ce qu’un système d’exploitation ?

Un OS (Operating System) est le logiciel faisant l’interface entre le matériel de l’ordinateur et les applications que vous utilisez. Windows, macOS et Linux en sont les exemples les plus connus. Au cœur de tout OS se trouve une pièce centrale : le noyau. Et pour que ce noyau puisse dialoguer avec chaque pièce de matériel, il s’appuie sur des programmes spécialisés : les pilotes. C’est ce duo que nous allons explorer, ainsi que la notion incontournable de « droits » qui l’accompagne.

Le noyau, ce grand chef d’orchestre

Le noyau est le cœur d’un système d’exploitation, d’où son nom. Il agit comme le grand gestionnaire qui va distribuer aux applications les ressources dont elles ont besoin. Un jeu a besoin d’accéder à la carte graphique pour calculer des scènes 3D ? Le noyau va se charger de relayer la demande. C’est le chef d’orchestre de l’environnement logiciel, veillant à ce que chacun puisse s’exprimer, dans l’ordre et la discipline. Il ne faudrait pas que deux applications mettent la main en même temps sur la même ressource.

Le noyau reste toujours en mémoire et assure les interactions entre le matériel et les composants logiciels. Pour que ces derniers puissent remplir leur rôle – vous permettre d’écrire une note, chercher un virus, communiquer… – le noyau est chargé de répartir le temps du processeur, d’allouer puis de libérer la mémoire vive, ou encore de gérer les entrées-sorties (clavier, souris, écran, réseau, stockage, imprimante…). Si un conflit éclate, le noyau doit arbitrer.

Cette situation est commune à tous les systèmes d’exploitation : Windows, Linux, macOS, Android et tous ceux apparus au cours des dernières décennies. Sa nécessité est apparue très tôt dans l’histoire de l’informatique, quand les « pionniers » se sont rendu compte que si plusieurs codes se partageaient des ressources matérielles uniques, il fallait un chef d’orchestre pour éviter que les logiciels ne se marchent dessus.

Il reste 86% de l'article à découvrir.

Cadenas en colère - Contenu premium

Soutenez un journalisme indépendant,
libre de ton, sans pub et sans reproche.

Accédez en illimité aux articles

Profitez d'un média expert et unique

Intégrez la communauté et prenez part aux débats

Partagez des articles premium à vos contacts

Commentaires (16)

votre avatar
Illustration digne de Happy tree friends
votre avatar
(et comme ça bug sur mobile je m'octroie 6 cœur pour mon propre commentaire)
votre avatar
Ca manque de bras arrachés et d'os visibles pour être parfaitement dans le thème HTF.
votre avatar
Ou d'un épisode de la série Hannibal, mais ça manque de lamelles pour voir sur différentes couches
votre avatar
Un bien bel article! :inpactitude:
votre avatar
Super article. Il reste à parler des hyperviseurs et des conteneurs, des modes de virtualisation. Puis des environnements d'exécution peut-être?
votre avatar
:ouioui::ouioui::ouioui:
votre avatar
Et de la guéguerre entre Hyper-V et ESXi pour la gestion des IO :mrgreen:
Les compéts de bench ça n'existe pas que pour l'overclocking :roll:
votre avatar
Un anneau pour nous gouverner tous finalement :glasses:
votre avatar
attends qu'ils fassent un article sur l'UEFI, y'a encore quelques anneaux encore plus bas level (dont 1 qui fait tourner une distro minix)
votre avatar
Je pense qu'il y a une légère confusion. Si vous exécutez "bash" en tant que "root", cela ne veut pas dire que le shell bash est en ring 0 (mais en en ring 3), car sinon, cela voudrait dire qu'il partagerais le même espace d'adressage que le noyau, et donc, cela voudrait dire qu'un bug dans bash ferait potentiellement tout planter. En d'autres termes, il ne faut pas confondre les "rings" (espace noyau/vs user) avec la gestion des accès donnés à tel ou tels utilisateurs. Vous pourriez très bien ne pas avoir de gestion des accès par utilisateur (tout le monde serait en admin), tout en gardant le principe de ring pour la stabilité du système. Les accès utilisateurs sont une fonctionnalité qui cloisonnent les utilisateurs dans le système, et limite éventuellement leur droits, tandis que les rings cloisonnent les processus entre eux et par rapport au noyau, même si ces processus ont "tous les droits". Donc "root" est un utilisateur ayant tous les droits (enfin pas tout à fait en réalité), mais c'est quand même un utilisateur au même titre que les autres. Donc les processus qu'il exécute sont en ring 3.
votre avatar
idem pour windows. un admin n'a pas tout ses programme en ring 0. il a juste les droits d'appeler plein de fonction du ring pour tout foutre en l'air.
votre avatar
Certes Windows, macOS et Linux sont les OS les plus connus, mais à côté:

  • Pléthore d'OS embarqués (coucou VxWorks, par exemple) qui font tourner des objets divers et variés


(et sur des CPUs qui n'ont pas forcément cette séparation d'espaces d'exécution)

  • Un système bancaire où je suppose que zOS est encore fortement présent, et je n'ai aucune idée de ses mécanismes de protection

votre avatar
Pour Windows, je ne connais pas bien, mais pour Linux, il y a quelques trucs qui me chiffonnent dans cet article. Tout d'abord, que sont "le très grand nombre de services" en espace noyau ? Sous Linux, la plupart des services tournent dans des daemons, certains en tant que root, mais tous en espace utilisateur. Le seul service courant qui tourne en espace noyau que je connaisse, c'est NFS ; et encore, il en existe un équivalent en espace user, mais moins performant.

Ensuite, certes les drivers sont dans le noyau par défaut, mais il y a un grand nombre d'exceptions. Pour clavier/souris en mode graphique, c'est libinput (espace user) ; pour la souris en console texte, c'est gpm (mode user), avec certes le clavier géré par le noyau (mais c'est en train de changer, avec kmscon). Pour le driver graphique, seule la gestion de base des ressources est dans le module noyau ; la grande majorité du code (et de la complexité) est dans MESA, en espace user. Pour les imprimantes, c'est CUPS, en espace user. Pour les scanners, c'est SANE, en espace user. Pour les webcams, le noyau fournit le flux brut de la caméra, tous les codecs sont en espace user. Pour l'audio, il y a une bonne partie d'ALSA en noyau (trop, je pense, toute la partie MPU401 par exemple pourrait en sortir à mon avis), mais tout ce qui est codec, routage, resampling est en espace user (pulseaudio, pipewire, jackd) ; en Firewire, on avait la pile complète en espace user (FFADO). Bref, c'est dans le noyau par défaut, mais les exceptions font qu'au final, la situation ne semble pas si éloignée que ça de ce que fait Windows.
votre avatar
Je pense que ça fait référence à la gestion i2c/spi pour l’init des périphériques, l’allocateur kmalloc, la lecture des device trees, et ce genre de choses (je ne connais pas assez le noyau pour savoir tout ce qui est fourni aux drivers). J’ai souvenir que certains voulaient aussi à une époque intégrer carrément un broker de type dbus dans le kernel pour de l’ipc entre drivers, mais ça a été refusé.
votre avatar
J'imagine que tu fais référence à kdbus. Attention, il est de retour cette année sous la forme de bus1. Mais ça m'étonnerait que ce soit accepté upstream.