« La différence entre le processus et le fil conducteur » est l'une des questions les plus fréquemment posées lors des entretiens techniques. Les processus et les threads sont liés les uns aux autres et très similaires, créant ainsi une confusion pour comprendre les différences entre les deux. Le processus et le thread constituent une séquence d'exécution indépendante, mais tous deux sont différenciés de manière à ce que les processus s'exécutent dans des espaces mémoire différents, tandis que les threads du même processus s'exécutent dans un espace mémoire partagé.
Dans cette rubrique, nous comprendrons la brève introduction des processus et des threads et quelles sont les autres différences entre les deux.
Qu’est-ce que le processus ?
Un processus est une instance d'un programme en cours d'exécution. Lorsque nous exécutons un programme, il ne s’exécute pas directement. Il faut un certain temps pour suivre toutes les étapes nécessaires à l'exécution du programme, et suivre ces étapes d'exécution est appelé processus.
Un processus peut créer d'autres processus pour effectuer plusieurs tâches à la fois ; les processus créés sont appelés processus clone ou enfant , et le processus principal est connu sous le nom de processus parent . Chaque processus contient son propre espace mémoire et ne le partage pas avec les autres processus. Elle est connue sous le nom d’entité active. Un processus typique reste sous la forme ci-dessous en mémoire.
Un processus dans le système d'exploitation peut rester dans l'un des états suivants :
Comment fonctionnent les processus ?
Lorsque nous commençons à exécuter le programme, le processeur commence à le traiter. Il faut procéder comme suit :
- Tout d'abord, le programme est chargé dans la mémoire de l'ordinateur en code binaire après traduction.
- Un programme nécessite de la mémoire et d’autres ressources du système d’exploitation pour l’exécuter. Les ressources telles que les registres, le compteur de programme et une pile, ainsi que ces ressources, sont fournies par le système d'exploitation.
- Un registre peut contenir une instruction, une adresse de stockage ou d'autres données requises par le processus.
- Le compteur de programme maintient la trace de la séquence du programme.
- La pile contient des informations sur les sous-programmes actifs d'un programme informatique.
- Un programme peut en avoir différentes instances, et chaque instance du programme en cours d’exécution est appelée processus individuel.
Caractéristiques du processus
- Chaque fois que nous créons un processus, nous devons effectuer un appel système distinct pour chaque processus vers le système d'exploitation. Le fourchette () la fonction crée le processus.
- Chaque processus existe dans sa propre adresse ou espace mémoire.
- Chaque processus est indépendant et traité comme un processus isolé par le système d'exploitation.
- Les processus ont besoin d'IPC (Inter-process Communication) pour communiquer entre eux.
- Une synchronisation appropriée entre les processus n'est pas requise.
Qu'est-ce que le fil ?
Un thread est le sous-ensemble d’un processus et est également appelé processus léger. Un processus peut avoir plusieurs threads, et ces threads sont gérés indépendamment par le planificateur. Tous les threads d’un processus sont interdépendants les uns aux autres. Les fils de discussion contiennent des informations communes, telles que segment de données, segment de code, fichiers, etc., qui est partagé avec leurs pairs. Mais contient ses propres registres, pile et compteur.
Comment fonctionne le fil ?
Comme nous l'avons vu, un thread est un sous-processus ou une unité d'exécution au sein d'un processus. Un processus peut contenir un seul thread ou plusieurs threads. Un fil de discussion fonctionne comme suit :
- Lorsqu'un processus démarre, le système d'exploitation lui attribue la mémoire et les ressources. Chaque thread d'un processus partage uniquement la mémoire et les ressources de ce processus.
- Les threads sont principalement utilisés pour améliorer le traitement d’une candidature. En réalité, un seul thread est exécuté à la fois, mais en raison du changement de contexte rapide entre les threads, cela donne l'illusion que les threads s'exécutent en parallèle.
- Si un seul thread s'exécute dans un processus, on l'appelle un monothread Et si plusieurs threads s’exécutent simultanément, cela s’appelle multithreading.
Types de fils
Il existe deux types de threads, à savoir :
1. Fil de discussion au niveau utilisateur
Comme son nom l'indique, les threads au niveau utilisateur sont uniquement gérés par les utilisateurs et le noyau ne dispose pas de ses informations.
Ceux-ci sont plus rapides, faciles à créer et à gérer.
Le noyau prend tous ces threads comme un seul processus et les gère comme un seul processus.
Les threads au niveau utilisateur sont implémentés par des bibliothèques au niveau utilisateur, et non par les appels système.
2. Thread au niveau du noyau
Les threads au niveau du noyau sont gérés par le système d'exploitation et gérés par son noyau. Ces threads sont plus lents que les threads de niveau utilisateur car les informations contextuelles sont gérées par le noyau. Pour créer et implémenter un thread au niveau du noyau, nous devons effectuer un appel système.
trier la liste de tableaux en Java
Caractéristiques du fil
- Les threads partagent des données, de la mémoire, des ressources, des fichiers, etc. avec leurs threads homologues au sein d'un processus.
- Un appel système est capable de créer plusieurs threads.
- Chaque thread a sa propre pile et son propre registre.
- Les threads peuvent communiquer directement entre eux car ils partagent le même espace d’adressage.
- Les threads doivent être synchronisés afin d'éviter des scénarios inattendus.
Principales différences entre le processus et le thread
- Un processus est indépendant et n'est pas contenu dans un autre processus, alors que tous les threads sont logiquement contenus dans un processus.
- Les processus sont fortement pondérés, tandis que les threads sont légers.
- Un processus peut exister individuellement car il contient sa propre mémoire et d’autres ressources, alors qu’un thread ne peut pas avoir sa propre existence individuelle.
- Une synchronisation appropriée entre les processus n'est pas requise. En revanche, les threads doivent être synchronisés afin d'éviter des scénarios inattendus.
- Les processus peuvent communiquer entre eux uniquement en utilisant la communication inter-processus ; en revanche, les threads peuvent communiquer directement entre eux car ils partagent le même espace d’adressage.
Tableau de différence entre processus et thread
Processus | Fil |
---|---|
Un processus est une instance d'un programme en cours d'exécution ou de traitement. | Thread est un segment d’un processus ou un processus léger géré indépendamment par le planificateur. |
Les processus sont indépendants les uns des autres et ne partagent donc pas de mémoire ni d'autres ressources. | Les threads sont interdépendants et partagent la mémoire. |
Chaque processus est traité comme un nouveau processus par le système d'exploitation. | Le système d'exploitation prend tous les threads au niveau utilisateur comme un seul processus. |
Si un processus est bloqué par le système d'exploitation, l'autre processus peut poursuivre l'exécution. | Si un thread au niveau de l'utilisateur est bloqué, tous ses threads homologues sont également bloqués car le système d'exploitation les considère tous comme un seul processus. |
Le changement de contexte entre deux processus prend beaucoup de temps car ils sont lourds par rapport aux threads. | La commutation de contexte entre les threads est rapide car ils sont très légers. |
Le segment de données et le segment de code de chaque processus sont indépendants l'un de l'autre. | Les threads partagent un segment de données et un segment de code avec leurs threads homologues ; c'est donc la même chose pour les autres threads. |
Le système d'exploitation prend plus de temps pour terminer un processus. | Les threads peuvent être terminés en très peu de temps. |
La création de nouveaux processus prend plus de temps car chaque nouveau processus consomme toutes les ressources. | Un fil de discussion a besoin de moins de temps pour sa création. |