0% ont trouvé ce document utile (0 vote)
60 vues41 pages

New Version

Transféré par

ratianarison.anthony
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
60 vues41 pages

New Version

Transféré par

ratianarison.anthony
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ANALYSE ET GESTION DES PROCESSUS

AVEC
SYSINTERNALS PROCESS EXPLORER
Table de matières

Introduction

I. Le concept et les bases

Introduction

I.1. Les Processus


I.1.1. Qu’est-ce qu’un processus ?
I.1.2. Les éléments structurels d’un processus
I.1.2.1. Identificateur de processus
I.1.2.2. Déscripteur d’un processus
I.1.2.3. Propriétaire
I.1.2.4. Espace mémoire
I.1.2.5. Ressources système
I.1.2.6. Système de fichiers et sockets
I.1.2.7. Signaux
I.1.2.8. Contexte d’éxécution
I.1.2.9. Priorité
I.1.3. Cycle de vie d’un processus
I.1.3.1. Les différents états d’un processus
I.1.3.2. Transition entre les états
I.1.4. Communication inter-processus (IPC)
I.1.4.1. Processus parent et processus enfant
I.1.4.2. Message et files de messages
I.1.4.3. Pipes (tuyaux) et named pipes (FIFO)
I.1.4.4. Sockets
I.1.4.5. Mémoire partagée
I.1.4.6. Sémaphores
I.1.4.7. Mutex
I.1.4.8. RPC (Remote Procedure Call)
I.1.4.9. Barrières
I.1.4.10. Evénements et conditions

I.2. Sysinternals Process Explorer : présentation générale


I.2.1. Sysinternals
² I.2.1.1. Qu’est-ce que Sysinternals ?
I.2.1.2. Caractéristiques principales de Sysinternals
I.2.2. Process Explorer
I.2.2.1. Process Explorer, c’est quoi ?
I.2.2.2. Télécharger et installer Process Explorer
I.2.2.3. Les fonctionnalités de Process Explorer
I.2.2.3.1. Accès aux processus
I.2.2.3.2. Visualisations des statistiques de performances
I.2.2.3.3. Visualisations des ressources système
I.2.2.3.4. Visualisation des connexions réseau
I.2.2.3.5. Analyses des DLL
I.2.2.3.6. Monitoring de la CPU et des threads
I.2.2.3.7. Recherche de handles et de modules
I.2.2.3.8. Création de rapports
I.2.2.3.9. Intégration avec Sysinternals Suite
I.2.2.3.10. Interface utilisateur personnalisable
I.1.2.2.4. Différence entre Process Explorer et Task Manager
I.1.2.2.4.1. Interface utilisateur
I.1.2.2.4.2. Détails des processus
I.1.2.2.4.3. Fonctionnalités de surveillance
I.1.2.2.4.4. Commandes et actions
I.1.2.2.4.5. Capacités de débogage
I.1.2.2.4.6. Utilisation de la CPU et de la mémoire
I.1.2.2.4.7. Capacités de recherche
I.1.2.2.4.8. Documentation et support
I.1.2.2.4.9. Portabilité

II. Analyses des processus windows avec Process Explorer

Introduction
II.1. Détails des processus
II.2. Utilisations des ressources
II.3. Traces et hiérarchie
II.4. Threads, handles et modules
II.5. Priorités avancées
II.6. Analyse des performances
II.7. Services Windows
II.8. Connexion réseau
II.9. Audit de sécurité
II.10. Exportation des données
Conclusion

III. Analyse des dépendances des processus avec Process Explorer

Introduction
III.1. Examen des proprietés des processus
III.2. Dépendances des modules (DLL)
III.3. Analyses des threads
III.4. Analyses des handles
III.5. Relation parent-enfant
III.6. Utilisation des connexions réseau
III.7. Observation des écoutes de ports
III.8. Couplage avec Virus Total
Conclusion

IV. Processus au démarrage

Introduction
IV.1. Identification des processus au démarrage
IV.2. Gestion des processus au démarrage
IV.3. Conseils supplémentaires
Conclusion
V. Détéction des programmes malveillants avec Process Explorer

Introduction
V.1. Analyses des proccessus actifs
V.2. Vérification des chemins d’accès
V.3. Utilisation abusive des ressources
V.4. Analyses des handles et modules
V.5. Relations de parenté
V.6. Utilisation de la service ‘’Virus Total’’
V.7. Ecoute des ports et connexions réseau
V.8. Comportements anormaux
V.9. Audit de l’integrité des fichiers
V.10. Services Systèmes Suspects
V.11. Comparaison avec des listes de menaces connues
V.12. Analyse des autorisations
V.13. Isolation des processus suspect
Conclusion

VI. Automatisation de la surveillance des processus avec Process Explorer

Introduction
VI.1. Intégration avec des outils de sécurité
VI.2. Notifications
VI.3. Interface utilisateur personnalisé
VI.4. Script d’automatisation
Conclusion

VII. Surveillance continue

Introduction
VII.1. Survéillance en temps réel et enregistrement des événemements
VII.2. Planification des vérifications
VII.3. Exclusions et whitelisting
VII.4. Documentation et reporting
VII.5. Tuning et optimisation
VII.6. Utilisation d’API et d’SDK
Conclusion
Introduction

Dans un environnement informatique moderne, la gestion éfficace des ressources système est éssentielle pour garantir la
performance, la sécurité et la stabilité des applications. Ainsi, l’analyse et la gestion des processus sont des éléments
cruciaux pour comprendre le fonctionnement interne du système d’exploitation.

Windows, en tant que système multitâche, permet l’éxécution simultanée de plusieurs processus, chacun ayant ses
propres ressources et priorités. L’analyse de ces processus permet d’identifier les goulets d’étranglement, d’optimiser
l’utilisation des ressources et d’assurer une éxpérience utilisateur fluide. Par ailleurs, la gestion éfficace des processus
joue un rôle clé dans la prévention des conflits, de la gestion de la mémoire et la réponse du système aux diverses
demandes des utilisateurs.
Première Partie

Le concept et les bases

Introduction
I.1. Les processus
Dans ce chapitre, nous allons aborder la notion de processus, en commençant par une question toute simple : qu’est-ce
qu’un processus ?

I.1.1. Qu’est-ce qu’un processus ?


Un processus est défini comme une instance d’un programme en cours d’éxécution sur un système d’exploitation. Il
représente l’ensembe des activités qui sont en cours pour l’éxécution d’un programme, ainsi que les ressources
nécessaires à cette éxécution.

Pour mieux comprendre cette notion, nous allons voir les éléments caractéristique d’un processus.

I.1.2. Les éléments structurels d’un processus


Généralement, un processus est structuré par les éléments suivants :

I.1.2.1. l’Identificateur (PID ‘’Process IDentifier‘’) :

L’ID d’un processus (ou PID ‘’Process Identifier) est un nombre unique attribué par le système d’éxploitation à chaque
processus en cours d’éxécution sur un ordinateur. Chaque fois qu’un processus est lancé, le système d’éxploitation lui
attribue un PID unique. Cela permet de différencier facilement les processus les uns les autres, même s’il porte le même
nom.

Caractéristiques du PID :

➢ Numérotation :
• Les PIDs sont généralement des entiers positifs. Dans la plupart des systèmes (comme Windows et Linux),
les PIDS commencent à 1 et sont incrémentés pour chaque nouveau processus.
• Lorsqu’un processus se termine, son PID peut être réutilisé par le système pour un nouveau processus.
➢ Portée :
• Les PIDs sont uniques pour chaque système, mais les PIDs des processus ne sont pas garantis d’être uniques
entre les systèmes. Par éxemple, un PID de 1024 sur un ordinateur peut correspondre à un processus différent
de celui ayant le même PID sur un autre ordinateur.

Utilisation des PIDs :

Les PIDs sont utilisés par le système d’éxploitation et les outils de gestion des processus (comme Process Explorer)
pour :
- Suivre l’éxécution des processus ;
- gérer les ressources allouées à chaque processus ;
- terminer ou suspendre des processus spécifiques lorsque nécessaire.

Relation avec d’autres éléments :


- PID parent : chaque processus peut avoir un processus parent qui l’a lancé. L’ID de ce processus parent est
souvent appelé PPID (Parent Process IDentifier).
- Gestion des signaux : les systèmes d’exploitation utilisent les PIDs pour envoyer des signaux entre processus,
tels que des requêtes d’arrêt ou des notifications d’événements.

I.1.2.2. le Déscripteur :

Le déscripteur de processus, souvent appelé ‘’Process Control Block (PCB)’’, est une structure de données utilisée par le
système d’exploitation pour stocker les informations essentielles relatives à un processus éxécuté. Il contient
généralement les informations suivantes :
- l’ID du processus ;
- l’état actuel du processus (par éxemple, en cours d’éxécution, en attente ou encore terminé ou prêt) ;
- le compteur de programme (l’adresse de la prochaine instruction à éxécuter par le processus) ;
- les informations de planification ( c’est la priorité du processus ) ;
- les registres du processus (valeurs actuelles des registres du processeur lorsque le processus est interrompu,
permettant de reprendre l’éxécution sans perte de contexte) ;
- les informations sur l’utilisation des ressources (informations conçernant l’utilisation de la mémoire, des
fichiers ouverts, des handles et d’autres ressources allouées au processus) ;
- les données d’éxécution ( des informations spécifiques à l’éxécution et les zones de mémoires allouées) ;
- les données de contrôle de la synchronisation ( informations nécessaires pour gérer la synchronisation entre
plusieurs processus, comme les sémaphores et les mutex) ;
- la liste des processus enfants (références aux processus enfants que ce processus a créés, permettant d’organiser
et de gérer les relations entre les processus).

Le déscripteur de processus est essentiel pour l’organisation et la gestion des processus au sein du système d’exploitation.
En centralisant toutes les informations pertinentes dans une structure unique, il permet au système de suivre l’état et les
ressources de chaque processus, facilitant ainsi une miltitude d’opérations liées à la gestion des processus, à la
planification et à la synchronisation.

I.1.2.3. le Propriétaire

Le proprietés d’un processus est généralement défini par l’identifiant de l’utilisateur (UID pour Unix/Linux ou SID pour
Windows) qui a lancé le processus. Cela signifie que chaque fois qu’un nouvel processus est créé, il hérite des privilèges
et des droits d’accès de l’utilisateur qui l’a généré.

Importance du propriétaire de processus :

a- Contrôle d’accès :
• Permissions et droits : Le propriétaire détérmine les droits d’accès associés au processus. Cela signifie qu’un
processus hérite des permissions de son utilisateur. Autrement dit, il peut accéder ou modifier les fichiers et les
ressources selon les autorisations qui lui ont été accordée.
• Sécurité : Identifier le propriétaire est crucial pour la sécurité. Les systèmes d’exploitation utilise cette
information pour appliquer des règles de sécurité, limitant ce que chaque processus peut faire ou accéder.
b- Gestion des ressources :
• Allocation des ressources : les processus peuvent recevoir des priorités et des ressources en fonction de leur
propriétaire. Cela permet de garantir que les utilisateurs ont un contrôle ou un capacité d’utilisation des
ressources qui leur est propre tout en protégeant celles des autres utilisateurs.
c- Surveillance et audit :
• Suivi des activités : les administrateurs système peuvent surveiller les activités des processus en fonction de leur
propriétaire. Cela est particulièrement utile pour détecter des activités inhabituelles ou malveillantes.
• Audit de sécurité : Dans les environnements sensibles, savoir quel utilisateur possède quel processus peut aider à
documenter les actions et à établir des responsabilités.

Comment le propriétaire est déterminé ?

Lorsqu’un processus est créé (par éxemple, lors du lancement d’une application), le système d’exploitation associe le
PID de ce processus à l’UID de l’utilisateur qui a lancé l’application.
Dans des systèmes multi-utilisateurs, cela permet de gérer les processus de chaque utilisateur indépendamment des
autres.

I.1.2.4. L’éspace mémoire

L’occupation mémoire par un processus se réfère à la quantité de mémoire matérielle (RAM) qu’un processus utilise
lorsqu’il s’éxécute sur un système. Chaque processus dispose sa propre zone de mémoire qui se divise en plusieurs
composantes.

Les principales composantes de l’éspace mémoire occupée par un proccessus :

a- Espace d’adressage :

Chaque processus processus posséde son propre éspace d’adressage, ce qui signifie qu’il a une vue unique et isolée de la
mémoire, ampêchant les processus de se mélanger et garantissant la sécurité et la stabilité.
Ainsi, l’espace d’adressage est une representation virtuelle de la mémoire. Cela signifie que les adresses utilisées par le
programme ne correspondent pas nécessairement aux adresses physiques dans la RAM. Le système d’exploitation, en
coordination avec le matériel (comme le MMU – Memory Management Unit), traduit ces adresses virtuelles en adresses
physiques.

b. Ségments de mémoires

La zone de mémoire allouée à chaque processus est divisée généralement en plusieurs ségments :

• Ségment de code :
Contient le code éxécutable du programme. C’est le texte du programme qui est chargé en mémoire.

• Ségment de données statiques :


Contient les variables globales et les éléments de données statiques initialisées, qui sont utilisées par le programme
pendant sont éxécution.

• Ségment BSS (Block Started by Symbol) :


Contient les variables globales et statiques non initialisées.

• Ségment de Pile (Stack) :


C’est une zone de mémoire utilisée pour gérer les appels de fonction, les variables locales et les données temporaires.
Chaque fois qu’une fonction est appelée, un nouvel environnement est créé sur la pile pour stocker les variables locales,
les paramètres de la fonction et le pointeur de retour. La pile croît et décroît automatiquement en fonction des appels et
des retours de fonctions.

• Ségment de Tas (heap) :


C’est une zone de mémoire dynamique utilisée pour l’allocation de mémoire à la demande, généralement par des
fonctions comme ‘malloc’ en C ou ‘new’ en C++. La mémoire ici est allouée et libérée par le programme pendant son
éxécution. Par conséquent, le heap est généralement plus flexible, car sa taille peut changer pendant l’éxécution du
programme.

Taille totale de l’occupation mémoire :

La taille totale de la mémoire par un processus en mémoire inclut la somme de la taille de ces ségments, mais aussi
d’autres éléments tels que les structures de données internes gérées par le système et les ressources allouées comme les
déscripteurs de fichiers et les connexions réseau. Ainsi, elle peut être mésurée par plusieurs métriques :

➢ Mémoire résidente :
La mémoire résidente est la quantité de mémoire physique RAM que le processus occupe à un moment donné. Ceci
inclut la mémoire code, la mémoire des données, le tas et la pile.

➢ Mémoire virtuelle :
C’est la quantité totale de mémoire que le processus peut adresser, y compris non seulement la mémoire physique mais
aussi la mémoire qui est paginée ou échangée sur le disque.

➢ Mémoire partagée :
Certaines bibliothèques ou sections de mémoires peuvent être partagées entre plusieurs processus, ce qui signifie que
l’occupation mémoire pourrait être moins que la somme des mémoires allouées à chaque processus individuel.

I.1.2.5. Les ressources système

Les ressources système incluent tous les éléments matériels et logiciels que le système d’exploitation doit gérer pour
permettre l’éxécution des processus.
Voici les différentes types de ressources :

✗ Mémoire : Chaque processus a besoin de mémoire (RAM) pour stocker son code, ses données et ses piles
d’éxécution. La gestion de la mémoire inclut la mise en œuvre de l’allocation et de la libération de mémoire.

✗ CPU : Les processus requièrent du temps de processeur pour éxécuter leurs instructions. L’ordonnanceur du
système d’exploitation gère l’allocation du temps CPU entre les différents processus.

✗ Fichiers : Les fichiers ouverts par un processus sont également considérés comme des ressources. Chaque fichier
est associé à des déscripteurs de fichiers uniques qui gèrent l’accès.
✗ Sockets et Réseaux : Lorsqu’un processus communique sur un réseau, il utilise des sockets, qui nécessitent
également des ressources système pour établir la connexion, envoyer et recevoir des données.
✗ Handles : Des handles sont utilisés pour accéder à d’autres objets comme les fenêtres, les threads, et les
dispositifs d’entrée/sortie.

I.1.2.6. Le système de fichiers et les sockets

I.1.2.6.1. Le système de fichier

Le système de fichier est la manière dont les données sont organisées et stockées sur un support de stockage (comme un
disque dur, un SSD, etc.). Il fournit une structure hiérarchique permettant aux programmes et aux utilisateurs d’accéder
aux fichiers et aux répertoires. En effet, il assure l’accès d’un processus aux données, un processus peut lire et écrire des
données dans un fichiers grâce au système de fichier en utilisant des appels système (par éxemple, ‘ope’, ‘read’, ‘write’,
‘close’). Il assure aussi l’organisation des fichiers dans des répertoires et sous-répertoires, facilitant la navigation et
l’administration des fichiers.
Chaque système d’éxploitation a son propre système de fichier. Par éxemples, NTFS pour Windows, ext3/ext4 pour
Linux, HFS+ pour MacOS, …
Et chaque système de fichier a ses propres métadonnées, mécanismes d’accès, et performances.

I.1.2.6.2. Les sockets

Ces sont des interfaces de programmation permettant aux processus de communiquer, souvent sur un réseau. Ils
permettent à un processus d’envoyer et de recevoir des données à partir d’autres processus, qu’ils soient sur la même
machine ou sur des machines distantes.
Ils facilitent donc la communication entre différents processus, que ce soit localement ou à travers un réseau en utilisant
des protocoles comme TCP (Transmission Control Protocol) pour une communication fiable, ou UDP (User Datagram
Protocol) pour une communication rapide mais sans garantie de livraison.

I.1.2.7. Les signaux

Les signaux sont des notifications envoyées à un processus pour lui indiquer qu’un événemement s’est produit. Ils sont
utilisés pour la gestion des événemements asynchrone. Un processus peut recevoir un signal qui lui demande de s’arrêter,
de redémarrer, de se suspendre, ou de se terminer. Par éxemple, le signal ‘SIGKILL’ force un processus de se terminer.
De plus, les signaux peuvent également être utilisés pour communiquer des événemements (comme un changement dans
l’état du système).
Voici quelques éxemples de signaux :
• SIGINT : interruption
• SIGTERM : demande de terminaison du processus
• SIGUSR1 et SIGUSR2 : signaux utilisateurs pour la communication personnalisée

I.1.2.8. Le contexte d’éxécution

Le contexte d’éxécution d’un processus se réfère à l’ensemble des informations et de l’état qui définissent la situation
d’un processus à un moment donné de son éxécution. Il inclut tout ce qui est nécessaire pour reprendre l’éxécution d’un
processus sans perte d’information, notamment lorsqu’il y a un changement de contexte, par éxemple lors de la
commutation entre processus.
Le contexte d’éxécution d’un processus comprends les éléments suivants :
➢ Statut ou état du processus :
Cela décrit le stade actuel du processus, comme ‘’en cours d’éxécution’’, ‘’prêt’’, ‘’bloqué’’, ou ‘’terminé’’.

➢ Compteur de programme :
Il indique l’adresse de l’instruction suivante à éxécuter par le processus. Cela permet de savoir où le processus a été
interrompu.

➢ Registres du processeur :
Les registres sont des emplacement mémoires ultra-rapides dans le CPU qui stockent temporairement des données et des
instructions. Le contexte comprend la sauvegarde de tous les registres utilisés par le processus afin qu’il puisse reprendre
à partir de l’état où il a été interrompu.

➢ Mémoire de travail :
Comprend le pointeur de la pile et la table des ségments.
➢ Ressources minimalistes :
. Handles de ressources : Pointeurs pour accéder à des fichiers, des sockets réseau ou d’autres ressources que le processus
utilise.
. Etats des ressources : Informations concernant l’utilisation actuelle des ressources par le processus, comme les fichiers
ouverts ou les connexions réseau.

➢ Informations sur la sécurité :


Détails sur l’utilisateur qui a lancé le processus et les permissions qui lui sont accordées pour accéder à différentes
ressources système.

Lorsque le processeur passe d’un processus à un autre, le contexte d’éxécution est sauvegardé pour le processus en cours
(appelé processus courant) et chargé pour le nouveau processus (appelé processus voisin). Cela implique une sauvegarde
de tous les éléments du contexte du processus courant dans sa structure de données (généralement un drapeau ou une
autre forme de PCB) et un chargement du contexte du nouveau processus à partir de son PCB.

Le changement de contexte d’éxécution est essentiel dans les environnements multitâches. Cela permet à plusieurs
processus de s’éxécuter de manière apparement simultanée, même sur un nombre limité de processeurs, en intercalant
leurs éxécutions de manière éfficace.

I.1.2.9. La priorité :

La priorité d’un processus est un indicateur numérique (ou parfois symbolique) qui détermine l’importance d’un
processus par rapports aux autres dans le système. Elle guide le planificateur du système d’exploitation lors de la
détermination de quel processus doit être éxécuté en premier ou recevoir plus de temps CPU. Il éxiste deux types de
priorités : la priorité statique et la priorité dynamique.
La proprité statique est attribuée lors de la création d’un processus et reste généralement constante. Les processus qui ont
des tâches critiques (comme des processus système) peuvent avoir des priotés plus élrvées. Tandis que la priorité
dynamique peut changer en cours d’éxécution en fonctions de divers facteurs, tels que l’ancienneté du processus dans la
file d’attente ou son comportement (par éxemple, si un processus est bloqué en attente d’une ressource).

Comment gérer ces priorités ?

Les systèmes d’exploitation peuvent adopter divers systèmes ou algorithmes pour la gestion des priorités.
Par éxemple, le système FCFS ‘’First-Come, First-Served’’ (priorité n’importe quel ancien meurtre). Dans ce système, les
processus sont éxécutés dans l’ordre dans lequel ils arrivent, sans tenir compte de leur priorieté.
Il y a aussi la ‘’Planification à priorité fixe’’, les processus sont sélectionnés pour l’éxécution en fonction de leur priorité,
les plus élevés étant éxécutés en premier.
Et enfin, la ‘’Planification à priorieté rétroactive’’ ou ‘’Round Robin’’. C’est une combinaison de priorisation fixe et
d’équité, dans laquelle chaque processus, indépendamment de sa priorité, reçoit un quantum de temps CPU.

Quelles sont les influences de la piorité sur la planification ?

Lorsqu’un système a plusieurs processus en attente d’éxécution, le planificateur de processus utilise la priorité pour
décider quel processus doit être sélectionné pour utiliser le CPU.
Les processus de piorité plus élevées peuvent préempter ceux de priorieté inférieure, ce qui signifie qu’un processus avec
un priorité plus élevée peut interrompore l’éxécution d’un autre processus en cours si des ressources deviennent
disponibles.
I.1.3. Le Cycle de vie d’un processus
Le cycle de vie d’un processus décrit les différentes étapes par lesquelles un processus passe depuis son éxécution
jusqu’à sa terminaison. Ce cycle est géré par le système d’exploitation, qui utilise un ordonnanceur pour gérer
l’allocation des ressources et le temps CPU.

I.1.3.1. Les différents états d’éxécution d’un processus


L’état d’éxécution d’un processus désigne sa situation actuelle à un moment donné dans le cycle de vie de son éxécution.
Les différents états permettent au système d’exploitation de gérer éfficacement les processus en cours.
Voici les principaux états d’un processus :

I.1.3.1.1. Etat de création (created)

Lorsqu’un processus est initié, il est créé par l’appel d’un programme. Cela peut se produire lorsqu’un utilisateur démarre
un application, un script ou un service.
À ce stade, l’allocation de ressources mémoire se passe pour le code du processus, la pile et le tas. Ainsi, la structure de
contrôle de processus (PCB) est initialisée pour stocker des informations importantes sur le processus (ID, état, priorité,
…).

I.1.3.1.2. Etat prêt (ready)

Un processus est dans l’état prêt s’il est prêt à s’éxécuter et attend simplement que le système d’exploitation lui attribue
un peu de temps processeur. Cela signifie qu’il a déjà chargé en mémoire et que toute les ressources sont prêtes. Le
système attribue le temps d’éxécution aux processus en fonction d’une politique de planification, et ce processus passera
à l’état en cours d’éxécution dès qu’il obtient le temps CPU.

Éxemple : Microsoft Word au démarrage

Si on va ouvrir l’application ‘’Microsoft Word’’, mais elle n’est pas actuellement en cours d’éxécution (c’est-à-dire
qu’elle n’est pas active et ne reçoit pas du temps CPU) car d’autres applications on le focus. Dans ce cas, le système
d’exploitation a déjà chargé le programme en mémoire, et le logiciel est prêt à être éxécutée dès que le CPU lui sera
attribué.

I.1.3.1.3. Etat en cours d’éxécution (running)

C’est celui qui utilise le CPU et éxécute ces instructions à tout moment donné.
On prend par éxemple le processus de ‘’Google Chrome’’ lorsqu’on va naviguer sur des pages Web. Voici comment cela
fonctionne :

Exemple : Google chrome

Lancement : Lorsqu’on lance ‘’Google Chrome’’, le système d’exploitation crée une instance de l’application et alloue
les ressources nécessaire (mémoire, fichiers, etc).

Etat en cours d’éxécution : Durant la navigation sur Internet, Google Chrome éxécute activement le code de
l’application. A ce stade, il est dans l’état en cours d’éxécution. Le processus peut éfféctuer plusieurs tâches simultanées,
telles que le rendu de la page Web, le téléchargement de fichiers, le traitement de scripts JavaScript, la gestion des
éxtensions, etc.

I.1.3.1.4. Processus bloqué (blocked) ou en attente (waitting)

Un processus devient bloqué lorsqu’il attent des événement éxternes tels que la complétion d’une entrée/sortie, une
réponse d’un autre processus, ou des ressources qui ne sont pas actuellement disponibles. Dans cet état, le processus ne
peut pas continuer son éxécution tant que l’événement ou la ressource requis(e) n’est pas disponible.

Exemples :

a. Un téléchargement dans un navigateur


Lorsqu’on commence à télécharger un fichier, le navigateur crée un processus pour gérer ce téléchargement.
Si la connexion au serveur est lente ou le serveur ne répond pas, le processus de téléchargement peut devenir bloqué.
Bien qu’il soit toujours dans la liste des processus actifs, il ne pourra pas continuer son éxécution tant que la tâche
d’entrée/sortie ne se termine pas (par éxemple, attendre que le fichier soit entièrement téléchargé ou que le réseau soit de
nouveau disponible.

b. Ouverture d’un fichier

Si on éssaye d’ouvrir un fichier dans un logiciel comme ‘’Microsoft Word ou Excle’’, mais que le logiciel reste bloqué en
attendant que le fichier soit disponible (par éxemple, si le fichier est ouvert par un autre utilisateur ou si l’emplacement
du fichier n’est pas accessible), le processus associé sera généralement bloqué.

c. Interaction avec un périphérique

Si un programme éffectue une opération d’impréssion (par éxemple, en envoyant un document à une imprimante) et que
l’imprimante est déconnectér ou en panne, le processus du logiciel peut rester bloqué en attendant que l’imprimante soit
prête ou réponde.

I.1.3.1.5. Etat suspendu

Un processus se trouve à l’état suspendu losrqu’il est en attente d’une condition ou d’un événement qui lui permettra de
continuer son éxécution. Cela peut faire partie de la gestion efficace des essources par le système d’exploitation,
permettant de libérer de la mémoire ou d’autres ressources pour d’autres processus actifs.

Exemples :

a. Une application en arrière-plan

Supposons qu’on a ouvert Microsoft Word et qu’on a plusieurs documents ouverts. Si on clique sur la fenêtre d’une autre
application (comme Microsoft Excel) et qu’on ne revient pas à Word pendant un certain temps, Windows peut choisir de
suspendre l’activité de Word pour libérer des ressources. Cela peut améliorer la réactivité globale du système.

b. Processus de mis à jour

Lorsqu’on installe des mises à jour Windows, certains processus liés à l’installation peuvent être suspendus jusqu’à ce
que le système soit prêt à finaliser l’installation ou à redémarrer. Cela garantit qu’aucune action ne perturbe le processus
de mis à jour.

I.1.3.1.6. Etat terminé (terminated) ou arrêt (stopped)

Un processus passe à l’état terminé s’il a achevé toutes ses tâches (que ce soit avec succès ou échouée) et a liberé les
ressources qui lui étaient allouées. Un processus terminé ne consomme plus de ressources et n’interfère plus avec
d’autres processus en cours.

Exemples :

a. Fermeture d’une application

Supposons qu’on ait ouvert le « bloc notes (Notepad) » et on ait écrit quelques lignes de texte. Lorsqu’on choisit de
fermer le Bloc-notes et qu’on confirme de sauvegarder ou pas les modifications, le processus du bloc-note est arrêté.

b. Téléchargement achevé

Si on utilise un gestionnaire de téléchargement (ex : Internet Download Manager) et que le téléchargement d’un fichier se
termine (que ce soit en réussissant ou en échouant), le processus associé à ce téléchargement se termine.

I.1.3.2. Transition entre les états


Un processus passe d’un états à un autre en fonction de divers événement, tels que :
• Le CPU devient disponible et donne lieu à un changement de l’état prêt à l’état en cours d’éxécution.
• Une opération d’entrée/sortie se termine, permettant à un processus bloqué de passer prêt.
• Un processus bloqué en cours d’éxécution demande plus de temps CPU ou est préempté par le système
d’exploitation, passant à l’état prêt.
• Un processus reçoit un signal pour terminer son éxécution, passant à l’état terminé.

Voici un éxemple illustrant ces phénomène :

Scénario : traitement d’un commande en ligne

Imaginons une application de commerce éléctronique. Voici les étapes qu’un processus pourrait suivre lors du traitement
d’une commande :

a. Etat crée (new)

Lorsque l’utilisateur soumet une commande, le système de gestion de commandes crée un nouveau processus ‘Process A’
pour traiter cette commande. A ce stade, le processus est dans l’état ‘’créé’’.

b. Etat prêt (ready)

‘Process A’ est prêt à s’éxécuter, mais il attend que le système d’exploitation lui attribue du temps CPU. Il passe donc à
l’état prêt ou ready.

c. Etat en cours d’éxécution (running)

Le système d’exploitation séléctionne ‘Process A’ pour l’éxécution et liu attribue le CPU. A ce stade, le processus passe à
l’état en cours d’éxécution.
Pendant ce temps, le processus éxécute plusieurs tâches, comme valider les informations de la commande et vérifier la
disponibilité des produits.

d. Etat bloqué (blocked)

En cours d’éxécution, ‘Process A’ a besoin de vérifier la disponibilité des stocks auprés d’une base de données distante. Il
envoie une requête d’entrée/sortie pour obtenir ces informations.
En attendant le réponse de la base de données, ‘Process A’ devient bloqué, car il ne peut pas continuer son éxécution tant
que les informations ne sont pas reçues.

e. Retour à l’état prêt

Pendant que ‘Process A’ est bloqué, le système d’exploitation peut choisir d’éxécuter d’autres processus en attente. Une
fois que la réponse de la base de donnée est reçues et traitée, ‘Process A’ passe de l’état bloqué à l’état prêt.

f. En cours d’éxécution

Une fois que le CPU est à nouveau disponible, ‘Process A’ reprend son éxécution et passe à l’état ‘running’. A ce stade, le
processus peut continuer à traiter la commande comme la vérification des informations de paiement si le produit
commandé est disponible, ou revenir au choix d’autres produits si le produit commandé n’est pas disponible, etc.

g. Etat terminé

‘Process A’ achève les tâches requises pour le traitement de la commande (par éxemple, envoi d’un e-mail de
confirmation et mis à jour des états de la commande dans la base de données).
Une fois ces tâches terminées, le processus passe à l’état terminé. Il libère toutes les ressources qu’il utilisait et est retiré
de la mémoire, laissant le système prêt pour de nouveaux processus.
I.1.4. La communication inter-processus (IPC)
La communication inter-processus (ou Inter-Process Communication – IPC) est un mécanisme qui permet aux processus
éxécutés simultanément dans un système d’exploitation de s’échanger des données, de synchroniser leurs actions et de
collaborer de manière éfficace. Etant donnné que chaque processus fonctionne généralement dans son propre espace
mémoire, une communication efficace entre ces processus est essentielle pour le bon fonctionnement des applications
multitâches et des systèmes distribués.

Dans de nombreux systèmes, plusieurs processus peuvent être nécessaires pour réaliser une tâche complète. Par éxemple,
dans une application Web, un processus peut gérer les requêtes des utilisateurs pendant qu’un autre traite des opérations
de base de données. Cela montre la collaboration entre Processus.

Ainsi, plusieurs processus peuvent avoir besoin d’accéder à des données ou à des ressources partagées, comme des
fichiers de disque, ce qui nécessite un mécanisme régulant cet accès pour éviter les conflits. La CIP permet donc
d’optimiser l’utilisation des ressources système en permettant à une applicatin d’éffectuer plusieurs tâches
simultanément, ce qui améliore la réactivité et la durée des opérations.

Les méthodes de Communication Inter-Processus


Il éxiste plusieurs méthodes de communication inter-processus, chacune ayant ses propres caractéristiques, avantages et
incovénients.

I.1.4.1. La relation Parent-enfant

La relation parent-enfant entre les processus est un concept fondamental dans les systèmes d’exploitation modernes, qui
gère l’organisation et l’hiérarchie des processus. Cette relation se forme lorsqu’un processus (appelé processus parent)
crée un autre processus (appelé processus enfant).

Comment ces processus se créent ?

a. Le processus parent

Le processus parent est celui qui initie la création d’un autre processus. Cela peut se faire par des appels système
spécifiques en fonction du système d’exploitation.

b. Le processus enfant

Un processus enfant est créé par le processus parent. Le processus parent est généralement une copie de son parent, y
compris son espace d’adressage et ces ressources à ce moment-là, mais il a son propre espace d’adressage distinct.

c. Mécanisme de création de la relation parent-enfant

Dans les systèmes d’exploitation Unix, par éxemple, un processus parent peut créer un processus en utilisant l’appel
système ‘fork()’. Cette fonction crée un nouveau processus en dupliquant le processus appelant. Après l’appel de ‘fork()’,
deux processus existent : le parent et le nouvel enfant, qui continuera à s’éxécuter après le fork.
En plus de ‘fork()’, le processus enfant peut ensuite éxécuter un programme différent à l’aide de l’appel système ‘exec()’.
Cela remplace l’image du processus enfant par un nouveau programme.

Notamment sous Windows, la création de la relation parent-enfant entre les processus est gérée par plusieurs fonctions
API fournies par le système d’exploitation. Pour cela, la fonction ‘CreateProcess’ est la principale API utilisée pour un
nouveau processus. Elle permet de créer un processus parent (qui peut invoquer d’autres processus comme enfants) et de
configurer divers aspects de celui-ci.

Quelles sont les caractéristiques de la relation parent-enfant ?

Généralement, la relation parent-enfant a les caractéristiques suivantes : hiérarchie des processus, partage des ressources,
terminaison et orphelins et zombies.

Nous allons détailler ces caractéristique dans la suite de cet ouvrage.


 Hiérarchie des Processus :

Les processus sont souvent organisés dans une hiérarchie. Un processus parent peut avoir plusieurs proccessus enfants, et
un processus enfant peut également créer ses propres enfants, formant ainsi une arborescence de processus.

 Partage des ressources :

Au moment de la création, le processus enfant hérite de certaines ressources et attributs de son processus parent, tels que
les descripteurs de fichiers ouverts, les variables d’environnement, et certains signaux. Cependant, chaque processus a
son propre espace d’adressage en mémoire.

 Terminaison :

Lorsque le processus enfant termine son éxécution (qu’il se termine normalement ou soit tué par un signal), il envoie un
signal de terminaison à son parent.
Le parent peut récupérer les informations de statut de l’enfant en utilisant des appels système comme ‘wait()’ ou
‘waitpid()’, ce qui permet au parent de savoir comment l’enfant s’est terminé (succès ou échecs).

 Orphelins et zombies :

Si un processus se termine avant son enfant, l’enfant devient un processus ‘orphelin’. Dans la plupart des systèmes
d’exploitation, cet enfant est adopté par le processus ‘init’ (ou équivalent), garantissant qu’il soit toujours géré
correctement.
Après la terminaison d’un processus enfant, si le parent ne récupère pas son statut, l’enfant reste en mémoire dans un état
‘zombie’ jusqu’à ce qu’il soit récupéré. Cela permet au système d’exploitation de conserver les informations sur
l’utilisation des ressources de ce processus.

Quelle est donc l’importance de la relation parent-enfant ?

Premièrement, la relation parent-enfant aide à structurer la gestion des processus. En connaissant la hiérarchie, le système
d’exploitation peut appliquer des règles de gestion et de nettoyage plus facilement.
Deuxièmement, les appels de sychronisation (par les processus parents et/ou enfants), comme ‘wait()’ ou ‘waitpid()’,
permettent de gérer l’éxécution de processus liés et de partager des informations sur la terminaison de processus enfants.
Et enfin, en ayant des processus distincts avec des espaces d’adressage séparées, le système maintient une isolation entre
les différents processus, réduisant les risques de corruption de données ou d’interférence.

I.1.4.2. Utilisation de message et files de messages

L’utilsation des messages et des files de messages est l’une des méthodes de communication inter-processus.

a. Notion de message :

Un message est une unité d’information échangée entre les processus. Il peut inclure des données, des commandes, des
demandes ou des réponses. Les messages peuvent varier en taille et en type, et leur contenu peut être défini par
l’application qui les utilise.

Les caractéristiques des messages :


Contenu :
Un message peut contenir des données, comme une chaîne de caractères, un entier, un tableau d’octets, ou des structures
plus complexes.
Format :
Les messages peuvent être structurés de manière spécifique pour que le destinataire puisse les interpréter correctement.
Direction :
Les messages peuvent être envoyés de manière unidirectionnelle (simple) ou bidirectionnelle (avec des réponses).

b. Les files de messages :


Une file de messages est une structure de données qui stocke une séquence de messages en attente d’être traiés. Elle sert
d’intermédiaire entre les processus qui envoient et ceux qui reçoivent des messages, facilitant ainsi la communication
asynchrone.

Comment fonctionnent files de messages ?

➢ Envoi des messages :

Lorsqu’un processus souhaite communiquer avec un autre, il construit un message et l’envoie à une file de message. Ce
processus ne se soucie pas nécessairement de l’état du processus destinataire ; il se contente d’envoyer le message.

➢ Réception de messages :

Le proccessus destinataire peut alors lire le message de la file lorsque cela lui convient. Il peut traiter les message dans
un ordre déterminé (First In – First Out ‘FIFO’) ou en fonction de la priorité, si un tel mécanisme est appliqué.

Les types de files de messages :

Il existe deux types de files de messages : les files de messages locales et les files de messages distantes.
Les files de messages locales sont utilisées pour la communication entre processus sur la même machine. Tandis que les
files de messages distantes sont utilisées dans des configurations distribuées où les processus sur des systèmes différents
via un réseau.

Quelles sont les avantages de l’utilisation des files de messages ?

• Les processus peuvent fonctionner indépendamment, sans avoir besoin d’attendre que l’autre soit prêt pour
envoyer ou recevoir des messages. Cela implique une communication asynchrone.
• L’utilisation d’une file de messages facilite la séparation des tâches (découplage) dans une application multi-
processus, permettant ainsi aux processus de communiquer tout en minimisant les dépendances directes.
• Les files de messages gèrent automatiquement les buffering, permettant de stocker des messages en cas de
surcharge de l’application destinaire.

I.1.4.3. Les pipes (tuyaux) et named pipes (ou FIFO)

Les pipes et les named pipes (aussi appelées ‘FIFO’- First In, First Out) sont aussi des mécanismes de
communication inter-processus largement utilisées dans les système d’exploitation, en particuleir dans Unix et
Windows. Ils permettent aux processus de communiquer et d’échanger des données de manière synchronisée et
ordonnée.

Qu’est-ce qu’un pipe ?

Un pipe est un canal de communication unidirectionnel permettant à un processus d’envoyer des données à un
autre processus. Les pipes sont généralement utilisés pour relier la sortie standard d’un processus à l’entrée
standard d’un autre, permettant ainsi un flux de données en temps réel.

Quelles sont les caractéristiques d’un pipe ?

- Les pipes sont unidirectionnels, c’est-à-dire, ils peuvent seulement transmettre des données dans une seule
direction (par éxemple, d’un processus A à un processus B).
- La création des pipes est temporaire. Cela signifie qu’ils sont généralement créés en mémoire et existent tant
que les processus qui les utilisent sont actifs.
- Ils contient un tampon (buffer) qui permet de stocker les données entre l’écriture et la lecture, reduisant ainsi
le risque de blocage.

Qu’est-ce qu’un FIFO ou named pipe ?


Les named pipes, ou FIFO, sont des extension des pipes traditionnels. Contrairement aux pipes anonymes qui
sont liés à un ID de processus, les named pipes disposent d’un nom accessible via le système de fichiers, ce qui
permet à des processus non liés de communiquer.

Les caractéristiques d’un FIFO

. Bien que les named pipes sont utilisés de manière bidirectionnelle, il est possible de créer des systèmes où les
messages peuvent être envoyés dans les deux sens.
. Ils sont persistants, cela veut dire qu’ils sont créés dans le système de fichiers et peuvent exister
indépendamment des processus qui les utilisent, tant qu’ils ne sont pas explicitement supprimés.
. Ainsi, les named pipes sont identifiables par nom. Les processus peuvent référencer un FIFO par son chemin
dans le système de fichiers, permettant une communication entre des processus qui ne sont pas suspendus.

Les avantages et les inconvénients de l’utilisation des pipes et des FIFO :

. Les pipes et les named pipes sont relativement simples à mettre en œuvre et à utiliser pour la communication
inter-processus. Ils fournissent un mécanisme de communication léger et rapide, idéal pour le passage de
données entre des processus sans des overheads lourds.
. En utilisant les named pipes, on peut faire un découplage. Ils permettent un interaction entre plusieurs
processus sans nécessiter de relation directe parent-enfant.

Comme toute chose, les pipes et les named pipes aussi ont des inconvénients.

. Pour la gestion des erreurs, les programmes utilisant des pipes doivent gérer les erreurs liés aux
communications, telles que la fin inattendue d’un processus.
. De plus, les programmes doivent être soigneusement conçus pour synchroniser l’écriture et la lecture, évitant
ainsi les conditions de course et de blocage. Cela implique donc une analyse de synchronisation.
. Ainsi, les pipes ont des limites de taille pour le tampon, ce qui peut poser des problèmes si un gros volume de
données doit être transféré.

I.1.4.4. Les sockets :

Un socket est une abstraction logicielle utilisée pour établir une communication entre des processus, qu’ils s’éxécutent
sur la même machine ou sur des machines différntes dans un réseau. Les sockets sont un élément éssentiel de la
communication inter-processus et sont largement utilisés pour implémenter des applications réseaux, telles que les
serveurs Web, les clients de messagerie, et de nombreuses autres fonctions où l’échange de données entre systèmes est
requis.
On peut aussi définir un socket comme un point d’éxtrémité pour un canal de communication. Il permet aux processus
de communiquer en envoyant et en recevant des donnée via des réseaux (comme Internet ou un réseau local) ou au sein
d’une même machine.

Les types de sockets :

Il existe 3 types de sockets :

Les sockets Stream : utilisent le protocole TCP, qui garantit la livraison de données, la séquence correcte et l’intégrité
des données. C’est utilisé pour des applications où la fiabilité est essentielle, comme les navigateurs Web.

Les sockets Datagram : utilisent le protocole UDP, qui est plus léger et ne garantit pas la livraison ni l’ordre des
messages. Cela est utilisé dans des applications où la vitesse est plus critique que la fiabilité, comme la diffusion de vidéo
en direct ou les jeux en ligne.

Unix Domain Sockets : Permettant la communication entre processus sur la même machine en utilisant un fichier dans
le système de fichiers comme poit d’extrémité.

Le rôle des sockets dans la communication Inter-Processus :

a. Communication réseau :
Les sockets permettent la communication entre des processus qui peuvent être situés sur des machines différentes. Par
éxemple :
- Un serveur Web utilise un socket pour écouter les requêtes des clients sur un port donné.
- Un client réseau utilise un socket pour établir une connexion avec un serveur afin d’envoyer des requêtes et de recevoir
des réponses.
b. Communication en mode client-serveur :

Les sokets sont souvent utilisés dans une architecture client-serveur. Le serveur crée un socket et le lie à une adresse IP et
à un port, et écoute les connexions entrantes. Lorsqu’une connexion est acceptée, le serveur peut créer un nouveau socket
pour gérer la communication avec se client tout en continuant à écouter d’autres connexions.
De l’autre côté, le client crée un socket et se connecte à l’adresse IP et au port du serveur. Une fois connecté, le client
peut envoyer des données au serveur via le socket.

c. Echange de donées :

Les sockets permettent les opérations d’envoi et de réception de données. Les fonctions d’envoi peuvent être utilisées
pour envoyer des données à travers un socket (par éxemple, ‘send()’ en C). Ainsi que les fonctions de reception
permettent de lire les données envoyées par d’autres processus via le socket.

d. Flexibilité et modularité :

Les sockets fournissent une interface souple qui peut être utilisée pour construire des applications modulaires. Par
éxemple, une application peut communiquer avec des bases de données, des serveurs d’application ou d’autres services à
distance en utilisant des sockets.

I.1.4.5. Mémoire partagée

La mémoire partagée est un autre mécanisme de communication inter-processus qui permet à plusieurs processus
d’accéder à une région commune de la mémoire physique. Cela crée un espace où les données peuvent être partagées
entre processus sans duplication, ce qui est particulièrement efficace pour les applications nécessitant une communication
rapide lorsque plusieurs processus doivent travailler sur les mêmes données.

Mécanisme de fonctionnement :

Pour utiliser la mémoire partagée, un processus doit d’abord créer une région de mémoire partagée. Cela peut souvent
être fait avec des appels système spécifiques qui varient selon le système d’exploitation.

Une fois la mémoire partagée créée, les processus ont besoin de s’y attacher pour pouvoir y accéder. Cela implique de
demander au système d’exploitation d’allouer cette mémoire à leur propre espace d’adressage. Chaque processus peut
alors lire et écrire dans cette mémoire, comme il s’agissait d’une mémoire ordinaire.

Etant donné que plusieurs processus peuvent accéder à la mémoire partagée simultanément, des mécanismes de
synchronisation sont nécessaires pour éviter les conditions de course et les conflits d’accès. Cela se fait à l’aide de
sémaphores ou de mutex.

Les avantages de la mémoire partagée :

L’utilisation de la mémoire partagée donne au système d’exploitation une performance élevée. Etant donné que les
données ne sont pas copiées d’un processus à l’autre, la mémoire partagée est une méthode très rapide pour échanger des
informations.

Cette méthode permet aussi d’économiser les ressources. Elle évite la duplication des données et réduit la surcharge de
mémoire, car un seul segment de mémoire est partagé entre plusieurs processus.

De plus, elle fournit un modèle de données simple basé sur le partage direct, permettant aux processus de travailler avec
la même structure de données.

Les inconvénients de la mémoire partagée :


L’utilisation de la mémoire partagée provoque une complexité de la synchronisation. Sans mise en œuvre appropriée de
synchronisation, l’accès concurrent à la mémoire partagée peut entraîner des résultats imprévisibles, tels que des
corruptions de données. Il est donc crucial d’appliquer des mécanismes de synchronisation corrects.

Ainsi, la gestion de la vie de la mémoire partagée (allocation et libération) doit être bien conçue, afin d’éviter des fuites
de mémoir et assurer que tous les processus impliqués synchronisent correctement leur accès.

De plus, les bugs dans les applications qui utilisent la mémoire partagée peuvent être plus difficile à détecter et à corriger,
en raison de la complexité associée à la gestion de l’accès simultané.

I.1.4.6. Les sémaphores

Un sémaphore est un mécanisme de synchronisation qui permet de contrôler l’accès à une ou plusieurs ressources
partagées par plusieurs processus. Il est représenté par une variable entière qui indique le nombre de ressources
disponibles ou qui sert à signaler des événements.
Il éxiste deux types de sémaphores :
Ls sémaphores binaires, aussi appelé sémaphore mutex, qui ne peuvent avoir que deux valeurs (0 et 1). Ils sont utilisés
pour gérer l’accès exclusif à une ressource partagée.
Et les sémaphores comptables, qui peuvent avoir une valeur entière non négative, indiquant le nombre de ressources
disponibles. Cela permet d’accéder à plusieurs processus d’accéder à la ressource simultanément, jusqu’à concurrence de
ce nombre.

Les sémaphores sont manipulés par deux ipérations principales :

- P (ou wait, ou down) : Décrémente le compteur. Si le compteur est supérieur à zéro, le processus peut continuer ; sinon,
il est bloqué jusqu’à ce qu’une autre opération vienne libérer le sémaphore.
- V (ou signal, ou up) : Incrémente le compteur. Si des processus sont bloqués sur ce sémaphore, l’un d’eux est réveillé et
peut continuer.

I.1.4.7. Les mutex

Un mutex est un type de sémaphore spécialisé utilisé pour garantir l’éxclusion mutuelle lors de l’accès à une ressource. Il
assure qu’un seul processus ou thread peut accéder à la ressource partagée à la fois.

Le mutex est généralement utilisé pour protéger des sections critique de code, c’est-à-dire des morceaux de code qui
accèdent à des ressources partagées. Cependant, les mutex offrent des mécanismes pour verouiller et déverouiller une
ressource.

Les principales opérations sur un mutex sont :

- lock (verouiller) : un processus ou un thread demande l’accès à une ressource. Si le mutex est déjà verouillé par un
autre processus, celui-ci est est bloqué jusqu’à ce que le mutex soit libéré.

- Unlock (déverouiller) : Le processus ou le thread libère le mutex, permettant à d’autres processus d’y accéder.

I.1.4.8. Le RPC (Remote Procedure Call)

Le RPC est un protocole qui permet à un programme d’éxécuter des procédures ou des fonctions sur un autre ordinateur
situé sur un réseau, comme il s’agissant d’un appel à une procédure locale. Autrement dit, il permet à un programme
client d’appeler des fonctions ou des méthodes sur un serveur distant comme s’il s’agissait de fonctions locales,
permettant ainsi une certaine transparence de la communication réseau.

Le fonctionnement d’un RPC implique plusieurs étapes comme :

• L’appel de la procédure : Le client appelle une fonction comme s’il s’agissait d’une fonction ordinaire.
• Le marshalling : Le système RPC prend les arguments du clients et les transforme en un format qui peut être
transmis sur le réseau. Cela inclut généralement la conversion des objets en un format binaire ou texte.
• La transmission : Le message marshallé est envoyé au serveur à travers le réseau.
• L’unmarshalling : Lorsque le serveur reçoit le message, il le décode pour éxtraire les arguments de la procedure.
• L’éxécution : Le serveur éxécute la procédure demandée avec les arguments reçus.
• Le retour des résultats : Le résultat de l’éxécution est également marshalled, transmis au client, et unmarshalled
pour que le client puisse le traiter.
• La fin de l’appel : Le client reçoit le résultat et peut continuer son traitement.

A cause de ces différents étapes de fonctionnement, on peut déduire l’importance les avantages du RPC dans la
communication inter-processus. Voici donc son ces avantages :

a. Transparence :

Le RPC fournit une interface de programmation qui donne l’illusion de l’existence de procédures locales, facilitant la
conception et le développement d’applications distribuées. Les développeurs n’ont pas besoin de préoccuper des détails
de la communication réseau, ce qui simplifie leur travail.

b. Flexibilité :

Le RPC peut être utilisé pour connecter des applications sur différentes machines, plateformes et langages de
programmation. Cela permet une grande modularité et le réemploi de composants logiciels.

c. Indépendance de la plateforme

Le RPC offre également une indépendance de plateforme, permettant aux clients et serveurs écrits dans des langages
différents ou éxécutés sur des systèmes d’exploitation différents de communiquer directement.

I.1.4.9. Les barrières

Une barrière est un mécanisme de synchronisation qui permet à plusieurs processus ou threads de se synchroniser à un
point spécifique de l’éxécution. Les barrières sont souvent utilisées dans des systèmes où plusieurs processus ou threads
doivent atteindre un certain état avant de continuer leur éxécution.

Fonctionnement de la barrière :

* Point de synchronisation : Une barrière agit comme un point où les processus doivent se rassembler. Aucun processus ne
peut pas continuer au-delà de la barrière tant que tous les processus impliqués dans cette synchronisation n’ont pas atteint
la barrière.

* Contrecoup : Lorsqu’un processus atteint la barrière, il signale sa présence. Une fois que tous les processus ont atteint
la barrière, ils peuvent continuer leurs éxécutions.

Utilisation de la barrière :

Les barrières sont souvent utilisées dans des applications parallèles, comme les algorithmes de calcul distribué, où
plusieurs threads ou processus effectuent des calculs en parallèle avant de combiner les résultats.
Par éxemple, dans un programme de traitement d’image distribué, tous les processus pourraient effectuer un filtrage local
de leurs sections d’image et utiliser une barrière pour assurer que tous les filtrages sont terminés avant de procéder à
l’assemblage de l’image.

I.1.4.10. Conditions et événements

Dans le contexte de la communication inter-processus, les conditions et les événements sont des mécanismes de
synchronisation utilisés pour coordonner l’éxécution de plusieurs processus ou threads. Ces outils permettent de gérer de
manière efficace l’ordre dans lequel les opérations sont éxécutées et d’éviter les problèmes liés à l’accès simultané à des
ressources partagées.

a. Les conditions :

Les conditions sont des mécanismes de synchronisation permettant à un processus ou un thread d’attendre jusqu’à ce
qu’une certaine condition soit remplie ou qu’un événement se produise. En d’autres termes, les conditions permettent à
un ou plusieurs threads de dormir jusqu’à ce qu’ils sont notifiés qu’une condition particulière est vraie.

Les conditions s’accompagnent souvent d’une variable de condition, qui est un objet partagé par plusieurs threads. Les
threads utilisent cette variable pour signaler qu’un événement a eu lieu ou une condition a changé.
Les opérations principales :

• Wait (attendre) : un thread requiert un verrou (mutex) et vérifie une condition. Si la condition n’est pas vraie, il
se met en attente sur la variable de condition, libérant ainsi le verrou.
• Signal (signaler) : un thread qui modifie l’état partagé appelle une fonction pour signaler à un ou plusieurs
threads en attente que la condition a changé, leur permettant de se réveiller et de vérifier la condition à nouveau.
• Broadcast (diffuser) : similaire à signaler, mais tous les threads en attente sur cette variable de condition sont
notifiés.

b. Les événements :

Les événement sont des signaux qui permettent à un processus ou à un thread d’être notifié d’un changement d’état ou
d’une condtion. Dans le contexte de Windows, par éxemple, un événement est un objet de synchronisation qui peut être
utilisé pour signaler qu’une tâche ou une condition est terminée.

Les événements peuvent être manuels ou automatiques. On dit qu’ils sont automatiques s’il se réinitialise
automatiquement après qu’un ou plusieurs threads l’ont récupéré. Ainsi, on parle d’un événement manuel si un thread
doit le réinitialiser après qu’il a été signalé et consommé.

Les processus peuvent attendre qu’un événement soit signalé avant de continuer leur éxécution.

Conclusion

Dans ce chapitre, nous avons éxploré le concept de ‘’processus’’ et son rôle centrale
dans la gestion des tâches au sein d’un système d’exploitation. Et maintent, nous allons
entrer dans le vif du sujet : « Analyse et gestion des processus ,en cours d’éxécution
sur un système Windows, avec Process Explorer ».
Nous allons découvrir en premier lieu un outil de surveillance et de gestion des processus
en cours sur Windows, en explorant ses fonctionnalités.
I.2. Sysinternals Process Explorer

Introduction
En explorant les outils et les techniques disponibles pour l’analyse des processus, on peut obtenir des informations
precieuses sur la santé du système et détecter des comportements anormaux. Ce domaine ne se limite pas à la simple
observation des processus actif, il englobe également des stratégies de gestion proactive pour maintenir la performance
optimale du système.
Sous Windows, divers outils permettent aux utilisateurs et notamment aux administrateurs de surveiller et de gérer les
processus en cours d’éxécution. Parmi ces outils, Sysinternals Process Explorer se distingue comme l’un des plus
puissants et polyvalents.

I.2.1. Sysinternals

I.2.1.1. Qu’est-ce que Sysinternals ?

Sysinternals est une suite d’outils (logiciels) développé à l’origine par Mark
Russinovich et Bryce Cogsweell, qui a été acquise par Microsoft en 2006.
Ces outils sont conçus pour aider les administrateurs, les spécialistes en sécurité et les
développeurs à mieux comprendre et gérer le système d’exploitation Windows.

La collection Sysinternals comprend une varieté d’utilitaires qui offrent des


fonctionnalités allant de la mémoire à la recherche de fichiers et la résolution de
problèmes de sécurité.
Figure 1.1 : logo de Sysinternals

I.2.1.2. Les caractéristiques principales de Sysinternals :

I.2.1.2.1. Outils de surveillance des processus :

Sysinternals offrent des outils comme Process Explorer et Process Monitor pour analyser les processus en cours
d’éxécution, de visualiser les ressources consommées et d’étudier les interaction entre les applications et le système.

I.2.1.2.2. Outils d’analyse de fichiers et de disques :

Des outils comme Disk2Vhd et SDelete sont utilisés pour gérer le système de fichier, de créer des images de disques et
de supprimer de manière sécurisée des fichiers.

I.2.1.2.3. Gestion de la sécurité :

Sysinternals propose des outils pour analyser la sécurité des systèmes, éxaminer les permissions de fichier et détecter les
menaces potentielles. Par éxemples : ProcMon (Process Monitor) et AccessChk.

I.2.1.2.4. Outils de réseaux :

Des outils comme TCPView et PSLoggedOn offrent des informations sur les connexions réseau actives et les
utilisateurs connectés.

I.2.1.2.5. Résolution des problèmes :

De nombreux outils comme Process Explorer et BlueScreenView sont déstinés par Sysinternals à diagnostiquer et à
résoudre divers problèmes système, ceux qui sont particulièrement utiles pour les administrateurs et les supports
techniques.

Sysinternals continue d’évoluer avec des mises à jour régulières et des ajouts de nouveaux outils en réponse des
utilisateurs. Les outils Sysinternals sont gratuits et peuvent être téléchargés depuis le site de Microsoft Sysinternals,
étant largement utilisé dans le domaine de l’informatique pour la gestion avancée des systèmes Windows.
I.2.2. Process Explorer

I.2.2.1. Process Explorer, c’est quoi ?

Process Explorer est un utilitaire avancé fourni par Microsoft, qui fait partie de la suite
Sysinternals. Cet outil permet aux utilisateurs de visualiser et d’analyser les processus en
cours d’éxécution sur un système d’exploitation Windows. Il est très prisé par les
administrateurs système, les développeurs et les professionnels de la sécurité pour
plusieurs raisons.

Nous allons découvrir ces différents raisons en éxplorant ses fonctionnalité. Mais avant
tout, on va le télécharger et l’installer.

Figure 1.2. Logo de ProcExp

I.2.2.2. Télécharger et installer Process Explorer


Process Explorer est stocker dans un fichier compressé (.zip) situé dans le site de Microsoft Sysinternals. On peut le
télécharger gratuitement en suivant les étapes suivantes :

Etape 1 : Accéder au Site Web de Sysinternals :

• Ouvrez votre navigateur Web sur votre ordinateur et rendez-vous au site de Microsoft Sysinternals.
Lien : [Sysinternals Suite](https://docs.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite)

Etape 2 : Télécharger Process Explorer :

• Sur la page de Sysinternals Suite, recherchez ‘’Process Explorer’’. Vous pouvez le trouver sur la page principale
ou via un recherche.
• Cliquer sur le lien ‘’Download Process Explorer’’ ou ‘’Download’. Cela vous dirigera généralement vers le
fichier compressé (.zip) contenant l’application.

Etape 3 : Extraire le fichier ZIP :

• Une fois le fichier ZIP téléchargé, localisez-le dans votre dossier de téléchargement.
• Extraire le contenu du fichier ZIP. Vous pouvez le faire en effectuant un clic droit sur le fichier et en
sélectionnant l’option ‘Extract all’’ ou ‘’Extraire tout’’ ou en utilisant un logiciel d’extraction comme WinRAR
ou 7-Zip.

Etape 4 : Exécuter Process Explorer :

• Naviguez dans le dossier où vous avez extrait les fichiers.


• Localisez le fichier ‘’procexp.exe’’ (pour les systèmes 32 bits) ou ‘’procexp64.exe’’ (pour les systèmes 64 bits).
• Cliquez avec le bouton droit sur le fichier séléctionnez ‘’Run as administrator’’. Cela permet à Process Explorer
d’accéder à toutes les informations système nécessaire pour fournir des détails sur toutes les processus.

Etape 5 : Utilisation de Process Explorer :

Une fois Process Explorer lancé, on verra une interface graphique affichant tous les processus en cours d’éxécution sur votre
système.

On peut explorer les différents processus, voir leurs détails, analyser l’utilisation des ressources et procéder à des actions
comme terminer des processus.
I.2.2.3. Les fonctionnalités de Process Explorer :
Process Explorer est sans doute l’outil de gestion des processus le plus connu (et le plus utilisé) de la suite Sysinternals.
Il est souvent réfèré à Task Manager, comme un « Supper Task Manager », parce que Task manager aussi affiche des
informations des processus, mais Process Explorer affiche beaucoup plus d’informations beaucoup plus détaillées que
Task Manager ne peut jamais afficher.
C’est pour ce raison que le nom « Process Explorer » a été prise, puisque sa fonctionnalité principale est de fournir des
informations dynamique autour des processus et leurs contenus, comme les modules chargés, les poignées ouvertes, les
threads en cours d’éxécution, les ressources consommées, etc.

Dans cette partie, nous allons explorer les différentes fonctionnalités de Process Explorer, en commencant par sa
présentation générale.

I.2.2.3.1. Présentation de Process Explorer

I.2.2.3.1.1. L’interface utilisateur

Quand on ouvre Process Explorer, une fenêtre comme la montre la figure ci-dessous s’affiche :

Comme on a vu dans cette image, la fenêtre principale de Process Explorer contient les éléments suivants :
• En haut se trouve les menus ‘’File’’, ‘’Options’’, ‘’View’’, ‘’Process’’, ‘’Users’’, et ‘’Help’’.
• En dessous de ces menus, il y a une liste d’outils tels que ‘’Save’’, ‘’Refresh’’, ‘’Show/Hide lower pan’’,
‘’Process Tree’’, etc .. (Ces outils sont représenter dans la fenêtre par des icons représentantifs). Ainsi, des
graphiques d’utilisation des ressources telles que le CPU, le GPU, les ressources d’entrées/sortie, etc. Et dans la
partie droite de cette section se situe une barre de recherche, permettant ainsi de faire de recherche de processus.
• Ensuite, la liste des processus s’affiche au bon milieu de la fenêtre, avec plusieurs informations tels que le nom,
l’ID, le pourcentage de l’utilisation des ressources CPU, la taille de la mémoire utilisée, etc.
• En bas de la fenêtre, on trouve une barre d’état qui représente l’état du système, notamment les pourcentages des
ressources utilisées et le nombre total des processus.

Nous allons détailler ces différentes séctions dans la suite de la lecture.


a. Le menu ‘’File’’ :

Le menu file contient différentes options (fonctionnalités) permettant à l’utilisateur d’ouvrir des fichiers et de gérer la
session de travail.
Si on clique ce menus, on verra une boîte de dialogue comme la montre l’image ci-dessous :

Les différentes options du menu ‘’file’’ :

- Run : permet d’éxécuter un programme en mode utilisateur. Si on clique cette option, Process Explorer demande le
nom du programme ou fichier à éxécuter.
L’image ci-dessous illustre cette dialogue entre l’utilisateur et Process Explorer :

- Run as Administrator : permet d’éxécuter ou ouvrir un fichier en tant qu’administrateur. Comme l’option ‘’Run’’, si
on clique l’option ‘’Run as administrator’’, une boite de dialogue s’affiche pour demander à l’utilisateur le nom du
fichier ou programme à ouvrir.

-Run as Limited User : permet d’ouvrir, en mode utilisateur standard, un fichier ou un programme. Comme les deux
options précédentes, la boîte de dialogue s’affiche encore si on clique cette option.
-Show Details for All Processes : permet d’éxécuter, en tant qu’administrateur, Process Explorer, si on l’a lancé avec le
mode utilisateur.

-Save : permet d’enrigistrer les informations dans la section principale dans un fichier texte. Le nom est attribué par
process explorer si on choisi l’option ‘’Save’’, tandis qu’il est choisi par l’utilisateur si ce dernier choisi l’option ‘’Save
As…’’ .
Voici un exemple d’enregistrement :

-Shutdown : permet à l’utilisateur de verrouiller, ou redémarrer, ou éteindre la machine et aussi de se déconnecter son
compte. Si on clique cette option, d’autres options s’affiche. Ces sont les options ‘’Loggoff’’ (pour terminer la session),
‘’Shutdown’’ (pour éteindre la machine), ‘’lock’’ (pour verouiller la machine), et ‘’Restart’’ (pour redémarrer la machine)

-Exit : permet de quitter Process Explorer. Si on clique cette option, l’application est fermée (avec ou sans demande de
confirmation).

b. Le menu ‘’Options’’ :

Dans le menu ‘’Options’’, on trouve les outils de configuration et de personnalisation de l’application Process Explorer.
Si on clique ce menu, une fenêtre comme ci-dessous s’affiche :

-Run at logon : permet de configurer le comportement d’un programme ou d’un processus afin qu’il soit éxécuté
automatiquement au démarrage d’une session.
-Verify Image Signatures : permet de vérifier si l’image d’un processus (le logiciel) est signé numériquement par le
fabriquant. Si on active cette option, une nouvelle colonne s’affiche dans la section principale. L’information dans cette
colonne est ‘’Verified’’ si le fichier éxécutable est signé, sinon, la ligne correspondante est vide.

-VirusTotal.com : permet d’analyser des fichiers et des processus en cours d’éxécution à l’aide du service en ligne Virus
Totale. Si on choisi un processus et clique dans le menu contextuel ‘’Option’’, après choisi l’option VirusTotal.com, le
navigateur par défaut s’ouvre et l’utilisateur sera conduit vers le service VirusTotal.

-Always on top : permet à la fenêtre de l’application ‘’Process Explorer’’ de rester toujours visible au-dessus des autres
fenêtres, même losrque d’autres applications sont actives ou si la fenêtre est inactive. Une fois l’option ‘’Always On
Top’’ activée, la fenêtre de Process Explorer restera en avant-plan, queque soit l’application que l’utilisateur utilise ou
quelles que soient les fenêtres ouvertes.

-Replace Task Manager : permet de commuter Process Explorer à Task Manager. En activant cette option, si on voudra
éxécuter l’application ‘’Task Manager (Gestionnaire de Tâches)’’, ce ne sera plus ce dernier qui va s’éxécuter, mais
Process Explorer.

-Hide when minimazed : permet à l’application Process Explorer de disparaître de la barre des tâches (et généralement
de l’affichage) lorsqu’elle est minimisée. Cela signifie que, au lieu de rester visible dans la barre des tâches, comme la
plupart des applications, Process Explorer se cache complètement, libérant ainsi de l’espace sur la barre des tâches.

-Allow Only One Instance : permet de configurer Process Explorer de manière qu’il ne puisse pas être éxécuté qu’une
seule fois sur le système. Lorsqu’on active cette option, on ne pourra pas ouvrir une nouvelle fenêtre de Process Explorer.

-Confirme Kill : permet d’activer une fenêtre de dialogue pour la confirmation de terminaison d’un processus. Si on
clique sur cette option, Process Explorer demandera toujours une confirmation lors de la terminaison d’un processus.

-Tray Icons : permet d’afficher des icônes dans la zone de notification (systray) du système ou dans la barre des tâches.
Si on clique cette option, on pourra attribué un icône pour chacune des informations suivantes : l’historique de
l’utilisation du CPU (CPU History), du GPU (GPU History), de la mémoire RAM (Physical Memory History), des
ressources d’Entrée/Sortie (I/O History), et l’historique d’engagement ( incluant ces 4 informations précédentes), en
choisissant simplement sont nom dans le menu affiché.
Dans l’éxemple montré par les images ci-dessous, on choisi tous les éléments et par conséquent, on a tous les icônes
correspondants :

-Configure Symbols : permet de configurer la manière dont Process Explorer utilise et accède aux informations de
Symbole pour les processus en cours d’éxécution.
NB : Les symboles sont des informations qui associent les adresses mémoires à des noms de variables, de fonctions, des
classes et d’autres éléments du code source. Ils permettent de traduire les adresses mémoire brutes en noms lisibles et
aident à identifier les fonctions appelées lorsque l’application est en cours d’éxécution.
Si on a des fichiers de symboles (.pdb) sur le système d’exploitation, on peut configurer le chemin d’acces à ces fichiers
en cliquant l’option ‘’Configure Symbols’’.
Après avoir cliquer l’option ‘’Configure Symbols’’, une boîte de dialogue s’ouvre, cela permet de configurer des
serveurs de symboles ou d’indiquer des chemins d’accès locaux.
Dans l’image ci-dessous, la configuration des serveurs est placées en haut et l’indication des chemins d’accès locaux se
trouve en bas.

-Configure Colors : permet de personnaliser la couleur de la ligne de chaque processus affichée dans la fenêtre
principale.
Plus précisement, Process Explorer distingue les processus, les objets et les ressources utilisés par ces processus en
plusieurs catégories et types pour donner un aperçu détaillé de l’état du système, en associant des couleurs différentes à
chacune de ces catégories et types.

• Pour les objets qui viennent d’être créés (‘’New Objects’’), comme des fichiers, des pipes, des mutex, des
sémaphores, etc, on peut attribuer une couleur selon la préférence de l’utilisateur. Mais pour l’interface par
défaut, ces objets sont colorés en verts.

• On peut aussi attribuer une autre couleur pour les objets qui ont été supprimés (‘’Deleted Objects’’) mais qui
peuvent encore être référencés ou detenus par un processus en cours d’éxécution. Ils sont colorés par défaut en
rouge.

• Les processus qui sont actuellement possédés par l’utilisateur ou le compte auquel l’utilisateur est connecté sont
rassemblés dans la catégorie ‘’Own Processes’’. On peut choisir une autre couleur pour cette catégorie. Mais si
on ne veut pas personnaliser les couleurs, la couleur associée par Process Explorer est la lavande clair.

• Les processus en arrière-plan qui fonctionnent sans interface utilisateur et éxécutent des tâches spécifiques
(comme des serveurs de fichiers ou des services de mise à jour) sont réunis dans la catégorie ‘’Services’’. Ils sont
affichés avec la couleur rose (Rose Clair) dans l’interface par défaut. Mais on peut aussi les attribuer une autre
couleur.

• Les processus suspendus ou ‘’Suspended Processes’’ sont colorés par défaut en gris foncé. Mais on peut aussi
personnaliser cette couleur.

• Ensuite, les processus dont le code a été compressé ou ‘’emballé’’ ont le type ‘’Packed Images’’, on peut les
colorer en une autre couleur que le violet. Cette couleur est par défaut.

• Ainsi, Process Explorer donne le nom ‘’Relocated DLLs’’ aux DLLs qui ont été déplacées de leur emplacement
d’origine lors du chargement d’un processus et associe la couleur Jaune à ce type de fichiers.

• Les processus qui peuvent être gérés ensemble appelés processus de type ‘’Jobs’’ sont colorés en dans l’interface
par défaut mais on peut aussi personnaliser cette couleur.

• Le type ‘’.NET Processes’’ est formé par les processus qui sont basés sur le frameworl .NET. Par défaut, il sont
aussi colorés en Jaune. Pour les distinguer avec les ‘’Relocated DLLs’’, il est préfèrable d’utiliser une autre
couleur.

• Il éxiste aussi un autre type de processus, nommé ‘’Immersive Processes’’, ceux-ci se rapportent aux
applications modernes, généralement celles créées sous Windows 8 et versions ultérieures, qui s’éxécutent dans
un environnement ‘’immérsif’’ ( applications UWP - Universal Windows Platform). Ces processus peuvent avoir
des permissions et des comportements différents de ceux des applications de bureau traditionnelles. Process
Explorer les colore généralement en ‘’Cyan’’.
• Et enfin, il y a des processus protégés (‘’Protected Process’’) qui s’éxécutent sur le systèmes. Ces processus
bénéficient de niveaux de sécurité plus élevés et sont généralement utilisés pour des services critiques ou des
applications de sécurité. Ils sont conçus pour être résistants aux manipulations et empêchent les utilisateurs non
autorisés de les gérer ou d’y accéder. C’est pour ce raison que Process Explorer ne permet pas aux utilisateurs de
les colorer. Mais si on est en mode administrateur, ces processus sont colorés en ‘’Rose Vif’’.

• Apart des lignes de processus, Process Explorer permet aussi de personnaliser la couleur de fond des graphiques
d’utilisation des ressources. La couleur blanche associée à ces graphiques est justement la couleur attribuée par
défaut.

-Difference Highlight Duration : permet de configurer la durée dans laquelle les changements ou différences dans
l’utilisation des processus sont mis en surbrillance visuellement. Si on clique sur cette option, une boîte de dialogue
permet de deminuer ou augmenter la période du changement de couleur pour signaler un changement.

-
-Font … : permet de personnaliser les polices de caractères pour l’affichage des textes dans l’application Process
Explorer. Si on clique sur cette option, une boîte de dialogue s’affiche en montrant les différentes polices disponibles,
permettant ainsi aux utilisateurs de choisir leurs polices de caractères.
c- Le menu ‘’View’’ :

Le menu view contient les outils permettant de configurer l’affichage des informations.
Si on clique ce menu, une fenêtre semblable à l’image ci-dessous s’affiche :

Voici la déscription de chacune de ces options :

-System Information : permet d’afficher l’état en cours du système. Si on clique cette option, une fenêtre contenant les
informations graphiques, à propos de l’utilisation de la CPU, de la mémoire vive, de la mémoire utilisée par le système et
les ressources d’ E/S, s’affiche.

L’image ci-dessus affiche la fenêtre qui affiche globalement les informations graphiques comme un sommaire (ou
Summary).

Si on clique sur chaque onglet de la fenêtre ‘’System Information’’ sauf l’onglet Summary, on obtient encore plus
d’informations plus détaillées.
x L’onglet CPU :
Cet onglet montre le pourcentage de l’utilisation du CPU au fil du temps.

Déscription des graphiques :


Ces deux graphiques ont la même fonctionnalité :afficher le pourcentage de l’utilisation du CPU au fil du temps. Mais il
y a une seule différence entre eux. Le graphique à gauche montre seulement le pourcentage en temps réel (c’est-à-dire au
moment où on fait la visualisation, à condition que le curseur ne se situe pas dans le graphique situé à droite.
Tandis que ce dernier montre aussi l’historique de l’utilisation du CPU. Cela signifie qu’on peut visualiser la variation du
pourcentage de l’utilisation du CPU dans une période récente (dans les 5 dernières minutes).

De plus, on rouve deux couleurs différentes dans ces deux graphiques : le vert et le rouge. Le vert correspond au
pourcentage de l’utilisation du CPU par les processus lancés par l’utilisateur, et le rouge pour celui des processus
système.

Pour faciliter la determination de ces pourcentage, le graphique principal (celui qui se situe à droite) est divisée en 10
sections. Chaque section représente un intervalle de 10 %, soit 100 % au total. Ce pourcentage est affiché en bas du
graphique pour le graphique qui montre l’utilisation en temps réel.

Ainsi, si on fait naviguer le curseur dans le graphique principal, une boîte d’informations telles que le l’instant où se
trouve le curseur, l’image du processus qui utilise le CPU à cet instant, et le pourcentage du CPU utilisé par ce processus
, s’affiche et suit le mouvement du curseur. Si on se déplace le curseur sur la couleur verte, c’est le nom du processus
utilisateur qui s’affiche dans la boîte. Par contre, si le curseur se trouve sur la couleur rouge, le nom affiché dans la boîte
est un nom de processus système.
Voici une autre image qui illustre dette description :
Description des tableaux :

On trouve aussi trois tableaux qui affichent trois listes d’informations différentes.
-Le tableau qui se trouve à gauche liste le nombre total de handles ouverts sur l’ensemble des processus, le nombre total
de threads en cours d’éxécution dans tous les processus et le nombre total de processus actifs sur le système.
-Le tableau suivant montre le nombre de changements de contexte entre les threads (Context Switch Delta) depuis la
dernière mise à jour, le nombre total d’interruptions (Interrupt Delta) qui se sont produites depuis la dernière mise à
jour, et le nombre d’appels de procedure différé (DPC Delta) qui se sont produits.
-Et le dernier tableau montre la topologie de la CPU en donnant le nombre de coeurs, sokets et les processeurs logiques.

En bas de la fenêtre, on trouve une autre option nommée ‘’Show one graph per CPU’’. Si on active cette option, le
graphique à droite sera divisé en fonction du nombre de CPU de la machine.

x L’onglet Memory :
Cet onglet fournit un aperçu détaillé de l’utilisation de la mémoire au fil du temps.

Voici une explication détaillée de chaque élément présent dans l’onglet ‘’Memory’’ de la fenêtre ‘’System Information’’
représenté par cette image :
a. Graphiques d’utilisation de la mémoire :

On a ici 4 graphiques différentes. Mais, en générale, ils sont regroupés deux à deux.
- Les deux graphiques en haut représentent taille de la mémoire totale que le système a engagée pour tous les processus
en cours (System Commit). Cela inclut la mémoire physique (RAM) ainsi que la mémoire virtuelle utilisée dans le
fichier d’échange (pagefile).
-Les deux autres graphiques, titré ‘’Physical Memory’’, montrent la taille de la mémoire vive (RAM) actuellement
utilisée par le système.

Comme dans l’onglet CPU, les graphiques à gauches montrent l’utilisation de la mémoire en temps réel et les graphiques
à droites montrent en plus l’historique de l’utilisation dans une période donnée (dans les cinq dernières minutes).

Apart ces graphiques, on trouvent aussi plusieurs tableaux contentant des listes d’informations diférentes. Ces
informations représent les détails de l’engagement de la mémoire. Voici une explication de chacun de ces tableaux :

b. Détails sur l’engagement et la mémoire (Commit Charge et Physical Memory)

Dans le tableau ‘’Commit Charge’’, on a les informations suivantes :

• Current commit charge : Total de la mémoire que le système engage actuellement pour les application et le
système d’exploitation, y compris la mémoire physique et virtuelle.
• Commit limit : Limite supérieure de la mémoire que le système peut engager. Elle est déterminé par la quantité
de la mémoire RAM et de l’espace dans le fichier d’échange.
• Peak Commit Charge : Valeur maximale de la mémoire engagée atteinte depuis depuis le démarrage.
• Peak/Limit : Pourcentage Peak Commit Charge
• Current/Limit : Pourcentage Current Commit Charge

Ainsi dans le tableau ‘’Physical Memory’’, les informations suivantes sont listées :

• Total : la taille totale de la mémoire vive


• Available : la taille de la mémoire disponible
• Cache Working Set : les pages mémoire qui sont actuellement utilisées par le système cache. Il inclut les
données et les fichiers qui peuvent être rapidement accédés sans avoir besoin de lire à nouveau à partir du disque
dur.
• Kernel WS : représente l’ensemble des pages mémoires utilisées par le noyau système d’exploitation. Cela
inclut le code et les données nécessaires pour gérer les processus et les interactions matérielles.
• Driver WS : se réfère aux pages mémoire utilisées par les pilotes de périphériques. Chaque pilote qui fonctionne
dans l’environnement Windows consomme de la mémoire pour stocker les informations nécessaires au
fonctionnement du matériel qu’il gère.

c. Memoire du noyau (Kernel Memory)

Ce tableau montre l’utilisation de la mémoire du noyau, qui est une partie essentielle du système d’exploitation. Il se
compose deux types de mémoires :

1. Paged : La mémoire du noyau qui peut être paginée sur le disque.


2. Nonpaged : La mémoire du noyau qui ne peut pas être paginée et doit rester en mémoire physique.

Pour la mémoire paginée, on peut voir une détaille en listant les informations suivantes :
• Paged WS : la quantité de la mémoire paginée actuellement utilisée pour le noyau.
• Paged Virtual : La quantité de la mémoire virtuelle paginée utilisée par le système.
• Paged Limit : La limite maximale de mémoire paginée que le système peut utiliser.

Pour la mémoire non paginée, Process Explorer montre les détails suivantes :
• Nonpaged : la quantité de la mémoire non paginée utilisée par le système, qui doit rester en mémoire physique
et ne peut pas être paginée sur le disque.
• Nonpaged Limit : la limite maximale de mémoire non paginée que le système peut utiliser.

Remarque : Une page mémoire est dit paginée si elle peut être stockée en mémoire physique (RAM) ou échangée
(swap) sur le disque dur dans un fichier d’échange (comme le pagefile) lorsque cela est nécessaire. Cela permet une
gestion efficace et dynamique de la mémoire, permettant aux systèmes d’exploitation de garder le contrôle sur les
ressources mémoires utilisées par les processus.
d. Paging File :

Ce tableau affiche des informations sur l’utilisation du fichier de pagination, qui est utilisé pour étendre la mémoire
physique en utilisant l’espace disque. Voici les détails de ces informations :

• Page Fault Delta : Le nombre de fautes de page (page faults) survenues depuis la dernière mesure (un laps de
temps). Une faute de page se produit lorsque le système doit récupérer des données depuis le disque car elles ne
sont pas présentes en mémoire.
• Page Read Delta : le nombre de lectures de pages effectuées depuis la dernière mesure.
• Page File Write Delta : le nombre d’écritures dans le fichier de pagination depuis la dernière mesure.
• Mapped File Write Delta : Le nombre d’écritures dans les fichiers mappés en mémoire depuis la dernière
mesure.

Remarque : un fichier est dit mappé si son contenu est directement accessible en mémoire. Cela permet à une
application de lire et d’écrire dans le fichier comme si les données etaient en mémoire vive, ce qui peut améliorer les
performances pour certaines opérations.

e. Paging Lists :

Ce tableau montre les différentes listes de pages en attente, classées par priorité :

• Zeroed : la quantité de la page mémoire qui ont été réinitialisées à zéro et sont prêtes à être utilisées.
• Modified : la quantité de la mémoire dont les pages ont été modifiées mais pas encore écrites sur le disque.
• ModifiedNoWrite : la quantite de la mémoire modifiée dont les pages ne sont pas écrites sur le disque et ne sont
pas prêtes à être écrites.
• Standby : la quantité de la mémoire ayant des pages qui sont en attente et peuvent être réutilisée si nécessaire.
• Priority 1-7 : la quantité de pages qui ont la proprieté 0 à 7. Les pages avec une priorité plus élevé sont plus
susceptibles d’être réutilisées rapidement.
• PagedFileModified : la quantité de pages dans le fichier de pagination.

Remarque : le mésure de la quantité utilisé par Process Explorer pour présenter ces informations est le KiloBytes.

x L’onglet I/O :

Cet onglet affiche l’activité d’entrée/sortie, comme le nombre d’opérations de lecture et d’écriture, la quantité de données
lues et écrites depuis la dernière mise à jour, …

On trouve principalement un graphique qui montre ces activités.

Les couleurs dans le graphique de cet onglet représentent différentes catégories d’opérations d’entrée/sortie. Voici ce que
chaque couleur signifie généralement :
• Violet : utilisé pour représenter les opératons de lecture (Read). Cela montre combien de fois des données on été
lues depuis le disque ou un autre périphérique de stockage.
• Bleu : utilisé pour les opérations d’écriture (Write). Cela indique combien de fois des données ont été écrites sur
le disque ou un autre périphérique de stockage.

En fin, le tableau qui se trouve en-dessous de ce graphique représente les détails de l’activité d’I/O, en listant les
informations suivantes :

• Read Delta : le nombre d’opérations de lecture éffectuées à un moment donné (généralement par séconde).
• Read Bytes Delta : la quantité de données lues en Ko au moment de la lecture
• Write delta : le nombre d’opérations d’écriture éffectuées à un moment donné.
• Write Bytes Delta : la quantité de données écrites au moment de l’écriture.
• Other Delta : le nombre d’autres opérations (ni lectures, ni écritures), comme des opérations réseau ou d’autres
types de transferts de données éfféctuées par séconde.
• Other Bytes Delta : la quantité de données traitées par ces autres opérations.

x L’onglet GPU :

Cet onglet montrent le pourcentage de l’utilisation du GPU au fil du temps.

• GPU Usage : indique le pourcentage de la capacité totale du GPU qui est actuellement utilisée pour traiter des
tâches graphiques.
• GPU Delecated Memory : indique la quantité de mémoire dédiée spécifiquement au GPU. Cette mémoire est
utilisée uniquement par le GPU.
• GPU System Memory : fait référence à la quantité de la mémoire du système (RAM) qui est partagée avec le
GPU. Cette mémoire peut être utilisée par le GPU lorsque la mémoire dédiée est insuffisante.

-Show Process Tree :

Cette option permet d’afficher l’arborescence de processus. Si on l’active, les processus efants sont distigués des
processus parents en utilisant des tabulations dans la liste des processus.
On peut activer cette configuration tout simplement en cliquant sur ‘’Process’’ de la colonne Process.

Les images suivantes montrent l’affichage de la liste des processus avant l’utilisation de l’option de configuration ‘’Show
Process Tree’’ et après son utilisation.
AVANT APRES

-Show Column Heatmaps :

Cette option fournit des représentations visuelles qui utilisent des couleurs pour montrer l’intensité ou l’utilisation de
certaines ressources. Les Heatmaps (cartes thermiques) peuvent être appliquées aux colonnes tells que l’utilisation du
CPU, les octets privés (Private Bytes) et le jeu de travail (Working Set). En activant cette option, on peut rapidement
identifier les processus qui consomment le plus de ressources.

-Scroll to New Processes :

Cette option fournit une fonctionnalité qui permet à Process Explorer d’attirer l’attention de l’utilisateur aux nouveaux
processus qui s’est affichés dans la liste. Si on active cette fonctionnalité, l’affichage se défilera directement vers la place
de nouveaux processus.

-Show Processes From All Users :

Cette option permet d’afficher tous les processus en cours d’éxécution sur l’ordinateur, y compris les processus système
et ceux lancés par d’autres comptes utilisateurs. Par défaut, cette option est déjà activée. En le désactivant, on ne peut
voir que les processus lancé par l’utilisateur actuel.

-Opacity :

Cette fonction permet de personnaliser l’opacité de la fenêtre entière en un intervalle de 10 %. Permettant ainsi
d’intéragir avec les autres fenêtres d’autres applications si l’option ‘’Always on Top’’ est activée.

-Show Lower Pane :

Cette fonctionnalité permet d’afficher la fenêtre inférieure de Process Explorer. Cette fenêtre affiche des informations dur
les Handles, les DLLs et les Threads ,du processus sélectionné dans la fenêtre supérieure, dans 3 onglets différents.

-Show Unamed Handles and Mapping :

Cette option donne la fonctionnalité d’afficher tous les handles et mappages ouverts par un processus, même ceux qui
n’ont pas de nom. En activant cette option et l’option ‘’Show Lower Pane’’, on peut trouver tous les handles ouvertes et
les fichiers mappés utilisés ,par le processus séléctionné, dans une nouvelle fenêtre en bas.
Onglet Handles :

Onglet DLLs :

Onglet Threads :
-Lower Pane View :

Cette option permet de configurer l’onglet qui s’affiche par défaut si on affiche la fenêtre inférieure. Si on clique sur cette
option, et on va choisir l’option ‘’Handles’’, par éxemple, l’affichage se réfèrera directement à l’onglet ‘’Handles’’ si on
affiche la fenêtre supérieure.

-Refresh Now :

Cette fonctionnalité est utilisée pour actualiser l’application Process Explorer. Si on active cette option, on verra que
certaines informations dans les fenêtres de Process Explorer seront modifiées à cause de l’actualisation.

-Update Speed :

Cette option permet de configurer le temps de changement des informations dans la liste des processus et d’autres
informations affichées par Process Explorer, comme l’utilisation du CPU, GPU, les activités d’I/O, etc.
On peut configurer cette période en unintervalle de 1, ou 2, ou … séconde.

Vous aimerez peut-être aussi