CUPRINS
INTRODUCERE 1
partea i sisteme concurente 5
1. EVOLUŢIA SISTEMELOR DE CALCUL. APARIŢIA CARACTERISTICILOR
SISTEMELOR CONCURENTE 5
2.arhitecturi de sisteme concurente 6
2.1.Clasificarea dată de Flynn pentru sistemele de calcul 7
2.2.O clasificare a sistemelor concurente 9
2.2.1.Sisteme inerent concurente 10
2.2.1.1.Sisteme în timp real 10
2.2.1.2.Sisteme de gestiune a bazelor de date şi de prelucrare a
tranzacţiilor 12
2.2.1.3.Sisteme de operare şi sisteme de operare distribuite 13
2.2.2.Servere de informare 15
2.2.3.Aplicaţii potenţial concurente 16
2.2.3.1.Replicarea codului. Partiţionarea datelor 17
2.2.3.2.Prelucrarea datelor în pipeline 18
2.2.3.3.Algoritmi cu structură arborescentă a spaţiului de soluţii
18
2.2.3.4.Partajarea datelor 19
2.2.4.Cerinţe pentru realizarea aplicaţiilor concurente 19
2.3.O altă clasificare a sistemelor concurente 19
3.o definiŢie a sistemului concurent 21
3.1.Proprietăţile de atomicitate şi granularitate 22
3.2.Proprietăţile de siguranţă şi vivacitate 24
4. abordĂri comparative pentru paradigmele: concurent, paralel,
distribuit 24
5.concurenŢa În sisteme distribuite 26
partea a ii a implementarea sistemelor concurente 29
6.procese. fire de execuŢie 29
6.1.Conceptul de proces 29
6.1.1.Relaţii între procese 30
6.1.2.Stările unui proces 31
6.1.3.Operaţii cu procese 32
6.2.Procese multi-thread 34
6.3.Rolul proceselor în implementarea sistemelor concurente 35
7. EvoluŢia concurenŢei la nivelul limbajelor de programare 36
7.1.Concurenţa la nivelul limbajelor de programare secvenţiale 37
7.2.Corutine 38
7.3.Paranteze pentru execuţie nesecvenţială 39
7.4.Suportul proceselor pentru caracterizarea concurenţei 40
7.5.Tipuri de threaduri 42
8. problematica concurenŢei 44
8.1.Interacţiunea proceselor 44
8.1.1.Localizarea proceselor în funcţie de structura soft a
sistemului 45
8.1.2.Cerinţe pentru interacţiunea proceselor 47
8.2.Comunicarea şi sincronizarea în sisteme concurente 49
8.2.1.Comunicarea datelor în sisteme concurente 49
8.2.2.Sincronizarea proceselor în sisteme concurente 50
8.3.Excluderea reciprocă 51
8.4.Interblocarea 53
9. primitive pentru implementarea concurenŢei. mecanisme ipc 54
9.1.Primitive low - level pentru sincronizare 57
9.1.1.Sincronizarea proceselor la nivel de eveniment 588
9.1.2.Sincronizarea pentru acces exclusiv la zone partajate 58
9.1.3.Rezolvarea excluderii mutuale folosind arbitrajul memoriei
comune 59
9.1.4.Tipul de date semafor. Facilităţi şi limite 60
9.2.Primitive de limbaj pentru cazul memoriei partajate 63
9.2.1.Monitoare 64
9.2.2.Excludere pe obiect 65
9.2.3.Sincronizarea la nivelul operaţiilor 65
9.2.3.1.Expresii de tip cale 66
9.2.3.2.Obiecte active 66
9.3.Primitive de limbaj fără partajarea memoriei. Transmiterea de
mesaje 67
9.3.1.Transmiterea asincronă de mesaje 69
9.3.1.1.Comunicarea prin porturi şi canale 71
9.3.1.2.Broadcast şi multicast 72
9.3.1.3.Primitive de cerere. Primitive de răspuns 73
9.3.2.Transmiterea sincronă de mesaje 74
9.3.2.1.Invocarea la distanţă. Mecanismul rendez-vous 75
9.3.3.Implementarea transmiterii de mesaje 77
9.3.3.1.Canalele occam pentru comunicare sincronă 77
9.3.3.2.Abstractizarea Linda 78
9.3.3.3.Sockets 78
9.4.Suportul Java pentru concurenţă 79
10.Probleme clasice de concurenŢĂ 81
10.1.Problema adunării concurente 82
10.2.Problema PRODUCĂTOR-CONSUMATOR 83
10.2.1.Rezolvarea cu semafoare 83
10.2.2.Rezolvarea cu monitoare 85
10.2.3.Rezolvarea cu obiecte active 86
10.3.Problema CITITOR-SCRIITOR 87
10.3.1.Rezolvarea cu semafoare 88
10.3.2.Rezolvarea cu regiuni critice condiţionate 90
10.3.3.Rezolvarea cu monitoare 911
10.4.Alte probleme clasice de concurenţă 92
Lista figurilor -------------------------------------------------------
------------ 94
Bibliografie ----------------------------------------------------------
------------ 95