Procese secventiale comunicante. Rendez-vous simetric.
Metoda proceselor secventiale a fost propusa de Hoare, sub forma chiar a unui limbaj. Unul din conceptele de baza al acestor procese secventiale comunicante il reprezinta comenzile cu garda.
Aceste comenzi sunt folosite pentru a exprima comportamentul nedeterministic al proceselor ca reactie, de exemplu, la evenimentele externe ce apar intr-o ordine oarecare, ceea ce este foarte frecvent in practica sistemelor in timp real.
*[garda_1 -> comanda_1 garda_2 -> comanda_2 garda_3 -> comanda_3 . . ]
|
O comanda cu garda este formata dintr-o garda (expresie booleana), urmata de o lista de instructiuni ce se poate executa numai daca garda este adevarata. Constructii alternative sau repetitive se pot exprima cu ajutorul unor seturi de comenzi cu garda, astfel:
[garda_1 -> comanda_1 garda_2 -> comanda_2 garda_3 -> comanda_3
. . ] |
unde caracterul special este folosit pentru separarea comenzilor cu garda, caracterul * indica repetitie, garda_n reprezinta o expresie booleana, iar comanda_n este lista de instructiuni asociata comenzii cu garda. De exemplu :
[ x>=y -> max:=x
y>=x -> max y
]
Daca ambele garzi sunt valabile, se vor executa ambele instructiuni. Daca nici una dintre garzi nu este adevarata, programul va fi abortat.
Intr-o constructie repetitiva, lista se executa pana cand garda devine neadevarata.
Daca un proces A emitator doreste sa transmita date unui alt proces B receptor, atunci cele doua procese trebuie sa-si indice reciproc aceasta dorinta de a comunica prin executarea unei comenzi de emisie si respectiv de receptie. Daca se intampla ca procesul A sa intalneasca primul, in timpul executiei, o comanda de emitere mesaj, atunci el va fi suspendat pana cand procesul B va intalni, in timpul executiei, o comanda de receptie mesaj. In mod similar si simetric, daca procesul B va intalni primul o comanda de receptie de mesaj, el va fi suspendat pana ce procesul A va intalni o comanda de emitere mesaj. In momentul cand ambele procese s-au sincronizat, datele (mesajul) sunt transferate imediat dupa care fiecare proces isi va relua executia pe cont propriu, in paralel.
Aceasta metoda de sincronizare poarta denumirea de rendez-vous.
Modelul de rendez-vous propus de Hoare este simetric, in sensul ca ambele procese ce comunica intre ele sunt tratate in mod egal.
task B; var y:date; begin A ? y; end; |
In exemplul care urmeaza, procesul A emitator doreste sa transfere datele x procesului B :
task A; var x:date; begin B ! x; end; |
Comanda "B!x" din procesul A specifica dorinta de transmitere a datelor x (valorilor lui x) catre procesul B, iar comanda corespunzatoare "A?y" din procesul B specifica acceptul de a receptiona datele si a le asocia ca valori ale lui y.
Pentru a realiza acest transfer de date, cele doua procese se asteapta unul pe altul pana ce ambele ajung in sincronism (in dreptul comenzilor de rendez-vous), moment in care are loc transmiterea datelor intre procese, dupa care fiecare proces isi va continua executia in paralel, in mod independent.
Aceasta varianta de rendez-vous propusa de Hoare este simetrica, in sensul ca ambele procese care se sincronizeaza contin explicit numele celuilalt proces, ceea ce din punct de vedere practic reprezinta o dificultate majora, deoarece multe programe - cum sunt, de ex., componentele unei biblioteci de programe - nu pot cunoaste dinainte numele programelor apelante. O solutionare a acestei probleme este prezentata in subcapitolul urmator.
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |