Le processeur d’un ordinateur exécutant Windows possède deux modes différents : le mode utilisateur et le mode noyau.
Le processeur passe d’un mode à l’autre en fonction du type de code qui s’exécute sur le processeur. Les applications s’exécutent en mode utilisateur, tandis que les composants centraux du système d’exploitation s’exécutent en mode noyau. Bien que de nombreux pilotes s’exécutent en mode noyau, certains pilotes peuvent s’exécuter en mode utilisateur.
Mode non-privilège (User mode):
Lorsque vous démarrez une application en mode utilisateur, Windows crée un processus pour l’application. Ce processus fournit à l’application un espace d’adressage virtuel privé et une table de gestion privée. L’espace d’adressage virtuel d’une application étant privé, une application ne peut pas modifier les données qui appartiennent à une autre application. Chaque application s’exécute de manière isolée, et si une application se bloque, le blocage est limité à cette seule application. Les autres applications et le système d’exploitation ne sont pas affectés par le crash.En plus d’être privé, l’espace d’adressage virtuel d’une application en mode utilisateur est limité. Un processeur fonctionnant en mode utilisateur ne peut pas accéder aux adresses virtuelles qui sont réservées au système d’exploitation. La limitation de l’espace d’adressage virtuel d’une application en mode utilisateur empêche l’application de modifier, et éventuellement d’endommager, les données critiques du système d’exploitation.
Mode privilège (Kernel mode):
Tout le code qui s’exécute en mode noyau partage un seul espace d’adressage virtuel. Cela signifie qu’un pilote en mode noyau n’est pas isolé des autres pilotes et du système d’exploitation lui-même. Si un pilote en mode noyau écrit accidentellement à la mauvaise adresse virtuelle, des données appartenant au système d’exploitation ou à un autre pilote peuvent être compromises. Si un pilote en mode noyau tombe en panne, c’est tout le système d’exploitation qui tombe en panne.
Le mode User est le mode normal où le processus a un accès limité. Alors que le mode Kernel est le mode privilégié où le processus a un accès illimité aux ressources du système comme le matériel, la mémoire, etc. Un processus peut accéder aux registres du matériel pour le programmer, peut exécuter le code du noyau du système d’exploitation et accéder aux données du noyau en mode privilégié. Tout ce qui concerne la gestion des processus, la gestion du matériel et la gestion de la mémoire exige que le processus s’exécute en mode privilégié.