Documente Academic
Documente Profesional
Documente Cultură
11/20/16
11/20/16
Reguli:
la producere eveniment intern
cl este incrementat
valoarea sa este asociata evenimentului ca amprenta de timp
la transmitere mesaj
incrementeaz cl al procesului transmitator cu 1
actualizeaz amprenta de timp a mesajului tt = cl;
la primire mesaj cu amprenta de timp tt
actualizeaz ceasul receptorului cl = maxim (cl, tt) + 1
11/20/16
opsem[i]
Ajutor[i]
11/20/16
Utiliz[j]
Ajutor[j]
}
11/20/16
/*ceas logic*/
/*timestamp numar intreg*/
/*operatia P*/
/*asteapta permisiune*/
/*operatia V*/
11/20/16
while (true) {
receive opsem[i](transm, k, ts);
cl = max(cl, ts) + 1;
if (k==P or k==V) {
insereaza (transm, k, ts) in locul corespunzator in qm;
cl = cl+1; broadcast opsem(i, ack, cl);}
/*confirmare cu cl > ts*/
else if (k==ack) {
inregistreaza primirea unui ack;
for [mesajele V complet confirmate ] {
scoate mesaj din qm;
sem = sem+1;}
for [mesajele P complet confirmate st sem>0] {
scoate mesaj (transm, k, ts) din qm;
sem = sem-1;
if (transm=i) {cl = cl+1; send start[i](cl); }
}
} /*end process*/
11/20/16
M1
M2
M1
P1
P2
22
21
19
17
13
10
P1
P2
P3
P8
P4
P5
P6
P7
P8
P5
P3
de la cine ?
11/20/16
timp producere
11/20/16
11/20/16
11/20/16
11/20/16
15
Ordine m1 si m3?
11/20/16
11/20/16