Principale différence : thread et processus sont deux termes étroitement liés dans le multi-threading. La principale différence entre les deux termes est que les threads font partie d'un processus, c'est-à-dire qu'un processus peut contenir un ou plusieurs threads, mais qu'un thread ne peut pas contenir de processus.
En programmation, il existe deux unités d'exécution de base: les processus et les threads. Ils exécutent tous les deux une série d'instructions. Les deux sont lancés par un programme ou par le système d'exploitation. Cet article aide à différencier les deux unités.
Un processus a un environnement d'exécution autonome. Il dispose d'un ensemble complet de ressources d'exécution de base privées. en particulier, chaque processus a son propre espace mémoire. Les processus sont souvent considérés comme similaires aux autres programmes ou applications. Cependant, l'exécution d'une seule application peut en réalité être un ensemble de processus coopérants. Pour faciliter la communication entre les processus, la plupart des systèmes d'exploitation utilisent des ressources IPC (Inter Process Communication), telles que des tubes et des sockets. Les ressources IPC peuvent également être utilisées pour la communication entre les processus de différents systèmes. La plupart des applications d'une machine virtuelle s'exécutent en tant que processus unique. Cependant, il peut créer des processus supplémentaires à l'aide d'un objet générateur de processus.
Sur les ordinateurs, un thread peut exécuter la plus petite séquence d'instructions programmées pouvant être gérée indépendamment par un système d'exploitation. Les applications des threads et des processus diffèrent d'un système d'exploitation à un autre. Cependant, les threads sont constitués et existent dans un processus; chaque processus en a au moins un. Plusieurs processus peuvent également exister dans un processus et partager des ressources, ce qui contribue à une communication efficace entre les processus.
Sur un seul processeur, le multitâche a lieu lorsque le processeur bascule entre différents threads. c'est ce qu'on appelle le multithreading. La commutation se produit si souvent que les threads ou les tâches sont perçus comme s'exécutant en même temps. Les threads peuvent réellement être simultanés sur un système multiprocesseur ou multi-cœur, chaque processeur ou cœur exécutant simultanément les différents threads.
En résumé, les threads peuvent être considérés comme des processus légers, car ils contiennent de simples ensembles d'instructions et peuvent s'exécuter dans un processus plus important. Les ordinateurs peuvent exécuter plusieurs threads et processus en même temps.
Comparaison entre processus et thread:
Processus | Fil | |
Définition | Une instance d'exécution d'un programme s'appelle un processus. | Un fil est un sous-ensemble du processus. |
Processus | Il possède sa propre copie du segment de données du processus parent. | Il a un accès direct au segment de données de son processus. |
la communication | Les processus doivent utiliser la communication inter-processus pour communiquer avec les processus frères. | Les threads peuvent communiquer directement avec les autres threads de son processus. |
Frais généraux | Les processus ont des frais généraux considérables. | Les fils n'ont presque pas de frais généraux. |
Création | Les nouveaux processus nécessitent une duplication du processus parent. | De nouveaux threads sont facilement créés. |
Contrôle | Les processus peuvent uniquement exercer un contrôle sur les processus enfants. | Les threads peuvent exercer un contrôle considérable sur les threads du même processus. |
Changements | Toute modification du processus parent n'affecte pas les processus enfants. | Toute modification du thread principal peut affecter le comportement des autres threads du processus. |
Mémoire | Exécuter dans des espaces mémoire séparés. | Exécuter dans des espaces de mémoire partagés. |
Descripteurs de fichier | La plupart des descripteurs de fichiers ne sont pas partagés. | Il partage les descripteurs de fichier. |
Système de fichiers | Il n'y a pas de partage du contexte du système de fichiers. | Il partage le contexte du système de fichiers. |
Signal | Il ne partage pas le traitement du signal. | Il partage la gestion du signal. |
Controlé par | Le processus est contrôlé par le système d'exploitation. | Les fils sont contrôlés par le programmeur dans un programme. |
Dépendance | Les processus sont indépendants. | Les fils sont dépendants. |