uvod u distribuirane informacijske sustave. semestar/uvod u distribuirane... · 1 1 komunikacija...

21
1/24/2017 Uvod u distribuirane informacijske sustave Skripta za 2. kolokvij Jurica Šeparović

Upload: others

Post on 03-Sep-2019

15 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

1/24/2017

Uvod u distribuirane informacijske sustave Skripta za 2. kolokvij

Jurica Šeparović

Page 2: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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

Page 3: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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)

Page 4: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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 …

Page 5: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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)

Page 6: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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 …

Page 7: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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.

Page 8: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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

Page 9: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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

Page 10: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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

Page 11: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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.

Page 12: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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.

Page 13: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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)

Page 14: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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 )

Page 15: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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.

Page 16: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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.

Page 17: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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).

Page 18: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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.

Page 19: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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.

Page 20: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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.

Page 21: Uvod u distribuirane informacijske sustave. semestar/Uvod u distribuirane... · 1 1 Komunikacija Komunikacija među procesima je srž distribuiranih sustava. Komunikacija na razini

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.