Thread et processus - Algo - Programmation
Marsh Posté le 22-10-2002 à 16:42:34
NKTH a écrit a écrit : Bonjour, je ne saisis pas tres bien la difference entre un thread et un processus, est ce que qq`un pourait m`aider? |
quand tu forke pour créer un nouveau processus, ce dernier part avec les memes données que le processus père, mais c'est une copie, les deux processus sont indépendants, contrairement aux threads qui partagent leurs données.
Marsh Posté le 23-10-2002 à 16:54:30
Pour compléter ce qu'a dit lorill : les seules informations propres à un thread (au sein d'un processus) sont sa pile d'exécution (les différentes fonctions appelées depuis la fonction utilisée pour le démarrer, leurs arguments et leurs variables locales) et, éventuellement, une zone mémoire dédiée appelée Thread Local Storage (sous Windows).
Tout le reste est partagé avec les autres threads du processus, y compris les variables globales, et tout l'environnement (les variables d'environnement genre HOME, PATH, ..., les fichiers ouverts, etc).
Par contre, 2 processus sont totalement indépendants, ils ne partagent aucune donnée (par contre, ils peuvent quand même partager leur code, s'il s'agit du même programme lancé 2 fois).
Marsh Posté le 12-11-2004 à 14:34:14
et la différence entre un processus créé par clone() et un thread ?
j'arrive pas à voir l'interet des threads
Marsh Posté le 12-11-2004 à 14:34:56
2ans le up, merci, je sais, j'ai fait fort là
Marsh Posté le 12-11-2004 à 16:35:04
udok a écrit : et la différence entre un processus créé par clone() et un thread ? |
Les thread partagent le même espace d'adressage : pas besoin d'IPC pour communiquer. Le changement de contexte est aussi plus rapide.
Si ton processus A possède une fenêtre, et qu'il crée le processus B par clone(), qu'est-ce qui se passe si B tente de modifier la fenêtre ?
Marsh Posté le 12-11-2004 à 16:38:39
aucune idée justement, je viens de prendre connaissance de la fonction clone mais apparement cette fonction permet à 2 processus de partager leur espace d'adressage
mais du coup ils doivent s'apparenter à des threads j'imagine ?
Marsh Posté le 12-11-2004 à 17:34:28
Ben du coup il s'agit de 2 thread alors. Un processus a un espace d'adressage privé par définition. C'est quoi cette fonction clone(), quel OS/Lib ?
Marsh Posté le 12-11-2004 à 18:14:34
HelloWorld a écrit : Ben du coup il s'agit de 2 thread alors. Un processus a un espace d'adressage privé par définition. C'est quoi cette fonction clone(), quel OS/Lib ? |
ouai, c'est bien ce qu'il me semblait, mais j'étais pas sur de la différence entre thread et processus (je me demandais s'il y en avait d'autres que celle là)
fonction clone() sous linux, lib ... hmmm :
#include <linux/sched.h>
spa très portable en plus
Marsh Posté le 12-11-2004 à 18:33:10
J'ai eu vent que Linux avait une gestion un peu spéciale des threads, qu'ils étaient vus comme des process.
Marsh Posté le 12-11-2004 à 18:36:36
HelloWorld a écrit : J'ai eu vent que Linux avait une gestion un peu spéciale des threads, qu'ils étaient vus comme des process. |
non non, y-a une lib pthread maintenant qui gere de vrai thread, et ça fait des années maintenant que ça marche bien
mais c'est vrai qu'ils ont été plus tard à s'y mettre que d'autres os, notamment parce que les process marchent bien
Marsh Posté le 12-11-2004 à 19:17:56
top ne visualise pas les thread comme des process ?
Marsh Posté le 12-11-2004 à 19:28:01
HelloWorld a écrit : top ne visualise pas les thread comme des process ? |
si mais ça ça dépend du programme en lui même
ps aussi fait ça, mais pendant un moment ces deux commandes ne montraient que les process
ça a du faire gueuler du monde parce qu'ils sont revenu à l'ancien fonctionnement
Marsh Posté le 22-10-2002 à 16:41:00
Bonjour,
je ne saisis pas tres bien la difference entre un thread et un processus, est ce que qq`un pourait m`aider?
Merci