Vous êtes sur la page 1sur 1

Semestre 4 - CPI'EIDIA 22-23 Calcul parallèle Répartie

Contrôle continu
Documents de cours/TDs interdits –Téléphones portables/PCs interdits

Question de cours

1- Expliquer la différence entre un processus et un thread ?


2- Pour lancer en parallèle plusieurs traitements d’une même application, on a le choix entre les
appels système fork() et pthread_create(). Laquelle des deux possibilités choisir? Pourquoi ?
3- Décrire le scénario de la synchronisation des threads en utilisant des variables
conditionnelles?

Exercice 1

Considérons le programme C suivant

1. Combien de processus sont créés par le programme ci-dessus ? Justifier votre réponse?
2. Dessiner l’arbre généalogique de tous les processus créés.

Exercice 2

Écrivez un programme en C qui utilise des threads pour calculer la somme de tous les
nombres d'un tableau donné. Utilisez la fonction pthread_create pour créer les threads et
pthread_join pour attendre leur terminaison. Assurez-vous d'utiliser un verrou (mutex) pour
éviter les conflits entre les threads lorsqu'ils modifient la somme.

Exercice 3

Écrire un programme en langage C qui utilise des threads pour calculer les nombres pairs
jusqu'à un certain nombre (par exemple, 100000). Le programme devrait utiliser plusieurs
threads pour effectuer le calcul. Chaque thread devrait tester une partie des nombres pour voir
s'ils sont pairs. Le programme devrait utiliser une barrière pour synchroniser les threads de sorte
qu'ils attendent tous les autres avant de continuer. Le programme devrait afficher la liste des
nombres pairs trouvés.

Vous aimerez peut-être aussi