Vous êtes sur la page 1sur 7

L2 PPA

Théorie Système d’Exploitation

2011-2012

Examen Théorie Système d’Exploitation (Durée 2h)

Janvier 2012

Exercice 1 : (6 pts)

Les processus suivants doivent être exécutés sur un ordinateur ayant un seul CPU :

Processus

Date de début d’exécution

Durée supposée d’exécution

1

0

14

2

3

12

3

5

7

4

7

4

5

19

7

1. On supposera que le temps de commutation de contexte est négligeable. Donner le diagramme de Gantt et le temps moyen de traitement lorsque l’algorithme d’ordonnancement de processus utilisé par le système d’exploitation utilise la méthode dite du plus court temps d’exécution restant.

2. Même question avec la méthode par quantum (on prendra 4 comme durée d’un quantum)

Précisions : Ces processus ne font pas d'entrées-sorties et leur priorité ne change pas en cours d'exécution. On ne tiendra pas compte du temps de commutation des processus. Les processus sont exécutes sur le même processeur.

Exercice 2 : (4 pts)

Exercice 2

Soit le programme

/*prog tube2 . c */

#include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<sys/wai t. h>

#define LECTURE 0 #define ECRITURE 1

Int main ( )

{

int fd1 [ 2 ] , fd2 [ 2 ] ; int cpt ; char message1 [ ] = ”Hello daddy ! ” ; char message2 [ ] = ”Hello son ! ” ; char buf [ 1 6 ] ;

L2 PPA

Théorie Système d’Exploitation

2011-2012

if ( pipe ( fd1 ) == −1) { perror (” Erreur à la création du tube1 ” ) ; exit (1) ;

}

if ( pipe ( fd2 ) == −1) { perror (”Erreur à la création du tube2 ” ) ; exit (1) ;

}

switch ( fork ( ) ) { case −1 :

perror (”Erreur à la création du fils” ) ; exit ( 2 ) ; break ;

case 0 :

close ( fd2 [ECRITURE] ) ;

if ( ( cpt = read ( fd2 [LECTURE] , buf , sizeof ( buf ) ) ) == −1)

{

perror (” Erreur lors de l ’écriture du message ” ) ;

exit ( 3 ) ;

}

buf [ cpt ] = ’ \ 0 ’ ; printf (” lecture du fils : %s \n” , buf ) ;

if ( write ( fd1 [ECRITURE] , message2 , sizeof (message2 ) ) == −1)

{

perror (” Erreur lors de l’écriture du message ” ) ; exit ( 3 ) ;

}

close ( fd1 [ECRITURE] ) ;

break ; default :

close ( fd1 [ECRITURE] ) ;

if ( ( cpt = read ( fd1 [LECTURE] , buf , s i z e o f ( buf ) ) ) == −1)

{

perror (”Erreur lors de l’écriture du message ” ) ; exit ( 3 ) ;

}

buf [ cpt ] = ’ \ 0 ’ ; printf (” Lecture du père : %s \n” , buf ) ; if ( write ( fd2 [ECRITURE] , message1 , sizeof (message1 ) ) == −1)

{

perror (” Erreur l o r s de l ’ e c r i t u r e du message ” ) ; exit ( 3 ) ;

}

close ( fd1 [LECTURE] ) ; close ( fd2 [ECRITURE] ) ;

}

}

L2 PPA

Théorie Système d’Exploitation

2011-2012

1. Le programme ci-dessus ne s'exécute pas correctement. Quel est la raison ? (si plusieurs

raisons détaillez les toutes) 2. Proposer une solution.

Exercice 2 : (5 pts)

1. Lequel des programmes A, B, C suivants crée le plus de processus sur un système de type Unix

(expliquer votre réponse en indiquant le comportement de chaque programme lors de son exécution) ? Lequel pourrait causer un crash du système ?

Programme A: int main(int argc, char* argv[]) { while(fork()) { } return 0; }

Programme B: int main(int argc, char* argv[]) { while(!fork()) { } return 0; }

Programme C: int main(int argc, char* argv[]) { while(1) {fork();} return 0; }

Exercice 3 : (5 pts)

L’objectif de cet exercice est d’effectuer une parallélisation maximale de la formule suivante :

y = 5 * [(a + b - f)/(c + d) + (e * f)] + [(a + b) * (c + d)]

1. Proposez un programme en C qui permet une parallélisation maximale pour l’évaluation de la

formule y.

L2 PPA Théorie Système d’Exploitation 2011-2012 Processus Processus Unité de Hassine Moungla temps0
L2 PPA
Théorie Système d’Exploitation
2011-2012
Processus
Processus
Unité de
Hassine Moungla
temps0
L2 PPA Théorie Système d’Exploitation 2011-2012 Processus Processus Unité de Hassine Moungla temps0
L2 PPA Théorie Système d’Exploitation 2011-2012 Processus Unité de 0 Hassine Moungla temps
L2 PPA
Théorie Système d’Exploitation
2011-2012
Processus
Unité de
0
Hassine Moungla
temps
L2 PPA Théorie Système d’Exploitation 2011-2012 Processus Unité de 0 Hassine Moungla temps
L2 PPA Théorie Système d’Exploitation 2011-2012 Processus Unité de Hassine Moungla 0 temps
L2 PPA
Théorie Système d’Exploitation
2011-2012
Processus
Unité de
Hassine Moungla
0
temps
L2 PPA Théorie Système d’Exploitation 2011-2012 Processus Unité de Hassine Moungla 0 temps
L2 PPA Théorie Système d’Exploitation 2011-2012 0 Unité de temps
L2 PPA
Théorie Système d’Exploitation
2011-2012
0
Unité de
temps