web-dev-qa-db-fra.com

Quelle est la différence entre un thread/processus/tâche?

Quelle est la différence entre un thread/processus/tâche?

29
billu

Processus:

Un processus est une instance d'un programme informatique en cours d'exécution . Il contient le code du programme et son activité actuelle . Selon le système d'exploitation, un processus peut être constitué de plusieurs threads d'exécution. le multitâche basé sur les processus vous permet d’exécuter le compilateur Java en même temps que vous utilisez un éditeur de texte . Lorsque vous utilisez plusieurs processus avec un seul processeur, la commutation de contexte entre différents contextes de mémoire est used . Chaque processus possède un ensemble complet de ses propres variables.

Fil:

Un thread est une unité élémentaire d’utilisation de l’UC, composée d’un compteur de programme, d’une pile et d’un ensemble de registres . Un thread d’exécution résulte de la création d’un programme d’ordinateur en deux ou plusieurs tâches exécutées simultanément. L'implémentation des threads et des processus diffère d'un système d'exploitation à l'autre, mais dans la plupart des cas, un thread est contenu dans un processus. Plusieurs threads peuvent exister dans le même processus et partager des ressources telles que la mémoire, alors que différents processus ne partagent pas ces ressources . Un exemple de threads dans le même processus est la vérification automatique de l'orthographe et l'enregistrement automatique d'un fichier lors de l'écriture . sont généralement des processus qui s'exécutent dans le même contexte de mémoire . Les threads peuvent partager les mêmes données lors de l'exécution . Diagramme de thread, c'est-à-dire un seul thread par rapport à plusieurs threads

Tâche:

Une tâche est un ensemble d'instructions de programme chargées en mémoire.

40
billu

Expliquer en termes plus simples

Process : process est l'ensemble d'instructions sous la forme d'un code qui agit sur des données connexes et dont le processus a ses propres états, en veille, en cours d'exécution, arrêté, etc. Chaque processus a au moins un thread lorsque l’unité centrale est affectée, appelée programme thread sigled. 

Thread : le thread est une partie du processus. Plusieurs threads peuvent exister dans le cadre du processus. Le fil a sa propre zone de programme et sa propre zone mémoire. Plusieurs threads dans un processus ne peuvent pas accéder aux données des autres. Le processus doit gérer la synchronisation des threads pour obtenir le comportement souhaité.

Task : La tâche n'est pas largement utilisée dans le monde. quand une instruction de programme est chargée en mémoire, les gens appellent en tant que processus ou tâche. Tâche et processus sont des synonymes de nos jours.

7
mack.t

Réponse courte:

Un thread est un concept de planification, c'est ce que le CPU "exécute" (vous n'exécutez pas de processus). Un processus nécessite au moins un thread que le CPU/OS exécute.

Un processus est un concept organisationnel de données. Des ressources (mémoire pour l’état de conservation, espace d’adresse autorisé, etc.) sont allouées à un processus.

7
Rodrick Chapman

Une process appelle ou lance un programme. C'est une instance d'un programme qui peut être multiple et exécuter la même application. Un thread est la plus petite unité d'exécution incluse dans le processus. Un processus peut avoir plusieurs threads en cours d'exécution. Une exécution de fil entraîne une tâche. Par conséquent, dans un environnement multithreading, le multithreading a lieu.

Une program en cours d'exécution est appelée process. Un programme peut avoir un nombre quelconque de processus. Chaque processus a son propre espace d'adressage.

Les threads utilisent les espaces adresse du processus. La différence entre un processus et un processus réside dans le fait que, lorsque la CPU passe d'un processus à un autre, les informations actuelles doivent être enregistrées dans le descripteur de processus et charger les informations d'un nouveau processus. Passer d'un thread à un autre est simple.

task est simplement un ensemble d'instructions chargées dans la mémoire. Les threads peuvent eux-mêmes se diviser en deux ou plusieurs tâches simultanément.

pour plus de compréhension, veuillez consulter le lien: http://www.careerride.com/os-thread-process-and-task.aspx

5
raj mishra

de wiki explication claire

1: 1 (thread au niveau du noyau)

Les threads créés par l'utilisateur sont en correspondance 1-1 avec les entités programmables du noyau. [3] C'est la mise en œuvre de threading la plus simple possible. Win32 a utilisé cette approche depuis le début. Sous Linux, la bibliothèque C habituelle implémente cette approche (via le NPTL ou LinuxThreads plus ancien). La même approche est utilisée par Solaris, NetBSD et FreeBSD.

N: 1 (thread au niveau utilisateur)

Un modèle N: 1 implique que tous les threads au niveau de l'application soient mappés vers une seule entité planifiée au niveau du noyau [3]; le noyau n'a aucune connaissance des threads de l'application. Avec cette approche, le changement de contexte peut être effectué très rapidement et, en outre, il peut être implémenté même sur des noyaux simples ne prenant pas en charge les threads. L'un des inconvénients majeurs est toutefois qu'il ne peut pas bénéficier de l'accélération matérielle sur les processeurs multi-threads ou les ordinateurs multi-processeurs: il n'y a jamais plus d'un thread programmé à la fois. [3] Par exemple: si l'un des threads doit exécuter une requête d'E/S, l'ensemble du processus est bloqué et l'avantage du threading ne peut pas être utilisé. Les threads portables GNU utilisent un threading au niveau utilisateur, comme le font les threads d'état.

M: N (filetage hybride)

M: N mappe un certain nombre M de threads d'application sur un certain nombre N d'entités du noyau, [3] ou "processeurs virtuels". Il s'agit d'un compromis entre les threads au niveau du noyau ("1: 1") et au niveau de l'utilisateur ("N: 1"). En général, les systèmes de thread "M: N" sont plus complexes à implémenter que les threads du noyau ou des utilisateurs, car des modifications du code du noyau et de l'espace utilisateur sont nécessaires. Dans l'implémentation M: N, la bibliothèque de threads est responsable de la planification des threads utilisateur sur les entités programmables disponibles. cela rend très rapide la commutation de contexte des threads, car elle évite les appels système. Toutefois, cela accroît la complexité et le risque d’inversion des priorités, ainsi que la planification sous-optimale sans coordination importante (et coûteuse) entre le planificateur utilisateur et le planificateur de noyau.

2
sukumar

Wikipedia résume assez bien:

Fils comparés aux processus

Les threads diffèrent des processus de système d'exploitation multitâches traditionnels en ce que:

  • les processus sont généralement indépendants, alors que les threads existent en tant que sous-ensembles d'un processus
  • les processus contiennent des informations d'état considérables, alors que plusieurs threads d'un processus partagent un état ainsi que de la mémoire et d'autres ressources
  • les processus ont des espaces d'adressage distincts, tandis que les threads partagent leur espace d'adressage
  • les processus n'interagissent que par le biais de mécanismes de communication interprocessus fournis par le système.
  • La commutation de contexte entre les threads d'un même processus est Généralement plus rapide que le contexte De commutation entre processus.

Des systèmes tels que Windows NT et OS/2 sont réputés avoir des threads "bon marché" et des processus "coûteux"; dans les autres systèmes d'exploitation, la différence n'est pas très grande, à l'exception du coût du commutateur d'espace d'adressage qui implique un vidage TLB.

La tâche et le processus sont utilisés comme synonymes.

0
Loxley