Ce document a été produit par HEVEA.
Votre browser peut avoir a être configuré pour afficher correctement certains symboles.
Reportez-vous à la
documentation d'HEVEA.

IUP MIAGE
Système d'exploitation

TP --- Compilation parallèle

Ce document est disponible sous forme d'un fichier PostScript compressé.





Ce TP illustre une utilisation des appels systèmes fork(), wait(), waitpid(), et exec() (avec ses variantes execlp(), execvp()).

Consultez les documents de TD, l'annexe de ce sujet et/ou les pages de manuels pour ces différentes primitives.

1  Compilation

La compilation d'un programme C produit un exécutable à partir d'un ensemble de fichiers source .c.

Cette compilation se réalise en deux étapes :
  1. À partir de chaque fichier source, on produit un fichier objet .o en invoquant le compilateur C (gcc par exemple) avec l'option -c :
    gcc -c file.c
    
    Notons que l'ensemble des fichiers .o peuvent être produits indépendamment les uns des autres.
  2. L'éditeur de liens (on utilise à nouveau gcc, cette fois sans option) produit un exécutable à partir de l'ensemble des fichiers objets .o.

2  Compilation en parallèle

Le programme qu'il vous est demandé d'écrire prend en paramètre une série de fichiers source, les compile chacun séparément et en parallèle puis édite les liens pour produire un exécutable.

Ce programme doit : Veillez particulièrement

3  Compilation pas trop parallèle

Modifiez votre programme pour qu'il ne lance jamais plus de N (par exemple 10) processus simultanés.

4  Annexe

La fonction execvp()
        #include <unistd.h>
        int execvp (const char *file, char *const argv[]) ; 
de la librairie se comporte comme l'appel système execve() à la différence près qu'elle recherche l'exécutable file dans les répertoires fournis dans la variable d'environnement $PATH.


Ce document a été traduit de LATEX par HEVEA.