Académique Documents
Professionnel Documents
Culture Documents
Diop
Département Génie
Informatique
Année Académique :
2023-2024
EXERCICE1
Apres avoir complété les programmes suivants, dites ce qu’ils réalisent. Indiquons le pourquoi
du résultat affiché à l’écran. Disons combien de processus sont créés, l’état mémoire de chaque
processus, et donnons l’arbre généalogique qui en résulte.
Programme1 :
P1 P2
Fork()
P3=1623 P2=8225
P1 P2
i=1 i=1
i=10 i=11
P11 fork()
Programme3:
Programme4:
Résultat Nombre de processus Arbre genealogique
Ci-dessus indique le résultat 4 processus
Exercice 2
analysons et interprétons ce programme. Combien de lignes sont affichées et par quel
processus ? il faudra indiquons et discutons les ordres possibles dans lesquels ces lignes sont
affichées. Expliquons l’origine de la valeur de la fonction exit (-) de la ligne 21.
D’abord compilons voir le code :
Ce programme affiche 4 lignes. Les 3 premières lignes sont affichées par le processus
père et la 4ème ligne est affichée par le processus fils.
Père : printf("pid=%d\n",getppid()); -> printf("Bonjour, qui a gagné la CAN?\n") ->
printf("%d\n",!pid); -> if(pid) -> exit(224)
La valeur de la fonction exit(-) de la ligne 21 est 224 car elle est spécifiée comme
argument de la fonction exit. Cette valeur est utilisée pour indiquer à d'autres
programmes que le programme s'est terminé avec une erreur. Cela est particulièrement
utile si le programme est appelé à partir d'un autre programme.
Exercice 2 Programme 2 :
Avant détection de l’erreur
Après modification :
On a constaté que Le code contient une erreur de compilation, car la variable `i` n'est pas
déclarée. Il faut déclarer la variable `i` en dehors de la boucle `for` pour pouvoir l'utiliser à
la fin du programme.
Resultat Nombre de processus Arbre
Le résultat est juste au- Le nombre total de processus
dessus. créés est donc 7 (1 processus
père et 3 processus fils à
chaque itération de la boucle).
EXERCICE 3
1) Ecrire un programme qui illustre la création de processus à l’aide de l’appel système
fork. N (fournit en paramètre) fils crées : ils se contentent d’afficher leur numéro ainsi
que leur pid (avec la getpid).
Apres compilation on aura :
2) Ecrire un programme qui lance dix fils qui effectuent une course. A la fin du programme,
l’ordre des fils est affiché (chaque fils effectuera, par exemple une boucle vide de n tours, avec
n choisit au hasard entre 5000 et 10000).
3) Ecrire un programme qui illustre l’utilisation de l’appel système _exit et des
fonctions exit et atexit plusieurs procédures sont enregistrées pour la fermeture.
Lorsque le programme se termine, ces procédures sont ensuite appelées.
4) Ecrire un programme qui illustre l’utilisation de l’appel système wait : un
processus fils est créé et le processus attend la fin de l’exécution de son fils.
Ci-dessus c’est le résultat du programme numéro 4.