Sunteți pe pagina 1din 37

Sisteme paralele şi

distribuite
Curs Master IISC

Anul II

Facultatea de Electronică, Telecomunicaţii


şi Tehnologia Informaţiei

Prof. Felicia Ionescu


http://info.tech.pub.ro/~fionescu/

1
Sisteme paralele şi distribuite

 Introducere
 Componentele hardware ale unui sistem distribuit
 Caracteristicile sistemelor distribuite
 Nivelurile arhitecturale ale sistemelor distribuite
 Comunicaţii în sistemele paralele și distribuite
 Comunicație prin memorie partajată
 Transfer de mesaje (message passing)
 Apelul procedurilor/metodelor la distanță (RPC- Remote Procedure Call, RMI – Remote
Method Invocation)
 Memorie partajată distribuită (DSM - Distributed Shared Memory)
 Modele de sisteme distribuite
 Modelul client-server
 Modelul peer-to-peer

Prof. Felicia Ionescu Sisteme paralele şi distribuite 2


Sisteme paralele şi distribuite
 Există numeroase aplicații cu cerințe de calcul foarte mari (intens computationale)
sau cu volume mari de date distribuite – provocari ale stiintei în diferite domenii:
 Domeniul stiintific: fizica nucleara, studierea fenomenelor naturale (meteorologice, fizica
pamantului), biologie(genom), biochimie (proiectarea de noi medicamente) etc.
 Domeniul ingineresc: proiectare în mecanică, electronică, arhitectură etc.
 Domeniul economic: previziuni financiar-bancare, modelări macro-economice etc.
 Pentru astfel de aplicatii calculatoarele “secventiale” (centralizate, tradiționale) nu
au performanțe suficiente si sunt necesare sisteme paralele și/sau distribuite
 Sisteme centralizate - calculatoarele secvenţiale - sisteme în care toate
componentele hardware şi software sunt amplasate într-un singur dispozitiv
 sunt bazate pe modelul von Neumann (1945); constau dintr-o unitate de prelucrare
(procesor), o unitate de memorie (M) și un canal de comunic ație
 pot fi staţii, calculatoare PC, PDA etc.,
 Sisteme paralele și distribuite - sisteme care constau din multiple (posibil
milioane) comp. hardware (procesoare, memorii, dispozitive I/O) şi software:
 amplasate în mai multe unități de calcul (calculatoare) conectate în reţea care
 comunică și cooperează între ele
 Sisteme (calculatoarele) paralele – unităti de calcul amplasate la distante mici
(aceeași incintă), care comunică prin memorie partajată sau prin retele de
interconectare rapide
 Sisteme distribuite – unitati de calcul (inclusiv calculatoare paralele) amplasate la
distante mari, care comunică prin retele de interconectare

Prof. Felicia Ionescu Sisteme paralele şi distribuite 3


Istoricul dezvoltării sistemelor paralele și distribuite (1)
Sisteme paralele și distribuite – evoluţia în domeniile:
 calculatoare
 comunicaţii

Prof. Felicia Ionescu Sisteme paralele şi distribuite 4


Istoricul dezvoltării sistemelor paralele și distribuite (2)
 Site-ul www.top500.org publică performanțele supercalculatoarelor; # 1
 1993: CM-5 - 1024 proc SPARC-32), cu performanța max de 60 GFLOPS
 Iunie/2015: cluster Tianhe-2 (China) cu 3 120 000 core – procesoare Intel Xeon E5, cu
performanța maximă de 33.86 PFLOPS, care se menține pe această pozi ție de 2 ani

Prof. Felicia Ionescu Sisteme paralele şi distribuite 5


Istoricul dezvoltării sistemelor paralele și distribuite (3)
 În iunie 2015, primele 68 supracomputere depășesc performanța de 1 PF

Prof. Felicia Ionescu Sisteme paralele şi distribuite 6


Istoricul dezvoltării sistemelor paralele și distribuite (4)
 Actualmente (2015), primele 500 supercalculatoare:
 arhitectură: clustere (86.8%) și MPP (13.2%)
 procesoare: Intel Xeon E5 (80%), Motorola Power (7%), AMD Opteron (4%) și altele
 rețele de interconectare: Infiniband (51.8%), Ethernet (29.4%) (1 Gigabit și 10G), rețele la
comanda clientului (custom) (14%), Cray (3%), rețele proprietar (1.8%)
 sisteme de operare: majoritatea (98%) Linux
 producători: HP (36%), IBM (18%), Cray (14%), SGI (6%), Bull (4%) și alții
 domenii de utilizare: industrie (42%), cercetare (26%), academic (23%) și altele.
 țările în care sunt instalate: USA (47%), Japonia (8%), Germania (7.4%), China (7.4%), UK
(5.8%), Franța (5.4%), India (2.2%), Coreea de Sud (1.8%)

Prof. Felicia Ionescu Sisteme paralele şi distribuite 7


Sisteme (calculatoare) paralele (1)
 Sistemele (calculatoarele) paralele actuale sunt de mai multe tipuri arhitecturale:
 Multiprocesoare – arhitectura MIMD cu memorie partajată
 Multicalculatoare – arhitectura MIMD cu transfer de mesaje
 MPP (Massively Parallel Processing) – multicalculatoare cu noduri multiprocesoare
 Clustere de calculatoare – grup de calculatoare (posibil independente) conectate prin
rețea
 HPC - High Performance Computing - www.top500.org publică lista celor mai
performante 500 de sisteme paralele (supercalculatoare), începând din anul 1993;
listele sunt actualizate o dată la 6 luni
 În momentul de față (conform listei top500/iunie2015) supercalculatoarele se
încadrează într-una din două mari clase arhitecturale:
 MPP (Massively Parallel Processing) ~ 13 %
 Clustere de calculatoare ~ 87 %
 MPP (Massively Parallel Processsing) - paralelism pe mai multe niveluri; sunt
multicalculatoare in care:
 Fiecare nod este un multiprocesor compus din mai multe procesoare CPU, procesoare
grafice GPU(Graphical Processing Uni – de ex. Nvidia Geforce, Tesla), coprocesoare (de
exemplu Coprocesorul Intel Xeon Phi)
 Fiecare procesor CPU, procesor GPU sau coprocesor este format din mai multe unități
de prelucrare (cores, processor stream)

Prof. Felicia Ionescu Sisteme paralele şi distribuite 8


Sisteme (calculatoare) paralele (2)
 Un cluster de calculatoare este compus dintr-un grup de calculatoare
independente, conectate printr-o rețea de interconectare care poate oferi (în
funcție de numărul și capacitatea calculatoarelor conectate) performante foarte
ridicate, până la nivel de supercalculatoare.
 Un cluster este un sistem local, în care controlul (proprietatea, administrarea)
aparține unui singur domeniu administrativ (întreprindere, laborator)
 Nodurile unui cluster pot fi heterogene:
 Stații de lucru (workstations), calculatoare PC
 Multiprocesoare, multicalculatoare
 În fiecare nod din cluster rulează un sistem de operare (în majoritate Linux,
conform listelor top500), asigurând gestiunea resurselor locale și interfața cu
middleware-ul și aplicațiile din cluster
 Clusterele se pot clasifica în:
 Clustere nededicate, compuse din calculatoarele conectate în rețea ale unei
întreprinderi, pe care se pot executa aplicații individuale (ale celor ce dețin aceste
calculatoare) concomitent cu aplicațiile paralele care necesită puterea de calcul a mai
multor calculatoare din rețea; sunt primele care s-au dezvoltat
 Clustere dedicate, care sunt clustere special construite, folosite pentru execuția
aplicațiilor paralele/distribuite, fără utilizatori individuali ai fiecarui calculator din cluster
 Avantajele clusterelor: preț și risc de dezvoltare mai scăzute, heterogeneitate

Prof. Felicia Ionescu Sisteme paralele şi distribuite 9


Sisteme distribuite
 Sisteme distribuite - unitati de calcul la distante mari care comunică prin rețea de
interconectare cu transfer de mesaje (cum este rețeaua Internet);
 nodurile rețelei unui sistem distribuit pot fi calculatoare secvențiale sau paralele
 reprezintă suport pentru: sistemul Web, Grid-uri de calcul, cloud computing, baze de date
distribuite etc.
 Sistemul Web – rețeaua de servere și clienți Web care comunică prin protocol HTTP
 Un Grid de calcul este o infrastructură distribuită și reconfigurabilă, care oferă o
modalitate flexibilă și securizată de a coordona partajarea resurselor de calcul de
colective dinamice formate din persoane și institutii - organizatii virtuale (VO)
 Exista numeroase Grid-uri, ca organizatii virtuale construite pentru rezolvarea anumitor
probleme complexe, în principal stiintifice, dar și financiare, comerciale etc.
 Sisteme Cloud Computing: sunt sisteme distribuite în care se folosesc servicii și
resurse de calcul “externe” (remote - la distanță) închiriate (de la furnizori – centre de
date), atunci când sunt necesare (“on-demand computing”)
 Sistemele distribuite cloud computing sunt rezultatul combinației mai multor tehnologii
pre-existente: Internet, virtualizare, servicii; (virtualizare: emularea uneia sau mai multor
stații sau servere pe un singur calculator fizic)
 Baze de date distribuite – baze de date în care datele sunt stocate pe mai multe
servere

Prof. Felicia Ionescu Sisteme paralele şi distribuite 10


Avantajele sistemelor paralele și distribuite
 Cresterea resurselor disponibile – utilizarea de resurse multiple
 Creșterea performanţelor – resursele de calcul multiple permit execuţia
concurentă a aplicaţiilor şi obţinerea unor performanţe ridicate
 Partajarea resurselor – utilizatorii pot folosi împreună (partaja) resursele
hardware şi software, baze de date, informaţii şi licenţe
 Modularitatea resurselor – atât resursele hardware cât și software pot fi
modularizate
 Creșterea extensibilității – arhitectura modulară a sistemelor distribuite permite
extinderea gradată (incrementală) a acestora
 Fiabilitate, disponibilitate şi toleranţa la defecte crescute – existenţa
resurselor multiple (resurse de calcul, resurse de memorie, resurse de
comunicaţie etc.) permite toleranţă la defecte prin alocarea task-urilor pe alte
resurse disponibile atunci când una din resurse d-a defectat
 Eficienţa ca şi cost – scăderea costurilor calculatoarelor şi a reţelelor de
comunicaţie permite scăderea costurilor sistemelor paralele și distribuite

Prof. Felicia Ionescu Sisteme paralele şi distribuite 11


Dificultăţile de proiectare a sistemelor
paralele și distribuite
 Dificultăţile de proiectare a sistemelor paralele și distribuite provin din:
 Heterogeneitatea hardware-ului, a reţelelor de interconectare, a sistemelor de operare,
si a limbajelor de programare
 Comportarea independentă şi asincronă a resurselor sistemului – îngreunează
coordonarea şi controlul sistemului
 Comunicaţia între resurse - introduce un nivel suplimentar de complexitate
 Lipsa de maturitate a toolset-urilor de dezvoltare disponibile, care evolueaza foarte
rapid
 Cerinţe privind proiectarea sistemelor paralele și distribuite:
 Deschidere (Openess) - sunt necesare interfeţe standardizate între diferite resurse
 Scalabilitate - adăugarea de noi resurse trebuie să duca la creşterea performanţelor
sistemului global
 Securitate - în sistemele distribuite este mult mai dificil de a asigura protecţia
informaţiilor, datorită comunicaţiilor prin reţele

Prof. Felicia Ionescu Sisteme paralele şi distribuite 12


Nivelurile arhitecturale ale sistemelor distribuite
 Nivelul 1: sistemul distribuit de calculatoare – o mulţime de unităţi funcţionale
autonome conectate între ele; sistemul constă din calculatoare, unități de stocare
şi reţele de interconectare
 Nivelul 2: sistem de execuţie (run-time) distribuit - compus din:
 sistem de operare distribuit
 middleware: un nivel software care are rolul de a ascunde heterogeneitatea sistemului
şi de a oferi un model de programare convenabil programatorilor – exemple de
middleware: biblioteci (MPI, PVM), planificatoare, etc.
 Nivelul 3: servicii și aplicaţii distribuite

Prof. Felicia Ionescu Sisteme paralele şi distribuite 13


Nivelul middleware în sistemele distribuite
Nivelul middleware asigură uniformitate in sistemele distribuite, permiţând
interoperarea între procesele componente ale aplicaţiilor distribuite

Prof. Felicia Ionescu Sisteme paralele şi distribuite 14


Transparenţa execuției în sistemele distribuite (1)
 Un sistem distribuit oferă imagine de sistem unic (SSI – Single System Image) prin
asigurare unor aspecte ale transparentei execuției
 Fiecare sistem distribuit trebuie să asigure cât mai multe aspecte de transparenţă,
sau măcar pe cele necesare aplicaţiilor pentru care a fost proiectat
 Transparenţa locaţiei – utilizatorul nu trebuie să ştie neapărat care este locaţia
fizică a unui “obiect” în sistemul distribuit (“obiect” în sens larg resursă, serviciu,
informaţie)
 accesul se realizează prin numele obiectului
 numele obiectului nu trebuie să depindă de locaţia curentă a acestuia

Prof. Felicia Ionescu Sisteme paralele şi distribuite 15


Transparenţa execuției în sistemele distribuite (2)
 Transparenţa accesului: obiectele pot fi accesate în acelaşi mod, atât cele
locale cât şi cele la distanţă (remote)
 Transparenţa replicării: utilizatorul nu trebuie să fie preocupat dacă un obiect
este replicat sau nu; el poate accesa un obiect replicat în acelaşi mod ca şi un
obiect nereplicat
 Transparenţa replicării rezolvă problema managementului replicilor (copiilor)
obiectelor, create în scopul creşterii disponibilităţii sau a vitezei de acces la obiecte

Transparenţa accesului Transparenţa replicării

Prof. Felicia Ionescu Sisteme paralele şi distribuite 16


Transparenţa execuției în sistemele distribuite (3)
 Transparenţa defectelor – permite funcţionarea sistemului distribuit în condiţiile
unor defecţiuni parţiale ale calculatoarelor sau reţelei sistemului; până la un
anumit nivel, defectele sunt mascate de sistem
 Transparenţa concurenţei – mai mulţi utilizatori sau aplicaţii pot accesa
concurent diferite obiecte din sistemul distribuit, fără influenţă mutuală
 Transparenţa concurenţei rezolvă problema accesului concurent la resursele partajate
din sistemul distribuit – de ex. tranzactii in baze de date distribuite
 Transparenţa migraţiei – funcţionarea corectă a aplicaţiilor în condiţiile în care
unele componente (obiecte) migrează de la un calculator la altul
 Transparenţa migraţiei rezolvă problema relocării obiectelor în sistem
 De exemplu, conectarea unui laptop în diferite reţele mobile presupune modificarea
serverului de nume, dar aplicaţiile de pe laptop (browser, serverul e-mail etc.)
funcţionează în acelaşi mod

Prof. Felicia Ionescu Sisteme paralele şi distribuite 17


Transparenţa execuției în sistemele distribuite (4)
 Transparenţa limbajului – interacţiunea dintre diferite componente este
independentă de limbajul folosit pentru implementarea operaţiei într-o anumită
componentă
 Transparenţa limbajului permite implementarea diferitelor componente în limbaje de
programare diferite
 Transparenţa procesarii – procesle pot fi executate în diferite sisteme de
execuţie (runtime systems)
 Transparenţa performanţelor – permite reconfigurarea dinamică a sistemului
distribuit cu scopul de a menţine performanţele acestuia atunci când se modifică
încărcarea sistemului
 Transparenţa scalabilităţii – suportă extinderea sistemului fără necesitatea de a
schimba structura sistemului sau a algoritmilor aplicaţiilor (de ex. algoritmi
adaptivi)

Prof. Felicia Ionescu Sisteme paralele şi distribuite 18


Comunicații în sistemele paralele și distribuite
 Comunicaţii în sistemele paralele și distribuite:
 Comunicații prin memorie partajată (multiprocesoare, GPGPU)
 Biblioteci de programare paralelă cu memorie partajată în multiprocesoare: biblioteca
Pthread, OpenMP, Parallel-R
 Biblioteci de programare GPU (Graphical Processing Unit) – Cuda, OpenCL
 Comunicații prin transfer de mesaje
 Biblioteci de transfer de mesaje (MPI, PVM) (multicalculatoare, MPP, clustere)
 Limbaje și platforme de execuție distribuită cu transfer de mesaje (Parallel-R, Hadoop) -
clustere
 Apelul procedurilor la distanță (RPC- Remote Procedure Call), sau apelul metodelor la
distanță (RMI – Remote Method Invocation) – sisteme bazate pe obiecte și componente
distribuite, arhitectura orientată pe servicii (SOA – Service Oriented Architecture)
 Memorie partajată distribuită (DSM - Distributed Shared Memory)
 Sisteme distribuite complexe (Grid Computing, Cloud Computing)
 Deci, în sistemele distribuite comunicaţiile sunt prin transfer de mesaje
 Din punct de vedere al comunicațiilor, sistemele distribuite pot fi:
 Modelul client-server
 Modelul peer-to-peer

Prof. Felicia Ionescu Sisteme paralele şi distribuite 19


Comunicația prin memorie partajată
 Comunicația prin memorie partajată poate fi utilizată numai în sistemele paralele
cu memorie fizică partajată: multiprocesoare sau sisteme cu GPGPU (General
Purpose Graphical Processing Units)
 În astfel de sisteme, procesele sau thread-urile sunt executate concurent, pe
procesoare diferite şi comunică între ele prin variabile partajate
 Variabilele partajate între procese se alocă într-un segment de memorie partajată
 Variabilele partajate între thread-urile aceluiaşi proces se alocă în segmentul de date
al procesului care deţine thread-urile respective
 În mod obișnuit se folosesc thread-uri, datorită timpului de comutare mai redus
(Anexa - Procese și thread-uri)
 Nu sunt admise scrieri concurente a mai multor procese (sau thread-uri) în
memoria partajată
 Dacă se încearcă scrierea concurentă (în același ciclu instrucțiune) într-o locație de
memorie partajată, circuitele de arbitrare ale memoriei serializează accesele într-o
ordine de execuție impredictibilă și deci valoarea rezultată este impredictibilă
 Deci accesul nesincronizat la variabile partajate a două sau mai multe procese
(thread-uri) concurente poate produce erori de execuţie, dacă există dependențe între
task-urile implementate de acestea
 Soluții: mecanisme de sincronizare între procese (mutex, semafoare, bariere)

Prof. Felicia Ionescu Sisteme paralele şi distribuite 20


Comunicații prin transfer de mesaje
 Transferul de mesaje între două sau mai multe procese aflate în noduri diferite în
rețea (IPC – Interprocess Communication)
 Operații primitive de transfer de mesaje: send, receive
 Procesele care comunică: transmițător – sender; receptor - receiver
 Structura unui mesaj: capul mesajului (head), corpul mesajului (body)
 Tipuri de operaţii de transfer: blocante/neblocante

Prof. Felicia Ionescu Sisteme paralele şi distribuite 21


Transferul blocant de mesaje
 Operatia send blocantă: procesul trimiţător este blocat până când mesajul este
recepţionat la destinaţie
 Operația receive blocantă: procesul receptor este blocat până ce mesajul
aşteptat este recepţionat
 În mod tipic, se foloseşte un mecanism de hand-shake (acknowledge);
 Transferul blocant implică un cost suplimentar (timpul cât procesele comunicante
aşteaptă transferul datelor)

Proces
Execuţie proces transmiţător blocat Execuţie proces
transmiţător transmiţător

Transmitere mesaj, Mesajul a fost transmis,


procesul se blochează procesul este reluat

Prof. Felicia Ionescu Sisteme paralele şi distribuite 22


Transferul neblocant de mesaje
 În transferul neblocant, funcţiile send sau receive revin imediat, fără să aştepte
completarea operaţiei de transfer
 În mod tipic, se foloseşte un buffer de mesaje:
 funcţia send neblocantă copiază mesajul în buffer şi revine
 funcţia receive neblocantă indică bufferul de recepţie şi revine
 După revenire, se pot efectua diferite calcule, apoi trebuie testată completarea
transferului, pentra a se putea reutiliza bufferul
 Transferul neblocant:
 poate optimiza execuţia prin suprapunerea calculelor cu transferul de mesaje
 necesită operaţii de verificare a terminării transferului

Execuţie proces Execuţie


transmiţător proces
transmiţător

Transferul
mesajului
Copiere
mesaj
în bufferul de
comunicaţie

Prof. Felicia Ionescu Sisteme paralele şi distribuite 23


Comunicaţii sincrone şi asincrone
 Se consideră comunicatia alcatuia din următorul transfer de mesaje:
 trimiţătorul S apelează operaţia send
 receptorul E execută operaţia receive
 Comunicatia este sincronă dacă ambele operații de transfer send și receive sunt
blocante (a)
 Comunicatia este asincronă dacă cel puțin una din operațiile de transfer (send,
receive) este neblocantă; în figura (b) ambele operații sunt neblocante

(a) (b)
 Comunicațiile prin transfer de mesaje:
 Biblioteci de transfer de mesaje (MPI – Message Passing Interface, PVM)
 Platforma Hadoop – prelucrarea distribuita a masivelor de date
 Apelul procedurilor la distanță (RPC -Remote Procedure Call)

Prof. Felicia Ionescu Sisteme paralele şi distribuite 24


Comunicaţii sincrone şi asincrone
 Se consideră comunicatia alcatuia din următorul transfer de mesaje:
 trimiţătorul S apelează operaţia send
 receptorul E execută operaţia receive
 Comunicatia este sincronă dacă ambele operații de transfer sunt blocante (a)
 Comunicatia este asincronă dacă cel puțin una din operațiile de transfer (send,
receive) este neblocantă; în figura (b) ambele operații sunt neblocante

(a) (b)

 Comunicațiile prin transfer de mesaje sunt implementate în:


 Biblioteci de transfer de mesaje (MPI – Message Passing Interface, PVM)
 Apelul procedurilor la distanță (RPC), Apelul metodelor la distanta (RMI)
 Memorie partajata distribuita
 Platforma Hadoop – prelucrarea distribuita a masivelor de date

Prof. Felicia Ionescu Sisteme paralele şi distribuite 25


Apelul procedurilor la distanţă
 Remote Procedure Call (RPC) “seamănă” cu apelul procedurilor locale, dar
apelantul (caller) şi procedura la distanţă:
 se află în procese diferite, chiar în calculatoare diderite (conectate în reţea)
 nu au un spaţiu comun de memorie
 nu au mediu de execuţie comun (runtime
environment)
 Soluţia  încorporarea în fiecare dintre
procese a unui nucleu de apeluri (rădăcină –
stub - skeleton)
 Apelantul apelează metoda din interfaţa locală
a stub-ului, folosind convenţii de apel a
procedurilor locale
 Stub-ul împachetează parametrii şi îi
transmite skeleton-ului la distanţă
 Skeleton-ul despachetează parametrii şi
apelează “procedura la distanţă”
corespunzătoare, folosind convenţiile de apel
a procedurilor locale; rezultatul îl returnează
stub-ului care îl transmite apelantului

Prof. Felicia Ionescu Sisteme paralele şi distribuite 26


RPC şi RMI (Remote Method Invocation)
 Există diferite sisteme RPC:
 Implementate la nivelul sistemui de operare
 Implementate de middleware
 În general, există utilitare pentru generarea automată a stub-ului şi a skeleton-ului
(nu se creează “manual”)
 Există mai multe posibilităţi de a denumi şi de a înregistra serverele şi interfeţele
la distanţă, astfel încât să poată fi găsite şi apelate de client
 Apelul metodelor obiectele (RMI) diferă de RPC dat fiind că:
 Orice metodă conţine ca prim parametru (implicit) referinţa la obiectul pentru care se
apeleză metoda respectivă
 La apelul unei metode trebuie inspectată clasa obiectului pentru a se selecta metoda
cea mai potrivită (overloading, overriding, polimorfism)
 Soluţii pentru realizarea RMI:
 Implementarea apelului metodelor la distanţă peste o bibliotecă care permite selectarea
dinamică a metodelor obiectelor (ca în CORBA)
 Folosirea unor maşini virtuale care au incorporat suport pentru RMI, cum sunt JVM
(Java Virtual Machine) sau .NET CLR
 RPC, RMI se folosesc în sistemele distribuite (sisteme bazate pe componente și
obiecte distribuite, servicii Web, grid, cloud)

Prof. Felicia Ionescu Sisteme paralele şi distribuite 27


Memoria partajata distribuită
(Distributed Shared Memory)
 Memoria partajată distribuita apare utilizatorului ca o memorie partajată, deşi
este implementată pe maşini diferite, cu spaţii de adresă multiple
 Se face o simulare a memoriei partajate prin comunicație cu transfer de mesaje

Prof. Felicia Ionescu Sisteme paralele şi distribuite 28


Memoria partajată distribuită
 Simularea partajării datelor se face prin replicarea obiectelor partajate (copii) şi
prin difuziunea sigură a mesajelor (reliable broadcasting) pentru actualizarea
copiilor
 Fiecare procesor (nod ce calcul) menţine o copie a fiecărui obiect partajat:
 Fiecare copie poate fi accesată de toate procesele care se execută pe procesorul
(nodul) respectiv
 Operaţiile care nu modifică obiectul (citire) folosesc direct copia locală, fără transferul
nici unui mesaj în sistem
 Operaţiile care modifică obiectul (scriere) difuzează noua valoare tuturor celorlalte
procesoare, astfel încât toate copiile sunt actualizate simultan
 Copii multiple ale aceluiaşi obiect  posibilă inconsistenţă a datelor
 Soluţie  protocol de actualizare distribuită care să garanteze că toate procesele
primesc modificările obiectelor partajate o singură dată, în aceeaşi ordine
 Sincronizarea între procesele care accesează variabilele partajate:
 Excludere mutuală asigurată implicit, prin execuţia indivizibilă a tuturor operaţiilor asupra
obiectelor (partajate sau locale)
 Sincronizarea prin condiţii: procesele aşteaptă (blocate) până când o anumită condiţie
devine adevărată
 Implementări: Orca, Linda, Munin, JavaSpace etc.

Prof. Felicia Ionescu Sisteme paralele şi distribuite 29


Sisteme distribuite: modelul client-server
 Acest model de sisteme distribuite implementează următorul protocol de
comunicație:
 clientul invocă (printr-un mesaj request) o operaţie de la server, îşi suspendă execuţia
şi aşteaptă răspuns
 serverul executa operatia și trimite un mesaj de răspuns clientului
 clientul reia execuţia după ce a primit mesaj de răspuns (answer)
 Definiţiile următoare sunt pe niveluri de abstractizare diferite:
 trimiţător (sender) - receptor (receiver): entităţi care doar interschimbă (transfera)
mesaje intre ele
 client – server: entităţi care interschimbă mesaje în cadrul unui protocol

Prof. Felicia Ionescu Sisteme paralele şi distribuite 30


Clienţi, servere, servicii
 Un client este un proces (se poate spune şi aplicaţie) care se execută pe o
maşină client şi iniţiază cereri pentru operaţii ale serviciilor
 Potenţialii clienţi sunt necunoscuţi apriori
 Un serviciu (service) este un sistem software care prevede o mulţime bine
definită de operații şi se execută pe unul sau mai multe subsisteme numite
servere; ex.: serviciu de nume, serviciu de fisiere distribuite, serviciu de timp etc.
 Un server este un subsistem care asigură execuția unui anumit serviciu pentru o
mulţime de clienţi; exista deci servere de nume, servere de fisiere distribuite,
servere de timp etc.
 Un server execută serviciul pe o maşină server; în mod obişnuit o singură maşină server
poate găzdui mai multe servere
 Un server execută o buclă de forma (pseudocod):
while (true) do {
wait until a service operation is required by a client C;
execute requested service operation
send answer (result) to client C;
}

Prof. Felicia Ionescu Sisteme paralele şi distribuite 31


Interfeţe client-server
 Interfeţele client-server
 Interfaţa client:
 pregăteşte parametrii şi trimite mesaje către server;
 interpretează rezultatul pe care îl extrage din mesajul de răspuns de la server
 Interfaţa server:
 acceptă cererile clienţilor;
 interpretează parametrii şi invocă operaţia necesară a serviciului;
 pregăteşte şi trimite un mesaj de răspuns către client, conţinând rezultatul operaţiei serviciului

Prof. Felicia Ionescu Sisteme paralele şi distribuite 32


Servere iterative și concurente
 Server iterativ: un singur proces server servește toate cererile clienţilor

Avantaje: nu sunt necesare


operaţii concurente; deservirea
unui client nu este întreruptă
Dezavantaje: congestionarea la
server (bottleneck)

 Server concurent: câte un proces server (sau thread) pentru fiecare cerere a
unui client

Avantaje: permite
prelucrarea concurentă a
cererilor
Dezavantaje: crearea
proceselor (sau thread-urilor)
noi consumă timp; necesită
sincronizarea accesului la
datele partajate

Prof. Felicia Ionescu Sisteme paralele şi distribuite 33


Servicii de nume în sistemele distribuite
 În sistemele distribuite numele sunt şiruri de caractere folosite pentru
identificarea unică a entităţilor (“obiectelor”): fişiere, servere, servicii, host-uri,
imprimante, useri etc.
 In general, numele sunt grupate în spaţii de nume, organizate ierarhic şi
reprezentate ca grafuri direcţionate etichetate
 Rezoluţia numelor: o căutare într-un spaţiu de nume returnează un identificator
sau o adresă corespunzătoare entităţii
 Un serviciu de nume (Name Service) (sau serviciu de director – Directory
Service) oferă gestiunea numelor în sisteme distribuite, facilitând comunicaţia
între servere şi clienţi
 Exemple:
 LDAP - Light Directory Acces Protocol
 DNS – Domain Name Service
 JNDI – Java Naming and Directory Interface

Prof. Felicia Ionescu Sisteme paralele şi distribuite 34


Servicii de fişiere distribuite
 Un sistem de fişiere distribuite (Distributed File System) este o colecţie logică de
fişiere stocate pe diferite host-uri conectate în reţea
 Un serviciu de fişiere distribuite constă dintr-un set de servicii furnizate de unul
sau mai multe servere de fişiere (file servers)
 Un server de fişiere este execuţia unui serviciu de fişiere pe un calculator
 Serverul de fișiere asigură alocarea și replicarea fișierelor
 Alocarea fişierelor înseamnă amplasarea fişierelor unui sistem distribuit de fişiere
în diferite calculatoare (noduri în rețea)
 Realocarea fişierelor – înseamnă schimbarea locaţiei (hostului) unui fişier în cadrul
unui sistem distribuit de fişiere
 Replicarea înseamnă existenţa mai multor copii ale aceluiaşi fişier plasate pe
calculatoare diferite în cadrul unui sistem distribuit de fişiere
 Replicarea fişierelor reduce traficul datelor în sistem, dar necesită menţinerea
consistenţei replicilor
 Dacă sistemul distribuit suportă transparenţa replicării, atunci utilizatorul nu trebuie să
fie preocupat dacă un fişier este replicat sau nu

Prof. Felicia Ionescu Sisteme paralele şi distribuite 35


Servicii de timp în sistemele destribuite
 Timpul trebuie măsurat uneori foarte precis în sistemele distribuite
 Ceasul fizic: determinat pe baza unui dispozitiv electronic care numără intervale
de timp
 Ceasul software, pentru un anumit proces  rezultat din citirea ceasului fizic,
scalat corespunzător (valoarea intervalului)
 Timp Coordonat Universal (UTC) – dat de semnale de sincronizare difuzate de
GPS (Global Pozitioning System), servere Web, staţii radio
 Sincronizarea în timp a proceselor:
 Servere – radio, sateliţi, modem
 Clienţi – consultă serverele prin protololul NTP (Network Time Protocol)
 Necesitatea sincronizării proceselor:
 aplicaţii de timp real
 probleme de securitate (momente ale atacului)
 comerţ electronic (licitaţii on-line)

Prof. Felicia Ionescu Sisteme paralele şi distribuite 36


Sisteme distribuite: modelul peer-to-peer
 În modelul peer-to-peer (P2P) toate procesele au acelaşi rol:
 Interacţionează cooperant pentru procesare în cadrul aplicaţilor distribuite
 Nu există distincţie între clienţi şi servere
 Elimină dezavantajul coordonării centralizate (în servere), dar sunt mai greu de
proiectat datorită distribuirii codului de coordonare (control)
 Exemple de aplicații P2P:
 Livrare de fișiere/conținut (streaming media – P2PTV)
 Comunicații (telefonie prin internet - Skype)

Prof. Felicia Ionescu Sisteme paralele şi distribuite 37

S-ar putea să vă placă și