Vous êtes sur la page 1sur 2

Groupe 3

14/01/2015

Exercice 1

On considère le programme suivant :

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>

int main(void)
{
int x;

x=fork();

for(int i=0;i<3;i++)
{
if (x==0) {
x=fork();
printf("fork %d \n";i);
}
}
return(0);
}

1- Expliquez l’exécution de ce programme. Précisez en particulier le nombre total de


processus engendrés par cette exécution. Combien d’occurrences de chaque type
de messages fork i sont affichées ? Quel est l’ordre d’apparition des différents types
de messages ?
2- Expliquer la commande ps -Af. L'utiliser pour reconstituer manuellement l’arbre
de processus correspondant.

Exercice 2

1- Réaliser un programme qui joue au "ping-pong" avec des messages envoyés via
un pipe.
2- Réaliser un programme qui lise des entrées au clavier dans un processus et qui
fasse passer les données lues à son fils pour que celui-ci les affiche.
Les données reçues sont mises en minuscules et renvoyées au père.
3-Ecrire un programme qui permet de tuer un processus dont on donne le numéro en
argument. Valider à l'aide d'un exemple
Exercice 3

Soit la recherche d'un nombre dans une matrice n x m; les valeurs n et m sont
données via la ligne de commande. Le contenu de la matrice est rempli d'une
manière aléatoire (sans saisie).

1- Implémenter en langage C une recherche séquentielle. Donner le temps


d'exécution de la fonction recherche
2- Implémenter une recherche parallèle sachant la fonction fork. Chaque fils doit
renvoyer au père le résultat de sa recherche (trouvé ou pas, valeur trouvée, temps
d'exécution de la fonction recherche).
3- Comparer les deux résultats.

Vous aimerez peut-être aussi