Vous êtes sur la page 1sur 2

FIT 3 [INF322] 2011/12

Systmes dexploitation
Vincent Labatut
Universit Galatasaray

TP 2

cration de processus

1 Remarques gnrales
Ces remarques sont valables pour tous les TP dans lesquels on manipule plusieurs processus. 1) chaque fois quun processus affiche du texte, il doit faire prcder ce texte de son pid, pour que vous sachiez quel processus a affich le texte. exemple daffichage :
10651>message du processus

2) pour chaque processus cr, vous devez lidentifier, c'est--dire que le processus doit afficher qui il est (pre, fils, etc.) ds quil est cr. exemple :
10652>je suis le fils de 10651

3) pour faciliter le dbogage de vos programmes, vous devez accompagner chaque action importante effectue par un processus de laffichage de cette action. Par exemple, si votre processus vient de crer un fils, vous devez afficher : exemple :
10651>jai cr un fils de pid 10652

4) toujours pour faciliter le dbogage, vous devez tester la valeur retourne par chaque fonction, de manire dtecter les erreurs, et ventuellement afficher un message derreur. exemple :
if ((pid = fork()) < 0) { fprintf(stderr,"%d>fork:%s.\n",getpid(),strerror(errno)); exit(EXIT_FAILURE); }

2 Exercices
Exercice 1
En utilisant fork et getpid, crivez un programme C qui cre un seul processus fils. Chaque processus doit sidentifier et indiquer sa terminaison. On peut par exemple obtenir laffichage suivant :
1234>je suis le pre 1234>jai cr un fils de pid 1235 1235>je suis le fils de 1234 1235>je vais me terminer 1234>je vais me terminer

Exercice 2
En utilisant une boucle for, crivez un programme C qui cre larborescence de processus suivante :

Systmes dexploitation

FIT 3 [INF322] 2011/12

TP 2 1/2

cration de processus

Pre

Fils 1

Fils 2

Fils 3

Fils 1.1 Chaque processus doit afficher le nom qui lui est associ sur la figure. Exemple :
4321>je suis le pre 4321>jai cr un fils de pid 4322 4322>je suis le fils Fils1 de 4321 4322>jai cr un fils de pid 4323 4323>je suis le fils Fils1.1 de 4322 4323>je vais me terminer 4322>je vais me terminer 4321>jai cr un fils de pid 4324 4324>je suis le fils Fils2 de 4321 4324>je vais me terminer 4321>jai cr un fils de pid 4325 4325>je suis le fils Fils3 de 4321 4325>je vais me terminer 4321>je vais me terminer

Exercice 3
crivez un programme C qui cre deux processus : lun des deux affiche les nombres de 0 49 et lautre de 50 99.

Exercice 4
crivez un programme C qui : demande lutilisateur le nombre de fils crer cre ces fils les uns aprs les autres chaque fils doit sidentifier (afficher lcran son pid et celui de son pre), puis se terminer le processus pre doit attendre la fin de chacun de ses fils grce la fonction wait, en affichant le pid de chaque fils qui se termine.

Systmes dexploitation

FIT 3 [INF322] 2011/12

TP 2 2/2