Vous avez peut-être entendu parler d’applications fonctionnant en mode « noyau » ou « utilisateur ». Tout dépend de la façon dont les systèmes d’exploitation fonctionnent lorsqu’ils font leur travail. Une fois que vous avez compris cela, il est facile de saisir la différence entre le mode utilisateur et le mode noyau.
Comprendre ce que fait un système d’exploitation
Un ordinateur se compose de matériel, de composants électroniques et de logiciels, le code informatique exécuté par ce matériel. Mais ce qui est peut-être moins clair, c’est comment ils fonctionnent ensemble.
Table des matières
L’élément le plus essentiel d’un ordinateur est le bit ou « chiffre binaire ». Tout ce qu’un ordinateur fait est représenté par des uns et des zéros. Différents composants informatiques représentent les bits de différentes manières. Dans un processeur, les transistors microscopiques représentent des uns et des zéros en étant allumés ou éteints. Ces transistors sont disposés en structures logiques, appelées portes logiques.
Dans la mémoire électronique des ordinateurs, les bits sont représentés par des cellules de mémoire ayant une charge supérieure ou inférieure à un certain seuil. Sur un disque dur mécanique, les bits sont représentés comme des fluctuations magnétiques mesurées sur un plateau tournant. Sur les disques optiques, les creux et les terres qui reflètent ou non la lumière laser font le même travail.
Quelle que soit la manière dont la représentation physique du code binaire est obtenue, vous pouvez éventuellement réduire tous les composants informatiques grand public à ce code machine brut.
Alors, comment passez-vous de l’interface conviviale d’un ordinateur à l’interface brute et basse-niveau des processus dans l’ordinateur lui-même ? C’est là qu’intervient le système d’exploitation. Il contrôle directement le matériel de l’ordinateur.
Ce logiciel traduit tout ce que les applications (et donc l’utilisateur) veulent en instructions de code machine que le CPU et les autres composants comprennent. L’élément logiciel le plus critique dans ce processus est le noyau.
Qu’est-ce que le noyau ?
Le noyau est, comme son nom l’indique, le noyau du système d’exploitation. Le noyau est un logiciel qui réside dans la RAM et dirige tout ce que fait l’ordinateur. Quand quelque chose est écrit en mémoire, c’est le noyau qui dirige l’exécution.
Le noyau sait comment s’interfacer avec le matériel tel que les GPU et les cartes réseau, mais il peut ne pas savoir comment les exploiter à leur plein potentiel , en s’appuyant sur les normes génériques de l’industrie informatique.
Les pilotes matériels entrent en jeu ici. Les pilotes indiquent à votre système d’exploitation comment fonctionner avec des composants spécifiques, c’est pourquoi vous avez besoin de pilotes différents pour les GPU Nvidia et AMD, par exemple.
Équipé des bons pilotes, le noyau est l’autorité ultime au sein de l’ordinateur. , y compris faire des choses qui peuvent détruire catastrophiquement les données.
Le rôle des interfaces de programmation d’applications (API)
À l’époque de MS-DOS, les développeurs de logiciels devaient écrire leur logiciel spécifiquement pour le matériel de l’utilisateur. L’exemple le plus notoire de cela sur les systèmes MS-DOS était les pilotes de carte son.
Un jeu vidéo donné devrait supporter les cartes les plus populaires (Sound Blaster, Ad-lib, Gravis Ultrasound, etc.) et espérer que la plupart des joueurs soient couverts. Aujourd’hui, les choses fonctionnent très différemment, grâce aux API.
L’écran de sélection de carte son de Wolf3D
Microsoft DirectX en est un excellent exemple. Si vous souhaitez une explication détaillée, consultez Qu’est-ce que DirectX et pourquoi est-ce important ? Cependant, la chose la plus importante à savoir est que l’API offre aux développeurs de logiciels un moyen standard de demander des ressources matérielles à des composants tels que le GPU. De plus, les fabricants de matériel doivent uniquement s’assurer que leurs produits sont conformes à DirectX pour assurer une compatibilité totale avec tout logiciel également conforme.
Les API offrent une couche de traduction entre les applications logicielles et le noyau de bas niveau avec ses pilotes matériels. Oui, cela vient avec une légère pénalité de performance. Pourtant, sur les ordinateurs modernes, cela est négligeable et présente une variété d’avantages, c’est là que nous arrivons finalement au mode utilisateur et au mode noyau.
Mode utilisateur contre mode noyau
Les systèmes d’exploitation modernes exécutent des centaines ou des milliers de « processus » simultanément, leur donnant dynamiquement du temps CPU selon leurs besoins en fonction de leurs priorités et de leurs besoins en puissance de calcul.
Lorsque vous lancez une application, elle génère des processus et le Le processeur peut les exécuter en mode utilisateur ou en mode noyau.
Un processus Windows exécuté en mode utilisateur n’a accès qu’à son propre espace d’adressage de mémoire virtuelle privée et à sa table de descripteurs. Le logiciel utilise ces tables pour stocker des données dans la RAM et demander des ressources. Il n’y a pas d’accès direct à la mémoire ou à un autre matériel, et c’est au système d’exploitation de mapper ces espaces virtuels au matériel réel de l’ordinateur.
C’est bon pour de nombreuses raisons, mais l’avantage le plus crucial est que l’application ne peut pas écraser ou modifier des données en dehors de son espace d’adressage de mémoire virtuelle. De plus, certaines fonctions sont interdites aux processus en mode utilisateur, principalement celles qui pourraient faire planter le système ou détruire des données.
Lorsqu’un processus se lance ou passe en mode noyau, il a un accès complet au système ressources, même celles réservées au système d’exploitation. Donc, en théorie, cela pourrait écraser les données cruciales dont le système d’exploitation a besoin pour fonctionner correctement.
Pièges et exceptions
Il est important de comprendre que ces deux modes sont appliqués au niveau matériel par le processeur lui-même. Si une application s’exécutant en mode utilisateur essaie de faire quelque chose qui nécessite un accès en mode noyau, elle génère une « interruption » ou une « exception ». Le système d’exploitation s’occupera ensuite de l’application, généralement en la fermant et en générant un journal des plantages afin que les développeurs puissent voir ce qui s’est passé en mémoire lorsque les choses ont déraillé.
Les dangers du mode noyau : L’écran bleu de la mort
Si vous avez déjà rencontré un écran bleu de la mort (qui ne l’a pas fait ?) qui a forcé votre ordinateur à s’éteindre ou à redémarrer, il y a de fortes chances que ce soit un mode noyau processus à blâmer.
Quand un processus en mode noyau fait quelque chose qu’il n’est pas censé faire, le système d’exploitation ne peut pas récupérer et l’ordinateur entier s’arrête. Lorsqu’un processus en mode utilisateur se détraque, seule l’application plante et le reste du logiciel et du système d’exploitation peuvent continuer sans aucun problème.
C’est un domaine où les API jouent un rôle essentiel puisque c’est l’API qui demande des privilèges en mode noyau. Les applications en mode utilisateur délèguent essentiellement à l’API les demandes qui auraient requis des privilèges en mode noyau.
C’est pourquoi le mode noyau n’est généralement accordé qu’aux processus système de bas niveau qui doivent accéder directement au matériel de l’ordinateur.. Généralement, ce privilège est étendu à un processus car il nécessite plus de performances que le mode utilisateur ne peut en fournir. Certaines instructions du processeur ne fonctionnent qu’en mode noyau, donc si un processus doit utiliser ces fonctions, il doit être élevé.
Si vous rencontrez des problèmes avec l’écran bleu de la mort, assurez-vous de lire notre Guide de dépannage de l’écran bleu de la mort pour Windows 10 !