Вы находитесь на странице: 1из 7

L2 PPA

Thorie Systme dExploitation 2011-2012

Examen Thorie Systme dExploitation (Dure 2h)


Janvier 2012

Exercice 1 : (6 pts)
Les processus suivants doivent tre excuts sur un ordinateur ayant un seul CPU : Processus 1 2 3 4 5 Date de dbut dexcution 0 3 5 7 19 Dure suppose dexcution 14 12 7 4 7

1. On supposera que le temps de commutation de contexte est ngligeable. Donner le diagramme de Gantt et le temps moyen de traitement lorsque lalgorithme dordonnancement de processus utilis par le systme dexploitation utilise la mthode dite du plus court temps dexcution restant. 2. Mme question avec la mthode par quantum (on prendra 4 comme dure dun quantum)

Prcisions : Ces processus ne font pas d'entres-sorties et leur priorit ne change pas en cours d'excution. On ne tiendra pas compte du temps de commutation des processus. Les processus sont excutes sur le mme 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 ] ;

Hassine Moungla

L2 PPA

Thorie Systme dExploitation 2011-2012

if ( pipe ( fd1 ) == 1) { perror ( Erreur la cration du tube1 ) ; exit (1) ; } if ( pipe ( fd2 ) == 1) { perror (Erreur la cration du tube2 ) ; exit (1) ; } switch ( fork ( ) ) { case 1 : perror (Erreur la cration 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 lcriture 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 lcriture du message ) ; exit ( 3 ) ; } buf [ cpt ] = \ 0 ; printf ( Lecture du pre : %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] ) ; } }

Hassine Moungla

L2 PPA

Thorie Systme dExploitation 2011-2012

1. Le programme ci-dessus ne s'excute pas correctement. Quel est la raison ? (si plusieurs raisons dtaillez les toutes) 2. Proposer une solution.

Exercice 2 : (5 pts)
1. Lequel des programmes A, B, C suivants cre le plus de processus sur un systme de type Unix (expliquer votre rponse en indiquant le comportement de chaque programme lors de son excution) ? Lequel pourrait causer un crash du systme ? 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)
Lobjectif de cet exercice est deffectuer une paralllisation 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 paralllisation maximale pour lvaluation de la formule y.

Hassine Moungla

L2 PPA
0

Thorie Systme dExploitation 2011-2012


Processus

Unit de temps

Processus

Hassine Moungla

L2 PPA
0 Unit de temps

Thorie Systme dExploitation 2011-2012

Processus

Hassine Moungla

L2 PPA
0 Unit de temps

Thorie Systme dExploitation 2011-2012

Processus

Hassine Moungla

L2 PPA
0 Unit de temps

Thorie Systme dExploitation 2011-2012

Hassine Moungla