Mode utilisateur vs mode noyau : instructions et protection
Un CPU dispose d’un mode utilisateur, où s’exécutent les applications, et d’un mode noyau (mode privilégié), où s’exécute le noyau du système d’exploitation. En mode utilisateur, les instructions privilégiées comme la configuration des tables de pages, les opérations d’entrée-sortie ou le masquage des interruptions ne peuvent pas être exécutées, et seule la mémoire du processus est accessible. Pour lire ou écrire un fichier, par exemple, l’application demande l’aide du noyau par un appel système. On évite ainsi que les défaillances ou la malveillance d’une application n’atteignent les autres processus, le système d’exploitation ou le matériel.
| Critère | Mode utilisateur | Mode noyau |
|---|---|---|
| Programmes exécutés | Applications | Noyau du système d’exploitation et la plupart des pilotes de périphériques |
| Instructions exécutables | Instructions ordinaires seulement. Exécuter une instruction privilégiée provoque une exception | Toutes les instructions : changement de tables de pages, activation et masquage des interruptions, configuration des registres de contrôle, etc. |
| Mémoire accessible | Uniquement les pages de l’espace d’adressage virtuel du processus autorisées pour l’utilisateur | Tout, y compris la zone du noyau. Peut aussi accéder à la mémoire physique et aux registres des périphériques |
| Commande des périphériques | Pas directement. Passe par un appel système au noyau | Lit et écrit directement les registres et traite les interruptions |
| Noms selon l’architecture (exemples) | Anneau 3 en x86, EL0 en Arm, mode U en RISC-V | Anneau 0 en x86, EL1 en Arm, mode S en RISC-V |
| Déclencheurs du changement de mode | Entrée en mode noyau par les instructions d’appel système (syscall, svc, ecall, etc.), les interruptions des périphériques ou des temporisateurs et les exceptions (défaut de page, division par 0, instruction illégale, etc.) | Retour en mode utilisateur par une instruction de retour dédiée (sret, eret, etc.) qui rétablit simultanément l’adresse de retour et le mode |
| Coût de la bascule (ordre de grandeur) | Un aller-retour d’appel système coûte en gros de 100 ns à 1 µs. Peut augmenter avec les mesures contre les vulnérabilités | Les traitements internes au noyau passent par des appels de fonction, sans changement de mode. Un changement de processus (changement de contexte) est encore plus lourd |
| Effet d’une défaillance | Seul le processus concerné est arrêté de force | Tout le système peut s’arrêter (panique du noyau, etc.) |
Les valeurs indiquées sont des ordres de grandeur typiques et varient selon la génération de procédé et le produit.