Signaux

  1. On cherche à établir un protocole de communication entre deux processus A et B (lancés par un fork) par des signaux. 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 avec les signaux SIGUSR1 et SIGUSR2, et faire une application Perl qui envoie ce type de message à un processus donné.
    [corrigé recherche en C, lanceur de message en Perl]