Menu Fermer

Le noyau Windows (Kernel) : définition, rôle et fonctionnement

Windows, comme tout système d’exploitation possède un noyau nommé Windows Kernel.
Le noyau de Windows est le cœur du système d’exploitation car il effectue toutes les tâches de bas niveau.
Essentiellement, il est invisible pour l’utilisateur sauf lorsqu’une erreur fatale du type BSOD ou écran bleu se produit, l’image du noyau Windows ntoskrnl.exe peut alors être mentionné.

Si le sujet vous intéresse et que vous voulez en apprendre plus sur le rôle du noyau Linux, comment fonctionne Windows Kernel et son architecture, lisez ce guide complet.

Le noyau Windows (Kernel) : définition, rôle et fonctionnement

Qu’est-ce que le noyau Windows (Kernel)

Les appareils équipés du système d’exploitation Microsoft Windows sont constitués du noyau Windows appelé aussi Kernel. Ce noyau est appelé noyau Windows NT.
Il est capable de fonctionner à la fois avec des ordinateurs monoprocesseurs et des ordinateurs multiprocesseurs symétriques, c’est pourquoi il est également appelé noyau hybride. L’architecture Windows se compose d’un noyau Windows, d’une couche d’abstraction matérielle (HAL), de pilotes et d’autres services de soutien.
Ces services fonctionnent en mode noyau.

Le noyau de Windows est un programme clé et essentiel au fonctionnement de Windows.
Le noyau est le premier programme à se charger après le chargeur de démarrage (Boot Loader). Après le chargement, il contrôle et coordonne tous les autres programmes et processus. Le noyau est le pont entre l’utilisateur et le matériel, il traduit les instructions de l’utilisateur pour le matériel et les connecte.

Le noyau Windows est un noyau hybride, ce qui signifie qu’il tente de combiner les caractéristiques et les avantages des architectures de micro-noyaux et de noyaux monolithiques.
L’idée est de bénéficier simultanément des performances des noyaux monolithiques et de la stabilité des micro-noyaux.

Quels sont les rôles du noyau Windows NT

Essentiellement, le noyau de Windows remplit les fonctions de bas niveau invisibles pour l’utilisateur.
Voici les principaux rôles remplis par le noyau Windows :

  • Initiale le système d’exploitation Windows
  • Réalise certains services de bas niveau du système d’exploitation, tels que l’ordonnancement des threads, la synchronisation multiprocesseur, la gestion des interruptions/exceptions, gestion de la mémoire, etc
  • S’occupe de la gestion de la mémoire
  • Gère l’ajout de nouveaux périphériques via PnP Manager et le Plug & Play
  • Fournit une une couche d’abstraction entre le matériel physique et l’OS via Hardware abstraction layer (HAL)
  • Gère le fonctionnement des pilotes et drivers
  • Fournit la couche graphique (GDI) utilisée par l’interface utilisateur de Windows et les applications
  • Gère le fonctionnement des interfaces réseaux et les liaisons avec les protocoles réseaux via NDIS (Network Driver Interface Specification)
  • Fournit un ensemble d’API natives et de bibliothèques utilisées par les processus système de Windows ou les applications tierces. Les appels à l’API native sont gérés par le noyau via la table des descripteurs de services système (SSDT)
  • Implémente les appels système nécessaires au registre Windows
  • Fournit une gestion de l’énergie et d’alimentation

Pour parvenir à remplir toutes ces fonctionnalités, il exécute des services clés tels que la planification, le lancement et l’arrêt des processus, l’initialisation, l’exécution des pilotes (programmes qui communiquent avec le matériel) et la garantie que la mémoire est allouée correctement.

Quelle est l’architecture du noyau Windows

Le noyau de Windows NT se décompose en deux modes :

  • Le mode User mode (mode utilisateur)
  • Le mode Kernel mode (Mode noyau)

Chacun ayant ses propres composants et sous-systèmes.

L'architecture du noyau de Windows
https://en.wikipedia.org/wiki/Architecture_of_Windows_NT

Le mode utilisateur (User mode)

Les programmes fonctionnant dans l’espace utilisateur ont un accès limité aux ressources du système.
Il est constitué de sous-systèmes capables de transmettre les demandes d’E/S aux pilotes de périphériques appropriés du mode noyau en utilisant le gestionnaire d’E/S.
La couche mode utilisateur de Windows NT se compose des “sous-systèmes d’environnement“, qui exécutent des applications écrites pour de nombreux types de systèmes d’exploitation différents, et du “sous-système intégral“, qui exécute des fonctions spécifiques au système pour le compte des sous-systèmes d’environnement.

Les sous-systèmes intégraux (Integral subsystems) comprennent les processus du système fixe (comme SMSS.exe, le gestionnaire de session et Winlogon.exe le processus de connexion), les processus de service (comme le planificateur de tâches et le service de spooler d’impression), le sous-système de sécurité (pour les jetons de sécurité et la gestion de l’accès) et les applications de l’utilisateur.

Le sous-système d’environnement Win32 (Win32 Environnement subsystems) est une partie importante du mode utilisateur.
Il permet exécuter des applications Windows 64 bits et 32 bits que ce soit des Win32 Apps ou Applications UWP.

User mode et Kernel Mode dans le noyau Windows

En général, le programme s’exécute en mode utilisateur et passe en mode noyau par le biais d’appels système pour exécuter les fonctions du système.
Un appel système est un moyen de demander un service au noyau. Pour y parvenir, les programmes utilisent les API du sous-système Win32.
Cela est possible grâce aux fonctions proposées NTDLL.DLL, certaines sont réexportées sous forme de fonctions KERNEL32 ou ADVAPI32.

Ainsi, les programmes sont isolés du noyau. De ce fait, si un programme bug ou effectue une opération interdite, il plantera sans affecter Windows dans son ensemble.
De cette manière, le système Windows assure la sécurité et la stabilité du système.

Quelle est l'architecture du noyau Windows

Le mode noyau (Kernel mode)

Le mode noyau empêche les services et les applications du mode utilisateur d’accéder aux zones critiques du système d’exploitation auxquelles ils ne devraient pas avoir accès.
En revanche, les programmes fonctionnant en mode noyau n’ont aucune restriction d’accès à la mémoire, au matériel et aux ressources du système.

Ce dernier se décompose en trois grandes catégories :

  • Les services exécutifs Windows (Executive Services) constituent la partie de bas niveau du mode noyau et sont contenus dans le fichier ntoskrnl.exe. Ils traitent des E/S, de la gestion des objets, de la sécurité et de la gestion des processus. Ceux-ci sont divisés en plusieurs sous-systèmes, parmi lesquels le gestionnaire de cache, le gestionnaire de configuration, le gestionnaire d’E/S, l’appel de procédure locale (LPC), le gestionnaire de mémoire, le gestionnaire d’objets, la structure de processus et le moniteur de référence de sécurité (SRM)
  • La couche d’abstraction matérielle (HAL). C’est une couche entre le matériel physique de l’ordinateur et le reste du système d’exploitation.
  • Les pilotes : Ce sont les pilotes de noyau qui sont des programmes écrits avec l’API native de Windows NT (plutôt qu’avec l’API du sous-système Win32) et qui s’exécutent en mode noyau sur le matériel sous-jacent

Le micro-noyau se situe entre l’exécutif Windows et le HAL. Il est responsable de la synchronisation multiprocesseur, de l’ordonnancement des threads, de la distribution des interruptions et des exceptions, de la gestion des pièges, de l’initialisation des pilotes de périphériques et de l’interface avec le gestionnaire de processus.

L'architecture Kernel mode de Windows

Tout le code qui s’exécute en mode noyau partage un seul espace d’adressage virtuel. Par conséquent, un pilote en mode noyau n’est pas isolé des autres pilotes et du système d’exploitation lui-même.
Si un pilote effectue une opération interdit ou bug, tout le système d’exploitation plante sous la forme d’un écran bleu ou BSOD.

Modules et sous-systèmesDescription
Win32 environment subsystemLe sous-système d’environnement Win32 peut exécuter des applications Windows 32 bits. Il contient la console ainsi que la prise en charge des fenêtres de texte, l’arrêt et la gestion des erreurs matérielles pour tous les autres sous-systèmes d’environnement. Il prend également en charge les machines DOS virtuelles (VDM), qui permettent aux applications MS-DOS et Windows 16 bits (Win16) de fonctionner sous
Windows NT
Security subsystemLe sous-système de sécurité traite les jetons de sécurité, accorde ou refuse l’accès aux comptes d’utilisateurs en fonction des autorisations de ressources, traite les demandes de connexion et initie l’authentification de la connexion, et détermine quelles ressources du système doivent être auditées par Windows NT
Object Manager
(Gestionnaire d’Objet)
Le gestionnaire d’objets est le courtier en ressources centralisé de Windows qui assure le suivi des ressources allouées aux processus.
Il gère la création d’objets nommés handle
C’est un service d’infrastructure de gestion des ressources
Cache Controller
(Contrôleur de cache)
Il fournit un cache commun pour les E/S régulières de fichiers
Configuration ManagerImplémente les appels système nécessaires au registre Windows
I/O ManagerPermet aux périphériques de communiquer avec les sous-systèmes en mode utilisateur.
Local Procedure Call (LPC)Fournit des ports de communication inter-processus avec une sémantique de connexion.
Les ports LPC sont utilisés par les sous-systèmes en mode utilisateur pour communiquer avec
leurs clients, par les sous-systèmes exécutifs pour communiquer avec les sous-systèmes
en mode utilisateur, et comme base du transport local pour Microsoft RPC
Memory Manager
(Gestionnaire de mémoire)
Il gère la mémoire virtuelle, contrôle la protection de la mémoire et la pagination de la mémoire
dans et hors de la mémoire physique vers le stockage secondaire, et met en œuvre
un allocateur polyvalent de mémoire physique
Process StructureIl gère la création et la clôture des processus et des threads et met en œuvre le concept de Job, un groupe de processus qui peut être clôturé dans son ensemble ou soumis à des restrictions partagées
PnP ManagerIl gère le plug and play et prend en charge la détection et l’installation des périphériques au
moment du démarrage. Il est également chargé d’arrêter et de démarrer les périphériques
à la demande
Power ManagerTraite les événements liés à l’alimentation (extinction, mise en veille, hibernation, etc.) et informe les pilotes concernés par des IRP spéciales (IRP d’alimentation)
Security Reference Monitor (SRM)L’autorité principale chargée d’appliquer les règles de sécurité du sous-système de sécurité intégrale détermine si un objet ou une ressource est accessible, via l’utilisation de listes de contrôle d’accès (ACL), elles-mêmes composées d’entrées de contrôle d’accès (ACE)
GDI
(Graphics Device Interface)
L’interface de périphérique graphique est responsable de tâches telles que le dessin de lignes et de courbes, le rendu des polices et la gestion des palettes
Kernel-mode driversLe noyau se situe entre le HAL et l’exécutif et assure la synchronisation multiprocesseur, l’ordonnancement et la répartition des threads et des interruptions, la gestion des pièges et la répartition des exceptions.
Ce sous-système est aussi en charge du fonctionnement des pilotes
Windows Subsystem for Linux (WSL)WSL est une collection de composants qui permet aux binaires natifs Linux ELF64 de fonctionner sous Windows. Il contient à la fois des composants en mode utilisateur et en mode noyau.
Windows Subsystem for Android (WSA)WSA permet d’exécuter des applications Android dans Windows 11
Modules et sous-systèmes du noyau Windows

ntoskrnl.exe (NT Kernel & System)

ntoskrnl.exe (Windows NT operating system kernel executable), également connu sous le nom d’image du noyau, contient le noyau et les couches exécutives du noyau Microsoft Windows NT, et est responsable de l’abstraction matérielle, de la gestion des processus et de la gestion de la mémoire.
Il contient le gestionnaire de cache, le moniteur de référence de sécurité, le gestionnaire de mémoire, le planificateur (Dispatcher) et l’écran bleu de la mort (la prose et les parties du code).
Mettre en œuvre les services de base du système d’exploitation, tels que la gestion de base des processus des threads, la gestion de la mémoire, les entrées-sorties et la communication inter-processus.

Enfin ntoskrnl.exe met en œuvre la plupart des appels de l’API native.

ntoskrnl.exe (NT Kernel & System)

Quelles sont les protections du noyau Windows

Le noyau Linux peut être manipulé par des malwares du type Rootkit.
Le but est en général de tourner les appels systèmes pour falsifier le résultat.
Ainsi, un rootkit Windows peut se cacher d’un programme qui utilise les appels systèmes pour lister les fichiers ou processus.

Secure Boot (démarrage sécurisé)

Il s’agit d’une norme de sécurité développée par les membres de l’industrie des PC. Elle vous aide à protéger votre système contre les programmes malveillants en interdisant l’exécution d’applications non autorisées pendant le processus de démarrage du système. Cette fonction permet de s’assurer que votre PC démarre en utilisant uniquement des logiciels approuvés par le fabricant du PC. Ainsi, à chaque fois que votre PC démarre, le microprogramme vérifie la signature de chaque logiciel de démarrage, y compris les pilotes de microprogrammes (ROM optionnelles) et le système d’exploitation. Si les signatures sont vérifiées, le PC démarre et le microprogramme donne le contrôle au système d’exploitation.

Trusted Boot

Il utilise le module de plateforme virtuelle de confiance (VTPM) pour vérifier la signature numérique du noyau de Windows avant de le charger.
À son tour, il confirme tous les autres composants du processus de démarrage de Windows, y compris les pilotes de démarrage, les fichiers de démarrage et ELAM. Si un fichier a été altéré ou modifié dans une certaine mesure, le chargeur de démarrage le détecte et refuse de le charger en le reconnaissant comme le composant corrompu.
En bref, il fournit une chaîne de confiance pour tous les éléments pendant le démarrage du système d’exploitation.

Avec le Secure Boot, il s’agit d’un des mécanismes fournit dans le standard UEFI pour lutter contre les rootkit et bootkit.

L’isolation du noyau dans Windows 10 et Windows 11

L’isolation du noyau est un nouveau mécanisme de sécurité apparu dans Windows 10 et Windows 11.
Il permet de virtualiser certains composants du noyau, via la virtualisation matériel des processeurs Intel ou AMD nommée la sécurité basée sur la virtualisation (VBS).
VBS utilise l’hyperviseur Windows pour créer ce mode sécurisé virtuel pour appliquer des restrictions qui protègent les ressources vitales du système d’exploitation, ou pour protéger les ressources de sécurité telles que les informations d’identification de l’utilisateur authentifié.