TD numéro 4 du cours système du MMFAI 1998-99 dirigé par Serge Vaudenay.

Signaux

  1. On cherche à établir un protocole de communication entre deux processus A et B (lancés par un fork) par des signaux.
    1. Avec les signaux SIGUSR1 et SIGUSR2, faire un programme qui transmet des données binaires de A vers B.
    2. Un problème est que A ne sait pas quand B a reçu un signal émis pour pouvoir émettre le suivant. Définir un protocole dans lequel B peut émettre un accusé de réception à chaque signal.
    Faire le programme en Perl.
    [
    corrigé]

  2. Faire un programme C qui fabrique une instance aléatoire du problème du "sac à dos" modulo 232 et qui cherche à la résoudre par recherche exhaustive. Le programme engrendre donc dans un premier temps 33 nombres s, p1, ..., p32 de 32 bits de manière pseudo-aléatoire. Une solution du problème est un sous-ensemble I de {1,...,32} tel que la somme modulo 232 des pi pour i dans I est égale à s.

    Une telle recherche est assez longue. On cherche à pouvoir la lancer en arrière plan, tout en pouvant continuer à dialoguer avec le processus. On cherche essentiellement à lui transmettre plusieurs messages différents:

    1. afficher ou la recherche en est (message STATUS),
    2. abandonner la recherche et recommencer avec une autre instance (message RESTART),
    3. abandonner définitivement (message STOP),
    4. demander l'affichage des sous-ensembles I qui seraient des solutions modulo 2n (message DISP n).
    Définir un protocole de signaux pour coder ces messages, et faire une application Perl qui envoie ce type de message à un processus donné.
    [corrigé
    recherche en C, lanceur de message en Perl]