SlideShare une entreprise Scribd logo
1  sur  3
Télécharger pour lire hors ligne
©CNAM, Département d'Informatique, ED Système & Réseaux Informatiques B
1
Corrigé ED 2
.
Exercice 1
Solution
# include <unistd.h>
# include <stdio.h>
int main() {
int pid,i;
for (i=0; i<3;i++) {
pid = fork();
if (pid < 0 )
{
/* code si échec : printf ("le fork ( ) a échoué n") */
}
else if (pid == 0)
{
printf("(i : %d) je suis le processus : %d, mon pere est : %dn", i,
getpid(),getppid()) ;
}
else
{
printf("(i : %d) je suis le processus : %d, mon pere est : %dn", i,
getpid(),getppid()) ; }
}
return 0 ;
}
Combien de processus sont créés par le programme ?
Le processus de départ (PID1) va exécuter 3 fork donc créer 3 processus (PID2, PID3, PID4).
Chacun de ces 3 fils possède le même segment de code que le père, et va donc s'exécuter là où
PID1 en était :
• PID2 va donc exécuter 2 fork (PID5 et PID6)
• PID5 va reprendre là où en était PID2 et exécuter 1 fork (PID7)
• PID6 créé par le 3ème
fork ne va rien faire
• PID3 va exécuter 1 fork (PID8)
• PID8 créé par le 3ème
fork ne va rien faire
• En tout, il y aura 8 processus en parallèle.
Exercice 2
1. Le processus père crée 3 processus fils p1, p3 et p4. Le processus p1 crée un processus fils
p2. Contrairement aux autres processus, le code du processus p2 ne se termine pas par une
2
primitive exit() qui terminerait le processus fils et retournerait un code au processus père p1.
Si bien que p2 poursuit son exécution en créant un processus fils p'3 et p'4.
L'arborescence des processus est la suivante :
2. Dans cette solution, on suppose que les processus sont exécutés dans l'ordre de leur
création. Dans la pratique, le dernier processus créé peut obtenir le processeur avant les
processus créés avant lui.
père
p1: a p3: b
p4: c
p2
p'3: b
p'4: c
père
création de p1,
p3 et p4
p1
p3
p4
endormi (5s)
exécution de a (2s)
exécution de b (3s)
zombi
waitpid
prise en
compte de la
fin de p1
prise en
compte de la
fin de p3
c (1s)
attend le processeur
attend le processeur
prise en
compte de la
fin de p4
p2 attend le processeur
création de p'3
et p'4
endormi (5s)
exécution de b (3s)
p'3
p'4
c (1s)
zombi
waitpid
©CNAM, Département d'Informatique, ED Système & Réseaux Informatiques B
3
L’objectif de la question 2 n’est pas de montrer comment on ordonnance les processus mais
de mettre en évidence les différents états des processus

Contenu connexe

Similaire à Ed2 corrige 2

Similaire à Ed2 corrige 2 (19)

Expose linux gestion des processus
Expose linux  gestion des processusExpose linux  gestion des processus
Expose linux gestion des processus
 
Gestion des processus
Gestion des processusGestion des processus
Gestion des processus
 
Développement informatique : Programmation concurrente
Développement informatique : Programmation concurrenteDéveloppement informatique : Programmation concurrente
Développement informatique : Programmation concurrente
 
ProcessusReseaux.pdf
ProcessusReseaux.pdfProcessusReseaux.pdf
ProcessusReseaux.pdf
 
Formation python
Formation pythonFormation python
Formation python
 
Développement informatique : Programmation réseau
Développement informatique : Programmation réseauDéveloppement informatique : Programmation réseau
Développement informatique : Programmation réseau
 
Forensics: Banking Troubles
Forensics: Banking TroublesForensics: Banking Troubles
Forensics: Banking Troubles
 
Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++
 
Formation python
Formation pythonFormation python
Formation python
 
SdE 4: Processus
SdE 4: ProcessusSdE 4: Processus
SdE 4: Processus
 
Motherboard
MotherboardMotherboard
Motherboard
 
Python avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiersPython avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiers
 
Objets connectés WLAN et ESP32 ou WPAN et bananapi et nrf24-l01+
Objets connectés WLAN et ESP32  ou WPAN et bananapi et nrf24-l01+Objets connectés WLAN et ESP32  ou WPAN et bananapi et nrf24-l01+
Objets connectés WLAN et ESP32 ou WPAN et bananapi et nrf24-l01+
 
Principes de fonctionnement unix
Principes de fonctionnement unixPrincipes de fonctionnement unix
Principes de fonctionnement unix
 
Technologies du Web - Architectures matérielles et logicielles
Technologies du Web - Architectures matérielles et logiciellesTechnologies du Web - Architectures matérielles et logicielles
Technologies du Web - Architectures matérielles et logicielles
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...
 
The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017
The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017
The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017
 
Python + ansible = ♥
Python + ansible = ♥Python + ansible = ♥
Python + ansible = ♥
 
Chapitre 4 Linux
Chapitre 4 LinuxChapitre 4 Linux
Chapitre 4 Linux
 

Ed2 corrige 2

  • 1. ©CNAM, Département d'Informatique, ED Système & Réseaux Informatiques B 1 Corrigé ED 2 . Exercice 1 Solution # include <unistd.h> # include <stdio.h> int main() { int pid,i; for (i=0; i<3;i++) { pid = fork(); if (pid < 0 ) { /* code si échec : printf ("le fork ( ) a échoué n") */ } else if (pid == 0) { printf("(i : %d) je suis le processus : %d, mon pere est : %dn", i, getpid(),getppid()) ; } else { printf("(i : %d) je suis le processus : %d, mon pere est : %dn", i, getpid(),getppid()) ; } } return 0 ; } Combien de processus sont créés par le programme ? Le processus de départ (PID1) va exécuter 3 fork donc créer 3 processus (PID2, PID3, PID4). Chacun de ces 3 fils possède le même segment de code que le père, et va donc s'exécuter là où PID1 en était : • PID2 va donc exécuter 2 fork (PID5 et PID6) • PID5 va reprendre là où en était PID2 et exécuter 1 fork (PID7) • PID6 créé par le 3ème fork ne va rien faire • PID3 va exécuter 1 fork (PID8) • PID8 créé par le 3ème fork ne va rien faire • En tout, il y aura 8 processus en parallèle. Exercice 2 1. Le processus père crée 3 processus fils p1, p3 et p4. Le processus p1 crée un processus fils p2. Contrairement aux autres processus, le code du processus p2 ne se termine pas par une
  • 2. 2 primitive exit() qui terminerait le processus fils et retournerait un code au processus père p1. Si bien que p2 poursuit son exécution en créant un processus fils p'3 et p'4. L'arborescence des processus est la suivante : 2. Dans cette solution, on suppose que les processus sont exécutés dans l'ordre de leur création. Dans la pratique, le dernier processus créé peut obtenir le processeur avant les processus créés avant lui. père p1: a p3: b p4: c p2 p'3: b p'4: c père création de p1, p3 et p4 p1 p3 p4 endormi (5s) exécution de a (2s) exécution de b (3s) zombi waitpid prise en compte de la fin de p1 prise en compte de la fin de p3 c (1s) attend le processeur attend le processeur prise en compte de la fin de p4 p2 attend le processeur création de p'3 et p'4 endormi (5s) exécution de b (3s) p'3 p'4 c (1s) zombi waitpid
  • 3. ©CNAM, Département d'Informatique, ED Système & Réseaux Informatiques B 3 L’objectif de la question 2 n’est pas de montrer comment on ordonnance les processus mais de mettre en évidence les différents états des processus