Initiation à la gestion d'un ordinateur

420-146-SH Initiation à la gestion d'un ordinateur

Chapitre 4 – Le système d'exploitation – Partie 1

Introduction

Jusqu'à maintenant, vous avez appris à reconnaître les différents composants matériels d'un ordinateur et à les connecter (les alimenter et leur fournir un lien pour échanger des données), mais très peu à les utiliser. Comme il est impossible pour un être humain de connaître en détail le fonctionnement de tous les composants et de tous les périphériques existants, vous devrez installer un outil qui vous permettra de les utiliser facilement : le système d'exploitation. Ce chapitre présente donc les différents composants et responsabilités d'un système d'exploitation, en s'attardant principalement à Windows. Que ce soit sur votre ordinateur personnel, votre téléphone cellulaire ou votre console de jeux vidéo préférée, le système d'exploitation facilite la vie des personnes qui programment comme celle des personnes utilisatrices.

Le problème initial

Le premier ordinateur numérique, l'ENIAC, était très primitif. Pour le programmer, la personne opératrice devait relier, à l'aide de câbles et de panneaux mobiles, les différents composants logiques afin d'exécuter un seul programme à la fois. Les personnes qui l'utilisaient étaient en mesure d'expliquer en détail l'ensemble de ses composants et leur utilité, puisque cet ordinateur comptait environ 18 000 tubes à vide ; il faudrait aujourd'hui moins de 30 000 transistors pour le reproduire. À titre de comparaison, les processeurs d'aujourd'hui frôlent les 20 milliards de transistors, et le chipset tourne autour de 2 milliards. Une barrette de mémoire vive de 32 Gio en contient plus de 200 milliards, et le processeur graphique d'une NVIDIA RTX 4080, près de 46 milliards. De nos jours, il est donc pratiquement impossible qu'une seule personne connaisse l'intégralité du fonctionnement d'un ordinateur moderne, d'un téléphone cellulaire ou même d'un « simple » processeur.

Alors que l'ENIAC n'avait qu'une seule entrée possible, un ordinateur moderne peut en accepter des milliers : des claviers de différentes langues et de différentes régions, avec ou sans touches programmables, filaires, sans fil (2,4 GHz) ou Bluetooth. Il en va de même pour les souris, les moniteurs, les imprimantes, les cartes graphiques, les cartes de son, les cartes mères, etc.

Imaginons que vous vouliez calculer le nombre de combinaisons de pièces possibles pour monter un ordinateur. Nous avons vu que le bloc d'alimentation, la carte mère, le processeur et la mémoire vive sont indispensables, ce qui fait quatre catégories de produits obligatoires. Ajoutons-en six facultatives : clavier, souris, moniteur, boîtier, carte graphique et carte réseau. Dans cet univers pourtant limité, le nombre total de combinaisons s'élève à 17 715 610 000. Et ce nombre astronomique est encore infime comparé à la réalité, où il existe des centaines, voire des milliers de catégories comptant chacune des milliers de produits.

Deux familles de systèmes d'exploitation ont façonné ce que nous utilisons aujourd'hui, et elles viennent de deux mondes totalement différents. La première est née avec les micro-ordinateurs. En 1974, Gary Kildall, qui enseignait à l'École navale de Monterey, écrit CP/M pour les puces Intel 8080 : un petit système qui va chercher un programme sur une disquette, le charge en mémoire, puis lui laisse toute la machine. Une personne à la fois, un programme à la fois. En 1980, IBM cherche un système d'exploitation pour son ordinateur personnel et contacte Digital Research, l'entreprise de Kildall. Les deux parties ne s'entendent pas. IBM se tourne alors vers une petite entreprise, Microsoft, qui achète en vitesse un clone de CP/M écrit par Tim Paterson et le rebaptise MS-DOS. Cette occasion ratée par Digital Research aura d'importantes répercussions par la suite.

L'autre famille vient des laboratoires Bell, dont les équipes travaillaient sur de grosses machines partagées par des dizaines de personnes en même temps. En 1969, Ken Thompson et Dennis Ritchie travaillent sur un vieux PDP-7 et commencent à développer Unix. Ce système permet à plusieurs personnes d'être connectées simultanément, chacune avec ses fichiers, ses permissions et ses programmes qui roulent. Il découpe le temps du processeur en tranches et saute d'une tâche à l'autre assez vite pour que chaque personne ait l'impression d'avoir la machine juste pour elle. La différence entre les deux approches n'était donc pas une question de puissance, mais de problème à régler : CP/M et MS-DOS servaient une personne assise devant sa machine, tandis qu'Unix devait partager la sienne entre plusieurs personnes utilisatrices.

Les composants de Windows

Maintenant que vous savez pourquoi un système d'exploitation existe, passons à ses composants essentiels. Nous prendrons le temps de bien identifier les composants génériques, présents aussi dans d'autres systèmes d'exploitation tels que Linux, BSD et Unix. Qu'il tourne sur un ordinateur ou sur un téléphone cellulaire, un système d'exploitation regroupe divers composants indispensables au bon fonctionnement de l'appareil.

Le mode noyau et le mode utilisateur

Tout d'abord, le système d'exploitation fonctionne selon deux modes : le mode utilisateur (user mode) et le mode noyau (kernel mode). Lorsque vous utilisez un logiciel et que vous voulez, par exemple, ouvrir un fichier ou imprimer un document, le logiciel, qui s'exécute en mode utilisateur, demande poliment au noyau d'effectuer la tâche. Celui-ci vérifie alors que vous avez les droits nécessaires, puis prend en charge la requête jusqu'à ce qu'elle soit terminée.

Le noyau

Sous Windows, le noyau (kernel) réside dans le fichier ntoskrnl.exe. C'est lui qui gère l'accès au processeur, à la mémoire et aux périphériques. Il reste chargé en mémoire vive en tout temps.

Tableau 1 – Les grandes responsabilités du noyau de Windows
Ordonnanceur (scheduler) Décide quel fil d'exécution obtient le processeur, et pour combien de temps. C'est lui qui donne l'illusion que tout roule en même temps.
Gestionnaire de processus Crée les processus, c'est-à-dire démarre les programmes, leur donne leur environnement de départ et fait le ménage quand ils se terminent.
Gestionnaire de mémoire virtuelle Attribue à chaque processus son espace privé, gère la mémoire virtuelle et déplace au besoin des pages vers le fichier d'échange (pagefile.sys) quand la mémoire vive manque.
Gestionnaire d'entrées-sorties Fait circuler les demandes entre les programmes, les pilotes et le matériel, et remet les réponses au bon programme.
Gestionnaire d'objets Tient l'inventaire de tout ce que le système manipule : fichiers ouverts, processus, fils d'exécution, clés du Registre.
Moniteur de sécurité (Security Reference Monitor) Compare, à chaque accès, le compte qui fait la demande avec la liste de contrôle d'accès (ACL) attachée à l'objet visé, et tranche : permis ou refusé.

La couche d'abstraction matérielle (HAL)

Sous le noyau, il reste encore un étage avant d'arriver au matériel : la couche d'abstraction matérielle, ou HAL, pour Hardware Abstraction Layer. Pendant longtemps, elle a tenu dans un seul fichier, hal.dll, que le chargeur d'amorçage chargeait en même temps que le noyau ; depuis 2020, elle est intégrée directement dans ntoskrnl.exe, mais son rôle n'a pas changé. C'est la réponse directe au problème posé au début du chapitre : il existe des milliers de modèles de cartes mères, et Microsoft ne peut évidemment pas publier une version de Windows pour chacun. Grâce à la HAL, la même clé USB d'installation démarre aussi bien sur un portable Intel que sur un ordinateur de bureau AMD.

Ce ne sont pas vos périphériques — ça, c'est le travail des pilotes — mais la plomberie de la carte mère elle-même : le contrôleur d'interruptions, les minuteries, l'accès direct à la mémoire, la façon dont les bus sont numérotés, la gestion de l'alimentation à travers l'ACPI. Quand le noyau veut armer une minuterie ou masquer une interruption, il ne s'adresse pas directement à la puce : il appelle la HAL, et c'est elle qui sait comment cette machine-ci est bâtie.

L'idée ne date pas d'hier. Windows NT, l'ancêtre de Windows 11, a été conçu dès le départ pour être portable : dans les années 1990, il a tourné sur des processeurs MIPS, Alpha et PowerPC en plus des x86. D'une version à l'autre, presque tout le code source était le même ; l'essentiel de ce qui changeait était concentré dans la HAL. C'est exactement le même raisonnement que celui qui a mené au langage C pour Unix : écrire le gros du système une seule fois, puis enfermer dans un petit module bien délimité tout ce qui dépend de la machine. Aujourd'hui, c'est ce qui permet à Windows 11 de rouler autant sur les processeurs x64 d'Intel et d'AMD que sur les puces ARM64 de Qualcomm.

Les interfaces de programmation et les trousses de développement

Un programme ordinaire ne touche jamais au matériel directement : en mode utilisateur, le processeur lui-même offre un mécanisme de protection qui l'en empêche. L'accès au matériel est la responsabilité du noyau. Une personne qui développe une application n'a aucune idée de la marque de votre unité de stockage, et c'est voulu : elle demande au système d'ouvrir un fichier, et le système se débrouille avec le reste.

Pour faire ses demandes, le programme passe par des portes d'entrée : les interfaces de programmation, les fameuses API dont il était question dans l'encadré plus haut. Sous Windows, elles prennent la forme de bibliothèques : kernel32.dll pour les fichiers, la mémoire et les processus ; user32.dll pour les fenêtres, le clavier et la souris ; gdi32.dll pour le dessin à l'écran ; et advapi32.dll pour la sécurité et le Registre. Ces bibliothèques préparent la requête, puis ntdll.dll fait le saut officiel vers le mode noyau.

Du côté des personnes qui développent, Microsoft publie le Windows SDK pour les applications et le WDK (Windows Driver Kit) pour les pilotes. Ce sont les modes d'emploi officiels : ils disent quelles fonctions existent, ce qu'elles attendent et ce qu'elles retournent.

Le shell, l'enveloppe du système

Jusqu'ici, nous avons vu comment un programme s'adresse au noyau. Mais vous, comment vous adressez-vous au système ? Par le shell. En anglais, le mot veut dire « coquille » : c'est l'enveloppe qui entoure le noyau, et c'est la seule partie du système avec laquelle vous êtes réellement en contact. Le shell prend deux formes. L'interpréteur de commandes vous laisse taper des commandes au clavier dans une fenêtre texte ; l'interface graphique vous présente plutôt un bureau, des fenêtres et des icônes à cliquer. Dans le fond, les deux font exactement la même chose : ils traduisent ce que vous voulez faire en appels aux interfaces de programmation.

Sous Windows, c'est explorer.exe qui joue le rôle d'interface graphique. En plus d'offrir l'Explorateur de fichiers, c'est lui qui dessine le bureau, la barre des tâches, le menu Démarrer, la zone de notification et les menus qui apparaissent au clic droit. Quand vous double-cliquez sur une icône, il consulte le Registre pour savoir quel programme est associé à ce type de fichier, puis il appelle la fonction CreateProcess. Quand vous glissez un fichier d'un dossier à l'autre, il appelle les fonctions de fichiers de kernel32.dll. Il ne fait rien que vous ne puissiez faire vous-même en écrivant le code correspondant.

Et c'est justement là le point à retenir : le shell n'a aucun privilège particulier. C'est un programme en mode utilisateur comme les autres, qui se sert exactement des mêmes interfaces que n'importe quelle application. Vous pouvez le vérifier vous-même : dans le Gestionnaire des tâches, terminez la tâche Explorateur Windows. La barre des tâches et les icônes du bureau disparaissent, mais vos programmes déjà ouverts continuent de rouler et la machine ne bronche pas. Relancez explorer.exe (menu Exécuter une nouvelle tâche du Gestionnaire des tâches) et tout revient en place. C'est aussi pour cette raison que Linux vous laisse choisir entre GNOME, KDE et une dizaine d'autres environnements : vous remplacez la coquille sans jamais toucher au noyau.

À côté de l'interface graphique vivent les interpréteurs de commandes : cmd.exe, l'héritier direct de MS-DOS dont nous parlions plus tôt, et surtout PowerShell, devenu l'outil de référence en administration Windows. Ils ont la même responsabilité qu'explorer.exe, mais permettent d'enchaîner des commandes, de rediriger le résultat de l'une vers l'autre et, mieux encore, d'écrire tout cela dans un script que vous pourrez relancer cent fois sans jamais vous tromper. C'est toute la différence entre configurer un poste et en configurer trois cents.

La couche des pilotes

Nous avons vu qu'un programme ordinaire ne touche jamais au matériel. Pourtant, il faut bien que quelqu'un le fasse : c'est le rôle des pilotes de périphérique. Le pilote qu'une entreprise comme NVIDIA écrit pour sa carte graphique lit et écrit dans les registres de la carte et lui envoie ses commandes. La protection ne ferme donc pas la porte du matériel ; elle choisit qui a le droit de la franchir.

Sous le noyau, la couche des pilotes fait le pont avec le matériel. Windows est livré avec une longue liste de pilotes de classe, c'est-à-dire des pilotes génériques qui prennent en charge toute une famille d'appareils : hidclass.sys pour les claviers et les souris, usbstor.sys pour les clés USB, stornvme.sys pour les unités NVMe et disk.sys pour les disques. Tant qu'un appareil respecte la norme de sa famille, il fonctionne dès le branchement, même si le pilote de son fabricant n'est pas installé. Seules ses fonctions supplémentaires – les touches programmables d'un clavier, l'éclairage d'une souris, les réglages avancés d'un casque d'écoute – risquent de ne pas fonctionner correctement tant que ce pilote n'est pas installé.

Quand une entreprise veut aller plus loin que la norme, elle écrit son propre pilote avec le WDK, selon le modèle WDF. Elle a alors deux options : KMDF, en mode noyau, plus puissant mais sans filet, ou UMDF, en mode utilisateur, plus limité, mais dont une erreur ne fait pas planter tout l'ordinateur. Microsoft pousse fort vers le second depuis plusieurs années, pour la raison que vous devinez. Dernier point : un pilote en mode noyau doit être signé numériquement et avoir réussi les tests de certification, sinon Windows refuse de le charger. C'est contraignant, mais ça ferme une porte d'entrée qui a longtemps été la préférée des logiciels malveillants.

Les services

Un système d'exploitation, ce n'est pas seulement un noyau et des pilotes. En ce moment même, votre machine fait tourner des dizaines de programmes en arrière-plan, sans fenêtre et sans icône, appelés services : le spouleur d'impression, Windows Update, le client DHCP qui va chercher votre adresse réseau et le pare-feu, entre autres. Ils sont démarrés et surveillés par services.exe, et vous pouvez tous les voir dans la console services.msc. Arrêter un service, le redémarrer ou l'empêcher de démarrer automatiquement : c'est un réflexe de dépannage que vous aurez souvent à faire.

Le Registre

La configuration, elle, est presque entièrement rassemblée dans le Registre, une base de données organisée en arborescence de clés, un peu comme des dossiers. Les deux branches que vous verrez le plus sont HKEY_LOCAL_MACHINE, qui décrit la machine elle-même, et HKEY_CURRENT_USER, qui décrit le compte ouvert en ce moment. Le Registre est essentiel au fonctionnement de Windows, mais fragile : une seule valeur mal saisie peut empêcher l'ordinateur de démarrer. N'y touchez que si vous savez ce que vous faites, et jamais sans avoir exporté la clé au préalable.

Le système de fichiers

Nous avons vu au chapitre 2 comment un disque est découpé en partitions. Le système de fichiers, c'est ce qui vit à l'intérieur d'une de ces partitions : la manière dont les fichiers sont nommés, retrouvés et protégés. Windows 11 utilise NTFS, qui apporte trois choses que FAT32 (son prédécesseur) n'avait pas : une journalisation, qui permet de remettre le système de fichiers dans un état cohérent après une panne de courant ; des permissions attachées à chaque fichier et à chaque dossier ; et la prise en charge de fichiers de plus de 4 Go. Les clés USB, elles, sont souvent formatées en exFAT (une version modernisée de FAT32, sans sa limite de 4 Go par fichier), parce que la plupart des appareils le comprennent, qu'il s'agisse d'un Mac, d'un téléviseur ou d'une console de jeux.

Les utilitaires d'administration

Par-dessus tout ça, Windows fournit une boîte à outils complète. Vous n'avez pas à mémoriser tous ces outils tout de suite, mais vous devez savoir qu'ils existent. En dépannage, choisir le bon outil du premier coup fait la différence entre dix minutes et deux heures. Pour ouvrir la plupart d'entre eux, tapez leur nom de commande dans la zone de recherche ou dans la boîte Exécuter (touche Windows + R).

Tableau 2 – Les principaux outils d'administration de Windows 11
Outil Commande Utilité
Gestionnaire des tâches taskmgr Voir les processus en cours, la charge du processeur, de la mémoire, du disque et du réseau, et désactiver les programmes qui se lancent au démarrage.
Gestion de l'ordinateur compmgmt.msc Console qui regroupe plusieurs des outils ci-dessous au même endroit.
Gestion des disques diskmgmt.msc Créer, supprimer et redimensionner des partitions, les formater et leur attribuer une lettre de lecteur.
Gestionnaire de périphériques devmgmt.msc Voir le matériel détecté, repérer un appareil sans pilote, mettre un pilote à jour ou revenir à la version précédente.
Observateur d'événements eventvwr.msc Consulter les journaux du système. C'est presque toujours le premier endroit où regarder quand quelque chose a planté.
Services services.msc Démarrer, arrêter et configurer le mode de démarrage des services.
Moniteur de ressources resmon Savoir précisément quel processus occupe le disque, le réseau ou la mémoire, plus en détail que le Gestionnaire des tâches.
Planificateur de tâches taskschd.msc Faire exécuter automatiquement un programme à une heure donnée ou au déclenchement d'un événement.
Éditeur du Registre regedit Consulter et modifier la configuration du système. À manipuler avec prudence.
Informations système msinfo32 Obtenir l'inventaire complet de la machine : modèle, microgiciel, mémoire, pilotes chargés.
Nettoyage de disque cleanmgr Récupérer de l'espace en supprimant les fichiers temporaires et les anciennes installations de Windows.
Terminal Windows wt Accéder à PowerShell et à l'invite de commandes, indispensables dès qu'une tâche doit être répétée.

La sécurité au quotidien

La sécurité n'est pas un logiciel de plus qui s'installerait par-dessus : elle est tissée dans chacune des couches que nous venons de voir. Windows 11 rassemble l'essentiel dans une seule application, Sécurité Windows, mais ses composants travaillent à des niveaux très différents.

L'antivirus Microsoft Defender surveille en temps réel les fichiers qui s'ouvrent et les programmes qui démarrent. Le pare-feu Windows Defender filtre les connexions réseau entrantes et sortantes, avec des règles distinctes selon que le réseau est déclaré privé, public ou de domaine ; la console wf.msc donne accès aux règles détaillées. SmartScreen vérifie la réputation d'un fichier téléchargé ou d'un site avant de vous laisser continuer. Le contrôle de compte d'utilisateur (UAC), cette fenêtre qui assombrit l'écran et vous demande de confirmer, fait respecter le principe du moindre privilège : même avec un compte administrateur, vos programmes roulent avec des droits réduits jusqu'à ce que vous donniez explicitement votre accord.

Le chiffrement et l'isolation du noyau

Plus bas encore, BitLocker chiffre le contenu du disque et s'appuie sur le TPM et le démarrage sécurisé étudiés au chapitre 2 : un disque volé et branché sur une autre machine reste illisible. Enfin, l'isolation du noyau et l'intégrité de la mémoire s'appuient sur les fonctions de virtualisation du processeur pour placer les parties les plus sensibles du système dans un compartiment auquel même un pilote compromis ne peut pas accéder.

Ce que l'édition Pro ajoute

Tout ce qui précède, sauf BitLocker, se retrouve aussi dans l'édition Famille de Windows 11. L'édition Pro, celle qui devrait être installée sur vos portables, ajoute une série d'outils pensés pour la gestion d'un parc de machines en entreprise. Ce sont ceux que vous utiliserez en milieu de travail, et plusieurs vous serviront dès vos cours de réseautique.

Tableau 3 – Les principaux ajouts de l'édition Pro
Fonction Ce qu'elle permet
BitLocker Chiffrer intégralement le disque, avec dépôt de la clé de récupération dans un compte ou dans un annuaire.
Éditeur de stratégie de groupe locale (gpedit.msc) Imposer des centaines de réglages du système sans passer par le Registre.
Jonction à un domaine Rattacher la machine à un annuaire Active Directory ou Microsoft Entra ID, pour que les comptes et les règles soient gérés de façon centralisée.
Hyper-V Créer et faire tourner des machines virtuelles directement dans Windows.
Bac à sable Windows Ouvrir un Windows jetable et isolé, le temps d'essayer un logiciel douteux. Tout disparaît à la fermeture.
Bureau à distance Se connecter à la machine depuis un autre poste. L'édition Famille peut se connecter, mais ne peut pas recevoir de connexion.
Report des mises à jour Retarder une mise à jour de fonctionnalités le temps de la tester ailleurs, plutôt que de la subir le matin d'une remise.