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

TD 2 Sea

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

Université Constantine2- Abdelhamid Mehri

Faculté NTIC Département TLSI


Master 1 SITW Matière : SEA
2020/2021
TD n° 2
Exercice 1
En supposant que les seules opérations indivisibles dont on dispose soient l'affectation et le test

d'une variable, essayer de programmer l'exclusion mutuelle pour deux processus dans les cas

suivants :

- les deux processus partagent une variable booléenne occupee qui sera vraie si un processus
est en section critique, et fausse sinon,
- les deux processus partagent une variable entière tour dont la valeur est égale au numéro
du processus autorisé à s'engager en section critique,

Discuter les solutions proposées.

Exercice 2
On utilise une variable booléenne C(i) attachée à chaque processus Pi (i = 0, 1).
 C(i) = vrai si Pi est dans sa section critique ou demande à y entrer
 C(i) = faux si Pi est hors de sa section critique
 Pi peut lire et modifier C(i) et peut seulement lire C(j) si j est différent de i.
1. Écrire le pseudocode du processus Pi.
2. Discuter la solution proposée.

Exercice 3
Montrer que les procédures suivantes relatives à l’entrée et à la sortie d’une section

critique assurent bien l'exclusion mutuelle entre 2 processus :

int tour, interesse[2];


void entrer_section_critique(int prcs){
int autre = 1 - prcs;
interesse[prcs] = 1;
tour = prcs;
while (tour == prcs && interesse(autre));
return;
}
void sortir_section_critique(int prcs){
interesse[prcs] = 0;
return;
}
Exercice 4
Sur un ordinateur, on dispose d'une instruction matérielle "Echanger" qui permet
d'échanger de manière indivisible le contenu de deux variables. Son code est le suivant :
Procédure Echanger (var a, b : Logique)
Temp : Logique
Début
Temp ← a
a ← b
b ← Temp
Fin.
a- Montrer comment on peut réaliser l'exclusion mutuelle en utilisant cette instruction.
b- Quel est l'inconvénient de ce type de solutions ?

Vous aimerez peut-être aussi