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

TD1 Prog Sys

Transféré par

Mohamed Khelifa
Copyright
© Attribution Non-Commercial (BY-NC)
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)
491 vues2 pages

TD1 Prog Sys

Transféré par

Mohamed Khelifa
Copyright
© Attribution Non-Commercial (BY-NC)
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

École Supérieure de Technologie et d'Informatique 2ème année Licence Informatique

Programmation Système
TD N°1

Exercice 1:
Soit le programme suivant :
int main()
{
int i = 1 ;
while (fork() == 0 && i <= 3)
i++;
printf("%d %d %d\n",i, getpid(), getppid());
return 0;
}

1. Que fait le programme ?


2. Combien de processus sont crées ?
3. Donner l'arbre de parenté de ces processus.

Exercice 2:
Soit le programme suivant :
int main()
{
fork() ; printf("fork 1 \n") ;
fork() ; printf("fork 2 \n") ;
return(0) ;
}

1. Expliquer l’exécution de ce programme.


2. Préciser le nombre de processus générés
3. Combien d’occurrences de chaque type de message « fork i » sont affichés ? Quel est l’ordre
d’apparition des différents types de messages ?
4. Que se passe-t-il si le premier fork() est remplacé par execlp(«who», «who», NULL) ?
5. Que se passe-t-il si le deuxième fork() est remplacé par execlp(«pwd», «pwd», NULL) ?

Exercice 3:
Soit le programme suivant :

#include <stdio.h> 
#include <stdlib.h> 
void main() 

 int i=1; 
    while (i<3) 
    { 
     if (fork()) 
{  printf("1: %d %d \n", getpid(), getppid());
    break; 

else 
      printf("2: %d %d \n", getpid(), getppid());
i++; 
    } 

Expliquer l’exécution de ce programme.
Exercice 4:

En utilisant les pipes, donner un programme permettant de réaliser une communication


unidirectionnelle en anneau entre trois processus fils.

Exercice 5:

Créer deux processus qui traitent une même chaîne en mémoire partagée. Le premier processus
demande à l’utilisateur de donner une chaîne de caractères, puis il (le premier processus) la place en
mémoire partagée. Le deuxième processus prend cette chaîne de la mémoire partagée et l'affiche.

Exercice 6:

En utilisant les sockets, créer un client et un serveur qui communiquent entre eux :
• en mode connecté
• en mode déconnecté

Vous aimerez peut-être aussi