Sorbonne Université Master 2017 2018
PR : Travaux sur Machine 3. Signaux de l’utilisateur

Cette séance étudie l’usage de signaux définis par l’utilisateur, par opposition aux signaux prédéfinis par le système.



Warning: fsockopen(): unable to connect to ssl://www-master.ufr-info-p6.jussieu.fr:8083 (Connection refused) in /dsk/www-master/html/2017/ecrire/inc/distant.php on line 699

Warning: fsockopen(): unable to connect to ssl://www-master.ufr-info-p6.jussieu.fr:8083 (Connection refused) in /dsk/www-master/html/2017/ecrire/inc/distant.php on line 699

Warning: fsockopen(): unable to connect to ssl://www-master.ufr-info-p6.jussieu.fr:8083 (Connection refused) in /dsk/www-master/html/2017/ecrire/inc/distant.php on line 699

1 Synchronisation de processus

Nous avons un processus P1 qui crée un processus P2 (fils de P1) qui à son tour crée un processus P3 (fils de P2 et petit-fils de P1). Lorsque le processus P3 est créé, il envoie un signal à son grand-père, le processus P1, pour lui signaler sa création, puis se termine juste après. Quand son père, le processus P2, prend connaissance de la terminaison de P3, il envoie un signal à P1, son père, pour signaler la mort de son fils. Après P2 se termine lui aussi. Le processus P1 doit traiter les événements dans l’ordre décrit ci-dessus. Autrement dit, il doit premièrement traiter la délivrance du signal de P3 en affichant le message « Processus P3 créé », ensuite la délivrance du signal de P2 en affichant « Processus P3 terminé » et à la fin afficher « Processus P2 terminé » lorsqu’il prend connaissance de la mort de son fils.

Programmez une telle synchronisation.

Exemple d'appel :
$PWD/bin/synchro_proc
Fichier à créer : src/synchro_proc.c

2 Limiter la taille d’un fichier

On reprend le programme forkfile.c étudié à la séance Fichiers et Processus : Ajouter à ce programme l’envoi d’un seul signal de sorte que la taille du fichier soit égale à 8 dans tous les scénarios d’exécution.

Exemple d'appel :
$PWD/bin/forkfilemax
Fichier à créer : src/forkfilemax.c

3 Attente ordonnée de processus

On reprend l’énoncé de l’exercice Attente de processus où un processus crée deux fils créant chacun un processus. On ajoute la contrainte que le processus fils 1 ne peut se terminer qu’après les affichages réalisés par son frère fils 2 et son fils fils 1.1. Comme auparavant, les processus ne se terminent qu’après envoi des messages de leur fils respectifs. Trouvez une solution n’utilisant que les signaux SIGUSR1 et SIGUSR2, à l’exclusion de tout autre moyen (Wait, Sleep etc).

Exemple d'appel :
$PWD/bin/mon_petit_frere
Fichier à créer : src/mon_petit_frere.c

4 Annexes


makefile