Correction série N° 1

Operating Systems, Resource Management · exam

Browse all gestion et économie documents

2LFIG

I)

2014-2015

Correction série N° 1

a- Le problème est que l’imprimante ne peut pas être utilisée par 2 Px en même temps.

Cela impliquera un entrelacement des lignes d’origines divers sur le papier ce qui le

rend inexploitable.

b- Le problème est causé par le partage du fichier qui est une ressource partageable

exclusivement. La ressource est donc le fichier qui est une ressource à un seul point

d’accès.

c- La ressource sera protégée par un sémaphore :

(s, fs,1).

TRT1 :

Produire des données

ALLOUER (s)

Imprimer les données

LIBERER (s)

Aller à TRT1

II)

a- Les ressources sont les N imprimantes. Ces imprimantes constituent une seule

ressource à N points d’accès (car elles sont banalisées).

Le sémaphore de partage des imprimantes : (s, fs, N).

Ce sémaphore permet uniquement de savoir si au moins une imprimante est libre.

Dans le cas ou il y a une imprimante de libre, le Px doit connaitre laquelle parmi les N.

Ce ci nécessite une structure de

tableau pour gérer

l’état des

imprimantes.

Advertisement

T[1..N] 0 (au démarrage toutes les imprimantes sont libres).

Ce tableau est utilisé par l’ensemble des Px, par conséquent il devient une ressource qui ne

peut être que critique. Il faut la protéger par un sémaphore à 1 point d’accès : (p,fp,1)

1

2014-2015

2LFIG

TRT1 :

Produire des données

ALLOUER (s)

ALLOUER (p)

For ip=1 to N do

{

}

If (T[ip] = 0) Then

{

}

T[ip] =1

break

LIBERER (p)

Imprimer les données sur ip

/ Remise de l’imprimante ip à l’état libre /

ALLOUER (p)

T[ip] =0

LIBERER (p)

LIBERER (s)

Aller à TRT1

III)

a- La ressource partagée est le fichier F.

Advertisement

Son partage n’est pas statique : Il est exclusif entre le Px R et les Px L et à une infinité de

points d’accès pour les Px L entre eux.

Un sémaphore (w, fw,1) est nécessaire pour protéger F entre le Px R et les Px L.

Les Px L ne doivent pas se bloquer lorsque le Px R n’est pas entrain d’écrire. L’idée est :

Le premier Px L doit tester si Px R est entrain d’écrire. Si c’est le cas il doit attendre et

bloquer les Px L derrière. Si le fichier est libre, il doit bloquer le Px R et ne pas bloquer les Px

L derrière.

Le dernier Px L doit libérer le fichier afin que le Px R soit débloqué.

2

2LFIG

2014-2015

Ce ci nécessite un compteur du nombre de Px L en cours d’utilisation du fichier. Ce compteur

(NB_L 0) devient une ressource commune à 1 seul point d’accès (p, fp,1) .

Cas 1 : les Px L prioritaires

Processus R

TRT_R :

Produire des données

ALLOUER (s)

Ecrire dans le fichier F

LIBERER (s)

Aller à TRT_R

Processus L

TRT_L :

ALLOUER (p)

NB_L++

If (NB_L = 1 ) then

{

}

Advertisement

ALLOUER (s)

LIBERER (p)

Lire les données

ALLOUER (p)

NB_L - -

If (NB_L = 0 ) then

{

}

LIBERER (s)

LIBERER (p)

Traiter les données

Aller à TRT_L

3

2LFIG

2014-2015

Cas 2 : partage équitable

Le partage équitable nécessite un sémaphore supplémentaire qui permet de bloquer les Px L

lorsque le Px R est entrain s’attendre le fichier :

(w, fw, 1).

Processus R

TRT_R :

Produire des données

ALLOUER (w)

ALLOUER (s)

Ecrire dans le fichier F

LIBERER (w)

LIBERER (s)

Aller à TRT_R

Advertisement

Processus L

TRT_L :

ALLOUER (w)

ALLOUER (p)

NB_L++

If (NB_L = 1 ) then

{

}

ALLOUER (s)

LIBERER (p)

LIBERER (w)

Lire les données

ALLOUER (p)

NB_L--

If (NB_L = 0 ) then

{

}

LIBERER (s)

4

2LFIG

2014-2015

LIBERER (p)

Traiter les données

Aller à TRT_L

5