Computing">
Nothing Special   »   [go: up one dir, main page]

EMD SE 2021 Solution

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 4

Examen final SE II (Partie Cours : solution)

N.B. : Documents et téléphone portable interdits Nom & Prénom : …………………………………

Questions QCM : ( 5 pts)


Cocher la (ou les) bonne(s) réponse(s)
NB. : Une mauvaise case cochée implique la neutralisation de toute la réponse.

1)- Juste après un fork, quel(s) élément(s) suivant(s) peuvent différer entre le processus père et le processus fils ?
□ les fichiers ouverts
□ le programme exécuté
█ le PID
█ les variables locales
2) Après un fork(), les variables du processus père peuvent être modifiées par le processus fils.
□V
█F
3)- Le partage de ressources ne pose aucun problème dans un système multiprogrammé en temps partagé.
□V
□F
4)- Si deux threads font x++ sur une variable partagée, alors x est incrémenté de
□ 1
□ 2
█ ça dépend
5)- L'expression "exclusion mutuelle" signifie qu'un processus peut au besoin enlever une ressource à un autre
processus pour garantir qu'un seul processus utilise la ressource.
□V
█F
6) La primitive P(S) d’un sémaphore S :
□V █ F incrémente la valeur du sémaphore.
□V █ F doit être appelée uniquement dans une section critique.
□V □ F est typiquement implémentée par un appel système.
7)- Dans laquelle de ces situations un processus peut-il se bloquer ?
□ lorsqu'il crée un sémaphore
□ lorsqu'il exécute P(S) sur un sémaphore S > 0 ;
█ lorsqu'il exécute P(S) sur un sémaphore sur lequel un autre processus est en attente
█ lorsqu'il exécute P(S) sur un sémaphore S = 0 ;
8)- Un aspect essentiel d'un moniteur est que les procédures d'un moniteur sont exécutées en exclusion mutuelle, c-à-d,
une seule procédure s'exécute à la fois dans le moniteur.
█V
□F
9)- une opération "signal()" sur une condition dans un moniteur est sans aucun effet s'il n'y a pas un processus déjà
suspendu sur une opération "wait()" sur la même condition.
█V
□F
10)-Dans le problème des lecteurs-rédacteurs :
█ deux lecteurs peuvent travailler en même temps
□ deux rédacteurs peuvent travailler en même temps
□ un lecteur et un rédacteur peuvent travailler en même temps
□ un seul processus peut travailler à un moment donné
Questions Cours : ( 5 pts)

Question 1 (1 pts) :
Si on exécute le programme ci-dessous, combien de fois la lettre A sera-t-elle affichée ?

Void main(void) { Printf(“A”); Fork(); Fork(); Fork(); Printf(“A”); }

La lettre A sera affichée 9 fois en tout.

Question 2 (1 pts) :
Montrez comment réaliser l’exclusion mutuelle avec deux processus en utilisant les sémaphores.

S : Semaphore init 1; P1 P2
P(S) P(S)
<S.C> <S.C>
V(S) V(S)

Question 2 (1 pts):
Expliquez ce qui peut arriver si la file d’attente d’un sémaphore est gérée selon la discipline LIFO (last in first
out).

Si la file d’attente des processus d’un sémaphore est gérée selon la politique LIFO, on risque d’avoir un problème de
famine car le premier processus qui entre dans la file peut-être retardé et possible qu’il n sort jamais de cette file si
on a un flux régulier d’entréé-sortie dans la file.

Question 3 (2 pts):
Présentez brièvement le principe de la méthode "détection-guérison" des interblocages.

Le principe de la méthode consiste à lancer périodiquement un algorithme de détection d'interblocage. Lorsque


l'interblocage est détecté, on applique une des méthodes de guérison :
a)- manuelle
b)- arrêt de processus
c) ou réquisition de ressources.
Exercice 1 :

1)-

2)- On a besoin de 5 sémaphores de synchronisation c’est-à-dire initialisés à 0.


3)- l’algorithme en utilisant ParBegin/ParEnd :
Debut
ParBegin
{T1; V(S1)}
{T2; V(S1)}
{T3; V(S3)}
{P(S1); P(S1); T4; V(S3)}
{P(S2); T5; V(S3)}
{P(S3); P(S3); T6; V(S4); V(S5)}
{P(S4); T7}
{P(S5); T8}
PaeEnd;
Fin.
Exercice 2:
1)- Le nombre de ressources du système est :
A B C D
3 14 12 12

2)- La matrice Need = Max – allocation


A B C D
P0 0 0 0 0
P1 0 7 5 0
P2 1 0 0 2
P3 0 0 2 0
P4 0 6 4 2

3)- Pour Déterminer si le système est dans un état sain il suffit d’appliquer l’algorithme de détermination d’état sain vu
au cours.

P0 P1 P2 P3 P4
V V V V V

█ P0 : (0, 0, 0, 0) <= (1, 5, 2, 0) Oui alors : (1, 5, 2, 0) + (0, 0, 1, 2) = (1, 5, 3, 2)


P1 : (0, 7, 5, 0) <= (1, 5, 3, 2) Non
█ P2 : (1, 0, 0, 2) <= (1, 5, 3, 2) Oui alors : (1 , 5, 3, 2) + (1, 3, 5, 4) = (2, 8, 8, 6)
█ P3 : (0, 0, 2, 0) <= (2, 8, 8, 6) Oui alors : (2, 8, 8, 6) + (0, 6, 3, 2) = (2, 14, 11, 8)
█ P4 : (0, 6, 4, 2) <= (2, 14, 11, 8) oui alors : (2, 14, 11, 8) + (0, 0, 1, 4) = (2, 14 , 12, 12)
█ P1 : (0, 7, 5, 0) <= (2, 14, 12, 12) Oui alors : (2, 14, 12, 12) + (1, 0, 0, 0) = (3, 14, 14, 12)

La séquence <P0, P2, P3, P4, P1> est une séquence saine, donc le système est dans un état sain.

4)-Le processus P1 émet la requête = (0, 4, 2, 0) On a :


a)- requête < Need1 car (0, 4, 2, 0) < (0, 7, 5, 0)
b)- requête < disponible car (0, 4, 2, 0) <(1, 5 ,2 ,0)

Alors m-à-j des structures de données :


Disponible = (1, 5, 2, 0) – (0, 4, 2, 0) = (1, 1, 0, 0)
Need1 = (0 ,7, 5, 0) – (0, 4, 2, 0) = (0, 3, 3, 0)
Allocation1 = (1, 0, 0, 0) + (0, 4, 2,0) = (1, 4, 2, 0)
Appliquons l’algorithme de détermination d’état sain comme précédemment,
on trouve la séquence saine <P0, P2, P4, P1>
Donc Oui, la requête peut être accordée.

Vous aimerez peut-être aussi