0% ont trouvé ce document utile (0 vote)
14 vues2 pages

Tubes Et Signaux: Année Universitaire

Le document présente des exercices de programmation système axés sur la communication inter-processus via tubes et signaux. Il inclut des tâches telles que le comptage d'occurrences de caractères dans une chaîne par plusieurs processus, la gestion de signaux entre un père et un fils, ainsi que la synchronisation de processus à travers des signaux. Les exercices visent à renforcer la compréhension des concepts de programmation concurrente et de gestion des processus.

Transféré par

saraeloudri
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
14 vues2 pages

Tubes Et Signaux: Année Universitaire

Le document présente des exercices de programmation système axés sur la communication inter-processus via tubes et signaux. Il inclut des tâches telles que le comptage d'occurrences de caractères dans une chaîne par plusieurs processus, la gestion de signaux entre un père et un fils, ainsi que la synchronisation de processus à travers des signaux. Les exercices visent à renforcer la compréhension des concepts de programmation concurrente et de gestion des processus.

Transféré par

saraeloudri
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Année

Programmation Système
universitaire
Tubes et signaux
2025/2026

Objectifs :
• Communication inter- processus par tubes et signaux

Exercice 1 : Tubes

On veut compter le nombre d’occurrences d’un caractère donné dans une chaîne de caractères
représentée par un tableau de caractères terminé par ’\0’ en utilisant trois processus qui se partagent le
parcours du tableau. Le tableau est une variable globale du programme. On peut fixer une taille
maximale pour ce tableau.

a. Ecrire une fonction int nbOccu(char val, int debut, int fin) qui compte le nombre
d’occurrences du caractère val dans la chaîne entre les indices début et fin.

b. Ecrire les instructions du main() qui servent à demander une chaîne l’utilisateur ainsi que le
caractère à rechercher dans la chaîne.

c. Terminer le main() de manière à créer deux fils et partager en trois le parcours du tableau.
Chaque processus (le père et les deux fils) cherche dans un tiers du tableau. Les fils renvoient
le résultat au père par un exit(). Le père récupère les résultats des deux fils, les ajoute au sien
et affiche le total.

d. Ecrire une deuxième version du programme principal de manière à faire communiquer les
processus par l’intermédiaire d’un tube. Les fils écrivent leur résultat dans le tube et le père lit
dans le tube les résultats avant de faire la somme et de l’afficher.

Exercice 2 : Signaux

a. Écrire un programme qui crée un fils. Le fils déroute les signaux SIGTERM et SIGKILL, puis
s’endort. Le père lui envoie successivement ces deux signaux.

b. On désire simuler un distributeur électronique de café. Écrire un programme qui crée un fils.
Le père jouera le rôle du serveur et le fils celui du client. Le serveur doit effectuer deux tâches
servirverre(1) et servirverre(2). Le client doit effectuer deux tâches demanderverre(1) et
demanderverre(2). On veut synchroniser la réalisation de ces tâches dans cette ordre:
demanderverre(1), servirverre(1), demanderverre(2), servirverre(2) en utilisant les signaux
SIGSTOP et SIGCONT.

1 TP5
c. Ecrire un programme permettant d’effectuer un ping-pong des signaux entre un processus et
son fils. Le signal SIGUSR1 est envoyé par le fils au père et SIGUSR2 est envoyé du père au
fils. Le premier signal est envoyé par le père.

Exercice 3 : Signaux

Ecrire un programme permettant de mettre en œuvre le processus de synchronisation suivant. En fait,


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.

2 TP5

Vous aimerez peut-être aussi