Le noyau LINUX
Le noyau est le cœur des systèmes LINUX.
Le rôle du noyau est de permettre d’assurer les tâches primordiales aux applications. Il gère :
- les processus ;
- les fichiers ;
- les périphériques.
Structure du noyau LINUX
Le noyau est composé de différents sous-systèmes :
- l’interface avec les applications (systems call : appels systèmes) ;
- l’ordonnancement des tâches (scheduler) : celui qui attribue du temps CPU à un
processus ;
- la gestion de mémoire ;
- la communication inter-processus (IPC : inter Process Communication) ;
- la gestion du réseau ;
- le VFS (Virtual File System) qui permet une vision uniforme des Files Sytems même si
chaque FS possède son propre pilote ;
- les pilotes de périphériques : un pilote gère les Entrées/Sorties d’un périphérique.
Le noyau est essentiellement un fichier chargé par le chargeur (GRUB, LILO, …) au démarrage
du système. Il reste en mémoire jusqu’à l’arrêt complet du système.
Si le noyau est compilé dynamiquement (cas le plus fréquent), les pilotes ou même des sous-
systèmes peuvent être stockés dans des fichiers avec l’extension .ko (kernel object).
L’architecture du noyau Linux est très complète lui permettant de prendre en charge différentes
machines : ordinateur, serveur, routeur, commutateur, téléphone, ….
System Call interface :
C’est le composant qui gère l’interaction entre l’espace utilisateur et le noyau.
Le gestionnaire de processus :
Chaque élément exécuté par le noyau est appelé THREAD (ou processus léger).
Au niveau utilisateur, on parle plutôt de processus.
VFS :
Le système de fichiers virtuels (Virtual File System) est une interface d’abstraction des
systèmes de fichiers réels.
Il permet d’accéder aux périphériques de stockage sans se préoccuper des détails de
l’implémentation de chaque Système de Gestion de Fichiers.
Le gestionnaire de mémoire :
Le noyau accède à toute la mémoire physique
disponible.
La mémoire est simulée en taille infinie pour permettre
au noyau de toujours avoir accès à une zone de
mémoire.
L’espace mémoire est découpée en page de 4 Ko par
le noyau pour les attribuer aux processus.
Si une zone mémoire n’est pas utilisée pendant un
certain temps, elle est ‘’swapée’’ sur disque.
A la fin du processus, l’espace mémoire utilisée est
réalloué.
La pile réseau :
Linux support les protocoles ipv4,ipv6, TCP, UDP, … et bien d’autres protocoles plus
spécifiques.
Le fonctionnement de la pile réseau sous Linux est très performant.
Les pilotes :
Chaque composant matériel nécessite un pilote pour communiquer avec lui. Les matériels les
plus communs sont pris en charge (périphériques réseaux, chipsets, USB, contrôleurs de
disques, …).
Pour certains matériels, il est plus prudent d’utiliser les pilotes ‘’propriétaires’’ liés aux matériels
(cartes graphiques, …).
Fonctionnement du noyau
Linux, pour gérer les accès des différents processus, découpe chaque programme pour en
exécuter, en temps partagé, plusieurs en même temps et que ce soit transparent pour chaque
utilisateur. C’est le scheduler qui gère le temps consacré à chaque bout de programme.
Quelques commandes à connaître pour le noyau
uname –r : affiche la version du noyau courant.
ex :
uname –a : affiche des informations générales sur le système (version du noyau, date de
compilation, …).
arch : affiche l’architecture matérielle.
strace : trace les appels système d’une application.
lsmod : liste les modules actuellement chargé en mémoire.
dmesg : affiche les messages du noyau, dont ceux du démarrage.
Les fichiers du noyau :
.config : le fichier de configuration du noyau.
/boot/config-* : les fichiers de configuration des différents noyaux installés.
Les modules du noyau
La plupart des pilotes voire quelques sous-systèmes peuvent être compilés sous forme de
modules (ou LKM : Loadable Kernel Module).
La structure modulaire du noyau permet de n’avoir en mémoire uniquement actuellement
utilisés.
Le noyau ne peut charger un module que si ce dernier a été compilé pour la version exacte du
noyau.
Les commandes :
lsmod : liste les modules actuellement chargés.
insmod : charge le module.
rmmod : décharge un module.
modinfo : affiche des informations concernant un module.
L’arborescence /proc
Le File System est une interface au noyau sous forme de fichiers. Ces fichiers permettent
d’avoir des informations du noyau en temps réel.
Il est même possible pour certains fichiers de configurer à chaud le noyau.
cpuinfo : la description du processeur.
filesystems : la liste des Files Systems pris en charge par le noyau.
mounts : les Files Systems actuellement montés.
version : la version du noyau.
Le paramétrage à chaud du noyau
On peut modifier des paramètres du noyau à chaud pour configurer dynamiquement celui-ci.
L’arborescence comprenant les paramètres modifiables du noyau est /proc/sys.
La commande sysctl affiche ou modifie un paramètre du noyau.