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
. . ] |
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 |
| Copyright ©
2025 - 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 |