Le but de ce TP est d'étudier les fonctions fork, exec et wait.

L'élève curieux pourra également se reporter au TP analogue proposé l'année dernière par Antoine Miné.

Exercice 1 - Hello world!

Le but de cet exercice est d'écrire un "Hello world!" utilisant les processus.

  • qui écrit "Hello" (sans retour à la ligne).
  • Écrire un programme qui crée une bifurcation (fork) ; le processus fils doit utiliser execve pour exécuter le premier programme et le processus parent doit utiliser wait ou waitpide et afficher "World!".

top

Exercice 2 - find parallèle

Écrire une commande find_parallele telle que find_parallele fic rep effectue la recherche d'un fichier de nom fic dans le répertoire rep.

Pour cela, chaque processus parcourt le contenu du répertoire dont la référence lui est fournie ; s'il trouve un fichier de nom fic, il en affiche la référence complète ; et pour chaque sous-répertoire, il crée un processus fils chargé d'y poursuivre la recherche.

top

Exercice 3 - Recherche parallélisée dans un tableau

On souhaite trouver toutes les occurrences d'un élément dans un tableau donné. Pour cela, si le tableau est long (plus qu'une constante TAILLE_MIN), on peut le couper en deux et effectuer la recherche indépendamment dans les deux moitiés, en les confiant à deux processus différents travaillant en parallèle.

Écrire un programme effectuant la recherche de cette manière ; le programme devra afficher un message pour chaque occurrence trouvée, puis afficher le nombre total d'occurrences de l'élément dans le tableau. Pour cela, on pourra utiliser les valeurs de retour des processus fils (ces valeurs de retour sont codées sur un octet).

top

Exercice 4 - Crible d'Eratosthene

Le but de cet exercice est d'implanter le crible d'Erathosthene comme test de primalité d'un entier rationnel (il existe bien évidemment des tests de primalité plus efficaces).

  1. En divisant la liste de facteurs premiers dans des ensembles de cardinal au plus huit et en utilisant fork, exit et wait, distribuer le test de divisibilité du nombre premier candidat par chacun de ces facteurs premiers.

  2. Modifier votre programme pour que le processus initial retourne tous les facteurs premiers trouvés.
    (Indice : exit retourne une valeur au processus parent).

    1. top