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

Processus sous UNIX - Exercice 2

Le document contient plusieurs exercices sur les processus sous Unix. Les exercices portent sur les appels système fork et pthread_create, sur la gestion des processus orphelins, et sur la création d'arbres de processus avec fork.

Transféré par

yohace7407
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)
100 vues2 pages

Processus sous UNIX - Exercice 2

Le document contient plusieurs exercices sur les processus sous Unix. Les exercices portent sur les appels système fork et pthread_create, sur la gestion des processus orphelins, et sur la création d'arbres de processus avec fork.

Transféré par

yohace7407
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

Université Dr.

Yahia Fares - Medea- Module: Système d'Exploitation 1


Faculté des Sciences

Série n°2 (Processus sous UNix)

Exercice N°1:

1. Dans le système UNIX, les véritables appels système sont effectués à partir:
d’un programme utilisateur
d’une commande shell
d’une procédure de la bibliothèque standard
Sont-ils exécutés en mode superviseur ou en mode utilisateur ?

2. Dans le système UNIX, est-ce que tout processus a un père ? Que se passe-t-il
lorsqu’un processus devient orphelin (mort de son père) ? Quand est-ce un processus
passe à l’état Zambie ?
3. Pour lancer en parallèle plusieurs traitements d’une même application, vous avez le
choix entre les appels système fork( ) et pthread_create( ). Laquelle des deux
possibilités choisir ? pourquoi ?
4. Citez trois événements qui provoquent l’interruption de l’exécution d’un processus
en cours, dans le système UNIX.

Exercice N°2:

Afficher les valeurs de i et j (pour le père et pour le fils) a la fin de chacun des programmes
suivants:

P1 P2
int i=2 ; int i=4, j=10;
int main ( ) int main ( )
{ {
j=10; int p ;
int p ; p = fork();
while(i-- && p = fork()) if(p<0) exit(1) ;
if(p<0) exit(1) ; j += 2;
j += 2; if (p == 0)
if (p == 0) {
{ i *= 3;
i *= 3; j *= 3;
j *= 3; }
} else
else {
{ i *= 2;
i *= 2; j *= 2;
j *= 2; }
} printf(“i=%d, j=%d”, i,j) ;
printf(« i=%d, j=%d », i,j) ; return 0 ;
return 0 ; }
}

1
Exercice N°3:

Combien de processus engendre l’´evaluation de la commande C:

fork() && ( fork() || fork() ) ;

2. Dessiner l’arbre généalogique des processus engendrés par cette ligne.

Exercice N°4:

Considérons le programme suivant :

#include<unistd.h>

main( )

fork();

fork();

fork();

1. Sans faire l'exécution, donner le nombre de processus générés et dessiner l’arbre des
processus engendrés.

2. Remplacez le premier appel à « fork() » par un appel à « execl() » qui exécute le


programme lui même.

Que se passe-t-il ?

3. Remplacez le deuxième appel à « fork() » par un appel à « execl() » qui exécute le


programme lui même. Que se passe-t-il maintenant ?

Vous aimerez peut-être aussi