Qu’est-ce qu’un processus ? qu’est-ce qu’un fil ?
Source : Javatpoint
Avant de continuer, il est important de savoir faire la différence entre un processus et un thread :
Processus : est une instance en cours d’exécution d’un programme ou d’un logiciel. Il s’agit d’une entité active qui suit une série d’instructions séquentielles, accède aux ressources du système et communique avec d’autres processus. Chaque processus possède son propre espace mémoire alloué, qui comprend le code du programme, les données, la pile d’exécution et les variables. Les processus sont créés et gérés par le système d’exploitation, qui alloue des ressources telles que la mémoire, le temps CPU, les fichiers ouverts et les périphériques d’entrée/sortie. Chaque processus peut être dans différents états (en cours d’exécution, en attente, terminé,…). Pour que les processus puissent interagir les uns avec les autres, des mécanismes tels que la communication interprocessus (IPC) sont utilisés. Cela permet l’échange de données et la synchronisation entre différents processus, facilitant ainsi la coopération et la coordination dans le système informatique.
Thread : Aussi appelé thread, thread ou thread, c’est la plus petite unité de traitement. Un processus peut être composé d’un ou plusieurs threads, et chaque thread représente une séquence d’instructions qui peuvent être exécutées indépendamment au sein du processus. Contrairement aux processus, les threads partagent le même espace mémoire et les mêmes ressources du processus auquel ils appartiennent. Cela signifie que les threads peuvent accéder aux mêmes variables de processus, structures de données et autres ressources, simplifiant ainsi la communication et la synchronisation entre eux. Les threads sont utiles pour effectuer des tâches simultanées et parallèles, permettant à différentes parties du programme de s’exécuter simultanément et augmentant ainsi l’efficacité et la réactivité de l’application. Par exemple, dans une application Web, les threads peuvent être utilisés pour traiter simultanément les demandes de différents utilisateurs, ce qui améliore la vitesse de réponse du serveur. Cependant, il est important de noter que, étant donné que les threads partagent des ressources, ils doivent être correctement coordonnés pour éviter des problèmes tels que des conditions de concurrence critique et des blocages. La synchronisation et la gestion appropriée des threads sont des tâches cruciales pour développer des applications simultanées de manière sûre et efficace.
Qu’est-ce que l’IPC ?
IPC (Inter-Process Communication) ou Interprocess Communication est un ensemble de mécanismes et de techniques utilisés par les systèmes d’exploitation pour permettre aux processus exécutés sur un ordinateur de communiquer et de partager des données entre eux. L’IPC est essentiel dans les environnements où plusieurs processus doivent coopérer et coordonner leurs activités.
Qu’est-ce que les PCB ?
Le PCB (Process Control Block) ou Process Control Block est une structure de données utilisée par les systèmes d’exploitation pour maintenir et gérer les informations associées à chaque processus en cours d’exécution dans le système.
Chaque fois qu’un processus est créé, le système d’exploitation alloue un PCB en mémoire pour stocker toutes les informations pertinentes sur ce processus. Le PCB contient des détails importants tels que :
ID de processus
Statut du processus (suspendu, en attente,…)
Informations CPU (contenu des registres tels que PC)
Informations sur la mémoire (espace alloué)
Informations sur les ressources (fichiers ouverts, E/S,…)
Informations de planification (prioritaire)
Comment effectuer un changement de contexte
Changement de processus
Pour mieux comprendre comment s’effectue le changement de contexte, regardons le cas d’un processus et d’un thread, tant au niveau du système d’exploitation que du CPU :
Les étapes du changement de contexte lorsque nous parlons de processus sont les suivantes :
Le processus en cours d’exécution sur le processeur atteint un point où il doit être interrompu ou un événement se produit nécessitant un changement de contexte, tel qu’un appel système ou une interruption matérielle.
Le noyau du système d’exploitation stocke l’état du processus en cours, qui comprend les registres du processeur, le pointeur de pile et le compteur de programme, dans son bloc de contrôle de processus (PCB). Ceci est fait pour préserver l’état du processus et permettre sa reprise dans le futur.
Le noyau sélectionne le prochain processus à exécuter, soit à partir de la file d’attente prête, soit en suivant un algorithme de planification. Ensuite, il met à jour le PCB du nouveau processus sélectionné et le met à l’état « en cours d’exécution ».
Les tâches nécessaires sont effectuées pour configurer l’environnement du nouveau processus, comme le chargement des registres du CPU et du pointeur de pile avec les valeurs stockées sur son PCB.
Le noyau met à jour les structures de mémoire, telles que les tables de segmentation et les tables de pages, pour le nouveau processus.
Enfin, le contexte du nouveau processus est restauré et le CPU lui est alloué pour commencer son exécution. Le processus continue son exécution à partir du point où il a été interrompu jusqu’à