Upload
others
View
16
Download
0
Embed Size (px)
Citation preview
1/24/2017
Uvod u distribuirane informacijske sustave Skripta za 2. kolokvij
Jurica Šeparović
Sadržaj 1 Komunikacija ......................................................................................................................... 1
1.1 Komunikacija u lokalno distribuiranim sustavima .............................................................................................. 1
1.2 Komunikacija u distribuiranim sustavima povezanim mrežom ...................................................................... 2
2 Socketi .................................................................................................................................... 4
2.1 TCP SOCKET - SOCK_STERAM................................................................................................................................... 5
2.2 UDP SOCKET – SOCK_DGRAM .................................................................................................................................. 5
2.3 Mrežni redosljed bajtova ............................................................................................................................................ 5
3 RPC i RMI................................................................................................................................ 6
3.1 Remote procedures calls............................................................................................................................................. 6
3.2 Remote method invocation – RMI........................................................................................................................... 8
4 Web servisi ............................................................................................................................. 9
4.1 REST web servisi............................................................................................................................................................. 9
4.2 XML RPC .........................................................................................................................................................................10
4.3 SOAP web servisi .........................................................................................................................................................10
5 Imenovanje .......................................................................................................................... 12
5.1 Obična imena (Flat naming) .....................................................................................................................................13
5.2 Strukturirana imena (name spaces) .......................................................................................................................14
5.3 Imenovanje pomoću atributa ..................................................................................................................................15
5.4 Hibridni sustav..............................................................................................................................................................15
6 Sinkronizacija....................................................................................................................... 16
6.1 Sinkronizacija satova ..................................................................................................................................................16
6.1.1 Fizički satovi.................................................................................................................................................. 16
6.2 Tri filozofije sinkronizacije vremena ......................................................................................................................17
6.3 Logički satovi ................................................................................................................................................................17
6.4 Međusobno isključivanje – Mutual exclusion.....................................................................................................17
6.4.1 Algoritmi za mutual exclusion............................................................................................................. 18
6.4.2 Izbor koordinatora .................................................................................................................................... 19
1
1 Komunikacija
Komunikacija među procesima je srž distribuiranih sustava.
Komunikacija na razini operacijskog sustava :
- Signali, cijevi, redovi poruka , dijeljena memorija, semafori,
Distribuirani računalni sustavi
- Socketi, RPC,RMI,MOM, data streaming
Sinkrona komunikacija : da bi se operacije uskladile jedan mora proces čekati da drugi
završi sa radom.
Deadlock je situacija u kojoj dvije niti ili dva procesa čekaju da drugi završi prije nego
nastavi sa radom. Problem se može riješiti korištenjem timeouta.
Asinkrona komunikacija : nema čekanja, proces nastavlja sa svojim radom nakon poziva.
Eventualno može biti obaviješten kada se operacija završi.
1.1 Komunikacija u lokalno distribuiranim sustavima
Signali – najstariji oblik komunikacije u Unix OS. Mogu se generirati tipkovnicom ii
greškom u izvođenju programa.
System V IPC je jedan od prvih komercijalnih verzija Unix OS. Podržava 3 metode za
dijeljenje podataka među procesima :
- Message queus (redovi poruka)
Asinkrono slanje poruka između dva procesa. Red se implmentira i održava od
strane kernela.
- Dvosmijenre cijevi (2x cijev)
Preusmjerava se izlaz jednog procesa na ulaz drugi i obrnuto.
- Shared memory segment
- Semaphore sets (dijeljeni brojači resursa)
2
1.2 Komunikacija u distribuiranim sustavima povezanim mrežom
Socketi
IPC metoda koja omogućava komunikaciju među procesima koji se odvijaju na različitim
mašinama.
Socket komunikacija odvija se preko TCP protokola. Socket se definira IP adresom i
portom. Koriste se sljedeći pozivi (socket,bind,listen,accept,connect)
Slojeviti model komunikacije
Fizička razina: protokol definira električna mehanička i signalna sučelja. (napone za 0 i 1,
oblik i veličinu konektora , broj pinova. Prijenos bitova)
Data link razina: provjera ispravnosti podataka. (grupira bitove u okvire i provjerava
ispravnost okvira)
Network razina: brine se o usmjeravanju podataka do odredišta odabirom najboljeg
puta (Najbolji put ne mora ujedno biti i najkraci. Ip protokol – svaka poruka se
usmjerava individualno)
Transportna razina : Brine se o prijenosu poruke od pošiljatelja do primatelja. Rastavlja
poruku na pakete i sastavlja pakete u poruku na odredištu. TCP i UDP protokol.
Session razina: postavlja chekpoint za vrijeme prijenosa velikih količina podataka
Prezentacjiska razina: brine se o identificiranju dijlova informacije iz bitova podataka.
Određuje format podataka.
Aplikacijska razina: koriste se protokoli specifični za pojedine aplikacije. FTP , HTTP …
3
Middleware u praksi se mrežna komunikacjia odvija korištenjem međusloja.
Međusloj je softver koji omogućava komunikaciju i upravljanje distribuiranim
aplikacijama.
Osnovne funkcije :
• Pozivi udaljenih procedura
• Usluga stvaranja reda poruka
• Podrška komunikaciji kroz kontinuirane medije putem stream-a
• Multitaskiranje – slanje poruka na više adresa
Vrste komunikacije:
• Presistent: poruka se čuva trajno dok je primatelj ne primi (kao email)
• Transistent: poruka se čuva dok su pošiljatelj ili primatelj aktivni
• Sinkrona i asinkrona
RPC (Remote Procedure calls) RMI(remote method communication)
Usluge su ponuđene u obliku procedure. Tijelo procedure se izvršava na serveru.
Klijent je blokiran dok se procedura ne izvrši (sinkrona komunikacija).
Implemntacija na klijentovoj strani (stub) pakira parametre u poruku koja se predaje
udaljenom serveru. Nakon što udaljeni server vrati poruku ona se raspakira i predaje
aplikaciji koja je zatražila komunikacija sa udaljenom procedurom.
Message oriented modeli
Prezistenta asinkrona komunikacija
-socket
Streaming
Kada dvije sljedne poruke imaju vremensku povezanost. Specificira se maksimalno
kašnjenje. Npr audio ili video stream.
Multicasting
Način komunikacije u kojoj pošiljatelj šalje podatke na više primatelja.
Imamo dva pristupa za multicasting:
Definiranjem stabla slanja od pošiljatelja do više primatelja (P2P)
Protokoli epidemije (širi poruku preko velikog distribuiranog sistema)
4
2 Socketi
Socket je tehnologija koja omogućava komunikaciju između dva procesa na različitim
mašinama.
Barkeley socket
Barkeley socket je sučelje za TCP/IP protokol. Razvnijen je na Berkeleyu 1983 godine za unix. On je de
facto standard za sockete.
WinSock -> implementacija Berkeley socketa na windowsima.
Funkcionalnosti koje treba uključivati TCP/IP API (to je socket faco) su određene samim svojstvima
protokola a uključuju :
1. Alokacija resursa za komunikaciju
2. Specificiranje lokalne i udaljene krajnje točke komunikacije.
3. Iniciranje konekcije (na strani klijenta)
4. Čekanje na dolaznu konekciju (na strani servera)
5. Slanje i primanje podataka
6. Utvđivanje dolaska podataka
7. Generiranje hitnih podataka
8. Obrada hitnih podataka
9. Skladan raskid konekcije (FIN handshake)
10. Obrada raskida konekcije s udaljenog mjesta
11. Prekid komunikacije
12. Obrada grešaka i prekida komunikacije
13. Oslobađanje resursa nakon završetka komunikacije
Osnovno svojstvo SOCKET tehnologija je da dva procesa koja komuniciraju međusobno
razmjenjuju niz bajtova (byte stream).
Informacije koje se razmjenjuju između dva procesa preko socket tehnologije nisu
formatirane unutar same tehnologije već formatiranje podataka moraju napraviti sami
procesi prema svojoj definiranoj logici.
Prednost : -fleksibilnost
Nedostatci: - podložnost koda greškama, složenije aplikacije …
5
Postoje tri tipa socketa : TCP(stream) , UDP (datagram) , IP (raw) socket.
2.1 TCP SOCKET - SOCK_STERAM
- Pouzdan
- Osiguran poredak paketa
- Connection oriented
- Dvosmjerna komunikacija
2.2 UDP SOCKET – SOCK_DGRAM
- Nepouzdana isporuka
- Nema garancije ispravnog poretka
- Nema uspostave komunikacije
Kreiranje socketa
Int s = socket(domain, type, protocol);
Int status = bind(sockid, &addrport,size);
int status = listen (sock, queuelen); listen is non-blocking : returns immeditely
int s = accept(sock, &name, &namelen); accept is blocking
int status = connect(sock, &name, namelen); connect is blocking
TCP
int count = send (sock, &buff, len , flags)
int count = recv(sock, &buff, len , flags)
UDP
int count = sendto (sock, &buff, len , flags, &addr, addrlen)
int count = recvfrom (sock, &buff, len , flags, &addr, addrlen)
status = close(s);
TCP – zatvara se konekcija
UDP – oslobađa port kojeg koristi socket
2.3 Mrežni redosljed bajtova
Kao mrežni standard prihvaćen je big-endian. Tako da svi paketi trebaju imati zapisanu
IP adresu i port u ovom obliku.
6
3 RPC i RMI
3.1 Remote procedures calls
Communication oriented design :
- Aplikacije koje zahtjevaju dizajn vlastitog protokola
- Dizajnirmao protokol , radimo aplikacije nad protokolom
- Socket tehnologija
Aplication oriented design :
- Razvijamo aplikaciju , razdjelimo program na dijelove
- Dodamo komunikaciju
- RPC tehnologija
RPC (Remote procedures calls) – je poziv udaljene procedure.
Klijent poziva serversku proceduru kao da se ona nalazi lokalno.
Sučelje procedure ispisano je u IDL jeziku.
RPC PROGRAMERSKI MODEL
Prijenos parametara
7
1. Klijent zove udaljeu proceduru k = add(i,j)
2. Klijentski stub formira poruku proc: „add“ int val(i) int val(j)
3. Poruka se preko mreže šalje serveru
4. Serverski OS predaje poruku serverskom stub-u
5. Serverski stub otpakira poruku
6. Stub poziva localnu proceduru add()
7. Rezultati se ponovno šalju mrežom
RPC Binding – spajanje klijenta na server
Klijent i server imaju IP adresu i TCP/UDP port te proceduru koja se poziva
Vrste RPC bindinga (razlikuju se po razini kontrole koju korisnička aplikacija ima) :
• Automatsko povezivanje – (automatic binding) povezivanje se radi od strane
klijenskot stuba automatski.
• Implicitno vezivanje (implicit binding) – klijenska aplikacija treba dohvatiti
podatke za povezivanje , a ono se obavlja unutar klijentskog stuba
• Eksplicitno vezivanje (explicit binding) – prilikom svakog RPC poziva treba
posebno prosljeđivati handle za vezu.
Stub je zadužen za formatiranje parametara koji se razmjenjuju između dva procesa.
Dva distribuirana procesa se dogovore oko načina formatiranja podataka.
Marshalling - konverzija podataka iz lokalnog formata u format koji se šalje
Unmarshaling – koverzija podataka iz vanjskog formata u lokalni format
8
3.2 Remote method invocation – RMI
Koristi se kod objektno orjentiranih aplikacija. Uslugama se pristupa pozivom metode
objekta.
Sučelje metoda se opisuje IDL jezikom.
Kompaliranjem se dobivaju klijentski i serverski stub u kojima se mapiraju objekti na
klijenskoj i serverskoj strani.
Međusloj rješava razlike u formatiranju postupokom marshaling/unmarshaling , kao i
način adresiranja vezivanja i obrade greške.
Poznata rješenja za RMI :
1. COBRA (Common object request broker arhitecture)
2. DCOM (Distributed Componenet Object Model)
3. Java RMI ( Java Remote method invocation)
- Potpuno inegriran sa java jezikom
4. .Net remoting
COBRA – standard kojega je donijela OMG grupa kao smjernica u razvoju distribuiranih
objektnih aplikacija.
Komunikacija među objektima se odvija kroz middleware sustav – ORB.
Nema razlike između klijenta i servera. Svaki entitet je objekt koji pruža usluge drugim
objektima i prima usluge od drugih objekata.
Pisanje RMI aplikacije:
1.Definiranje sučelja servera
2. Implementacija sučelja
3. Generiranje stuba
4. Implementacija servera 5. implementacija klijenta
9
4 Web servisi
Servis je aplikacija koja nije namjenjena da postoji kao zasebna aplikacija već da je
koriste druge aplikacije. Servis pruža neku funkcionalnost drugim aplikacijama i ima
opisano sučelje. Aplikacije koriste neki komunikacijski mehanizam.
Web servis nudi funkcionalnost drugim aplikacijama, pristupa mu se putem HTTP
protokola. Web općenito je usluga interneta.
Na webu HTTP protokol se koristi za komunikaciju , URL za imenovanje resursa , a
HTML za prikaz informacija.
SOA (services oriented arhitecture) – to je softvare koji radi na principu servisa koji
međusobno komuniciraju.
Tehnologije za realizaciju web servisa moraju uključivati :
1. Mehanizam opisa sučelja (funkcionalnosti)
2. Transportni mehanizam za prijenos podataka između klijenta i servera
3. Komunikacijski mehanizam
4. Adresni mehanizam
Razlikujemo 3 tipa web servisa :
- SOAP (klasnični web servis)
- REST
- XML-RPC
WEB API – je programesko sučelje za korištenje web servisa
4.1 REST web servisi
- svaki resurs adresian je sa uri
- jedan URI je jedan dio web servisa na kojem se mogu pozvati funkcionalnosti
- funkcionalnosti se pozivaju HTTP metodama (POST,GET …)
- web api servis mora biti opisan u dodatnoj dokumentaciji
REST web servisi su stateles :
- ne pamte klijenta ni njegovo stanje
- dobri su za CRUD operacije (Create , Read, Update and DELETE)
Format podataka obično XML ili JSON.
10
4.2 XML RPC
Protokol za RPC koji koristi XML poruke i HTTP protokl. Koristi se XML za pozivanje
udaljenih procedura. Zahtjevi se šalju HTTP protokolom.
Sadrži samo par tipova podataka i naredbi. XML tagovi koji se mogu koristiti su
predefinirani.
Dodavanjem novih funkcionalnosti nastao je SOAP
4.3 SOAP web servisi
SOAP(Simple object acces protocol) web servisi koriste SOAP protokol za komunikaciju.
SOAP protokol je neovisan o platformi te je baziran na XML-u.
Glavne karakteristike :
- Proširiv
- Neutralan ( može se koristiti na bilo kojem protokolu kao HTTP, TCP UDP SMTP…)
- Neovisan (moze se koristiti kod bilo kojeg programskog modela)
SOAP poruka
Envelope (omotač) – predstavlja XML dokument kao SOAP message, obavezan
Header (zaglavlje) – sadrži dodatne informacije, neobavezan
Body – sadži informacije o pozivu i odgovoru.
Fault – sadrži informacije o eventualnoj pogreški
SOAP poruka može imati više XML elemenata. Pa da bi se izbjegli konfikti koristi
se imenovanje koje je obavezno.
Ukoliko dodje do pogreške prilikom komuniciranja SOAP ima mehanizam reagiranja na
pogreške. Pošiljatelj se obavještava o nastanku pogreške.
Opis pogreške se prenosi unutar fault elementa u tijelu poruke.
SOAP se vrlo često koristi u kombinaciji sa WSDL jezikom i UDDI registrom.
11
WSDL – Web services description language
To je zapravo XML dokument koji opisuje tehničke detalje web servisa (uri, metode ,
argumente …)
ELEMENTI WSDL-a :
Definitons – root element svakog WSDL dokumenta, sadrži naziv web servisa i imenski
prostor
Message – sadrži podatke koje servis koristi
Port type – operacije koje obavlja servis
Binding – komunikacijski protokol kojeg servis koristi
UDDI (Universal description discovery and itegration)
- Registar informacija o web servisima (kao imenik)
12
5 Imenovanje
Imena zauzimaju važnu ulogu u računalnim sustavima. Koriste se za dijeljene resusrsa,
identificiranje entiteta …
Rezolucija imena – proces u kojemu se pronalazi entitet kojemu znamo ime. Glavni
zadatak sustava imenovanja je omogućavanje jednostavne rezolucije imena.
Ime u distribuiranim sustavima je niz bitova ili znakova koji se koriste za poziv entiteta.
Entitet u distribuiranom sustavu može biti printer, disk, datoteka , proces , korisnik , web
stranica …
Da bi radili sa entitetima trebamo pronaći njihovu pristupnu točku. Ime pristupne
točke naziva se adresa.
Entitet može imati više pristupnih točaka. (npr čovjek može imati više telefona , a adresa
telefona je njegova pristupna točka)
U distribuiranom sustavu entitet može biti server koji nudi različite usluge. Uslugama se
pristupa korištenjem pristupnih točaka.
IDENTIFIKATORI
- Odnosi se na samo jedan entitet
- Svaki entitet ima max jedan identifikator
- Identifikator se uvije odnosi na isti entitet (nije reusable)
Identifikator omogućava jedinstveno obraćanje entitetu.
Adrese se ne mogu koristiti kao identifikatori, jer se adrese mogu nanovo dodjeljivati
drugim entitetima ! (Adresu koristimo za pristup pristupnoj točki)
Razlikujemo :
- Imena razumljiva ljudima (imena datoteka, dns imena …)
- Imena razumljiva strojevima (Ethernet adresa - niz bitova )
13
5.1 Obična imena (Flat naming)
Sustavi koja koriste obična imena trebaju pronaći identifikator za adresu određenog
entiteta.Kod običnog imenovanja ime predstavlja slučanji niz znakova. Pronalazak
traženog entiteta može se napraviti na više načina :
1. Jednostavni načini lociranja Broadcasting ili multicasting
Primjer u lokalnim mrežama :
- Računalo koje želi komunicirati šalje svim računalima na mreži poruku koja sadrži
ime entiteta.
- Samo računala koja mogu ponuditi pristupnu točku odgovaraju sa adresom
pristupne točke
Ovaj princip prisutan je u ARP (Adress resolution protocol). Ovo rješenje nije
skalabilno (povećanjem mreže postaje neučinkovito).
Za Multicasting princip je isti samo se zahtjevi šalju dijelu računala u mreži
2. Prosljeđivanje pokazivača Forwarding pointers
Svakim premještanjem entiteta sa lokacije A na lokaciju B ,na lokaciji A se ostavlja
zapis o novoj lokaciji.
Ovakvim pristupom stvara se lanac do stvarnog entiteta. Ako izgubimo jedan zapis,
cijeli lanac postaje neupotrebljiv
3. Home pristup
Kada se entitet premješta na novu lokaciju on obavještava svoju „home lokaciju“ o
novom mjestu. Da bi locirali entitet prvo pitamo njegovo „home“ mjesto gdje se on
nalazi. Mana je fiksna “home” lokacija
4. Distribuirane hash tablice
5. Hijerarhijski pristup
Mreža se dijeli na skup domena. Svaka domena podjeljena je na poddomene.
Ovakav pristup rezultira kreiranjem stabla direktorija domene.
14
5.2 Strukturirana imena (name spaces)
Strukturirana imena su bolja za ljude. Kreiraju se kao kompozicija razumljivih imena.
Imenički prostori – Name spaces
Koristi se usmjereni aciklični graf za hijerarhijsku organizaciju imena. Listovi grafa
predstavljaju entitete. Čvorovi direktorija imaju izlazne linije koje se označavaju
identifikatorima.
Rezolucija imena se radi tako da pretražujemo tablicu od root čvora.
Domain Name System (dns) - jedan od najvećih distribuiranih imeničkih servisa.
Organiziran je hijerarhijski kao stablo sa korjenom.
Svaki čvor osim root čvora ima točno jednu ulaznu vezu koja se označava imenom čvora.
Podstabla se nazivaju domene.
15
5.3 Imenovanje pomoću atributa
Obična imena dozvoljavaju da se na jednoznačan način neovisan o lokaciji obratimo
entitetu. Strukturirana imena omogućavaju još „human frendlinesa“. Ali u distribuiranim
sustavima više nam trebaju informacije pa tako ne tražimo entitet , nego informaciju
nekog entiteta.
Napopularniji način za opisivanje entiteta : kolekcija <atribute,value> parova
Ovaj pristup se zove imenovanje temeljeno na atributima.
Problem je odabrati pravi set atributa za opisani resurs.
RDF (Resource desctiption framework) - resurs se opisuje nizom rečenica
Rečenice su tripleti <subjekt,predikat, objekt>
Npr <Person , name , Alice>
Upiti :
- Kada imamo pohranjene opise resursa , možemo postavljati upite
- Upit može vratiti referencu na resurs kojeg aplikacija može koristiti
5.4 Hibridni sustav
Nastao je kombinacijom strukturiranog imenovanja i imenovanja temeljenog na
atributima.
Primjer LDAP(Lightweight Directory Access Protocol).
16
6 Sinkronizacija
Procesi surađuju i međusobno se sinkroniziraju. Suradnja je omogućena sustavom
imenovanja. Više procesa može pristupati istom resursu, ali moramo osigurati
sinkronizaciju.
Sinkronizacija u distribuiranim sustavima se odnosi na :
- Osiguravanje da procesi istovremeno ne pristupaju istom resursu (mutex)
- Dogovor o poretku događaja
o Ako se događaj D1 mora dogoditi prije događaja D2
6.1 Sinkronizacija satova
Program make kompajlira više .c datoteka u jednu .o datoteku. Datoteke imaju zapisano
zadnje vrijeme izmjene.
Kada pozovemo naredu make , za svaku .c datoteku provjerava se da li je vrijeme njene
zadnje izmjene bilo nakon izmjene odgovarajuće .o datoteke.
Ako je ta .c datoteka izmjenjena nakon trebamo je ponovno kompajlirati , a ako nije
moćemo koristiti strojni kod koji je dobivem prošlim pozivom make naredbe.
Problem nastaje ako su kompajleri na različitim računalima i njihovi satovi nisu
usklađeni.
6.1.1 Fizički satovi
Fizički sat generira interupte , a softwerski sat broji interupte.
Kod Softwerskog sata vrjednost je broj sekundi od nekog predefiniranog vremena (za
unix sustave od 1.1.1970) koje se pretvore u stvarno vrijeme.
Sat na računalu :
Quartz crystal – oscilira na određenoj frekvenciji.
Svaka oscilacija kristala umanjeuje vrijednost countera za 1.
Kada counter dođe do nule, ponovno učita vrijednost holding
registra.
Kada vrijednost countera dođe na 0 generira se interupt poznat pod
nazivom tick.
Za svaki tick sata procedura obrade interupta dodaje 1 na vrijeme
pohranjeno u memoriju.
17
6.2 Tri filozofije sinkronizacije vremena
1. Pokušati zadržati sve satove sinkronizirane što bliže stvarnom vremenu (UTC -
coordinated uniersal time) - > NTP
2. Pokušati zadržati sve satove međusobno sinkronizirane , iako se zajedničko
vrijeme razlikuje od UTC - Berkley algoritam
3. Pokušati sinkronizirati dovoljno da se procesi koji surađuju mogu dogovoriti o
poretku događaja – ovakve satove zovemo logički satovi.
6.3 Logički satovi
Logički satovi nemaju potrebu za zajedničkim i točnim vremenom. Potrebno je samo
sinkronizirati događaje. Make naredba gleda samo jeli se nešto dogodilo prije ili kasnije.
Dvije implementacije logičkih staova
- Lamportov logički sat
Uvodi se relacija a->b (događaj a se događa prije b)
- Vektorski sat
6.4 Međusobno isključivanje – Mutual exclusion
Ciljevi mutual exclusion algoritma :
1. Izbjeći deadlocks
Ne smije se dogoditi da 2 procesa koja su blokirana čekaju jedan drugog za
dohvaćanje resursa.
2. Nema „izladnjivanja procesa“ (starvation)
Ne smije se dogoditi da jedan proces čeka neodređeno vrijeme , dok drugi više puta
pristupa resursu
3. Pravednost
Procesi pristupaju resursu onim redom kako su ga i zatražili. Ovim se izbjegava
igladnjivanje
4. Toleriranje grešaka
Dobar algoritam za toleranciju grešaka trebao bi se moći oporaviti od greške.
18
Razlikujemo :
Algoritme temeljene na tokenu (token based)
- Samo proces koji ima token može pristupiti resursu. Kada završi sa resursom
predaje token dalje
- Izbjegava se izgladnjivanje i deadlock
- Ako se token izgubi , posebna procedura kreira novi token i provjerava da je to
jedini.
Algoritme temeljene na dozvoli
- Proces koji treba pristupiti resursu traži dozvolu
- Može se implementirati na više načina
6.4.1 Algoritmi za mutual exclusion
1. Centralizirani algoritam
Jedan proces ima ulogu koordinatora. Kada proces želi pristupit resursu šalje zahtjev
koorinatoru, ako je resurs slobodan dozvoli pristup , ako resurs nije slobodan stavi ga
u red čekanja.
Prednosti : garantira međusobno isključivanje, nema izdlanjivanj i deadlocka ,
blokirajuci poziv , jednostavnost
Mana : samo je jedan kordinator, ako se sruši ode sve u pičku materinu.
2. Decentralizirani algoritam
Predpostavlja se da je resurs repliciran n puta i svaka replika ima svog koordinatora.
Kada proces traži pristup , zahtjev šalje svim koordinatorima.
Treba mu m > n/2 dozvola da pristupi resursu.
Ovim načinom smanjuje se ranjivost centraliziranog pristupa. Problem izgladnjivanje ,
mala efikasnost …
3. Distribuirani algoritam
Kada proces želi pristupiti resursu šalje svim drugim procesima zahtjev koji sadrži
ime resursa, broj procesa i lokalno logičko vrijeme.
Kada drugi proces primi poruku mogu se desiti 3 situacije :
- Proces ne pristupa niti želi pristupati navedenom resursu, tada šalje OK poruku
pošiljatelju.
- Proces već ima pristup navedenom resursu pa ne odgovara dok ne oslobdi
resurs.
- Proces također želi pristupati resursu pa onda uspoređuju svoja logička vremena.
19
Ako je pošiljatelj prije poslao zahtjev odgovara sa OK , inače blokira pošiljatelja i
stavlja ga u red čekanja
Dakel proces šalje zahtjev i čeka te pristupa resursu kad svi odgovore sa OK.
Kada završi rad sa resursom , šalje ok poruku svim procesima u svom redu čekanja. Ako
dva proces u isto vrijeme zatraže pristup , onaj koji je zatražio prvi pristup dobije pravo.
Problem : pogreška jednog procesa prouzrokovat će pad cijelog sustava.
4. Token-ring algoritam
Tokeni su povezani sabirničkom mrežom. Svaki proces zna svog sljedbenika. Token se
predaje procesu 0 ,a zatim svaki proces svom sljedbeniku.
Kad proces primi token pristupa resursu ako mu treba , a u suprotnom token prosljeđuje
dalje.
6.4.2 Izbor koordinatora
Mnogi distribuirani algoritmi zahtjevaju da se jedan proces postavi kao vođa, ili
koordinator. Ako se procesi ne razlikuju po nekoj specifičnoj značajki potrebno je da
jedan od njih preuzme ulogu, ali nije bitno koji. Pretpostavit ćemo da svaki proces ima
jedinstveni identifikator. Koordinator treba biti proces sa najvećim brojem.
Bully algoritam
Kada neki proces primjeti da nema koordinatora šalje svim procesima sa brojem većim
od svog ELECTION poruku. Ako nijedan ne odgovori tada preuzima koordinaciju. Ako
jedan od procesa odgovori on preuzima posao odabira koordinatora.
Ring algoritam
Procesi trebaju biti logički poredani u prsten tako da svaki proces zna tko mu je
sljedbenik. Kada se koordinator sruši, proces koji to primjeti šalje ELECTION poruku
sljedbeniku. Ako sljedbenik ne odgovara šalje ga sljedećem procesu. Svaki proces
dodaje svoj broj na poruku. Kada poruka dođe natrag do pošiljatelja on će to primjetiti
po tome što poruka sadrži njegov broj procesa, pretvara je u COORDINATOR poruku i
šalje kroz prsten kako bi sve obavjestio tko je novi vođa. Ako dva procesa istovremeno
primjete pad koordinatora, oba će pronaći istog novog koordinatora.