Modeli porazdeljenih sistemov
Povezave v omrežju
- povezava s sprejemljivimi izgubami (UDP): sporočila se lahko izgubijo in podvajajo najprimernejši
- zanesljiva povezava (TCP): sporočila dostavljena točno enkrat
- overovljena zanesljiva povezava (TLS): nadgradnja z mehanizmi overovitve pošiljatelja
Obnašanje procesov
- binazntinski model / model z napako: predpostavlja nepričakovano obnašanje (hrošči, napake, zlonamerni posegi, …)
- neobnovljivi proces: predpostavlja pravilno obnašanje, a se ob sesutju ne vzpostavi nazaj
- obnovljivi proces: predpostavlja pravilno obnašanje, a se ob sesutju ponovno zažene (vseeno izgubimo vsebino pomnilnika) najprimernejši
Modeliranje časa
- sinhroni model: posredvanje sporočila se vedno zaključi v danem časovnem okvirju nerealistično
- asinhroni model: posredovanje sporočila lahko traja neomejen čas robustnost, a ni zmeraj možen
- delno sinhronski model: predpostavlja večinoma sinhrono delovanje z možnostjo zakasnitev najprimernejši
Zaznavanje napak
Posredovanje sporočila sporočilo ne prispe do prejemnika / prejemnik ga ne obdela / potrditev ne pride do pošiljatelja
Pošiljatelj po določenem času predpostavi nedostopnost prejemnika zaključi z napako / ponovi posredovanje sporočila
Čas v porazdeljenih sistemih
Fizične ure
Merijo realni / procesorski čas
Večina OS pozna monotono uro: relativni čas od dogodka (npr. zagona), a neuporabna pri primerjavi dogodkov
Kvarčni kristal
Zaniha -krat na sekundo =mikrosekunde na sekundo
Problem: kristali niso iste oblike zamiki potrebna sinhronizacija
Atomska ura
Cezij zaniha ~-krat na sekundo natančnost na 1s v 3M letih
TAI (Time Atomic International): povprečje >300 atomskih ur
Astronomska ura
Gibanje zemlje manj natančno potrebno usklajenvanje s prestopnimi sekundami
UTC: Linux - sekunde od 1.1.1970 / Windows - sekunde od 1.1.1601
Sinhronizacija ur po protokolu NTP (Network Time Protocol)
Strežniki (atomska ura / sprejemnik GPS) sporoča usklajen čas
Odjemalci morajo upoštevati zamike ob zahtevi: čas potovanja zahteve, procesiranja in potovanja odgovora

Izračun zamika ure:
Izboljšana natančnost: povprečimo večkratne odgovore enega/več strežnikov
Popravljanje ure:
- odjemalec uro počasi sprotno popravlja
- odjemalec uro takoj nastavi na novo vrednost
- odjemalec zazna napako in ne naredi ničesar
Logične ure
Merjenje časa v dogodkih: ob dogodku algoritem določi logični časovni žig
Dogodek se je zgodil pred dogodkom :
- in tečeta na istem procesu in se je zgodil pred
- je pošiljanje sporočila in je prejemanje sporočila
- obstaja dogodek , ki se je zgodil po in pred
Lamportova ura
Sinhronizacijska točka: pošiljanje sporočila - dogodki pred sinh. točko so se zgodili pred dogodki za sinh. točko
Vsak proces ima svoj števec dogodkov, ob vsakem dogodku števec++
- pošiljanje sporočila:
števec++, števec pripnemo sporočilu - prejem sporočila:
števec=max(števec, števec_iz_sporočila),števec++
Dva nepovezana dogodka imata lahko isti časovni žig ne moremo določiti vzročne povezanosti vseh dogodkov ali zaznati sočasnosti dogodkov
Vektorska ura
Vsak proces ima svojo tabelo števcev, ob vsakem dogodku števci[moj]++
- pošiljanje sporočila:
števci[moj]++, tabelo števcev pripnemo poročilu - prejem sporočila: za vse števce
števci[i]=max(števci[i], števci_iz_sporočila[i]),števec[moj]++
se je zgodil pred , če:
- vsi števci tabele istoležni števci tabele
- vsaj en števcev tabele < istoležni števec tabele
Protokoli za razširanje sporočil
Dostava po najboljših močeh
Sporočilo na nivoju omrežne opreme (IP multicast) pošljemo vsem vozliščem
Zagotavlja, da sporočila dobijo vsa delujoča vozlišča
Zanesljiva dostava sporočil
Sporočilo pošljemo vsakemu procesu posebej, ob napaki ga pošljemo ponovno
Nestrpno razširjanje
Proces prvič prejme sporočilo prepošlje ga vsem ostalim procesom
Neučinkovito: vsak izmed procesov prejme enakih sporočil -
Razširanje z govoricami
Proces prvič prejme sporočilo prepošlje podanemu številu naključnim procesom
Verjetnost za zgrešitev zelo majhna, a
Vrstni red dostave
Razširjanje FIFO
Sporočila posameznega procesa morajo biti dostavljena v enakem vrstnem redu, kot so bila poslana (vrstni red sporočil različnih procesov je poljuben)
Popolnoma urejeno razširjanje
Sporočila so vsem procesom dostavljen v enakem vrstnem redu, ki pa je lahko poljuben
Popolnoma urejeno FIFO razširjanje
Zlitje popolnoma urejenega in FIFO razširjanja
Vzročno razširjanje
Sporočila različnih procesov morajo biti dostavljena v enakem vrstnem redu, kot so bila poslana (vrstni red sporočil v primeru istočasnega pošiljanja je poljuben)