You are on page 1of 58

DISTRIBUIRANI RAČUNALNI SUSTAVI

Predavanje 1

1. Usporedite raspodjeljeno i centralizirano računarstvo, te navedite barem tri


primjera raspodjeljenih računalnih sustava.

Nekada su se računalne operacije obavljale na jednoprocesorskom računalu.


Jednoprocesorsko računalstvo može se nazvati centraliziranim računalstvom.
Raspodjeljeni sustav je skupina nezavisnih računala, spojenih mrežom, sposobnih za
suradnju u obavljanju postavljeng zadatka. Raspodjeleno računalstvo je računalstvo
omogućeno na raspodjeljenom sustavu. Raspodjeljeno računalstvo je značajno u
porastu zahvaljujući povećanju perfomansi i smanjenju cijene računala i računalnih
mreža.

Primjeri raspodjeljenih računalnih sustava:


- Internet
- ATM (bankovna) računala
- Intranet/Radne skupine (workgroups)
- Racunalno okružje ubrzo ce u potpunosti postati od sveprisutnih (ubiquitous) umreženih
uređaja
- “Mreža je racunalo”
2. Skicirajte programske komponente raspodjeljenog susutava, te ukrako objasnite
ulogu svake od njih.

- Radne stanice (workstations): računala koja koriste krajnji korisnici za zahtjevne


primjene
- Posrednički sloj širi se preko više strojeva i omogućava aplikacijama isto sučelje.
- Poslužitelj (servers): računala koja omogućavaju računalna sredstva (resources) i
usluge (services)
- Uređaji osobne pomoći (Personal Assistance Devices): ručna računala spojena
bežičnom mrežom
3. Navedite i ukratko objasnite barem 5 izazova raspodjeljenog računalstva

- Raznorodnost (heterogeneity)
- Kašnjenje/prikrivenost (latency)
- Udaljena memorija nasuprot lokalnoj memoriji
- Sinkronizacija – istovremeno (concurrent) međudjelovanje normalno
- Djelomični kvarovi/pogreške – aplikacije se trebaju prilagoditi parcijalnim
ispadima/kvarovima dijelova sustava
- Potrebe za otvorenošću (openness) – Otvoreni standardi: ključna sučelja u
programskoj podršci i komunikacijskim protokolima trebaju biti standardizirana
- Sigurnost (security)- odbijanje napada na razini usluga; mobilni kodovi
- Nadogradivost/proširivost (scalability)
- Transparetnost (transparency)

4. Objasnite problem i rješenje proširivosti/nadogradivosti raspodjeljenog


računalnog sustava

Nadogradivost postaje sve značajnija jer se računalna okružja bitno mijenjaju.

Ključ nadogradivosti: decentralizirani algoritmi i strukture podataka

- Niti jedan stroj nema cjelovitu informaciju cijelog sustava


- Strojevi donose odluke na temelju lokalno raspoloživih informacija
- Kvar na jednom stroju ne narušava izvođenje algoritama
- Implicitno se ne pretpostavlja da postoji globalno vrijeme/sat

5. Objasnite problem i rješenje transparetnosti raspodjeljenog računlanog sustava

- Transparetnost pristupa omogućava da lokalni i udaljeni resursi mogu biti


dostupni korištenjem identičnih operacija.
- Transparetnost položaja omogućava pristup resursima bez saznanja o njihovom
fizičkom ili mrežnom položaju (npr. zgrada ili IP adresa).
- Transparetnost itovremenosti omogućava mnoštvo procesa istovremeni rad
uporabom dijeljenih resursa bez njihova međusobnoh ometanja.
- Transparetnost repliciranja omogućava upotrebu višestrukih resursa s ciljem
povećanja pouzdanosti i performansi bez saznanja o resursima od strane korisnika
ili primjenskog programa.
- Transparetnost pogreške/kvarova omogućava prikrivanje pogrešaka, a korisniku
i primjenskim programima završetak izvođenja bez obzira na sklopovske ili
programske pogreške.
- Transparetnost mobilnosti omogućava premještaj resursa i klijenta unutar sustava
bez utjecaja na rad korisnika ili programa.
- Transparetnost performansi omogućava rekonfiguriranje sustava kao odgovor na
promjene opterećenja (load) s ciljem poboljšanja perfomansi.
- Transparetnost nadogradnje (scaling) omogućava sustavu i primjenskim
programima širenje bez promjena strukture sustava ili primjenskog programa.

6. Ukratko usporedite asikroni i sinkroni raspodjeljeni sustav

Sinkroni raspodjeljeljeni sustavi: sustavi sa sljedećim definiranim ograničenjima


- Vrijeme za izvođenje svakog koraka procesa ima donju i gornju granicu (upper and
lower bound).
- Svaka poruka prenesena kanalom, primljena je bez poznatih ograničenja u
kašnjenju.
- Svaki proces ima lokalni sat čiji drift je ograničenje s gledišta rada u stvarnom
vremenu

Asikroni raspodjeljeni sustavi

- Svaki korak procesa može trajati proizvoljno dugo vremena


- Vrijeme isporuke poruka je proizvoljno
- Driftovi satova su proizvoljni
Neke posljedice

- U sinkronom sustavu, odstupanja u vremenu (timeouts) mogu poslužiti za otkrivanje


pogrešaka
- Nemoguće je otkriti pogrešku ili 'postići sporazum – reach agreement' u asikronom
sustavu

7. Navedite barem 5 proizvoljnih i vremenskih pogrešaka u raspodjeljenom


računalnom sustavu

- Proizvoljne pogreške

o Stop pogreška – proces staje i ostaje zaustavljen. Ostali procesi mogu otkriti
to stanje.
o Ispad (chrash) – proces staje i ostaje zaustavljen. Ostali procesi ne mogu
otkriti to stanje pogreške.
o Propust (omission) – Poruka ubačena u spremnik odlaznih poruka nikad ne
stiže na drugu stranu, odnosno spremnik dolaznih poruka.
o Send-omission – proces zavsršava send ali poruka nije stavljena u odlazni
spremnik poruka.
o Receive-omission – Poruka je stavljena u spremnik procesovih dolaznih
poruka ali je proces ne prima.
o Proizvoljna – Proces/kanal proizvoljno se ponaša: može slati/prenositi
proizvoljne poruke u proizvoljnom vremenu, nadzirati propuste; proces
može stati ili poduzeti neispravan korak.

- Vremenske pogreške

o Sat – procesov lokani sat prekoračuje ograničenja u driftu (real time)


o Performanse (utječe na proces)- proces prekoračuje ograničenja intervala
između dva koraka
o Performanse (utječe na kanal) – prijenos poruke traje dulje od postavljenog
ograničenja.

8. Navedite osnovne ciljeve posredničkog sloja

- Posrednički sloj vodi računa o raznorodnosti


- Podrška više razine
➢ Čini raspodjeljenu prirodu aplikacije transparetnom prema
korisniku/programu
o Remote Procedure Calls
o RPC + Object orientation = CORBA
- Podrška više razine, ali prikazuje udaljene objekte, parcijalne pogreške, itd. prema
programeru
➢ JINI, Javaspaces
- Dogradivost
9. Objasnite osnovna svojstva raspodjeljenih aplikacija i skicirajte postupak
pozivanja poslužitelja od strane klijenta

Aplikacija koja se sastoji od skupa procesa koji su raspodjeljeni po mreži računala i rade
zajedno kao postrojenje za rješavanje zajedničkog problema.

U prošlosti uglavnom 'klijent - poslužitelj'

➢ Upravljanje resursima (resource managment) centraliziran na


poslužitelju

'Peer to Peer' računalstvo predstavlja pomak prema istinskim raspodjeljenim


aplikacijama

10. Skicirajte osnovne obilke organiziranja procesa i memorije u raspodjeljenom


računalnim sustavima, te oblike višeprocesorskih i višeračunalnih sustava.
Višeprocesorski sustavi

Višeračunalni sustavi

11. Usporedite prema stupnju transparetnosti, osnovi komuniciranja, upravljanju


resursima, nadogradivosti i otvorenosti raspodjeljene, mrežne i posredničke OS.
Predavanja 2

12. Skicirajte prema razini složenosti paradigme raspodjeljenih računalnih sustava

13. Skicirajte i ukratko objsnite paradigmu izmjene poruka

Temeljna paradigma raspodjeljenih aplikacija.

- Proces šalje poruku, koja često predstavlja zahtjev.


- Poruka je isporučena prijemniku, koji je obrađuje i moguće šalje kao odziv.
- Obrnuto, odgovori mogu okidati sljedeći zahtjev koji vodi do sljedećeg odziva i tako
dalje

- Osnovne operacije koje podupiru izmjenu poruka : send i recive


- Za komuniciranje zasnovano na spajanju, potrebne su i operacije connect i
disconnect
- Apstrakcija ovoga modela omogućavaju ulaz i izlaz među spojenim procesima,
slično I/O datotekama. Te I/O operacije sadrže detalje komunikacije na razini OS-
a.
- Socket API sučelja zasnovano također na toj paradigmi.

14. Skicirajte i ukratko objasnite paradigmu klijent – poslužitelj

Najpoznatija paradigma mrežnih aplikacija: klijent – poslužitelj model dodjeluje


asimetrične uloge dvojima suradnim procesima. Jedan proces, poslužitelj, igra ulogu
davatelja usluge koi pasivno čeka na dolazak zahtijeva. Drugi, klijent, isporučuje određene
zahtjeve poslužitelju i očekuje njegov odziv.
- Jednostavnih načela, klijent – poslužitelj omogućava učinkovitu apstraktnost usluga
isporuke
- Poslužiteljski proces osluškuje ima li i prihvaća zahtjeve, dok klijentski proces
izdaje zahtjeve i prihvaća odzive
- Dodjeljivanjem asmiteričnih uloga dviju strana, pojednostavljena je sinkronizacija:
poslužiteljski proces čeka na zahtjeve, a klijent obrnuto očekuje odzive.
- Niz Internet usluga su klijent – poslužitelj aplikacije. Te usluge često su poznate kao
protokoli koje aplikacije uključuju – HTTP, FTP, DNS, finger, gopher i druge.

15. Skicirajte i ukrako objasnite P2P raspodjeljenu paradigmu

- U građama i mrežama sustava, peer – to – peer je arhitektura u kojoj se računalni


resursi i usluge izravno izmjenjuju između
računalnih sustava.
- Ti resursi i usluge uključuju izmjenu
informacija, obradbene cikluse, pohranu u
priručnu memoriju, pohranu datoteke na
diskovne prostore i drugo...
- U takvoj arhitekturi, računala koja se
tradicionalno koriste kao pojedinačni klijenti,
komuniciraju izravno između sebe i mogu imati
ulogu i klijenta i poslužitelja, pretpostavljajući
koja od tih dviju uloga je najučinkovitija za
mrežu.

U P2P paradigmi, procesi koji sudjeluju igraju jednake uloge, s jednakim mogućnostima
i odgovornostima (izraz 'peer' - ravnopravan). Svaki sudionik može uputiti zahtjev
drugom i primiti odziv.
16. Ukratko objasnite i usporedite point-to-point i publish/subscribe modele poruka

Point-to-point model poruka

Sustav poruka prosljeđuje poruku od pošiljatelja u red poruka primatelja. Za razliku od


osnovnog MP modela, posrednički sloj omogućava pohranu poruka i omogućava odvojeno
slanje i prijem poruka. Preko posredničkog sloja, pošiljatelj deponira poruku u red poruka
procesa primatelja. Proces primatelj izdvaja poruke iz svog reda poruka i rukuje sa svakom
zasebno.

U usporedbi s osnovnim MP modelom, ova paradigma omogućava dodatno apstrahiranje


asinkronih operacija. Za postizanje istog učinka osnovnim MP modelom, programer može
koristiti niti ili procese – djecu.

Publish/subscribe model poruka (Model poruka izdavač/pretplatnik)

Svakoj poruci pridruženi su određena tema ili događaj. Aplikacije zainteresirane za


događaje određenog događaja, mogu se pretplatiti na poruke tog događaja. Kada dođe do
očekivanog događaja, proces objavljuje poruku pozivajući događaj ili temu. Posrednički
sustav poruka raspodjeljuje poruku svim pretplatnicima.

Publish/subscribe model poruka omogućava potpunu apstraktnost za multicasting ili grupnu


komunikaciju. Operacija publish omogućava procesu multicast prema skupini procesa, dok
operacija subscribe omogućava procesu osluškivanje tog multicasta.

17. Skicirajte i ukratko objasnite poziv udaljene procedure (RPC)

Složenost aplikacija raste, pa je poželjno imati paradigmu koja omogućava programiranje


raspodjeljenih programa slično onima pokretljivima na jednom procesoru.

Remote Procedure Call (RPC) model omogućava takvu apstraktnost. U tom modelu, IPC
odvija se kao procedura, ili funkcija, poziv, koji su bliski programerima aplikacija.

RPC zahtjeva dva nezavisna procesa, koji mogu ostati na odvojenim strojevima. Ako
proces, A želi poslati zahtjev prema drugom procesoru, B, izdaje poziv procedure prema
B, a uz poziv prosljeđuje listu s vrijednostima argumenata. Kao u kod LPC (Local Procedure
Calls) poziv udaljene procedure okida preddefinirani zahvat u proceduri omogućenoj od
procesa B. Nakon završetka procedure, proces B vraća vrijednost procesu A.
RPC omogućava programerima izgradnju mrežnih aplikacija koristeći programska načela
slična LPC, dajući potrebnu apstraktnost IPC i sinkronizaciji događaja.

Od uvođenja ranih 1980ih, RPC model se intezivno koristi.

Dva su glavna Apija za RPC.

➢ Open Network Computing Remote Procedure Call (RPC API za Sun


Microsystems ranih 1980ih)
➢ Open Group Distributed Computing Environment (DCE) RPC.

Oba Apija omogućavaju alat, rpcgen, za pretvorbu RPC-a u LPC na stroju

18. Skicirajte i ukratko objasnite poziv udaljene metode (RMI).

- RMI je objektno orijentirani ekvivalent od RMC (remote method call)


- Proces poziva metode u objektima, koji ostaju na udaljenom domaćinu (remote
host).
- Kao u RPC, argumenti se mogu proslijediti pozivanjem.

19. Skicirajte i ukrako objasnite Object Request Broker (ORB) paradigmu.

Aplikacija izdaje zahtjeve prema object request broker (ORB), koji ih usmjerava prema
odgovarajućem objektu koji omogućava traženu uslugu.

Bliska je RMI modelu u pristupu udaljenim objektima, ali object request broker radi kao
posrednički sloj koji aplikaciji dozvoljava mogući višestruki pristup udaljenim ili lokalnim
objektima.
Broker zatjeva također može raditi kaoposrednik prema raznorodnim objektima,
omogućavajući međudjelovanje među objektima koristeći razne Apije ili se pokrećući na
raznim platformama.

Ova paradigma osnova je Object Management Group's CORBA (Common Object Request
Broker Architecture) arhitekture.

20. Ukratko objasnite paradigmu prostora objekata

Najveća apstrakcija OO paradigmi, paradigma objektnog prostora pretpostavlja postojanje


logičkih entiteta kao objektni prostori (object spaces). Sudionici aplikacija teže u zajednički
prostor objekata.

Davatelj usluge smješta objekte kao djelove prostora objekta, a tražitelji koji su pretplaćeni
na proistorm pripadaju tim entitetima.

Kao dodatak apstarkcijama koje omogućavaju druge paradigme, ova paradigma omogućava
virtualni prostor ili sobu za sastanke između davanja i zahtjevanja mrežnih resursa ili
objekata. Ta apstrakcija sakriva sve detalje vezane za specificiranje resursa i objekata, kao
što su RMI, ORB ili mrežne usluge. Ovu mogućnost ima JavaSpaces.

21. Ukratko skicirajte i objasnite paradigmu mobilnih agenata.

- Mobilni agent – prenosivi (transportable) program ili objekt.


- Agent je lansiran s izvornog domaćina (host). Agent putuje od domaćina do
domaćina putem ruti na karti (itinerary) koju nosi.
- Pri svakom stajanju, agent pristupa nužnim resursima ili sulugama i obavljaju
zadatke nužne za obavljanje ciljanog posla.
Paradigma omogućava apstrakciju prenosivog programa ili objekta. Tijekom izmjenje poruka,
podatke nose programi/objekti koji putuju između sudionika

Predavanje 3

22. Objasnite prednosti i nedostatke višenitnosti u raspodjeljenim računlanim


sustavima.

Prednosti :
- Niti obično dijele adresni prostor – izmjene okoline za niti na jednom procesu je
'jeftina'
- Višenitni proces može se izvoditi transparetno na jednom procesoru ili na
višeprocesorskom susutavu
- Niti koje surađuju mogu biti prirodni strukturni mehanizam nekih aplikacija
- Implementiranje niti treba omogućiti samo obuhvaćenoj niti blokiranja sustavskog
poziva

Nedostaci:

- Nadzor korištenja dijeljenih podataka je u potpunosti prepušen programeru


- Niti koriste isti adresni prostor, što povećava mogućnost pogreške

23. Objasnite izraz za paralelizam na razini niti

Ako je ci vrijeme u kojem se i niti izvodi istovremeno

a N maksimalan broj niti koje se mogu izvesti u isto vrijeme


24. Ukratko navedite najbitnije djelove dizajna klijenta i detalje dizajna poslužitelja

Detalji dizajna klijenta

- Cilj: omogućiti sredinu u kojoj korisnik mešudjeluje s udaljenim poslužiteljima


- Višenitnost:
o Sakriti komunikacijska kašnjenja (latency)
o Omogućiti višestruka simultana spajanja (connections)
- Mora se znati ili otkristi položaj poslužitelja
o Poznata krajnja točka (endpoint) ili sučelje (port) nasuprot lookup
mehanizma
- Blokranje (sinkrono) zahtjeva ili neblokiranje (asinkrono)
- Transparetnost repliciranja

Detalji dizajna poslužitelja

- Omogućavanje informacija o krajnjoj točki


o Poznata krajnja točka
o Deamon osluškivanje na krajnjoj točki
o Superposlužitelj koji generira niti
- Spajanju usmjereno (connection-oriented) ili poslužitelj bez spajanja (connection-
less)
o TCP ili UDP
- Istovremeni (concurrent) ili ponavljajući (iterative) poslužitelji: rukuju višestrukim
zahtjevima istovremeno ili jedan poslije drugog
- Poslužitelj koji ne gubi stanja nakon pada (stateful) ili koji gubi (stateless)

25. Skicirajte spajanje klijenta na poslužitelj korištenjem deamona i korištenjem


super psolužitelja
26. Skicirajte način rada višenitnog poslužitelja organiziranog po modelu
dispečer/radnik

27. Ukratko objasnite razliku između poslužitelja s pamćenjem i bez pamćenja


stanja, te između konekcijskih i beskonekcijskih poslužitelja

Poslužitelj s pamćenjem stanja (stateful)


Pamti stanja klijenata: - Bilježi kada je datoteka otvorena, pa može obaviti i
preddohvaćanje - Zna koje podatke je klijent cachirao i omogućuje mu zadržavanje
lokalnih kopija dijeljenih podataka

Poslužitelj bez pamćenja stanja (stateless)


Nikad ne zadržava točne infomacije o stanju klijenta nakon obrade zahtjeva: - Ne
bilježiti otvaranje datoteka (jednostavno ih zatvoriti) - Ne voditi brigu o cachiranju -
Ne pamtiti aktivnosti klijenta
28. Objasnite čemu služi virtualizacija na koji način i na koji razinama se izvodi, te
navedite jedan alat koji ste koristili za virtualizaciju

Virtualizacija je bitna iz sljedećih razloga:


Sklopovlje se mijenja brže nego programska podrška
Pojednostavljenje prenosivosti i migriranja koda
Izoliranje neispravne ili napadnute komponente sustava

Četiri su tipa oponašajućih sučelja na četiri različite razine:


1. Ahitektura instrukcijskog skupa: skup strojnih instrukcija s dva
podskupa:
- Privilegirane instrukcije: izvršavanje im je omogućeno samo od
strane OS-a.
- Opće instrukcije: može ih izvoditi bilo koji program
2. Sustavski pozivi omogućeni od strane OS-a
3. Bibliotečni pozivi, poznatiji kao Application Programming Interface

Alat koji smo koristili: Virtual Box , JVM

29. Ukrako objasnite postupak i razloge migriranja koda.

Migriranje procesa – cijeli proces je premješten s jednog na drugi stroj


Migriranje koda – premještaj dijela posla
Može se načiniti s klijenta na poslužitelj ili s poslužitelja na klijent
Razlozi migriranja koda:
- Dijeljenje opterećenja u raspodjeljenim sustavima
o Dugo pokrenuti procesi mogu migrirati na slobodne procesore
- Klijent - poslužitelj sustav
o Kod s podacima isporučen klijentu
o Ako treba obrađivati velike količine podataka, bolje je komponentu obradbe
podataka slati klijentu
o Dinamički konfigurabilni klijentski program
▪ Više fleksibilnosti, lakše održavanje i nadogradnja klinentskih
programa
- Enterprise i 'Desktop Grids', odnosno SETI@home
o Računalno zahtjevani zadaci šalju se slobodnim osobnim računalima na
mreži
Princip dinamičkog konfiguriranja klijenta koji komunicira s poslužiteljem. Klijent
najprije dohvaća potreban nužan programski kod, a zatim poziva poslužitelj
(perfomanse, fleksibilnost).

Predavanja 4

30. Navedite korake poziva udaljene procedure


Koraci RPC-a:
- Klijentska procedura poziva klijenta na uobičajeni način
- Klijentska strana stvara poruku (marshalling the parameters) i poziva lokalni
operacijski sustav
- Klijentski OS šalje poruku preko mreže do udaljenog OS-a
- Udaljeni OS daje poruku poslužiteljskoj strani
- Poslužiteljska strana odpakira parametre
- Pozivi poslužitelja inplementiraju funkciju
- Poslužitelj obavlja posao i vraća rezultat izlazu
- Poslužiteljski kraj pakira rezultat u poruku i poziva svoj lokalni OS
- Poslućiteljski OS šalje poruku preko mreže klijentovom OS-u
- Klijentov OS daje poruku krajnjem klijentu
- Krajnji klijent odpakira rezultat i vraća ga klijentu

31. Skicirajte način međudjelovanja klijenta i poslužitelja kod asinkronog RPC-a

32. Skicirajte jednostavnu organizaciju udaljenog objekta s proxyjem na prijemnoj


strani
33. Navedite osam koraka stvaranja raspodjeljene aplikacije korištenjem RMI-ja.

- Definirati udaljeno sučelje


- Implementirati udaljene objekte
- Implementirati klijenta (može se načiniti uvijek nakon definiranja udaljenog sučelja)
- Registrirati udaljeni objekt u registry imena poslužitelja
- Generirati komunikacijsku točku klijenta koristeći rmic
- Pokrenuti registry
- Pokrenuti poslužitelja
- Pokrenuti klijenta

34. Ukratko objasniti pojam socketa, te programiranje socketa TCP-om, te ga


usporediti s izvedbom UDP-om

Socket host-lokalno, aplikacijski kreirano/dostupno OS-upravljano sučelje (a 'door') u


okviru kojeg aplikacijski proces može slati (send) i primati (recive) poruke na/od drugog
(udaljenog ili lokalnog) aplikacijskog procesa.

Programiranje socketa TCP-om:

- Klijent mora kontaktirati poslužitelja


o Poslužiteljski proces mora biti prvo pokrenut
o Poslužitelj mora imati kreirano sučelje (door) koje očekuje kontakt klijenta
- Klijent kontaktira poslužitelja kroz:
o Kreiranje klijent.lokalni TCP socket
o Specificiranjem IP adrese, broja pristupa poslužeiteljskog procesa
- Kada klijent kreira socket: klijent TCP uspostavlja vezu sa poslužiteljem TCP
- Kada je kontaktiran od klijenta, poslužitelj TCP kreira novi socket za poslužiteljski
proces kako bi komunicirao s klijentom
- Omogućava poslužitelju razgovor s više klijenata

TCP omogućava pouzdan poredani prijenos bajta ('pipe' između klijenta i poslužitelja)

Programiranje socketa s UDP-om:

- UDP nema 'konekcije' između klijenta i poslužitelja


o Nema usklađivanja (handshaking)
o Pošiljatelj eksplicitno dodaje IP adresu i pristup odredišta
o Poslužitelj mora izdvojiti IP adresu i pristup pošiljatelja iz primljenih
datagrama
- UDP prenošeni podaci mogu se primati proizvoljnim redom ili izgubiti

UDP omogućava nepouzdani prijenos grupa bajta ('datagrams') između klijenta i poslužitelja

35. Upoznajte se s tri uzorka prilagodbe socketa

Tri uzorka
Request-reply
Publish-subscribe
Pipeline

Predavanja 5

36. Ukratko objasnite cemu služe i kako se koriste raspodijeljene hash tablice

• Hash tablica može se koristiti za ubrzavanje traženja po tablici zasnovano na


identifikatoru
• Raspodijeljena hash tablica je raspodijeljeni pristup pregleda (lookups).
• Recimo da svaki čvor prati svoje susjede i pokreće linearno pretraživanje po
prstenu.

37. Skicirajte izravno i T-razinsko dodjeljivanje imena u raspodjeljenim sustavima


38. Ukratko objanite hijerargijski pristup lociranja entiteta

Svaka domena ima pridruženi direktorijski čvor. Domena gornje razine predstavlja
cijelu mrežu. Svaka domena podijeljena je u višestruke manje domene, dok se čvorna
domena kreira (npr. LAN).
Svaki entitet ima zaspis u svakom nasljedniku u stablu domene (sve do korjena). Entitet
ima višestruke adrese, pa tako i višestruke pokazivače u različitim čvorovima domena.
Traženje položaja u hijerahijski organiziranim lokacijskim uslugama zahtjeva
pretraživanje prema gore u stablu sve dok se ne dosegne zapis tog entiteta. Kad se prođe,
pokazivači se slijede dolje do položaja entiteta.
Ubacivanjem druge kopije entiteta E rezultira pretraživanjem prema gore s ciljem
pronalaska prvog referenciranog na E. Kad je pronađen, taj čvor se osvježava, sa svim
čvorovima prema dolje u stablu. Brisanja se slično mogu obavljati, udaljavanjem od
čvora prema korjenu stabla.

39. Ukratko objasnite mobilne entitete s gledišta dodjeljivanja imena

S obzirom da entitet može biti mobilan, potrebno je imati način pronalaska trenutnog na
temelju starog položaja. Proslijeđivanje pokazivača stvara povezanu listu koristeći
(klijentsku i poslužiteljsku krajnju točku) informacije. Ako se entitet miče s položaja A na
položaj B, on u A ostavlja referencu na novu adresu.

Preusmjeravanje proslijeđenog pokazivača pohranom 'shortcuta' ma klijentskoj krajnjoj


točki ima za cilj zadržati lanac kratkim kako bi komunikacija bila brža i kako bi se smanjila
mogućnost pucanja lanca. Eventualno, ako se poslužiteljska krajnja točka nije dugo
referencirala (pozivala), ona se može udaljiti.

Domaća (home) lokacija uvijek zadržava trag trenutne lokacije entiteta. Ako entitet nije na
kućnoj lokaciji, poruka je preusmjerena na trenutnu lokaciju i trenutna lokacija poslana je
klijentu za sljedeće poruke. [Mobile IP]

40. Ukrako definirajte pojmove : LDAP, UDDI i WDSL


- LDP (Lihgtweight Directory Access Protocol)
o Aplikacijski protokol za upite i izmjene podataka direktorija usluga
ugrađenih u IP mreže.
o Direktorij je skup objekata s atributima organiziranih lokalno u
hijerarhijskom smislu.
o Stablo direktorija informacija često odražava razna politička, zemljopisna,
organizacijska i ostala ograničenja, ovisno o modelu.
o LDAP danas nastoji koristiti DNS imena za strukturiranje gornjih slojeva
hijererhije. Dublje u direktoriju mogu se pojaviti podaci koji predstavljaju
ljude, organizacijske cjeline, uređaje, podatke ili nešto drugo što predstavlja
zapis ili više njih. Zadnja inačica LDAP-a je Ver.3, specificirana od IETF-a.
LDAP usluga direktorija sastoji se od zbirke zapisa (directory entries). Svaki zapis
ima parove (attribute, value), pri čemu je svakom atributu pridružen tip. Zbirka svih
unosa u LDAP direktoriju usluga naziva se directory information base (DIB). Svaki
zapis u DIB-u jedinstveno je imenovan nizom atributa imenovanja (naming
attributes) u svakom zapisu.
-UDDI (Universal description, discovery and integration)
o Registry sustav s XML/SOAP standardima je okvir za opis, otkrivanje i
upravljanje web uslugama.
o Koristi standardne zapise (taxonomy) za opis poslova, usluga i tipa usluga.
o UDDI Business Registry nastoji biti globalna, all-inclusive lista poslova i
njihovih usluga. UDDI Business Registry ne sadrži detaljne specifikacije
poslovnih usluga. On pokazuje na druge resurse koji sadrže specifikacije
usluga. Mogući su i privatni registry-ji. UDDI je počeo kao ad-hoc
konzorcij, a sad je u sklopu OASIS-a.

-WDSL (Web Services Definition Language)


o Formalni jezik koji služi kao IDL i podupire RPC-zasnovanu komunikaciju
na webu.
o WDSL opisi sadrže definicje sučelja omogućenih uslugama (tipovi
podataka, položaj, ...).
o Opis može biti preveden za klijenstku i poslužiteljsku komunikacijsku točku.
Simple Object Access Protocol (SOAP) je uobičajeni način komunikacije u
web uslugama.

Predavanja 6

41. Skicirajte i ukratko objasnite Christianov algoritam sinkronizacije fizičkog sata


U rapodjeljenom sustavu neki stroj ima
svoj vlasstiti sat. U tom slučaju, dogašaj
do kojeg doše poslije nekog drugog
događaja, ne može se nikada pridružiti
ranijem vremenu. Čak i satovi na
različitim računlima koji su
sinkronizirani, obično će odstupati od
vremena. Zato postoji sinkronizacija
fizičkih satova u raspodjeljenom
sustavu. Christian's Algorithm i NTP – periodično uzima informaciju s vremenskog
poslužitelja (s pretpostavkom da je on točan )

- proces P može snimiti ukupno round-trip vrijeme Tround slanja zahtjeva mr i


prijema odziva mt.
- jednostavna procjena vremena
42. Ukratko objasnite pojam logičkih satova u raspodjeljenim računalnim
sustavima s osvrtom na Lamportove satove.

Promatranje: Moglo bi biti dovoljno da svaki čvor prihvazi trenutno vrijeme – to ne


mora biti stvarno vrijeme. U koraku dalje, u nekim slučajevima, primjereno je da dva
sustava jednostavno prihvate vremena po redoslijedu događanja događaja na sustavu.
Lampartovi logički satovi
Sustavi se mogu definirati kao zbirka procesa koji komuniciraju izmjenom poruka.
Svaki proces sastoji se od slijeda događaja.
Relacija 'dogodilo se prije' među događajima procesa može se izravno promatrati
u dvije situacije:
- Ako su a i b događaji istoga procesa, a a se događa prije b, tada je a b istinito.
- Ako je a događaj slanja poruke jednog procesa, a b događaj prijema poruke drugog
procesa, tada je a b

Dva različita događaja su konkretna ako a b i b a gdje znači da nema relativnog


redoslijeda događaja među procesima.

Relacija je tranzitivna i može se koristiti za definiranje parcijalne uređenosti događaja


u raspodjeljenom sustavu. Totalna uređenost može se pridružiti događajima ako
možemo pretpostaviti pridruživanje broj procesa događajima korištenim u tzv.
prekidnom sustavu.

Potrebno je odrediti način pridruživanja vremena C(a) (za događaj a), pri čemu je a
b tada C(a)<C(b). Uz to, vrijeme sata C može se samo pomaknuti unaprijed.
43. Usporedite prema bitnim pokazateljima tri algoritma međusobnog isključivanja.

Centralizirani algoritam:
Ako npr. proces 1 pita koordinatora za dozvolu pristupa kritičnom odsječku, on mu je
daje. I ako tada proces 2 pita za dozvolu pristupa istom kritičnom odsječku, koordinator
mu ne odgovara. Tek kada proces 1 izađe iz kritičnog odsječka, govori koordinatoru,
koji tada odgovara procesu 2.
Ricart/Agrawala:
Ako dva procesa, npr. 0 i 2, žele pristup istom kritičnom odsječku u istom trenutku,
proces koji ima najmanju vremensku oznaku pobjeđuje(u ovom slučaju to je 0). Kada 0
odradi, on šalje OK drugom procesu(2), pa 2 može ući u kritični odsječak.
Token Rings:
Algoritam radi prosljeđivanje oznaka po prstenu. Kada proces ima oznaku, on odlučuje
treba li pristup resursima u to vrijeme. Ako treba, zadržava oznaku dok to ne obavi, a
onda ga prosljeđuje. Problemi ako se oznaka izgubi – teško za utvrditi.

44. Objasnite i po potrebi skicirajte Bullyjev algoritam nadglasavanja

Kada proces P uoči da trenutni koordinator više ne odgovara na zahtjeve, on inicira


izbore:

- P šalje ELECTION poruku svim procesima s većim brojevima


- Ako niti jedan ne odgovara, P dobiva izbore i postaje koordinator.
- Ako neki od procesa s većim brojevima odgovori, on dobiva. P-ov posao je obavljen

Bully election algoritam

- Proces 4 uočava da 7 nije više raspoloživ i potiče izbore šaljući poruke na 5 i 6


- Procesi 5 i 6 odgovaraju i govore da 4 prestane s tom aktivnošću
- Tada 5 i 6 (oba dobivaju izbore)
- Proces 6 govori da 5 stane
- Proces 6 dobiva i govori svima
- Ako proces 7 ponovno krene, on obavješćuje sve da je on koordinator
45. Ukratko objasnite način rada GPS-a i WiFi lokacijskih usluga

GPS – U velikim raspodijeljenim sustavima u kojima su čvorovi raspodijeljeni na velikoj površini,


često trebamo informacije o blizini odnosno udaljenosti – to počinje određivanjem lokacije čvora. Te
informacije se dohvataju putem upita prema satelitima

WiFi lokacijske usluge:

- Pretpostavimo da imamo bazu podataka poznatih pristupnih tačaka s koordinatama


- Pretpostavimo da možemo procijeniti udaljenost do AP-a
- S tri otkrivene AP možemo izračunati udaljenost
LAP:

- Korištenje uređaja s WiFi-jem uz GPS prijemnik, kretanje uz snimanje uočenih AP


- Izračun centroida: pretpostavimo da je AP otkriven na N različitih lokacija s poznatim GPS
lokacijama
∑𝑁
𝑖−1 𝑥𝑖
- Izračun lokacije AP kao 𝑥𝑎𝑝 =
𝑁
Problemi su ograničena tačnost GPS-a, nejednak domet AP-a, moguć mali broj uzorkovanih tačaka
otkrivanja, što rezultira pogreškama izračunatih udaljenosti.

Predavanja 7

46. Navedite barem 3 mehanizma koji podržavaju paradigmu raspodjeljenih


objekata.

Paradigma raspodjeljenih objekata široko je prilagođena u raspodjeljenim aplikacijama u


obliku velikog broja mehanizama. Najpoznatiji su:
- Java Remote Method Invocation (RMI)
- Common Object Request Broker Architecture (CORBA) sustavi
- Distributed Component Object Model (DCOM)
- Mehanizmi za potporu Simple Object Access Protocol (SOAP)
47. Ukratko objasnite osnove rada Java RMI arhitekture

RMI je OO implementacija Remote Procedure Call modela. To je API samo za Java


programe. Koristeći RMI, object server isporučuje remote object i registrira ih s directory
uslugom. Objekt omogućava udaljene metode, koje se mogu pozivati u klijentskim
programima.

- Sintaksno:
o Udaljeni objekt deklariran je s remote interface, ekstenzijom Java interface-
a
o Remote interface implementirano je object server-om
o Object client pristupa objektu pozivajući udaljene metode pridružene
objektu sintaksom omogućenom za RMI
- API za Java RMI
o Remote Interface (Java Remote class)
o SW na strani poslužitelja (omogućava metode sučelja na raspodjeljeni
objekt)
▪ The Remote Interface Implementation
▪ Stub and Skeleton Generations (Java SDK: RMI compiler mic)
▪ The Object Server (klasa čiji kod instancira i isporučuje objekt
implementiranja udaljenog sučelja)
o SW na strani klijenta

Lociranje RMI Registry-ja na poslužitelju domaćinu i pretraživanje udaljenih referenci


za poslužiteljski objekt.

48. Ukratko objasnite osnove rada CORBA sustava raspodjeljenih objekata

CORBA (Common Object Request Broker Architecture ) je standardna arhitektura


sustava raspodjeljenih objekata. Omogućava suradnju raspodjeljenih objekata u
raznorodnim okružjima, pri čemu objekti mogu biti implementirani u različitim
programskim jezicima i/ili izvođeni na raznim platformama. CORBA se razlikuje od
JavaRMI u jednom značajnom obilježju:
- RMI je razvijen od Sun MicroSystems Inc., i podržava objekte pisane samo u
Javi
- CORBA je arhitektura razvijena od Object Managment Group (OMG) i
konzorcija iz ondustrije
CORBA sama po sebi nema mogućnost rada sa raspodjeljenim objektima – ona je skup
protokola. Raspodjeljeni objekti i njihovo međudjelovanje omogućeni sutim
protokolima. CORBA je vrlo bogat skup protokola.
CORBA Object Interface
- Raspodjeljeni objekt definiran je korištenjem programskom datotekom sličnom
udaljenom sučelju za Java RMI.
- S obzirom da je programski nezavisna, sučelje je definirano univerzalnim
jezikom CORBA Interface Definition Language (IDL).
- Sintaksa CORBA IDL-a slična je Javi i C++, međutim, objekt definiran CORBA
IDL datotekom može se implementirati u velikom broju jezika uključujući C,
C++, Java, COBOL, Smalltalk, Ada, Lisp, Pyton i IDLScript
- Za svaki od tih jezik, OMG je standardizirao mapiranje iz CORBA IDL prema
drugom jeziku, tako da se prevoditelj može koristiti za generiranje CORBA
sučelja i proxy datoteka potrebnih za implementiranje objekata u bilo kojem
podržanom jeziku.

Predavanje 8

49. Navedite na koja sve pitanja trebaju odgovoriti problemi paralelizacije.

- Kako dodjeliti jedinice poslova radnicima?


- Što kada imamo više jedinica posla nego radnika?
- Što kada radnici trebaju dijeliti parcijalne rezultate?
- Kako ćemo skupiti parcijalne rezultate?
- Kad ćemo znati kad su svi radnici obavili posao?
- Što ako radnik nestane?
50. Objasnite osnovnu razliku između paralelne i raspodijeljene obradbe

 Paralelno računarstvo općenito znači:

- Vektorska obrada podataka

-Višestruke CPU u jednom računalu

 Raspodijeljeno računarstvo općenito znači: - Višestruke CPU na više računala

51. Skicirajte model raspodjeljenog računala, te objasniti osnovnu razliku između


grozda i spleta računala.

- Grozd računala (cluster) – skup računala povezanih lokalnom mrežom


o Značajke: manji broj računala i veća brzina komunikacije
o Najsličnij modelu multiračunala
- Splet računala (grid) – infrastruktura koja omogućuje pristup računalnim resursima
na svakom mjestu
o Značajke: veći broj računala koji podržavaju splet, različita brzina
komunikacije
52. Skicirajte načine obradbe master/worker, producer/consumer i shared queue.

53. Ukratko objasnite osnovne modele (paradigme) paralelnih programa

- Potreban je dogovor oko strukture paralelnih algoritama koji se razvijaju


- Najčešće paradigme paralelnog programiranja:
o Komunikacija porukama (message passing)
▪ vjerojatno nakorišteniji model paralelnog programiranja
▪ Više (stalni broj) zadataka izvode se neovisno; podaci se razmjenjuju
porukama
▪ Ponekad nazivano i SPMD – single program, multiple data: jedan
program se izvodi na više procesora
▪ Unutar jedinstvenog programa implementiraju se različite uloge u
sustavu (master-slave i sl.)

o Podatkovni paralelizam (data parallelism)


▪ primjena iste operacije na više elemenata podatkovne strukture (npr.
'pomnoži sve elementa polja s 2')
▪ Programski jezik High Perfomance Fortran (HPC)

o Zajednička memorija
▪ Svi procesori/zadaci dijele isti memorijski spremnik, gdje je čitanje
i pisanje asikrono (razlika od računalnog modela!)
▪ Moguća uporaba (pseudo-) nedeterminističkih algoritama
▪ Potrebni eksplicitni mehanizmi zaštite memorije (semafori i sl.)
▪ Jednostavnije programiranje – manja razlika od slijednog modela
algoritma
o Sustav zadataka i kanala
▪ Sustav zadataka i kanala (tasks and channels) prikazuje se
usmjerenim grafom u kojemu se čvorovi zadaci (koji se mogu
izvoditi paralelno i neovisno jedan o drugome) a veze su kanali
kojima zadaci komuniciraju
▪ Broj zadataka može se mijenjati tokom izvođenja
▪ Poopćenje modela komunikacije porukama

54. Napišite i ukratko objasnite izraz za ubrzanje prema Amdahlovom zakonu

Potencijalno ubrzanje definirano je onim udjelom (P, P=[0,1]) slijednog programa koji

se može paralelizirati kao :


Npr. Ako se 50% programa može paralelizirati (P=0.5), ubrzanje je 2; ako se cijeli
program može paralelizirati, ubrzanje je beskonačno (teoretski)
Uključimo li i broj procesa koji izvode paralelni posao, izraz postaje

55. Navedite osnovne korake pretvorbe slijednog algoritma u paralelni

Na raspolaganju najčešće imamo slijedni algoritam kojega ćelimo izvoditi paralelno.

Neki od koraka slijednog algoritma koji se mogu izvoditi istodobno

- Pronaći dijelove slijednog programa koji se mogu izvoditi istodobno


o Zahtjeva detaljno poznavanje rada algoritma
o Može zahtijevati i potpuno nov algoritam
- Rastaviti algoritam
o Funkcionalna dekompozicija – podjela problema na manje djelove (koji se
mogu rješavati istodobno)
o Podatkovna dekompozicija – podjela podataka s kojima algoritam radi na
manje djelove; obično jednostavnije izvesti
o Kombinacija gornja dva načina
- Ostvarenje programa
o Odabir programske paradigme, sklopovskog okruženja
o Usklađivanje komunikacije (način, učestalost, sinkronizacija)
o Vanjska kontrola izvođenja
- Ispravljanje grešaka, optimiranje izvođenja....
56. Navedite i ukratko objasnite barem 2 tipa dekompozicije problema za rad na
paralelnoj platformi

- Funkcionalna dekompozicija – podjela problema na manje djelove (koji se mogu


rješavati istodobno)
o Svaki procesor izvodi svoj dio petlje
o Primjeri: algoritam pretraživanja stabla, simulacija klimatskog modela
(rastav na fizikalne komponenet: atmosferu, površinu, ocean itd.)
- Podatkovna dekompozicija – podjela podataka s kojima algoritam radi na manje
djelove; obično jednostavnije izvesti
o Svaki procesor računa amo dio matrice, npr. samo stupac ili redak ili
podmatricu
o Primjeri: podjela višedimenzijske strukture na elemente smanjenih
dimenzija (npr. volumen, površina...)
57. Objasnite pojam funkcionalne dekompozicije problema prilikom prilagodbe
serijskog programa paralenom izvođenju

58. objasnite pojam rasčlanjivanja domene problema prilikom prilagodbe serijskog


programa paralelnom izvođenju.

59. navedite osnovne značcajke nakupina računala te ukratko opišite barem 3 vrste
od njih.

Postrojenje umreženih, samostalnih, common-off-the-shelf racunala korištenih zajedno


za rješavanje danog problema. Razlicite vrste nakupina racunala
1. Nakupine visokih performansi (High Performance Computing Cluster)
- npr. Beowulf Cluster korišten 90-ih za rudarenje nad podacima, simulacije, paralelnu
obradbu, modeliranje klimatskih promjena, itd.
- najpoznatiji ROCKS NPACI
2. S raspodjelom opterecenja (Load Balancing)
- performanse u obliku raspodjele opterecenja
- s ftp i web poslužiteljima
- potreban veliki broj racunala kako bi se dijelilo opterecenje
3. Visokoraspoložive nakupine (High Availability)
- sprjecavaju ispade usluga, sa zalihošcu, uglavnom s LB
- za 2. i 3. RedHat HA cluster, Turbolinux Cluster Server, Linux Virtual
Server Project
60. Navedite barem 3 primjera raspodijeljenih računalnih sustava, te ukratko
objasnite što ih čini raspodijeljenima
ATM, IoT, razni gridovi i clusteri (CRO NGI, HR-ZOO, Isabella Cluster), sveprisutni
umreženi uređaji,... Raspodijeljeni su jer svi mogu obavljati odvojene zadatke, ili zajednički
rješavati zadatke koje im zadaje nadređeni čvor u sustavu, a svi su umreženi na neki način
(npr. LAN ili internetom,...) – skoro isto kao i pitanje br. 1

61. navedite željena svojstva kod stvaranja paralelnih programa.


Definiramo poželjna svojstva koja bi paralelni algoritmi trebali imati:
- Istodobnost-mogućnost izvođenja više radnji istovremeno -nužno za razvoj algoritma
- Skalabilnost- mogućnost prilagođavanja proizvoljnom broju fizičkih procesora
(odnosno mogućnost iskorištavanja dodatnog broja računala)- „algoritam koji radi
samo na x procesora je loš algoritam“
- Lokalnost- veći omjer lokalnog u odnosu na udaljeni pristup memoriji - korištenje
priručne memorije
- Modularnost- mogućnost uporabe dijelova algoritma unutar različitih programa
62. Navedite četiri faze razvoja paralelnog algorima.
- Podjela (partitioning) - dekompozicija problema na manje cjeline (zanemaruje se broj
procesora i memorijska struktura fizičkog računala)
- Komunikacija (communication) - određivanje potrebne komunikacije među zadacima
o Aglomeracija (agglomeration) - skupovi zadataka i komunikacijskih kanala iz prve
dvije faze se, ako je to isplativo, grupiraju u odgovarajuće logičke cjeline (u cilju
povećavanja performansi i smanjenja potrebne komunikacije)
- Pridruživanje (mapping) - svaki zadatak se dodjeljuje konkretnom procesoru; može
biti određeno a priori ili se dinamički mijenjati tijekom izvođenja.

63. navedite podijelu međuprocesne komunikacije na cjeline po nekoliko osnova.


- Lokalna/globalna – u lokalnoj komunikaciji svaki zadatak komunicira sa manjim
skupom zadataka koji čine njegovu okolinu, dok globalna komunikacija uključuje sve
ili veliki dio zadataka.
- Strukturirana/nestrukturirana – strukturirana komunikacija obuhvaća grupu zadataka
koji tvore pravilnu strukturu (stablo, prsten, itd) dok nestrukturirana može obuhvaćati
bilo koji skup zadataka .
- Statična/dinamična – u statičnoj komunikaciji ne mijenjaju se procesi koji sudjeluju u
istoj, dok se identitet zadatka u dinamičkoj komunikaciji mijenja tijekom izvođenja .
- Sinkrona/asinkrona – u sinkronoj komunikaciji i pošiljatelj i primatelj zajednički
(koordinirano) sudjeluju, dok u asinkronoj komunikaciji jedan zadatak može tražiti
podatke od drugoga, bez njegove aktivne suradnje.

64. Navedite datoteke zaglavlja koje moraju biti uključene u programskom kodu
koji koristi MPI biblioteku, te u programskom kodu koji koristi Open MP
biblioteku.
OpenMP - #include <omp.h>

MPI - #include <mpi.h>

65. Napišite i ukratko objasnite dvije osnovne funkcije koje se moraju nalaziti u
svakom MPI programu u kojem će se koristiti MPI pozivi

Dvije funkcije koje se moraju naći u svakom MPI programu:

int MPI_Init (int *argc, char ***argv)

int MPI_Finalize ()

prva funkcija mora biti prije svake MPI komunikacije, dok se druga nalazi na kraju

funkciji MPI_Init se prosljeđuju odgovarajući parametri funkcije main

66. Navedite 5 tipova podataka MPI C++ okruženja.

- MPI_CHAR; MPI_SHORT;
- MPI_INT;
- MPI:LONG;
- MPI_UNSIGNED – sve varijante MPI_FLOAT;
- MPI_DOUBLE...

67. Napišite i kratko objsnite funkciju slanja i prijema poruka blokirajuće


komunikacije od točke do točke, te njihove parametre

Proces pošiljatelj zove Send, primatelj Recv; parametri su

- buf je početna dresa podataka u memoriji koji se šalju odnosno primaju


- count je broj jedinica podataka (duljina niza)
- datatype je odgovarajući MPI tip podataka
- dest i source određuju indeks (rank) procesa pošiljatelja i primatelja
- tag je oznaka vrste poruke, comm je oznaka komunikatora unutar koga se
komunikacija odvija (npr. MPI_COMM_WORLD)
- u parametru status će nakon primitka biti zapisani podaci o poruci (oznaka kao
status.MPI_TAG, proces pošiljatelj kao status.MPI_SOURCE)

Povratak iz MPI_Recv znači da je poruka primljena.


Povratak iz MPI_Send ne znači da je poruka primljena, nego da se korištena memorija
može ponovno upotrijebiti – završetak može a i ne mora implicirati da je poruka
primljena, ovisno o implementaciji i uvijetima. MPI_Send može čekati dok poruka ne
bude isporučena(odnosno dok proces primatelj ne pozove odgovarajući MPI_Recv) ili
može kopirati poruku u međuspremnik i odmah vratiti kontrolu pozivatelju, ovisno o
veličini poruke i strategiji pojedine MPI implementacije.
Postoje neke (blokirajuće) inačice Send funkcije: MPI_SSend- sinkroni Send(povratak
kada je poruka primljena), MPI_RSend(vraća odmah ali uspjeva samo ako je
odgovarajući Recv već pozvan), itd.

68. Napišite i ukratko objasnite funkcije slanja i prijema poruka komunikacije od


točke do točke bez blokiranja, te njihove parametre

Parametri su:
• Buf je početna adresa podataka u memoriji koji se šalju, odnosno primaju.
• Count je broj jedinica podataka (duljina niza).
• Datatype je odgovarajući MPI tip podataka.
• Dest i source određuju indeks (rank) procesa pošiljatelja i primatelja.
• Tag je oznaka vrste poruke, comm je oznaka komunikatora unutar koga se
komunikacija odvija.
• Umjesto status varijable u ove funkcije dodan je parametar request pomoću
kojeg se ispituje završetak funkcije.
MPI_Isend - završava kada se izlazni međuspremnik može ponovno iskoristiti.
MPI_Irecv - završava kada se ulazni međuspremnik može koristiti (podaci upisani).
69. Navedite i ukrtko objasnite osnovne tipove kolektivne međuprocesne
komunikacije

Int MPI_Scatter (void * sendbuf, int sendcnt, MPI_Datatype sendtype, void * recvbuf, int
recvcnt, MPI_Datatype recvtype, int root, MPI_Comm comm);

Int MPI_Gather (void * sendbuf, int sendcnt, MPI_Datatype sendtype, void * recvbuf, int
recvcnt, MPI_Datatype recvtype, int root, MPI_COMM comm);

Funkcija Scatter raspodijeljuje po jedan dio niza (pohranjen u sendbuf na procesu root)
svakom od procesa (na adresu recvbuf). Vrsta podataka i broj elemenata određeni su sa
sendtype i sendcnt, recvtype i recvcnt su obično jednaki. Funkcija Gather prikuplja određeni
dio niza od svih procesa (pohranjen u sendbuf na svim procesima) i sprema ih u recvbuf na
root.

70. Napišite i ukratko objasnite funkciju za razašiljanje poruka svim procesima, te


njezine parametre

Funkcija šalje isti podatak svim procesima u definiranom komunikatoru; izvršni proces
označen je parametrom root (indeks procesa).
Parametar buffer se kod procesa root čita dok se kod ostalih u njega upisuju podaci.
Count je broj jedinica podataka (duljina niza).
Datatype je odgovarajući MPI tip podataka.
comm je oznaka komunikatora unutar koga se komunikacija odvija.

71. Napišite i objasnite funkciju za postizanje sinkronizacije na barijeru

Globalna sinhronizacija za sve procese unutar komunikatora:

int MPI_Barrier (MPI_Comm comm);

Za sve procese koji pozivaju funkciju vrijedi da niti jedan neće nastaviti sa radom dok je svi
procesi ne pozovu. Obično se sinhronizacija među porukama ppostiže upotrebom oznaka i
komunikatora, no ako je potrebno može se upotrijebiti i navedena funkcija.

72. Napišite i objasnite funkcije redukcije, te njezine parametre

Često je potrebno izračunati neki rezultat na temelju podataka od svih procesa, pa se u


tu svrhu koristi funkcija:

Funkcija reduce skuplja podatke od svih procesora (s adrese sendbuf, duljine count) ali
ujedno nad njima provodi neku operaciju (definiranu s op parametrom) i rezultat sprema
na adresu recvbuf na procesu root.

73. Kojom Mpi funkcijom ćete dohvatiti broj procesa na kojima je program pokrenut
i rang procesa na kojem se izvršava kod?

int MPI_Comm_size (MPI_Comm comm , int *size)


int MPI_Comm_rank (MPI_Comm comm , int *rank)
74. Kojom MPI funkcijom ćete dohvatiti rang procesa na kojem se izvršava kod?

Predavanje 9.
75. navedite osnovne elemente Open MP programske okoline.

Osnovni elementi: za stvaranje niti, raspodjela opterecenja,upravljanje okolinom


podataka, sinkronizacija niti, run-time rutine korisnickog sloja i varijable okoline.

76. Objasnite i pokažite primjer korištenja smjernice(programa) za paraleliziranje


for petlje.

Pragma: smjernica prevoditelja u C ili C++ jeziku (za tzv.pragmaticne informacije).


To je nacin komuniciranja programera s prevoditeljem koji može i ignorirati pragme
• Sinatksa:
#pragma omp <rest of pragma>
• Format:
#pragma omp parallel for
for (i = 0; i < N; i++)
a[i] = b[i] + c[i];
• Pragma omp parallel: za stvaranje dodatnih niti uz omp for, omp do do
(ponavljanje), sections (dodjeljivanje nez. koda na više niti), single (blok izvodi jedna
nit do barrier), master (master nit, ali bez barrier na kraju)
• Prevoditelj mora omoguciti verificiranje run-time sustava uz raspoložive informacije
o raspore_ivanju ponavljanja petlje
77. Npišite i objasnite ulogu omp_get_num_ptocs i omp_set_num_threads funkciju

Funkcija omp_get_num_procs
• Vraca broj fizicki raspoloživih procesora za paralelni program int
omp_get_num_procs (void)

Funkcija omp_set_num_threads
• Koristi vrijednost parametra za postavljanje broja niti aktivnih u paralelnim
dijelovima (sections) koda
• Može se pozivati u više tocaka programa void omp_set_num_threads (int t)

78. navedite opcije (klauzule) smjernice dfiniranja vidljivosti varijabli i pokažite


primjer uporabe private.
Deklariranje privatnih varijabli
for (i = 0; i < BLOCK_SIZE(id,p,n); i++)
for (j = 0; j < n; j++)
a[i][j] = MIN(a[i][j],a[i][k]+tmp);
• Bilo koja petlja može se izvoditi paralelno, ali je bolje ako je to vanjska petlja, jer to
smanjuje broj forks/joins
• Tada svaka petlja mora imati svoju privatnu kopiju varijable j

private clause
• clause: opcijska, dodatna komponenta pragma (klauzula)
• private, shared, default, firstprivate, lastprivate, reduction
• private clause: govori prevoditelju da jednu ili više varijabli
ucini privatnima u odnosu na druge niti
private ( <variable list> )
• Primjer
#pragma omp parallel for private(j)
for (i = 0; i < BLOCK_SIZE(id,p,n); i++)
for (j = 0; j < n; j++)
a[i][j] = MIN(a[i][j],a[i][k]+tmp);
firstprivate clause
• Kreira inicijalne vrijednosti varijabli (nadzire master nit u petlji)
• Varijable inicijalizirane jednom po niti, a ne po ponavljanju petlje
lastprivate clause
• Slijedno zadnja iteracija u petlji
• lastprivate clause: koristi se za kopiranje natrag u master nit
critical pragma
Sinkronizacija: critical, atomic, ordered, barrier, nowait.
• Kriticni odsjecak: dio koda koji u nekom vremenu može izvesti samo nit
• Oznacavamo ga dodavanjem pragma prije bloka C koda
#pragma omp critical
79. Objasnite mogućnost redukcije (reduce)u Open MP i pokažite primjer
korištenja.

Redukcije su ceste, jer ih OpenMP podržava


• Može dodati clause redukcije u parallel for pragma
• Specificiraju operacije i varijable redukcije
• OpenMP brine o spremanju parcijalnih rezultata u privatne varijable i kombiniranju
parcijalnih rezultata nakon petlje reduction clause
• Ima sljedecu sintaksu:
reduction (<op> :<variable>)
• Operatori:
- + Zbroj
- Umnožak
- & Bit I
- | Bit ILI
- ^ Bit EX-ILI
- && Logicki I
- || Logicki ILI

80. obajsnite mogućnosti i opcije raspoređivanja u OpenMP

Staticko i dinamicko raspoređivanje


• Staticko
- Niski troškovi
- Može izazvati neravnotežu opterećenja
• Dinamičko
- Visoki troškovi
- Može smanjiti neravnotežu opterećenja

Komadici (chunks)
•Komadic je neprekidan raspon ponavljanja
• Povecanje velicine komadica smanjuje opterecenje i može povecati tzv. cache hit
rate
• Smanjenje velicine komadica omogućuje bolje uravnoteženje opterećenja

Opcije
• schedule(static): blokira alociranje neprekidnih iteracija za svaku petlju
• schedule(static,C): umetnuto alociranje komadica duljine C na niti
• schedule(dynamic): dinamičko one-at-a-time alociranje iteracija nitima
• schedule(dynamic,C): dinamičko alociranje C iteracija odjednom prema nitima
•schedule(guided,C): dinamičko alociranje komadica zadacima koristeći vođeno
samoraspoređivanje. Početni komadici su veći, kasnije manji, a konačno minimalno
velicineC.
• schedule(guided): vođeno samoraspoređivanje s minimalnom veličinom komadica 1
• schedule(runtime): raspored izabran tijekom izvođenja na temelju vrijednosti
OMP_SCHEDULE; Unix primjer: setenv OMP_SCHEDULE “static,1”

81. objasnite i na primjeru pokažite uporabu smjernica parallel, for, single, mowait
i sections.
parallel pragma
• parallel pragma prethodi bloku koda koji izvode sve niti
• Pri tome je izvođenje replicirano među svim nitima
• Upotreba parallel Pragma
#pragma omp parallel private(task_ptr)
{
task_ptr = get_next_task (&job_ptr);
while (task_ptr != NULL) {
complete_task (task_ptr);
task_ptr = get_next_task (&job_ptr);
}
}
For pragma
• parallel pragma instruira svaku nit da izvodi cijeli kod unutar bloka
• Ako for petlju dijelimo među nitima, koristimo for pragma
#pragma omp for
#pragma omp parallel private(i,j)
for (i = 0; i < m; i++) {
low = a[i];
high = b[i];
if (low > high) {
printf ("Exiting (%d)\n", i);
break;}
#pragma omp for
for (j = low; j < high; j++)
c[j] = (c[j] - a[i])/b[i];
}
single pragma
• Pretpostavimo da samo jednom želimo vidjeti izlaz
• single pragma nalaže prevoditelju da samo jedna nit treba izvoditi blok koda koji
prethodi pragmi
• Sintaksa:
#pragma omp single
#pragma omp parallel private(i,j)
for (i = 0; i < m; i++) {
low = a[i];
high = b[i];
if (low > high) {
#pragma omp single
printf ("Exiting (%d)\n", i);
break;
}
#pragma omp for
for (j = low; j < high; j++)
c[j] = (c[j] - a[i])/b[i];
}
nowait clause
• Prevoditelj stavlja sinkronizaciju barijerom na kraju svakog paralelnog izraza
• U primjeru je to nužno: ako nit napušta petlju i mijenja low ili high, to može utjecati
na drugu petlju
• Ako su to privatne varijable, u redu je ako je petlja pomakne naprijed i smanji
vrijeme izvođenja.
#pragma omp parallel private(i,j,low,high)
for (i = 0; i < m; i++) {
low = a[i];
high = b[i];
if (low > high) {
#pragma omp single
printf ("Exiting (%d)\n", i);
break;
}
#pragma omp for nowait
for (j = low; j < high; j++)
c[j] = (c[j] - a[i])/b[i];
}

section pragma
• Dodjeljuje uzastopne, ali nezavisne blokove koda razlicitim nitima
• Prethodi svakom bloku koda unutar obuhvacenog kojem prethodi parallel sections
pragma
• Može biti sprijecen za prvu paralelnu sekciju poslije paralelnih sekcija pragma
(parallel sections pragma)
• Sintaksa:
#pragma omp section

82. Koja su dva glavna pristupa paralelizmu pomoću OpenMP-ja?


Podržava inkrementalni paralelizam i podatkovi paralelizam
83. Koja je razlika između zajedničkih i privatnih varijabli OpenMP smjernica?
Zajedničke varijable imaju iste adrese u okolini svake niti, dok privatne varijable imaju
različite adrese u okolini svake niti.

84. Navedite i ukratko objasnite tri temeljne funkcije OpenMP okruženja.


Funkcije za SPMD programiranje
Funkcija omp_get_thread_num
Funckija omp_get_num_threads
Predavanje 10
85. objasnite pojam spleta računala kroz postojeće definicije, te navedite barem 4
oblika upotrebe takvih sustava.
Vrsta paralelnog i raspodijeljenog sustava koji omogucava dijeljenje, izmjenu, izbor i
nakupljanje zemljopisno raspodijeljenih “autonomnih” sredstava:
- Racunala – PC, radne stanice, nakupine, superracunala, prijenosna racunala,
mobilni uređaji, dlanovnici i ostalo.
- Programi – npr. Skype aplikacije posebne namjene raspoložive na zahtjev;
- Katalogizirani podaci i baze podataka – npr. transparentan pristup bazi
podataka humanog genoma;
- Posebni uređaji/instrumenti – npr. radio teleskop – SETI@Home traženje
života u svemiru.
- Ljudi/suradnici.
Ovisno o njihovoj raspoloživosti, mogucnostima, troškovima, te zahtjevima
korisnika za QoS.

Splet računala možemo koristiti:


- Utility computing
- Data center automation
- Financial modelling
- Life sciences
86. skicirajte slojeve građe spleta računala i njegovih posredničkih slojeva

87. Navedite primjere spleta računala u primjeni i ukratko ih opišite (moguć osvrt
na CRO NGI i HR-ZOO).

1. Problem solving environment


o Problem solving environment za hemiju
o Globus usluge koriste se za prepoznavanje korisnika, udaljeno podnošenje poslova,
nadzor, upravljanje
o Danas: raspodijeljene arhive podataka, otkrivanje resursa
2. High-Throughput Computing (HTCondor) – framework za distribuiranu paralelizaciju
zahtjevnih zadataka
3. Kolaborativni inžinjering
- Rukuje dijeljenim prostorom uz
o Simulacijske komponente
o Višestruke tokove : control, text, video, audio, database, simulation, tracking ,
rendering
- Koristi globus komunikaciju : (ne)pouzdani uni/multicast
- Budućnost: sigurnost, QoS, dodjeljivanje, rezerviranje
88. navedite i ukratko objsanite barem 4 usluge spleta računala
Pregled postojecih usluga spleta racunala
- Sigurnost
- Informacije/direktoriji
- Upravljanje resursima
- Pristup podacima
Trenutna podrucja istraživanja.
Razni forumi i projekti
89. Opisite osnovna načela oblaka računala

• Oblak računala - proširenje SOA na resurse isporučive u


oblaku računala, kao što su spremnik kao usluga (storage-asa-service), podaci kao
usluga (data-as-a-service), platforma
kao usluga (platform-as-a-service), itd.
• Pristup računarstvu koji se oslanja na skalabilnost Interneta i
spajanje na niz različitih uređaja i krajnjih pristupnih točaka.

90. usporedite potencijal spleta računala sa strane njegovih potrošača i davatelja


usluga

Potrošaci spleta racunala


- Izvršavaju poslove s ciljem rješavanja problema raznih veličina i složenosti
- Profitiraju mudrim korištenjem raspodijeljenih resursa
- Definiraju vremenske okvire i cijenu korištenja
- Strategija: smanjenje troškova
Davatelji usluga spleta racunala
- Doprinose resurse za izvođenje poslova potrošača
- Profitiraju povećanjem korisnosti resursa
- Definiraju lokalne zahtjeve i mogucnosti trgovine
- Strategija: povecati povrat uloženog

91. Opišite što je Grid Service Broker(GSB) i navedite njegove glavne mogućnosti

Broker za raspoređivanje zadataka aplikacija na temelju statickih i dinamickih


parametera spleta racunala.
Na temelju tzv, racunalne ekonomije spleta racunala vrši optimalan izbor racunalnih i
podatkovnih usluga ovisno o njihovoj kvaliteti, cijeni i raspoloživosti, kao i
korisnikovim QoS zahtjevima (vrijeme nužnog završetka, proracun, optimizacija
vremena korištenja i cijene)
Glavne mogucnosti:
- A single window to manage & control experiment
- Programmable Task Farming Engine
- Resource Discovery and Resource Trading
- Optimal Data Source Discovery
- Scheduling & Predications
- Generic Dispatcher & Grid Agents
- Transportation of data & sharing of results
- Accounting
92. Navedite barem 3 primjera spleta računala u primjeni i ukratko ih opišite.

Primjer1: Collaborative Engineering


Rukuje dijeljenim prostorom, s
- Simulacijske komponente
- Višestruki tokovi: Control, Text,Video, Audio, Database, Simulation,
Tracking, Haptics, Rendering
- Koristi Globus komunikaciju: (ne)pouzdani uni/multicast
- Buducnost: sigurnost, QoS, dodjeljivanje, rezerviranje
Primjer 2: High-Throughput Computing
- Raspoređuje više nezavisnih zadataka
- Globus sigurnosni sustav, otkrivanje, pristup podacima, raspoređivanje
- Buducnost: Rezerviranje, migriranje koda.
Primjer 3: Problem Solving Environment
Problem solving environment za kemiju.
Globus usluge koriste se za prepoznavanje korisnika, udaljeno podnošenje poslova,
nadzor, upravljanje
Danas: raspodijeljene arhive podataka, otkrivanje resursa, itd.

Predavanje 11
93. Navedite dva glavna tipa web usluga, te ukratko objasnite njihovu izvedbu i
međusobne razlike.
Dva glavna tipa Web usluga:

- REST web usluge


• Primarna zadaća im je rukovanje XML/JSON reprezentacijama web resursa
korištenjem uniformnog skupa stateless operacija
- Proizvoljne web usluge
• Usluga može obaviti proizvoljan skup operacija
94. Ukratko objasnite promjene u načelima web usluga od poslužiteljske strane
aplikacije do pametnih klijenata i usluga

95. Opišite osnovna načela oblak računala (cloud computing).


• Oblak računala može se smatrati proširenjem SOA na resurse isporučive u oblaku
računala,kao što su spremnik kao usluga (storage-as-a-service), podaci kao usluga (data-as-a-
service), platforma kao usluga (platform-as-a-service), itd. • Bitno je odrediti koje usluge,
informacije i procesi su dobri kandidati za opstanak u oblaku, kao i koje usluge se trebaju biti
obuhvaćene unutar postojeće ili nove SOA-e.
96. Opisno usporedite (ili skicirajte) oblak računala s ostalim računalnim
tehnologijama slične namjene.

Oblak računala i ostale računalne tehnologije dijele dosta zajedničkog :


- namjera, arhitekture, tehnologije
Razlike
- programski model, poslovni model, model obradbe,
aplikacije i virtualizacija
Problematika je slična
- upravljanje raznim mogućnostima
- definiranje metoda kojima tražitelji usluga otkrivaju, zahtijevaju i koriste resurse
omogućene središnjim sustavom
- cesto implementiraju paralelnu obradbu koja se odvija na tim resursima.
Virtualizacija
• Splet računala
- ne oslanja se na virtualizaciju kao oblak računala, već svaka organizacija ima puni
nadzor nad svojim resursima
• Oblak računala
- neizostavni element svakog oblaka računala

97. Navedite i ukratko objasnite osnovne modele isporuke oblak računala.


Modeli isporuke: • Model isporuke SaaS: Nema rukovanja sklopovljem ili
programima Usluge dostupne kroz preglednik Korisnici koriste usluge na zahtjev
Trenutna skalabilnost • Model isporuke PaaS: Platforme su izgrađene na
infrastrukturi koja je skupa Procjena zahtjeva nije složena Upravljanje platformom
nije zabavno • Model isporuke IaaS: Okolina virtualiziranja platforme Računalni
resursi, kao što su spremnički i obrambeni kapaciteti Virtualizacija korak unaprijed.
98. Navedite barem 7 usluga koje može ponuditi oblak računala.
1) Spremnik kao usluga (Storage-as-a-service) 2) Baza podataka kao usluga
(Database-as-a-service) 3) Informacija kao usluga (Information-as-a-service) 4)
Aplikacija kao usluga (Application-as-a-service) 5) Platforma kao usluga (Platform-
as-a-service) 6) Sigurnost kao usluga (Security-as-a-service) 7) Testiranje kao usluga
(Testing-as-a-service).
99. Što mora ispunjavati oblak računalo da bi se moglo nametnuti kao optimalan
izbor mogućem korisniku?
Oblak računalo može ispuniti očekivanja korisnika: Kada su procesi, aplikacije i
podaci visoko nezavisni Kada su točke integracije dobro definirane Kada je
dopuštena i nešto niža razina sigurnosti Kada je osnovna unutarnja građa sustava
''zdrava'' Kad je web priželjkivana platforma Kada su troškovi bitni i značajnog
iznosa Kada se radi o novim aplikacijama.
100. Skicirajte građu Google App Engine-a i objasnite njegovu ulogu.

Najpoznatija usluga platforme Implementiranje na nakupine, nadziranje, skaliranje i


uravnoteženje opterećenja Korisnik pristupa preko preglednika koji se spaja na
udomljenu aplikaciju pisanu u Pythonu ili Javi; poslovi iz reda, pokreću se kao
raspoređeni ''cron''; izračuni zahtijevaju pristup spremanju, brzoj priručnoj memoriji,
te bibliotečnim funkcijama.
101. Što je Microsoft Windows Azure, čemu služi i koji su alati potrebni
krajnjem korisniku za njegovu upotrebu?
Microsoft Windows Azure je oblak računala i infrastrukture koju je stvorio Microsoft
za izgradnju, implementaciju i upravljanje aplikacijama putem mreže. Pruža PaaS i
IaaS usluge. Pruža usluge upravljanja, prebrojavanja i skladištenja. Krajnjem
korisniku potrebni su Microsoft alati koji omogućuju programiranje kao što je Visual
Studio.
102. Usporedite Amazon, Microsoft i Google po pitanju svojstava njihovih
PaaS usluga.

AWS je dobar u sljedećim slučajevima:

- Potreban je globalni doseg


- Potreban stabilan, pouzdan servis sa dugoročnim zapisima
- Potrebna fleksibilnost i širi raspon servisa
- Ako je u pitanju veća kompanija
Azure je dobar u sljedećim slučajevima:

- Ukoliko se prvi put migrira na cloud


- Većinske platforme i aplikacije su Windows bazirane
- Potrebna hybrid solucija
- Ukoliko ste developer
Google Cloud:

- Potreban razumljiv kontenjer-baziran model


- Vaša kompanija je već daleko ispred digitalne migracije i želi da postane više
isplativa
- Web stranica funkcioniše u mrežnom okruženju hiperskale
- Ukoliko se developuju i deployaju oblak-bazirane aplikacije i softveri
- Ukoliko se traži solucija zelenog računarstva
103. Ukratko objasnite višeslojnu arhitekturu na webu zasnovanih sustava i
skicirajte način korištenja CGI programa na poslužiteljskoj strani.

- poboljšanje je Common Gateway Interface (CGI): standardni način kako web


poslužitelj može izvršiti program uz kor. podatke kao ulaz (HTML oblik) na C strani i
kad se kompletira šalje se na S stranu – rasterećenje poslužitelja
- skripta na poslužiteljskoj strani: izvodi se na S kad se dokument lokalno dohvati;
skripta se ne šalje, već zamjenjuje rezultatima izvođenja
- web sjedišta – troslojne arhitekture: web poslužitelj, poslužitelj aplikacija i baza
podataka
- Java – servlets...
104. Skicirajte HTTP način spajanja i objasnite HTTP metode.

HTTP metode:

Operacija Opis

Head Zahtjev za povratak na zaglavlje dokumenta

Get Zahtjev za povratak dokumenta klijentu

Put Zahtjev za pohranjivanje dokumenta

Post Daju podatke koji se dodaju u dokument

Delete Zahtjev za brisanje dokumenta

105. Objasnite SOAP protokol i njegovo korištenje.

SOAP (Simple Object Access Protokol) je komunikacijski protokol, neovisan o


platformi, baziran na XMLu koji se koristi za razmjenu informacije između aplikacije
preko HTTP protokola. Razvijen je kako bi se omogućila jednostavna komunikaciju
tekstualnim sadržajem preko HTTP komunikacijskog protokola koji je prilagođen
upravo razmjeni tekstualnih sadržaja. Protokol je neovisan o programskom jeziku,
platformi i jednostavno proširiv.
Strane koje komuniciraju imaju malo saznanja jedna o drugoj pa je XML jezik
slaganja SOAP poruka.
SOAP klijent kreira XML dokument koji sadrži odgovarajući zahtjev. Dokument
dolazi do SOAP poslužitelja koji obrađuje pristigle zahtjeve i na osnovu pristiglih
zahtjeva pokreće odgovarajuću aplikaciju. Po završenoj obradi SOAP poslužitelj,
korištenjem SOAP protokola vraća poruku odgovora SOAP klijentu

Dva dijela poruke u omotnici: body (aktualna poruka) i header (proizvoljno). SOAP
bindings: HTTP, SMPT, te konverzijski i RPC stilovi.

106. Objasnite osnovne načine rada i načela REST (Representational State


Transfer) arhitekture.
Način rada:
- korisnik pristupom odre_enom resursu dobiva reprezentaciju (representation) resursa
i dolazi u stanje (state) koje mu omogućuje izvođenje određenih aktivnosti, a nakon
tog izvođenja prelazi (transfer) u neko drugo stanje
Osnovna načela:
- Korištenje HTTP metoda (slajd 15)
- Nema čuvanja stanja na poslužitelju, nego na klijentu, što je manje zahtjevno i
prilagodljivije za korištenje i kod poziva S sa C (predavanje 3,slajd 17)
- Strukturiranje aplikacije URI-jem koji s gledišta C treba imati dovoljno informacija o
resursu, pogotovo uz bookmark mehanizam (predavanje 5,slajd 3)
- Prijenos poruka u XHTML (EXtensible HyperText Markup Language),
JSON (JavaScript Object Notation) ili XML (EXtensible Markup Language) formatu.
Uobičajeni web bi to radio SOAP porukama, a REST web HTTP porukama.

89.Skicirajte i objasnite skalabilnu sadržajno osviještenu (content-aware)


nakupinu web poslužitelja.
− Sadržaji općenito mogu biti vrlo dinamični
− Potpuno ili djelomično repliciranje
− Sadržajno osviješteno ''cachiranje''
− query containment check, content blind caching.
107. Skicirajte i objasnite skalabilnu sadržajno osvještenu nakupinu web
posluzitelja
108. Upoznajte se na primjeru s korištenjem XML, JSON i RSS formata
podataka.
XML:
<?xml version=”1.0” encoding=”UTF-8”>
<podsjetnik>
<za> ImePrezime</za>
<od> MojMobitel </od>
<naslov> Rođendan </naslov>
<tekst> Ne zaboravi na rođendan X osobe </tekst>
</podsjetnik>
JSON:
{
“za” : “ImePrezime”,
“od” : “MojMobitel”,
“naslov” : “Rođendan”,
“tekst” : “Ne zaboravi na rođendan X osobe”
}
RSS:
<?xml version=”1.0” encoding=”UTF-8”>
<rss version=”2.0”>
<podsjetnik>
<za> ImePrezime</za>
<od> MojMobitel </od>
<naslov> Rođendan </naslov>
<tekst> Ne zaboravi na rođendan X osobe </tekst>
</podsjetnik>
</rss>
109. Ukratko objasnite što su obrazac MVC i okvir WCF.
MVC – programerski uzorak za implementiranje korisničkih sučelja; omogućuje upravljanje
složenošću aplikacije podjelom na 3 dijela: korisnički, podatkovni i aplikacijski.

Model – podržava logiku, podatke i uloge aplikacije

View – komponente koje prikazuju korisničko sučelje aplikacije, odnosno interpetira informacije

Controller – putem View omogućuju međudjelovanje s korisnikom, odnosno rad s modelom i prikaz
promjena na korisničkom sučelju aplikacije. Prihvata ulaz i pretvara ga u naredbe za model/view.
WCF – Windows Communication Foundation

- Okvir za izradu uslugama orijentiranih aplikacija s mogućnošću komunikacije među


višestrukim poslužiteljima neovisno o njihovoj tehnologiji ili OS-u
- Izmjena poruka obavlja se s asinhronim porukama između njihovih endpointova
- WCF klijenti mogu pristupiti svim funkcionalnostima koje se nalaze unutar WCF
usluge

110. Ukratko objasnite od kojih elemenata/koraka se sastoji stvaranje okoline


mikrousluga u tehnologiji .NET, te navedite okoline koje također omogućuju
stvaranje ili korištenje okolina mikrousluga
Mikrousluge se u .NET-u implementiraju uz pomoć okvira WCF i uzorka MVC, uzorka
MVVM i uzorka WPF itd.
111. .Detaljnije proučite MVC, MVVM i MVP obrasce programske arhitekture
I mogućnosti njihove implementacije.
MVC – pitanje 109.
MVVM – rješenje potreba za strukturom čistog koda i ponovnom upotrebljivošću u
složenijim rješenjima, te lakšim održavanjem, testiranjem i proiširivanjem. Sastoji se
od:
Model – sadrži podatke i ne radi ništa vezano za poslovnu logiku
ViewModel – veza između modela i prikaza, omogućuje ljepši prikaz
View – sadrži formatirane podatke i prenosi sve bitno na model
Najčešća implementacija MVVM-a je u Xamarinu.

MVP – uglavnom se koristi za izradu korisničkog sučelja i prilagođen je unit testingu.


Model – sučelje koje definira podatke koji će biti prikazani ili na drugi način tretirani
na korisničkom sučelju
View – pasivno sučelje koje prikazuje podatke i usmjerava korisničke naredbe
voidtelju da djeluje na de podatke
Presenter – djeluje na model i pogled. Dovodi podatke iz spremišta i formatira ih za
prikaz u Viewu.
Implementaije MVP-a : .NET, Java (JavaFX, Echo2, Jface,...), PHP (Laravel,
CodeIgniter)
112. Opišite probleme postojećih računala visokih performansi sa stajališta
potrošnje energije.

-sirova obrambena snaga


- veći računalni sustavi – računalno intenzivne aplikacije
- disipacija topline, potrošnja energije, troškovi proizvodnje, troškovi programa
- “petaflops race”
- znanstvenici: pokušaj smanjivanja potrošnje energije/očuvanje performansi
- “Zeleni” standardi koiji se odnose na HPC i CC: EPEAT, Energy Star 5.0, RoHS
- financijski razlozi: koristiti resurse na najbolji mogući ekonomičan način -> profit ↑
- ostali troškovi: održavanje, hlađenje, računi za električnu energiju
- dati uvid u postojeće i predložiti nove postupke zelenog HPC-a i CC-a
- utjecaj na performanse i štednja energije
- proizvodnja sklopovlja
- napredno upravljanje potrošnjom
- napredno upravljanje zadacima (raspoređivači, dodjeljivači, okviri)
- “pametnije aplikacije”, učinkovito programiranje, rekonfigurabilni prevoditelji
- istinsko zeleno HP računalstvo: kombinacija svih gledišta
- zabrana sljedećeg: prečesto uklapanje i isklapanje energije, reduciranje frekvencije
takta, glomazno nadziranje resursa, presloženo raspoređivanje, sve ostalo
- ravnoteža: smanjenje potrošnje energije – prihvatljive performanse
- “zazelenjivanje” podatkovnih središta i poslužitelja.

113. Navedite i opišite principe uštede energije procesora i radne memorije.

CPU:
DVFS – primarna tehnologija štednje energije na CPU
- smanjenje struje, napona, frekvencije kad je korisnost ispod odre_enog praga
- frekvencija ↓ - pouzdanost ↑
- napon napajanja2 ↓ ako frekvencija ↓ -> učinkovitost energije3 ↑ (frekvencija ↓ ->
brzina ↓ )
Memorija:
CLTT (Closed Loop Thermal Throttling), OLTT (Open Loop Throughput Throttling)
- frekvencija ↓ -> propusnost memorije ↓
- 35% smanjenje ukupne potrošnje energije od strane memorije
- propusnost memorije ograničena na 75%
- 60% potrošnje energije od strane memorije može se uštedjeti ako memorija nije
potrebna
- manja ograničenja: aplikacije s manjim zahtjevima na memoriju ili visoko
optimirane aplikacije s visokom razinom potreba za priručnom memorijom.
114. Opišite virtualizaciju sa stajališta zelenog računarstva.

- osnovno načelo razvoja CC-a


(apstrakcija stvarnih resursa i transparentnost resursa)
- Virtual Machines (VMs) mogu omogućiti i druge zelene tehnologije
• dinamička pravila potrošnje
• upravljanje Source Level Agreements (SLA) u CC sustavu
• DVFS
• uravnoteženje/raspodjela opterecenja
- VM mogu biti inertne, a skaliranje resursa sporo
- svaka VM sadrži resurse unutarnje funkcionalnosti; ako imamo puno VM-a
na fizičkom čvoru, puno resursa je posvećeno njima.

115. Navedite energetski učinkovite tehnologije prema slojevima primjene.

Energetski učinkovite tehnologije Sloj primjene


Tehnologija proizvodnje sklopovlje Sloj 6, sloj 5
Upravljanje potrošnjom Sloj 6, sloj5, sloj 4
DVFS i prigušivanje Sloj 6, sloj 5
OS-i osviještene potrošnje Sloj 4
Virtualizacija Sloj 5, sloj 4
Raspoređivanje Sloj 6, sloj 5, sloj 4, sloj 3
Prevoditelji osviještene potrošnje Sloj 4
Nadzor resursa Sloj 4, sloj 3, sloj 2
Predviđanje Sloj 4, sloj 3, sloj 2
CBSE Sloj 4
Doprinos programera Sloj 4, sloj 3
116. Objasnite postupak digitalnog potpisa

117. Objasnite neke tipove kriptovaluta i njihovu upotrebu


Izvori bitcoina: Peer to Peer “cash-like” transakcije

- Ograničena količina (preko 21 mil. Kovanica)


- Nema potrebe za posrednikom
- Dvostruka ušteda
- Tokeni
• Pohrana vrijednosti
• Djeluju kao novac
• Obično razmatraju sigurnost
Neki tipovi kriptovaluta: Bitcoin, Pi, Ethereum, Litecoin

118. Što predstavljaju pametni ugovori u lancu blokova?


Pametni ugovori:

- Samoautomatizirajući programi koji mogu brinuti o uvjetima bilo kojeg ugovora


- Uglavnom zasnovani na ciljnim uvjetima prethodnika tj. “if, then” kriteriju
- Varijable: čitko verificirajući podaci
- Proročanstva: pouzdani izvori
- Crowdsourcing – nadglasavanje
- Sporazumi o skrbi – o novcu se brine dok se ne postignu uvjeti za transakciju, a sve
reguliraju strane bez smetnji i prema objektivnom kriteriju bez vanjskog utjecaja

119. Koja je razlika između tradicionalnih i pametnih ugovora?


120. Opišite koncept lanaca blokova (Blockchain).
Blok-lanac ili Blockchain lanac je baza podataka ili podatkovnih blokova koji su
povezani u jednosmjerni lanac, i u kojem svaka nova karika, odnosno blok, ovisi o
vrijednosti prve starije karike. U blockchainu postoje korisnici i rudari. Korisnici rade
održavanje sustava i bilježenje transakcija od strane rudara, dok rudari rade za korisnike
koji stvaraju transakcije i na njima zarađuju nove kriptokovanice. Postoje 2 termina u
konceptu blockchaina – Proof of Work (PoW) i Proof of Stake (PoS).
Proof of Work – postupak kojim rudari obavljaju potvrđivanje transakcija zahtjevnim
matematičkim proračunima, odnosno rješava problem vjerodostojnosti raspodijeljene
knjige zapisa
Proof of Stake – načelo ulaganja kriptokovanica, pri čemu korisnik može sudjelovati u
potvrđivanju transakcija i zarađivati kroz održavanje mreže, odnosno skupljanje
transakcijske naknade koju plaćaju korisnici pri međusobnom transferu vrijednosti. Kod
PoS rudari mogu raditi na više blockchaina, jer nema većeg troška koji ih ograničava u
tome

121. Koja je razlika između mekog i tvrdog grananja (soft and hard fork)
blockchaina?
Soft fork – sudionici u mreži dobrovoljno počnu koristiti novu inačicu programa,
algoritma koji upravlja mrežom. Program se dogradi, a na tačno definiranom bloku
napravi se grananje koje prihvaćaju svi korisnici.
Hard fork – dio mreže i dalje koristi stari a drugi priželjkuje novi algoritam. Ako ih je
dovoljno za novu, instaliraju alternativnu inačicu programa i ona na tačno definiranom
bloku stvara grananje na postojeći lanac. Korisnici koji to ne prihvate, ne sudjeluju u
promjenama i ne vide ih iz novčanika.
122. Ukratko objasnite načelnu strukturu rješenja za obradbu velikih skupova
podataka, te usluge u sustavu velikih skupova podataka.

123. Ukratko objasnite šta su tokovi podataka i postupak anaize tokova podataka.
Tokovi podataka:

- Neograničeni slijedovi događaja


- Događaji : elementi računanja prema nekoj shemi (tuples – izvori slijedova, konačne
poredane liste)
- Operatori toka podataka : troše i proizvode tokove podataka
- Događaji se mogu samo jednom koristiti – nema korištenja unazad
- Koristi se sinopsis: sažetak beskonačnog toka, a to je zaparvo bilo koje slanje
operatora toka
- Tokovi mogu biti već podijeljeni (dijeljenje može biti broadcast, shuffle, key based,...)

124. Ukratko objasnite sljedeće programske modele i tehnologije za raspodijeljenu


obradbu podataka: MapReduce, Hadoop, Spark, Flink

MapReduce omogućuje jednostavniku obradu podataka na velikim nakupinama računala.

Hadoop Distributed File System (HDFS) – raspodijeljeni file system koji omogućuje bazi pristup
podacima i rad s velikim datotekama po načelu write-once-read-many tipično s blokovima od 64 MB i
uravnoteženjem opterećenja
Spark – in-memory okvir opće namjene za obradu podataka, podržava SQL (i slične), obradbu
grafova, strojno učenje; read only zbirka objekata koji se dijele među strojevima, mogu se
rekonstruisati, spremaju svoj tijek izvođenja a omogućuju kontrolu od strane korisnika

Flink – open source raspodijeljeni okvir za analizu podataka

- Stvarni streaming u jezgri sustava


- Streaming & batch API

You might also like