Les prochaines leçons couvrent des concepts plus théoriques. Si vous préférez la pratique concrète, n'hésitez pas à sauter ces sections et à revenir à ces sujets plus tard.
Un aspect fondamental de l'architecture Linux est la séparation entre l'espace utilisateur et le noyau. Mais pourquoi ne pouvons-nous pas combiner leurs pouvoirs en une seule couche ? La raison est la sécurité et la stabilité, ce qui est obtenu en les faisant fonctionner dans des modes différents.
Quelle est la différence entre le mode noyau et le mode utilisateur
Le système fonctionne selon deux modes distincts : le mode noyau et le mode utilisateur. Cette séparation est cruciale pour protéger le matériel et les ressources du système contre un accès direct et incontrôlé par les applications.
En mode noyau, le noyau a un accès complet et illimité au matériel ; il contrôle tout. C'est le niveau de privilège le plus élevé.
En mode utilisateur, les applications ont un accès très limité à une petite partie sûre de la mémoire et des ressources du processeur.
Lorsqu'une application utilisateur doit effectuer une action impliquant le matériel — comme lire depuis un disque, envoyer des données sur le réseau ou accéder à un périphérique — elle ne peut pas le faire directement. Ces opérations doivent être gérées par le noyau en mode noyau. Cette conception empêche un programme défectueux ou malveillant de compromettre l'ensemble du système. Par exemple, vous ne voudriez pas que des logiciels espions aient un accès direct au matériel, car ils pourraient lire toutes vos données ou contrôler votre webcam.
Anneaux de protection et accès privilégié
Ces différents modes sont souvent décrits comme des niveaux de privilège ou des anneaux de protection. Imaginez une forteresse avec des murs concentriques : la zone la plus intérieure est la plus sécurisée et possède l'autorité la plus élevée. Les anneaux de protection dans un ordinateur fonctionnent de manière similaire, l'anneau le plus intérieur correspondant au niveau de privilège le plus élevé.
Sur une architecture informatique x86 standard, il existe deux niveaux principaux :
- Anneau 0 : C'est là que le noyau s'exécute. Il possède le plus haut niveau de privilèges noyau, peut exécuter n'importe quelle instruction système et a toute confiance pour gérer le matériel. C'est le cœur de l'accès privilégié.
- Anneau 3 : C'est le niveau où s'exécutent les applications en mode utilisateur. C'est l'anneau le moins privilégié et il n'a aucun accès direct au matériel.
Ce modèle de sécurité basé sur les anneaux garantit que les applications utilisateur sont isolées des composants critiques du système. Mais si les applications sont toujours dans un mode différent de celui du noyau, comment peuvent-elles effectuer les opérations matérielles nécessaires ?
Appels système et privilèges noyau
Le pont entre le mode utilisateur et le mode noyau est l'appel système. Lorsqu'une application utilisateur doit effectuer une tâche privilégiée, elle effectue un appel système pour demander au noyau d'effectuer l'action en son nom.
Ce processus permet à l'application de passer temporairement et en toute sécurité du mode utilisateur au mode noyau pour exécuter une instruction spécifique et contrôlée. Une fois la tâche terminée, le système revient en mode utilisateur. Ce mécanisme garantit que les applications peuvent obtenir les services dont elles ont besoin sans acquérir un accès privilégié direct et dangereux au matériel.