• Aucun résultat trouvé

Aucundocumentn’estautoris´e Mercredi11Mars2015—9h-12h ContrˆoleSyst`emesd’exploitation,R´eseaux

N/A
N/A
Protected

Academic year: 2022

Partager "Aucundocumentn’estautoris´e Mercredi11Mars2015—9h-12h ContrˆoleSyst`emesd’exploitation,R´eseaux"

Copied!
3
0
0

Texte intégral

(1)

Institut Galil´ee Syst`emes d’exploitation, R´eseaux

Ann´ee 2014-2015 Licence 2

Contrˆ ole Syst` emes d’exploitation, R´ eseaux

Mercredi 11 Mars 2015 — 9h - 12h Aucun document n’est autoris´ e

Exercice 1 (3 = 1,5 + 1,5)

1. Les processus suivants doivent ˆetre ex´ecut´es sur un ordinateur ayant un seul CPU : Processus Date de d´ebut d’ex´ecution Dur´ee suppos´ee d’ex´ecution

A 0 2

B 1 7

C 3 3

D 5 2

E 6 2

On supposera que le temps de commutation de contexte est n´egligeable.

Donner le diagramme de Gantt et le temps moyen de traitement lorsque l’algorithme d’ordonnancement de processus utilis´e par le syst`eme d’exploitation utilise la m´ethode premier arriv´e premier servi (FIFO).

2. Mˆeme question avec la m´ethode dite tourniquet (Round Robin). On prendra comme quantum q= 2.

Exercice 2 (4,5 = 2 + 1 + 1,5)

L’ordonnancement EDF (Earliest Deadline First) est un algorithme d’ordonnancement temps r´eel de processus. A chaque fois qu’un processus demande du temps CPU, il doit pr´eciser une ´ech´eance (une date limite >0 de d´ebut d’ex´ecution). Le processus doit obtenir du temps CPU avant d’atteindre l’´ech´eance. L’ordonnanceur vise `a satisfaire les demandes avant leurs ´ech´eances. Pour cela, il g`ere une liste des processus prˆets, class´es par ordre croissant des

´

ech´eances. L’algorithme ex´ecute le premier processus de la liste qui correspond `a celui dont l’´ech´eance est la plus proche. Lorsqu’un processus devient prˆet ou est cr´e´e, le syst`eme v´erifie si son ´ech´eance est strictement inf´erieure `a celle du processus en cours d’ex´ecution. Si tel est le cas, le nouveau processus pr´eempte le processus en cours. Chaque processus a normalement le comportement cyclique suivant: il est d’abord prˆet, puis en ex´ecution, puis en attente (donc pas prˆet), puis redevient prˆet, puis en ex´ecution, puis en attente, etc.

1. Consid´erez trois processus A, B et C suivants :

• A devient prˆet toutes les 30ms et son temps d’ex´ecution `a chaque fois est de 10 ms.

• B devient prˆet toutes les 40ms et son temps d’ex´ecution `a chaque fois est de 15 ms.

• C devient prˆet toutes les 50ms et son temps d’ex´ecution `a chaque fois est de 5 ms.

Supposez qu’`a la date t0, les processus sont prˆets et que l’´ech´eance de chaque demande est `a t0 la date de la prochaine demande (donc au d´epart l’´ech´eance est `at0+ 30 pour A,t0+ 40 pour B,t0+ 50 pour C, puis ensuite t0+ 60 pour A, etc.). Donnez le diagramme de Gantt det0 `at0+ 150ms.

2. Calculez le temps moyen de traitement entret0 ett0+ 150ms.

3. Peut-on avoir des cas de non respect d’´ech´eances ? Justifiez votre r´eponse.

Exercice 3 (4 = 2+1+1)

Soit les fonctions syst`eme suivantes:

• WIFEXITED (status)renvoie vrai si le statut provient d’un processus fils qui s’est termin´e normalement;

• WEXITSTATUS (status) (siWIFEXITED (status)renvoie vrai) renvoie le code de retour du processus fils pass´e

`

aexit()ou la valeur retourn´ee par la fonctionmain().

On consid`ere le programme suivant:

1

(2)

1#include <s t d l i b . h>

2#include <u n i s t d . h>

3#include <s t d i o . h>

4#include <w a i t . h>

5

6 char n ;

7

8 i n t main (void) {

9 p i d t p i d ;

10 i n t s t a t u s ;

11 i f( ( p i d = f o r k ( ) ) == −1 ) e x i t ( EXIT FAILURE ) ;

12 i f( p i d != 0 ){

13 n++;

14 w a i t (& s t a t u s ) ;

15 i f(WIFEXITED( s t a t u s ) ) n+=WEXITSTATUS( s t a t u s ) ;

16 } e l s e n−−;

17 p r i n t f ( ”[%d ] : v a l e u r de n e s t %d\n” , g e t p i d () ,−n ) ;

18 e x i t ( n ) ;

19 }

1. D´etailler (ligne par ligne) le comportement de ce programme.

2. On suppose que : le PID du p`ere est 2000, le processus fils a comme PID 2001 et se termine de fa¸con normale.

Que va-t-il ˆetre affich´e `a l’´ecran?

3. Sous les mˆemes hypoth`eses, dire si le programme compile, et si oui ce qui est affich´e `a l’´ecran si on d´eplace la ligne 6 respectivement `a la ligne 12 et `a la ligne 15. Justifiez vos r´eponses.

Exercice 4 (3)

On consid`ere le programme suivant :

1#include <s t d i o . h>

2#include <u n i s t d . h>

3#include <w a i t . h>

4

5 i n t main (void) {

6 i f( f o r k ( ) ) w a i t (NULL ) ;

7 p r i n t f ( ”[%d ] f i n i \n” , g e t p i d ( ) ) ;

8 return 0 ;

9 }

En sachant qu’`a la terminaison d’un fils le signalSIGCHLDest envoy´e au p`ere, r´e´ecrire ce programme sans utiliser l’appel syst`emewait. Par exemple, en utilisant l’appel syst`emeint pause(void)(pauseendort le processus jusqu’`a ce qu’un signal soit re¸cu), on pourra ´ecrire une fonctionvoid wait_simple(int) qui met le processus dans l’´etat endormi jusqu’`a ce qu’un signalSIGCHLDsoit re¸cu.

Exercice 5 (5,5 = 1 + 1 + 0,5 + 1 + 2)

1. Donner un exemple simple de syst`eme de tˆache ne pouvant pas ˆetre d´ecrit avec les primitives parbegin/parend.

On consid`ere pour la suite de cet exercice le programme utilisant les primitives parbegin/parend donn´e ci-dessous.

2. Donner le graphe de flot et le graphe de pr´ec´edence en pr´ecisant les tˆaches que vous consid´erez (une tˆache est une instruction de calcul).

3. Indiquer les domaines de lecture et ´ecriture des diff´erentes tˆaches.

4. Donner le programme correspondant en utilisant les primitives de Conway fork/join/quit.

5. Donner le programme correspondant en C en utilisant des threads.

begin parbegin

lire(a) | lire(b)

2

(3)

parend ; parbegin

c := a*b | begin

d := a*a ; e := d*a end

parend ; e := c + d + e end

(Annexe) Fonctions et en-tˆete utiles:

#include <s t d i o . h>

#include <u n i s t d . h>

#include <s y s / t y p e s . h>

#include <s i g n a l . h>

#include <s y s / w a i t . h>

#include <p t h r e a d . h>

p i d t g e t p i d (void) ; p i d t g e t p p i d (void) ; p i d t f o r k (void) ;

i n t p t h r e a d c r e a t e ( p t h r e a d t ∗t h r e a d , p t h r e a d a t t r t ∗a t t r ,

void ∗(∗s t a r t r o u t i n e ) (void ∗) , void ∗a r g ) ;

void p t h r e a d e x i t (void ∗v a l u e p t r ) ;

i n t p t h r e a d j o i n ( p t h r e a d t t h r e a d , void ∗∗v a l u e p t r ) ; void (∗s i g n a l ( numsig , void (∗f o n c t i o n ) (i n t) ) ) (i n t) ; i n t k i l l ( p i d t pid , i n t s i g ) ;

p i d t w a i t (i n t ∗s t a t u s ) ;

3

Références

Documents relatifs

• Le programme cr´ ee un thread qui doit ex´ ecuter la fonction void ∗accueil(void∗s) et 10 threads qui ex´ ecutent la fonction void ∗executer(void ∗s) , puis attend que tous

Donner les diagrammes de Gantt et les temps de traitement moyen obtenus ` a l’aide des algorithmes d’ordonnancement FIFO (Premier arriv´ e - Premier servi), PCTER (plus court

– Le programme cr´ ee un thread qui doit ex´ ecuter la fonction void *accueil(void*s) et 10 threads qui ex´ ecutent la fonction void *executer(void *s) , puis attend que tous

Donner le programme correspondant de parall´ elisme maximal en utilisant les primitives de Conway

Donner le diagramme de Gantt (processus en ex´ ecution, liste des processus en attente ` a chaque instant) et le temps moyen de traitement lorsque l’algorithme d’ordonnancement

On d´ efinit le temps de latence l d’un processus comme la dur´ ee maximale entre le moment o` u un processus finit un quantum d’ex´ ecution et le moment o` u ce mˆ eme processus

• Dans quel ordre doit-on lancer l’ex´ ecution de ces programmes pour avoir une ex´ ecution correcte.. D´ ecrivez graphiquement le processus

La transmission d´ emarre, nous repr´ esentons dans la figure 1 le chronogramme obtenu : compl´ etez les param` etres associ´ es ` a chaque segment (Num´ eros de s´ equence