Вы находитесь на странице: 1из 66

DISTRIBUIRANI RAČUNALNI SUSTAVI

Skripta za pismeni i usmeni ispit 15/16

Doradio: Ivan Glavota

Osijek, 2016.
1. Usporedite raspodijeljeno i centralizirano računalstvo, te navedite barem tri
primjera raspodijeljenih računalnih sustava.

Jednoprocesorsko računarstvo može se nazvati centraliziranim računarstvom, dok se kod


raspodijeljenog računarstva radi o računarstvu na skupini nezavisnih računala spojenih mrežom
koja su sposobna surađivati u obavljanju postavljenog zadatka. Raspodijeljeno računarstvo je u
značajnom porastu zbog rasta performansi te smanjenju cijena računala i računalnih mreža.
Primjeri raspodijeljenog sustava:
 Internet
 ATM (bankovna) računala
 Intranet / Radne skupine (Workgroups)

2. Skicirajte programske komponente raspodijeljenog sustava, te ukratko objasnite


ulogu svake od njih.

Slika 1.2 Programske komponente raspodijeljenog sustava

Najniži sloj su raspodijeljeni operacijski sustavi, iznad njih nalazi se posrednički sloj dok je na
vrhu aplikacijski sloj odnosno aplikacije.
 Raspodjeljeni i mrežni OS (DOS i NOS):
o DOS (Distributed OS) - Čvrsto povezan OS za višeprocesorske i istorodne
višeračunalne sustave. Skriva sklopovlje i upravlja njime.
o NOS (Network OS) - Lagano povezan OS za raznorodni višeračunalni sustav (LAN
i WAN). Omogućava lokalne usluge udaljenim klijentima.
 Posrednički sloj – širi se preko više strojeva i omogućuje aplikacijama isto sučelje. Čini
raspodijeljenu prirodu aplikacije transparentnom prema korisniku/programeru
 Raspodijeljene aplikacije - Aplikacije koje se sastoje od skupa procesa koji su
raspodijeljeni po mreži računala i rade zajedno kao postrojenje za rješavanje zajedničkog
problema

1
3. Navedite i ukratko objasnite barem 5 izazova raspodijeljenog računarstva.

 Nadogradivost/proširivost – Sustav mora biti skalabilan, odnosno mora biti moguće


dodavati dodatne čvorove (računala) ali i nove korisnike odnosno zadatke koje će taj sustav
rješavati
 Raznorodnost – Ne moraju svi elementi raspodijeljenog sustava biti jednaki svojstava i
performansi.
 Sinkronizacija – Računala moraju biti usklađena, sinkronizirana kako bi mogla
međudjelovati.
 Kašnjenje/prikrivenost – Budući da se koristi računalna mreža za komunikaciju, mora
postojati kašnjenje u komunikaciji između elemenata raspodijeljenog sustava.
 Djelomični kvarovi / pogreške – Aplikacije se trebaju prilagoditi parcijalnim ispadima /
kvarovima dijelova sustava.

4. Objasnite problem i rješenja proširivosti/nadogradivosti raspodijeljenog


računalnog sustava.

Proširivost odn. nadogradivost postaje sve značajnija, jer se računalna okružja bitno mijenjaju.
Problem predstavlja centralizacija usluga, algoritama i podataka.

Slika 1.3. Primjeri problema proširivosti

Ključ nadogradivosti su decentralizirani algoritmi i strukture podataka.

 Niti jedan stroj nema cjelovitu informaciju o stanju cijelog sustava


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

2
5. Objasnite problem i rješenja transparentnosti raspodijeljenog računalnog
sustava.

 Transparentnost pristupa: omogućava da lokalni i udaljeni resursi mogu biti dostupni


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

6. Ukratko usporedite asinkroni i sinkroni raspodijeljeni sustav.

 Sinkroni raspodijeljeni sustav - Vrijeme za izvođenje svakog koraka procesa ima donju i
gornju granicu, 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. U sinkronom sustavu, odstupanja u vremenu (timeouts) mogu poslužiti za
otkrivanje pogrešaka
 Asinkroni raspodijeljeni sustav - Svaki korak procesa može trajati proizvoljno dugo
vremena, vrijeme isporuke poruka je proizvoljno, driftovi satova su proizvoljni. U
asinkronom sustavu nemoguće je otkriti pogrešku ili “postići sporazum – reach agreement”.

3
7. Navedite barem 5 proizvoljnih i vremenskih pogrešaka u raspodijeljenom
računalnom sustavu

 Proizvoljne pogreške:
o Stop-pogreška – utječe na proces - Proces staje i ostaje zaustavljen. Ostali procesi
mogu otkriti o stanje
o Ispad (crash) – utječe na proces - Proces staje i ostaje zaustavljen. Ostali procesi
ne mogu otkriti to stanje pogreške.
o Propust (omission) - utječe na kanal - Poruka ubačena u spremnik odlaznih
poruka nikada ne Stiže na drugu stranu, odn spremnik dolaznih poruka.

 Vremenske pogreške:
o Sat – utjecaj na proces - Procesov lokalni sat prekoračuje ograničenja u driftu (real
time).
o Performanse – utjecaj na proces - Proces prekoračuje ograničenja intervala
između dva koraka.

8. Navedite osnovne ciljeve posredničkog sloja.

 Posrednički sloj vodi računa o raznorodnosti


 Podrška više razine, ali prikazuje udaljene objekte, parcijalne pogreške, itd. prema
programeru (JINI, Javaspaces)
 Dogradivost
 Podrška više razine - Čini raspodijeljenu prirodu aplikacije transparentnom prema
korisniku/programeru (RPC, RPC + Corba)
 Posrednički sloj širi se preko više strojeva i omogućava aplikacijama isto sučelje.

4
9. Objasnite osnovna svojstva raspodijeljenih aplikacija i skicirajte postupak
pozivanja poslužitelja od strane klijenata.

Raspodijeljene aplikacije - Aplikacija koja se sastoji od skupa procesa koji su raspodijeljeni


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 centraliziran na poslužitelju).

“Peer to Peer” - računalstvo predstavlja pomak prema istinskim raspodijeljenim aplikacijama.


To je umrežavanje računala bez poslužitelja, svako računarko je inteligentna radna stanica, koja
pronalazi druga računala putem broadcast ethernet paketa i komunicira s njima izravno bez
potrebe autorizacije na nekom središnjem računalu.

Slika 1.6. P2P računarstvo

5
10. Skicirajte osnovne oblike organiziranja procesora i memorije u raspodijeljenim
računalnim sustavima, te oblike višeprocesorskih i višeračunalnih sustava

Slika 1.7. Osnovni oblici organiziranja procesora i memorija

Višeprocesorski sustavi: bus-based multiprocessor

Slika 1.8. Sabirnički višeprocesorski sustav

Slika 1.9. Višeprocesorski sustav

6
Slika 1.10. Istorodni višeračunalni sustavi

11. Usporedite prema stupnju transparentnosti, osnovi komuniciranja, upravljanju


resursima, nadogradivosti i otvorenosti raspodijeljenje, mrežne i posrednički
zasnovane OS. ¸

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


sustava.

7
13. Skicirajte i ukratko objasnite paradigmu izmjene poruka.

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
receive. Za komuniciranje zasnovano na spajanju, potrebne su i operacije connect i disconnect.
Apstrakcije ovog 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.
14. Skicirajte i ukratko objasnite paradigmu klijent-poslužitelj.

Klijent – poslužitelj model - dodjeljuje asimetrične uloge dvojima suradnim procesima. Jedan
proces, poslužitelj, igra ulogu davatelja usluge koji pasivno čeka na dolazak zahtjeva. Drugi,
klijent, isporučuje određene zahtjeve poslužitelju i očekuje njegov odziv. Klijent - poslužitelj
model 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
asimetrič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 drugi.

8
15. Skicirajte i ukratko objasnite P2P raspodijeljenu paradigmu.

Paradigma u kojoj se računalni resursi i usluge izravno izmjenjuju između računalnih sustava.
Ti resursi i usluge uključuju: izmjenu informacija, odradbene cikluse, pohranu u priručnu
memoriju, pohranu podataka na diskovne prostore i drugo… 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 je od tih dvaju uloga najučinkovitija za mrežu.
Procesi koji sudjeluju u igraju jednake uloge, s jednakim mogućnostima i odgovornostima.
P2P paradigma više odgovara aplikacijama kao što su trenutna isporuka poruka (instant
messaging), P2P prijenos datoteka, video konferencije i kooperativni rad (CSCW). Aplikacije
mogu biti zasnovane i na klijent-poslužitelj i na P2P modelu.

16. Ukratko objasnite i usporedite point-to-point i publish/subscribe modele poruka.

Dvije podvrste modela izmjene poruka

Point-To-Point model poruka - Sustav poruka prosljeđuje poruku od pošiljatelja u red poruka
primatelja. Za razliku od osnovnog MP (Message passing) 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.

9
Model poruka Izdavač/pretplatnik (Publish/Subscribe) - Svakoj poruci pridruženi su
određena tema ili događaj. 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 multicast.

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

Slika 1.10. RPC

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


raspodijeljenih 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 bliskima programerima aplikacija.

RPC zahtijeva dva nezavisna procesa, koji mogu ostati na odvojenim strojevima. Ako proces,
A, želi poslati zahtjev prema drugom procesu, B, izdaje poziv procedure prema B, a uz poziv
prosljeđuje listu s vrijednostima argumenata. Kao kod LPC (Local Procedure Calls), poziv
udaljene procedure okida predefinirani 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.

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

Slika 1.11. RMI

RMI je objektno orijentirani ekvivalent od RMC (remote method call). Proces poziva metode
u objektima, koje ostaju na udaljenom domaćinu (remote host). Kao u RPC, argumenti se mogu
proslijediti pozivanjem.

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

Slika 1.12. ORB paradigma

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 zahtjeva također može raditi kao posrednik prema raznorodnim objektima,
omogućavajući međudjelovanje među objektima koristeći razne API-je ili se pokrećući na
raznim platformama. Ova paradigma osnova je Object Management Group’s CORBA
(Common Object Request Broker Architecture) arhitekture.

11
20. Ukratko objasnite paradigmu prostora objekata.

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


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

Davatelj usluge smješta objekte kao dijelove prostora objekata, a tražitelji koji su pretplaćeni
na prostor, pristupaju tim entitetima. Kao dodatak apstrakcijama koje omogućavaju druge
paradigme, ova paradigma omogućava virtualni prostor ili sobu za sastanke između davanja i
zahtijevanja 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.

21. Ukratko skicirajte i objasnite paradigmu mobilnih agenata

Mobilni agent je prenosivi program ili objekt. Agent je lansiran sa izvornog domaćina (host).
Putuje od domaćina do domaćina prema ruti na karti (itinerary) koju nosi. Pri svakom stajanju,
agent pristupa nužnim resursima ili uslugama i obavljaju zadatke nužne za obavljanje cijelog
posla. Paradigma omogućava apstrakciju prenosivog programa ili objekta. Tijekom izmjene
poruka, podatke nose programi/objekti koji putuju između sudionika.

12
22. Objasnite prednosti i nedostatke višenitnosti u raspodijeljenim računalnim sustavima.

Prednosti:

o Niti obično dijele adresni prostor – izmjene okoline za niti na jednom procesoru je
“jeftina”.
o Višenitni proces može se izvoditi transparentno na jednom procesoru ili na
višeprocesorskom sustavu.
o Niti koje surađuju mogu biti prirodni strukturni mehanizam nekih aplikacija.
o Implementiranje niti treba omogućiti samo obuhvaćenoj niti blokiranje sustavskog
poziva.

Nedostatak:

o Nadzor korištenja dijeljenih podataka je u potpunosti prepušten programeru

23. Ukratko navedite najbitnije detalje dizajna klijenta i detalje dizajna poslužitelja.

Detalji dizajna klijenta

o Cilj: Omogućiti sredinu u kojoj korisnik međudjeluje s udaljenim poslužiteljima


o Višenitnost
o sakriti komunikacijska kašnjenja (latency)
o omogućiti višestruka simultana spajanja (connections)
o Mora se znati ili otkriti položaj poslužitelja
o poznata krajnja točka (endpoint) ili sučelje (port) nasuprot lookup mehanizma
o Blokiranje (sinkrono) zahtjeva ili neblokiranje (asinkrono)
o Transparentnost repliciranja

Detalji dizajna poslužitelja

o Omogućavanje informacija o krajnjoj točki


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

13
24. Skicirajte spajanje klijenta na poslužitelj korištenjem daemona i korištenjem
superposlužitelja.

14
25. Skicirajte način rada višennitnog poslužitelja organiziranog po modelu dispečer/radnik.

Slika 1.13. Višenitni poslužitelj

26. Ukratko objasnite postupak i razloge migriranja koda.

Migriranje koda – premještaj dijela posla(koda), može se načiniti s klijenta na poslužitelja ili
s poslužitelja na klijent. Klijent komunicira s poslužiteljem: klijent najprije dohvaća potreban
nužan programski kod, a zatim poziva poslužitelj (performanse, fleksibilnost).

Razlozi migriranja koda:

 Dijeljenje opterećenja u raspodijeljenim 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 slati komponentu obradbe
podataka slati klijentu
o Dinamički konfigurabilni klijentski program:
 više fleksibilnosti, lakše održavanje i nadogradnje klijentskih programa
 Enterprise i “Desktop Grids”, odnosno SETI@home
o računalno zahtjevni zadaci šalju se slobodnim osobnim računalima na mreži

15
Slika 1.13. Klijent - server

Princip dinamičkog konfiguriranja klijenta koji komunicira s poslužiteljem. Klijent najprije


dohvaća potreban nužan programski kod, a zatim poziva poslužitelj (performanse,
fleksibilnost).

27. Navedite korake poziva udaljene procedure.

 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 otpakira parametre
 Pozivi poslužitelja implementiraju 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 OSu
 Klijentov OS daje poruku krajnjem klijentu
 Krajnji klijent otpakira rezultat i vraća ga klijentu.

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

Slika 1.14. Asinkroni RPC

29. Skicirajte jednostavnu organizaciju udaljenog objekta s proxyjem na prijemnoj strani.

Slika 1.15. Udaljeni objekt s proxyem

17
30. Navedite osam koraka stvaranja raspodijeljene 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žitelj
 Pokrenuti klijenta

31. Ukratko objasnite pojam socketa, te programiranje socketa TCP-om, te ga usporedite s


izvedbom UDP-om.
SOCKET – host-lokalno, aplikacijski kreirano(dostupno), OS-upravljano sučelje u okviru
kojeg aplikacijski proces može slati(send) i primati(receive) poruke od (na) 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žitelj kroz:


o Kreiranje klijent-lokalni TCP socket
o Specificiranjem IP adrese, broja pristupa poslužiteljskog procesa
o Kada klijent kreira socket: klijent TCP uspostavlja vezu s poslužiteljem TCP
o 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

S gledišta aplikacije: TCP omogućava pouzdan, poredani prijenos bajta(„pipe“) između


klijenta i poslužitelja

18
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
S gledišta aplikacije: UDP omogućava nepouzdani prijenos bajta („datagrams“) između
klijenta i poslužitelja

32. Skicirajte izravno i T-razinsko dodjeljivanje imena u raspodijeljenim sustavima.

33. Ukratko objasnite hijerarhijski pristup lociranja entiteta.

19
Hijerarhijska organizacija usluge lociranja u domenama, pri čemu svaka ima pridružen
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 zapis u svakom nasljedniku u stablu domene (sve do korijena). Entitet ima
višestruke adrese, pa tako i višestruke pokazivače u različitim čvornim domenama.

Traženje položaja u hijerarhijski organiziranim lokacijskim uslugama zahtijeva pretraživanje


prema gore u stablu sve dok se ne dosegne zapis tog entiteta. Kad se pronađe, pokazivači se
slijede prema 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 korijenu stabla.

20
34. 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. Prosljeđivanje pokazivača stvara povezanu listu koristeći (klijentsku i
poslužiteljsku krajnju točku) informacije (slika). 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” na klijentskoj krajnjoj točki.


Cilj je 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]

21
35. Ukratko definirajte pojmove: LDAP, UDDI i WSDL.

LDAP – Aplikacijski protokol za upite i izmjene podataka direktorija usluga ugrađenih u IP


mreže. Direktorij je skup objekata s atributima organiziranih lokalno u hijerarhijskom smislu.
LDAP danas nastoji koristiti DNS imena za strukturiranje gornjih slojeva hijerarhije.

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

WSDL: Web Service Definition Language

o Formalni jezik koji služi kao IDL i podupire RPC-zasnovanu komunikaciju na


webu.
o WSDL opisi sadrže definicije sučelja omogućenih uslugama(tipovi podataka,
položaj..)
o Opis može biti preveden za klijentsku i poslužiteljsku komunikacijsku točku.

36. Skicirajte i ukratko objasnite cristianov algoritam sinkronizacije fizičkog sata

U raspodijeljenom sustavu, svaki stroj ima svoj vlastiti 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.

Periodno uzima informaciju sa vremenskog poslužitelja (s pretpostavkom da je on točan).

22
37. Ukratko objasnite pojam logičkih satova u raspodijeljenim računalnim sustavima s
osvrtom na lamportove satove

Kod promatranja logičkih satova moglo bi biti dovoljno da svaki čvor prihvati trenutno vrijeme
koje ne mora biti i stvarno vrijeme. Dva sustava mogu prihvatiti vremena po redoslijedu
događanja događaja u sustavu. Prema Lamportu, 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:

1. Ako su a i b događaji istog procesa, a a se događa prije b, tada je a → b istinito


2. Ako je a događaj slanja poruke jednog procesa, a b je događaj prijema poruke poruke
drugog procesa, tada je a → b

Dva različita događaja su konkurentni ako a → b i b → 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 raspodijeljenom sustavu.

Totalna uređenost može se pridružiti događajima ako možemo pretpostaviti pridruživanje broja
procesa događajima korištenima 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 se može pomaknuti samo unaprijed.

Na slici a) su tri procesa, svaki sa vlastitim satom. Satovi otkucavaju različitim brzinama.

23
Slika b) : nakon izmjene poruka, logički satovi se korigiraju.

38. Usporedite prema bitnim pokazateljima tri algoritma međusobnog isključivanja

 Centralizirani algoritam

a) Proces 1 pita koordinatora za dozvolu pristupa kritičnom odsječku. Dozvola je dana


b) Proces 2 tada pita za dozvolu pristupa istom kritičnom odsječku. Koordinator ne odgovara.
c) Kada proces 1 izađe iz kritičnog odsječka, govori koordinatoru, koji tada odgovara procesu 2

24
 Raspodijeljeno međusobno isključivanje: Ricart/Agrawala

a) Dva procesa žele pristup istom kritičnom odsječku u istom trenutku.


b) Proces 0 ima najmanju vremensku oznaku, pa on pobjeđuje.
c) Kada proces 0 odradi, on šalje OK, pa 2 može ući u kritični odsječak.

Kada proces želi pristup resursu, šalje vremenski označenu poruku zahtjeva svim ostalim
procesima i čeka na OK od svih procesa. Kada proces primi zahtjev, on čini sljedeće tri stvari:
o Kada prijemnik ne pristupa resursu i ne želi mu pristupiti, šalje OK pošiljatelju
o Ako prijemnik već ima pristup resursu, on jednostavno ne odgovara i zahtjev se smješta
u red čekanja.
o Ako prijemnik želi pristup resursu, ali to još nije napravio, on uspoređuje vremensku
oznaku zahtjeva s onim koji je poslan, a najniži pobjeđuje (npr. 1, pa 2).

Pretpostavlja da su događaji potpuno uređeni i da je slanje poruka pouzdano.


Zahtjeva manje poruka od Lamporta
Problemi:
o Ako i jedan proces padne, sve staje (može se koristiti većinsko nadglašavanje)
o Zahtijeva se da proces zna sve o drugim procesima (za razliku od centralizirane inačice)

25
 Raspodijeljeno međusobno isključivanje: Token Ring

a) Neuređena grupa procesa na mreži.


b) Logički prsten konstruiran u programu.

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.

39. Objasnite i po potrebi skicirajte bullyjev algoritam nadglasavanja

Algoritmi nadglasavanja su zapravo postupci pronalaska procesa s najvećim brojem i njegovog


pokazivanja kao takvog svim procesima kao koordinatora.

26
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 vecim brojevima odgovari, on dobiva. P’-ov posao je obavljen.

Bully election algorithm:


a) Proces 4 uočava da 7 nije više raspoloživ i potiče izbore šaljući poruke na 5 i 6
b) Procesi 5 i 6 odgovaraju i govore da 4 prestane s tom aktivnošću
c) Tada 5 i 6 (oba) dobivaju izbore.
d) Proces 6 govori 5 da stane
e) Proces 6 dobiva i govori svima
f) Ako proces 7 ponovno krene, on obavješćuje sve da je on koordinator

27
40. Navedite barem 3 mehanizma koji podržavaju paradigmu raspodijeljenih objekata

Paradigma raspodijeljenih objekata široko je prilagođena u raspodijeljenim aplikacijama u


obliku velikog broja mehanizama. Najpoznatiji su:
o Java Remote Method Invocation (RMI),
o Common Object Request Broker Architecture (CORBA) sustavi,
o Distributed Component Object Model (DCOM),
o mehanizmi za potporu Simple Object Access Protocol (SOAP).
Od njih, Java RMI je vjerojatno najviše prihvaćen.

41. Ukratko objasnite osnove rada Java RMI arhitekture.

RMI aplikacije se često sastoje od dva odvojena programa koje se može opisati kao server i
klijent. Serverski program (server) kreira (udaljene) objekte, na raspolaganje drugim
aplikacijama daje reference na te objekte, te čeka na klijenta koji će aktivirati izvršavanje neke
od metoda objekata koji su na raspolaganju. Klijent dohvaća referencu na udaljeni objekt (ili
više njih) te inicira izvršavanje metoda na referenciranim objektima. RMI omogućava serveru
i klijentu da uspostave međusobnu komunikaciju te da na taj način obostrano razmjenjuju
informacije.

42. Ukratko objasnite osnove rada CORBA sustava raspodijeljenih objekata.

Common Object Request Broker Architecture (CORBA)

Osnovna CORBA arhitektura i njeno isticanje djelovanja među objektima, te nezavisnost o


platformi (C, C++, Java, COBOL, Smalltalk, Ada, Lisp, Python i IDLScript).“Object bus”
omogućava da Internet bude vidljiv kao sabirnica spojenih CORBA objekata. CORBA sama
po sebi nema mogućnost rada s raspodijeljenim objektima - ona je skup protokola.
Raspodijeljeni objekti i njihovo međudjelovanje omogućeni su tim protokolima. Sučelje je
definirano univerzalnim jezikom CORBA Interface Definition Language (IDL).

General Inter-ORB Protocol (GIOP) omogućava opći okvir za protokole koji se izgrađuju na
određenom transportnom sloju. ORB servis koji obrađuje zahtjev za udaljeni objekt. On
pronalazi udaljeni objekt u mreži, prenosi zahtjev objektu, čeka rezultate i kada su dostupni
vraća dobivene rezultate natrag na klijentu.

28
IIOP(Internet Inter-ORB Protocol)- omogućava komunikaciju između objekata koji koriste
različite isporučitelje. IIOP radi preko Interneta, odnosno preko bilo koje TCP / IP
implementacije.

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

Kako dodijeliti jedinice poslova radnicima?

Što kada imamo više jedinica posla nego radnika?

Što kada radnici trebaju dijeliti parcijalne rezultate?

Kako ćemo skupiti parcijalne rezultate?

Kako ćemo znati kad su svi radnici obavili posao?

Što ako radnik nestane?

44. Skicirajte model raspodijeljenog računala, te objasnite osnovnu razliku između grozda i
spleta računala.

Računala na kojima se izvode paralelni programi mogu biti umrežena računala lokalne mreže
(grozd) ili raspršena računala u Internetu (splet računala). Za razliku od grozda računala
koji je danas uobičajen, splet računala je model koji će zaživjeti tek budućnosti.

Grozd računala – skup računala povezana lokalnom mrežom. Značajke: manji broj računala i
veća brzina komunikacije

Splet računala – infrastruktura koja omogućuje pristup računalnim resursima na svakom


mjestu. Značajke: veći broj računala koji podržavaju splet, različita brzina komunikacije

29
45. Ukratko objasnite osnovne modele (paradigme) paralelnih programa.

1. Komunikacija porukama – najviše korišteni model

o više zadataka se izvode neovisno;


o komunikacija porukama
o SPMD-jedan program se izvodi na više procesora.
o Unutar jedinstvenog programa implementiraju se različite uloge u sustavu

2. Podatkovni paralelizam – primjena iste operacije na više podataka

o Podatkovne strukture
o Primjena iste operacije na više elemenata
o programski jezik High Performance Fortran (HPC).

3. Zajednička memorija – svi procesori dijele memorijski prostor-pristup asinkroni

o moguća upotreba Pseudo nedeterminističkog algoritma


o potrebni eksplicitni mehanizmi zaštite (semafori)
o jednostavnije programiranje – manja razlika od slijednog modela algoritma.

4. Sustav zadataka i kanala – prikazuje se usmjerenim grafom u kojem su čvorovi zadaci


(međusobno neovisni) a veze su kanali kojima zadaci komuniciraju

o broj zadataka se može mijenjati tokom izvođenja


o poopćenje modela komunikacije porukama.

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

Performanse algoritma u platformama s paralelnom obradom ovise o paraleliziranosti algoritma


u cilju dostizanja performansi, stoga je važno pripaziti na Amdahlov zakon. Amdahlov zakon
je formulirao Gene Amdahl 60-ih godina 20. stoljeća.[9] On tvrdi da mali dijelovi programa
koji se ne mogu paralelizirati ograničavaju ukupno ubrzanje dobiveno paralelizacijom. Bilo koji
matematički ili inženjerski problem uobičajeno će se sastojati od nekoliko dijelova, koji se
mogu paralelizirati i nekoliko koji se ne mogu paralelizirati (sekvencijalne komponente). Ovaj
odnos je dan izrazom:

30
Uključi li se i broj procesora koji izvode paralelni posao, izraz postaje:

𝟏
𝑺= 𝒑
𝒔+ 𝑵

gdje je:

 S – ubrzanje
 s – vremenski udio instrukcija programa koje se ne mogu paralelizirati
 p – udio instrukcija koje se mogu paralelno izvoditi
 N – broj procesora na raspolaganju

Ubrzanje je uvijek <= 1/s

47. Navedite osnovne korake pretvorbe slijednog algoritma u paralelni.

Pretvorba slijednog programa u paralelni program zasnovan na zadacima slijedi nekoliko


koraka. Prvi je odrediti strukturu slijednog programa i podijeliti program u manje potprograme.
Zatim se izvrši strukturalna analiza programa te se nacrta kao graf zadataka koji uključuje i
ovisnost podataka. Nakon toga se maksimizira paralelnost grafa. Onda se odrede zadaci koji
nužno ostaju slijedni te se ti dijelovi probavaju ponovno iskoristiti što je više moguće. Slijedi
ponovno pisanje dijelova programa koji se daju paralelno izvršavati, koji se zatim preslikaju
prvo na virtualnu računalnu platformu, a zatim i na stvarnu hardversku platformu. Na kraju se
paralelni program izvrši te se izmjere performanse.

48. Navedite i ukratko objasnite barem 2 tipa dekompozicije problema za rad na paralelnoj
platformi.

Domenska dekompozicija
o Podaci nad kojima algoritam radi dijele se u manje cjeline (obično podjednake veličine).
o Definiraju se zadaci koji su „zaduženi“ za odgovarajući dio podataka.
o U općenitom slučaju među zadacima je potrebno definirati neki oblik komunikacije.
Funkcionalna dekompozicija
o Prvo se izvodi podjela računanja, a zatim eventualna raspodjela podataka.
o U općenitom slučaju teže za izvesti i manje intuitivno.
o Primjer: algoritam pretraživanja stabla

31
49. Objasnite pojam funkcionalne dekompozicije problema prilikom prilagodbe serijskog
programa paralelnom izvođenju.

Funkcionalna dekompozicija – svaki zadatak dobije dio problema koji treba riješiti. Važniji
je računski dio koji treba izvršiti, nego podaci koji se koriste prilikom izvršavanja.

Paralelizacija algoritma:

- svaki procesor izvodi svoj dio petlje – funkcionalna dekompozicija

- svaki procesor tijekom rada ne treba nikakvu informaciju od drugih

Ostvarenje algoritma: korištenjem SPMD modela (komunikacija porukama) – jedan proces


„master“ sakuplja rezultate od svih ostalih.

Problem: Računala su različitih brzina -> potrebno je ujednačiti opterećenje skupom zadataka,
odnosno podjelom posla na broj dijelova jedna broju procesa i gdje master inicijalizira podatke,
šalje posao na zahtjev sluge i skuplja podatke dok worker dohvaća poslove i šalje rezultate
masteru.

50. Objasnite pojam raščlanjivanja domene problema prilikom prilagodbe serijskog


programa paralelnom izvođenju.

Podaci povezani problemom se dijele. Svaki paralelni zadatak potom radi na dijelu podataka.

Proces gospodar: inicijalizira podatke o poslovima, šalje pojedinačni posao na zahtjev sluge,
skuplja podatke

Proces sluga: dohvaća poslove od gospodara i obavlja ih, šalje rezultate gospodaru

51. Navedite osnovne značajke nakupina računala (engl. Cluster), te ukratko opišite barem
3 vrste od njih.

Cluster – postrojenje umreženih, samostalnih, common-off-the-shelf računala korištenih


zajedno za rješavanje danog problema

Vrste:
1. Nakupine visokih performansi
2. S raspodjelom opterećenja – potreban velik broj računala da bi se dijelilo opterećenje
3. Visokoraspoložive nakupine – sprječavaju ispade usluga, sa zalihošću, uglavnom s
LB

32
52. Što je OpenMP i koje su njegove 3 glavne komponente?

OpenMP: Application Programing Interface (API) za paralelno programiranje


višeprocesorskih sustava s dijeljenom memorijom

3 glavne komponente:

 Prevoditeljske smjernice

 Biblioteka podržanih funkcija

 Varijable okoline

53. Navedite osnovne elemente programske okoline OpenMP-ja.

Osnovni elementi: za stvaranje niti, raspodjela opterećenja, upravljanje okolinom podataka,


sinkronizacija niti, run-time rutine korisničkog sloja i varijable okoline.

54. Objasnite i pokažite primjer korištenja smjerica (pragma) za paraleliziranja for petlje.

#pragma omp parallel for

for (i = 0; i < N; i++)

a[i] = b[i]+c[i];

#pragma omp parallel for smjernica obavještava programski prevoditelj da paralelizira petlju
koja slijedi(vanjsku). Kada programski kod naiđe na smjernicu #pragma omp parallel for broj
iteracije petlje je podijeljen između niti.

55. Napišite i objasnite ulogu funkcija omp_get_num_procs() i omp_set_num_threads().

Funkcija omp_get_num_procs() vraća broj fizički 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 koda.

void omp_set_num_threads(int t)

33
56. Navedite opcije (klauzule) smjernice definiranja vidljivosti varijabli i pokažite primjer
uporabe iste.

Klauzule definiranja vidljivosti varijabli: private (jednu ili više varijabli učini privatnima u
odnosu na druge), shared, default, firstprivate, lastprivate, reduction

Primjer za private:

#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]+temp);

57. Objasnite mogućnosti redukcije (reduce) u OpenMP-ju i pokažite primjer korištenja iste.

Redukcija omogućuje skupljanje podataka od svih procesa, sažimanje podataka u jedinstvenu


vrijednosti spremanje sažetog na matični proces.

#pragma omp parallel for private(x) reduction(+:area)


for(i = 0; i < n; i++)
{
x = (i + 0.5)/n;
area += 4.0/(1.0+x*x);
}

34
58. Objasnite mogućnosti i opcije raspoređivanja u OpenMP-ju.

Statičko raspoređivanje: niski troškovi i može izazvati neravnotežu opterećenja

Dinamičko raspoređivanje: visoki troškovi i može smanjiti neravnotežu opterećenja

Vođeno raspoređivanje

Runtime raspoređivanje

Opcije:

 Schedule (static) – blokira alociranje neprekidnih iteracija za svaku petlju

 Schedule (static, c) – umetnuto alociranje komadića duljine C na niti

 Schedule (dynamic) – dinamičko one-at-a-time alociranje iteracija nitima

 Schedulle (dynamic, c) – dinamičko alociranje c iteracija odjednom prema nitima

 Schedule (guided, c) – dinamičko alociranje komadića zadacima koristeći vođeno


samoraspoređivanje

 Schedule (guided) – vođeno samoraspoređivanje s minimalnom veličinom komadića

 Schedule (runtime) – raspored izabran tijekom izvođenja na temelju vrijednosti

59. Objasnite i na primjeru pokažite uporabu smjernica parallel, for, single, nowait i sections.

parallel pragma instruira svaku nit da izvodi cijelu kod unutar bloka

Ako for petlju dijelimo među nitima koristimo for pragmu

single pragma nalaže prevoditelju da samo jedna nit treba izvoditi blok koda koji prethodi
pragmi

nowait klauzula – smjernica parallel for zahtijeva sinkronizaciju na barijeri pri završetku, no
ako to nije potrebno koristi se nowait.

parallel sections pragma prethodi bloku k blokova koda koji se može istovremeno izvoditi od
stane k niti.

35
Primjeri:
#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];
}
#pragma omp parallel sections
{
#pragma omp section

pragma omp section
….
}

60. Koja su 2 glavna pristupa paralelizmu pomoću OpenMP-ja?

Dva pristupa paralelizma:

1. Paralelizacija na razini petlje: pojedinačne petlje su paralelizirane na način da je


svakoj niti dodijeljen određen broj iteracija te petlje

2. Princip paralelnih regija – svaki dio koda se može paralelizirati

61. Koja je razlika između zajedničkih i privatnih varijabli OpenMP smjernica?

Privatne varijable imaju svoje kopije na odvojenim memorijskim lokacijama, za svaku nit po
jedna.

Zajedničke varijable – sve niti mogu pristupati tim varijablama i mijenjati, sve varijable u
određenoj petlji dijele isti adresni prostor.

36
62. Navedite i ukratko objasnite 3 temeljne funkcije OpenMP okruženja.

omp_set_num_threads() – funkcija postavlja broj niti koje će se koristiti u paralelnim


dijelovima

omp_get_num_threads() – funkcija vraća broj niti koji se koriste u paralelnom dijelu koda

omp_get_thread_num() – funkcija vraća rang niti u paralelnom dijelu koda

63. Objasnite pojam spleta računala (engl. grid) kroz postojeće definicije, te navedite barem
4 oblika upotrebe takvih sustava.
Vrsta paralelnom i raspodijeljenog sutava koji omogućuje dijeljenje, izmjenu, izbor i
nakupljanje zemljopisno raspodjeljenih autonomnik sredstava: računala, programi,
katalogizirani podaci i baze podataka, posebni uređaji, ljudi/suradnici.

64. Skicirajte slojeve građe spleta računala i njegovih posredničkih slojeva.

37
65. Navedite i ukratko objasnite barem 4 usluge spleta računala.
Grid Information Service – učinkovita upotreba resursa temeljena na znanju o komponentama
sutava

Upravljanje resursima: - lociranje i izbor resursa, dodjeljivanje resursa, autentificiranje,


stvaranje procesa

Spremničke i U/I usluge: pristup udaljenim podacima, komunikacija

66. Usporedite potencijal spleta računala sa strane njegovih potrošača i davatelja usluga.
Potrošači spleta računala: 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
Davatelji usluga spleta računala: doprinose resurse za izvođenje poslova potrošača, profitiraju
povećanjem korisnosti resursa; definiraju lokalne zahtjeve i mogućnosti trgovine

67. Opišite što je Grid Service Broker (GSB) i navedite njegove glavne mogućnosti.
Broker za raspoređivanje zadataka aplikacija na temelju statičkih i dinamičkih parametara
spleta računala.
Mogućnosti:
 A single window to manage and control experiment
 Programmable Task FOrming Engine
 Resource Discovery and Resource Trading
 Optimal Dana Source Discovery
 Scheduling and Predications
 Generic Dispatcher and Grid Agents
 Transportation of dana and sharing of results
 Accounting

38
68. Navedite barem 3 primjera spleta računala u primjeni i ukratko ih opišite.
Primjer 1: Collaborative Engineering: rukuje dijeljenim prostorom sa simulacijskim
komponentama, višestrukim tokovima. Koristi Globus komunikaciju
Primjer 2: High-Throughput Computing: raspoređuje više nezavisnih zadataka. Globus
sigurnosni sutav, otkrivanje, pristup podacima, raspoređivanje
Primjer 3: Problem Solving Enviroment: Gobus usluge koriste se za prepoznavanje korisnika,
udaljeno podnošenje poslova, nadzor, upravljanje

69. Opišite osnovna načela oblaka računala (engl. 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, podaci kao usluga, platforma kao usluga, itd.
Bitno je odrediti koje usluge, informacije i procesi su dobri kandidati za opstanaka u oblaku
kao i koje usluge trebaju biti obuhvaćene unutar postojeće ili nove SOA-e.

70. Opisno usporedite (ili skicirajte) oblak računala s ostalim računalnim tehnologijama
slične namjene.
Dijele dosta zajedničkog: namjera, arhitekture, tehnologije
Razlike: programski model, poslovni model, model odradbe, 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
 često implementiraju paralelnu odradbu koja se odvija na tim resursima
Virtualizacija:
 splet računala: svaka organizacija ima puni nadzor nad svojim resursima
 oblak računala: neizostavni element svakog oblaka računala

39
71. Navedite i ukratko objasnite osnovne modele isporuke oblaka računala.
Model isporuke SaaS (Software as a Service): nema rukovanja sklopovljem ili programima;
usluge dostupne kroz preglednik; korisnici koriste usluge na zahtjev; trenutna skalabilnost

Model isporuke PaaS (Platform as a Service): platforme su izgrađene na infrastrukturi koja je


skupa; procjena zahtjeva nije složena; upravljanje platformom nije zabavno

Model isporuke IaaS (Infrastructure as a Service): okolina virtualiziranja platforme; računalni


resursi kao što su spremnički i odradbeni kapaciteti; virtualizacija korak naprijed

72. Navedite barem 7 usluga koje može ponuditi oblak računala.


1. Spremnik kao usluga
2. Baza podataka kao usluga
3. Informacija kao usluga
4. Proces kao usluga
5. Aplikacija kao usluga
6. Platforma kao usluga
7. Integracija kao usluga
8. Sigurnost kao usluga
9. Testiranje kao usluga

73. Što mora ispunjavati oblak računala da bi se mogao nametnuti kao optimalan izbor
mogućem korisniku?
 Procesi, aplikacije i podaci moraju biti visoko nezavisni
 Točke integracije moraju biti dobro definirane
 Mora biti dopuštena nešto niža razina sigurnosti
 Osnovna unutarnja građa sustava mora biti „zdrava“
 Web mora biti priželjkivana platforma
 Troškovi moraju biti bitni i značajnog iznosa
 Mora se raditi o novim aplikacijama

40
74. Skicirajte građu Google App Engine-a i objasnite njegovu ulogu.

 Najpoznatija usluga platforme


 Implementiranje na nakupinu, nadziranje, skaliranje i uravnoteženje optrećenja
 Korisnik pristupa preko preglednika koji se spaja na udomljenu aplikaciju pisanu u
Pythonu ili Javi; poslovi red, pokreću se kao raspoređeni „cron“, izračuni zahtjevaju
pristup spremanju, brzoj priručnoj memoriji, te bibliotečnim funkcijama

75. Što je Microsoft Windows Azure, čemu služi i koji su alati potrebni krajnjem korisniku
za njegovu upotrebu?
Microsoft Windows Azure je Internet-scale cloud usluga smještena u Microsot podatkovnim
centrima, koji osigurava operacijski sustav i skup razvojnih usluga koje se mogu koristiti
pojedinačno ili zajedno. Azure fleksibilna i interoperabilna platforma može se koristiti za
izgradnju novih aplikacija koje se izvode iz clouda ili za unaprijeđivanje postojećih aplikacija
sa cloud-based sposobnostima. Alati koji su potrebi: Windows Azure Software Development
Kit i Windows Azure Tools for MS Visual Studio.

76. Usporedite Amazon, Microsoft i Google po pitanju svojstava njihovih PaaS usluga.
41
77. Ukratko objasnite višeslojnu arhitekturu na webu zasnovanih sustava i skicirajte način
korištenja ČGI programa na poslužiteljskoj strani.

Poboljšanje COmmon Gateway Interface (CGI): standardni način kako web poslužitelj može
izvršavati program uz korisničke podatke kao ulaz na C strani i kad se kompletira šalje se na S
stranu.

42
Skripta na poslužiteljskoj strani: izvodi se na S kad se dokument lokalno dohvati; skripta se ne
šalje, već zamjenjje rezultatima izvođenja
Web sjedišta – troslojne arhitekture: web poslužitelj, poslužitelj apl i baza podataka

78. Skicirajte HTTP načina spajanja i objasnite HTTP metode.

79. Objasnite SOAP protokol i njegovo korištenje.


 SOAP – Simple Object Access Protocol
 Strane koje komuniciraju imaju malo saznanja jedna o drugoj, pa je XML jezik slaganja
SOAP poruka
 Dva dijela poruke u omotnici: body i header
 SOAP bindings: HTTP, SMTP, te konverzijski i RPC stilovi.

43
80. Objasnite osnove načina rada i načela REST (engl. Representational State Transfer)
arhitekture.
Način rada: Korisnik pristupom određenom resursu dobiva reprezentaciju resursa i dolazi u
stanje koje mu omogućuje izvođenje određenih aktivnosti, a nakon tog izvođenja prelazi u neko
drugo stanje.
Osnovna načela:
 Korištenje HTTP metoda
 Nema čuvanja stanja na poslužitelju, nego na klijentu
 Strukturiranje aplikacije URI-jem
 Prijenos poruka u XHTML, JSON ili XML formatu
81. Skicirajte i objasnite skalabilnu sadržajno osviještenu (engl. content-aware) nakupinu
web poslužitelja.

82. Opišite probleme postojećih računala visokih performansi sa stajališta potrošnje energije.
Veći računalni sustavi imaju računalno intenzivne aplikacije.
Disipacija topline, potrošnja energije, troškovi proizvodnje, troškovi programa
Znanstvenici pokušavaju smanjiti potrošnju energije, a korištenjem resursa na najbolji mogući
način profit raste.
Napredno upravljanje potrošnjom i zadacima
Zabrana: prečesto uklapanja i isklapanje energije, reduciranje frekvencije takta, presloženo
raspoređivanje
„Pametne aplikacije“, učinkovito programiranje, rekonfigurabilni prevoditelji

44
83. Navedite i opišite principe uštede energije procesora i radne memorije.
CPU:
 DVFS – primarna tehnologija štednje energije na CPU
 smanjenje struje, napona, frekvencije kada je korisnost ispod određenog praga
 kada frekvencija pada -> pouzdanost raste
 napon na kvadrat pada ako frekvencija pada -> učinkovitost energije na kubnu raste
Memorija:
 CLTT i OLTT
 frekvencija pada -> propusnost memorije pada
 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

84. Opišite virtualizaciju sa stajališta zelenog računalstva.


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 opterećenja
VMs mogu biti inertne, a skaliranje resursa sporo
Svaka VM sadrži resurse unutarnje funkcionalnosti; ako ima puno VM na fizičkom čvoru, puno
resursa je posvećeno njima

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


 Tehnologija proizvodnje sklopovlja (cijeli HPC sustav, slojevi 6 i 5)
 Upravljanje potrošnjom (slojevi 6,5 i 4, te mreža)
 DVFS i prigušivanje (slojevi 6 i 5, niži slojevi mogu unaprijediti potrošnju na tim
slojevima)
 OS-i osvještene potrošnje (sloj 4(čvorovi i VM-e)
 Virtualizacija (Slojevi 5 i 4 – ovisi o SLA u CC)
 Raspoređivanje (više slojeva, apstraktnost raspoređivanja zasnovana na zahtjevima
aplikacije)

45
 Prevoditelji osvještene potrošnje (sloj 4, ali dobitci svih zelenih pristupa viših slojeva)
 Nadzor resursa i predviđanje (slojevi 4, 3 i 2 (ovisi o obujmu nadzora preko HPC-a))
 CBASE (sloj 4)
 Doprinos programera (neizravno na svakom sloju, ali uglavnom na slojevima 4 i 3)

86. Definirajte pojam velikih skupova podataka (engl. Big Data), te navedite i ukratko
objasnite tri glavna izazova u tom području.
Big dana je izraz za zbirku skupova podataka koja je toliko velika da je teško obradiva koristeći
postojeće načine upravljanja i rukovanja bazama podataka i aplikacije za obradu podataka
3 glavna izazova:
1. Obujam podataka: 44x povećavanje od 2009. do 2020., eksponencijalno povećavanje
2. Raznovrsnost(složenost): relacijski, tekstualni, semi-strukturirani i grafički podaci,
tokovi podataka
3. Brzina: podaci se generiraju brzo, pa se brzo trebaju i obrađivati

87. Ukratko objasnite proces ETL i njegove zadaće.


Proces u DW odgovaran za izdvajanje podataka iz izvornog sustava i smještanje u skladište
podataka.
Zadaće:
 izdvajanje podataka iz izvornog sustava, različitih izvora i pretvara ih u konsolidirani
format skladištenja, sprema za postupak transformiranja
 transofrmiranje podataka može uključivati: primjenu poslovnih pravila, čišćenje,
filtriranje, rastavljanje stupca u više stupaca i obratno i tako dalje
 učitavanje podataka u DW ili repozitorij aplikacije za izvješćivanje

88. Ukratko opišite sustav Hadoop, te njegove glavne dijelove.


Skalabilni FT raspodijeljeni sutav za obradu velikih skupova podataka koji ima: spremanje
podataka, obradu podataka i virtualni Big Dana stroj
Dva glavna dijela:
1. Hadoop/MapReduce: raspodijeljena infrastruktura za obradu velikog skupa podataka
2. HDFS (Hadoop Distributed File System): FT, visoko propusnost, visoka raspoloživost

46
89. Ukratko opišite način rada i navedite osnovne funkcije programskog modela MapReduce.
MapReduce runtime omogućuje raspoređivanje, raspodjelu podataka, sinkronizaciju, rukovanje
pogreškama, FS
Obično programer koristi: map, reduce, partition i combine

90. Ukratko objasnite ulogu i mogućnosti aplikacije Hive i sustava Pig.


Hive:
 aplikacija za skladištenje podataka u Hadoop
 Query jezik je HQL
 Tablice se spremaju u HDFS
Pig:
 Sustav obrade podataka velikih raspona
 Skripte pisane u Pig Latin jeziku za tijek podataka

91. Navedite barem tri primjera raspodijeljenih računalnih sustava, te ukratko objasnite što
ih čini raspodijeljenima.

Internet – globalni pristup za sve, ogromna veličina, nema pojedinačne vlasti


Intranet – jedan autoritet, zaštićeni pristup, može biti svjetski raširen, infrastrukturne i
aplikacijske usluge
Mobiteli i sveprisutno računarstvo – prijenosni uređaji, mobilno računarstvo, sveprisutno
računarstvo

92. Navedite željena svojstva kod stvaranja paralelnih programa.


Svojstva koja želimo postići kod paralelnog programa:
1. istodobnost (concurrency) – mogućnost izvođenja više radnji istovremeno
2. skalabilnost (scalability) – mogućnost prilagođavanja proizvoljnom broju fizičkih
procesora (odnosno mogućnost iskorištavanja dodatnog broja računala)
3. lokalnost (locality) – veći omjer lokalnog u odnosu na udaljeni pristup memoriji
4. modularnost (modularity) – mogućnost uporabe dijelova algoritma unuta različitih
paralelnih programa

47
93. Navedite četiri faze razvoja paralelnog algoritma.
Četiri faze razvoja paralelnog algoritma su:
1. podjela (partitioning) – dekompozicija problema na manje cjeline (zanemaruje se broj
procesora i memorijska struktura fizičkog računala)
2. komunikacija (communication) – određivanje potrebne komunikacije među zadacima
3. 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ćanja
performansi i smanjenja potrebe komunikacije)
4. pridruživanje (mapping) – svaki zadatak se dodijeljuje konkretnom procesoru; može biti
određeno a priori ili se dinamički mijenjati tijekom izvođenja
 u prve dvije faze želimo postići istodobnost i skalabilnost, dok se lokalnost istražuje u
druge dvije
 proces razvoja ne mora se odvijati slijedno nego i uz preklapanje i ponavljanje faza

94. Navedite podjelu međuprocesne komunikacije na cjeline po nekoliko osnova.

Cjelokupnu međuprocesnu komunikaciju dijelimo na cjeline po nekoliko osnova:


o lokalna/globalna: u lokalnoj komunikaciji svaki zadatak komunicira sa manjim skupom
zadataka koji čine njegovu okolinu, dok globalna komunikacija uključuje sve ili velik
dio zadatka
o strukturiranja/nestrukturirana: strukturirana komunikacija obuhvaća grupu zadataka
koji tvore pravilnu strukturu (stablno, prsten i sl.), dok nestrukturirana može obuhvaćati
bilo koji skup zadataka
o statična/dinamična: u statičnoj komunikaciji ne mijenjaju se procesi koji sudjeluju u
istoj, dok se identitet zadataka u dinamičnoj komunikaciji mijenja tijekom izvođenja
o 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

48
95. Navedite datoteke zaglavlja koje moraju biti uključene u programskom kodu koji koristi
biblioteku MPI te u programskom kodu koji koristi biblioteku OpenMP.
Za C / C++: #include <mpi.h>
Fortran : INCLUDE 'mpif.h'
Za OpenMP u C/C++: #include <omp.h>
96. Napišite i ukratko objasnite dvije osnovne funkcije koje se moraju nalaziti u svakom MPI
programu u kojem će se koristiti MPI pozivi.

Svaki C/C++ program koji koristi MPI mora imati #include <mpi.h> preprocesorsku naredbu.
Dvije funkcije koje se moraju naći u svakom MPI programu su:

int MPI::Init(int *argc, char ***argv)

Inicijalizacijska rutina MPI::Init mora biti prva MPI rutina koja se poziva u MPI
programu. Ona postavlja MPI okruženje i vraća kod pogreške ako postoji problem.
Važno je naglasiti da se MPI::Init može pozvati samo jednom u programu. Argumenti
za MPI::Init su adrese od argc i argv, što su varijable koje sadržavaju argumente
komandne linije za program.

int MPI::Finalize()

MPI::Finalize() zadnja je MPI rutina koja se poziva u programu. Ona završava program
i čisti sve strukture podataka MPI okruženja, zaustavlja operacije koje se nisu završile,
itd. MPI::Finalize() moraju pozvati svi procesi, jer u suprotnom dolazi do blokiranja
programa. Nakon što se pozove MPI::Finalize() više se ne mogu pozivati MPI rutine
(uključujući MPI::Init).

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

MPI::INT - int

MPI::CHAR – signed char

MPI::FLOAT - float

MPI::DOUBLE - double

MPI::LONG – long

MPI::SHORT – short

49
98. Napišite i ukratko objasnite funkcije slanja i prijema poruka blokirajuće komunikacije
od točke do točke, te njihove parametre.

Slanje poruke se obavlja funkcijom MPI::Send. Deklaracija funkcije MPI::Send je:

void MPI::Comm.Send(const void *buf, int count, const Datatype& datatype, int dest, int
tag) const;

Funkcija blokira pozivajući process dok se ne završi process komunikacije. MPI::Send sadrži
slijedeće parameter: tijelo poruke (međuspremnik, količina i tip podatka) i adresni dio poruke
(odredište, oznaka i komunikator). Tijelo poruke sadrži podatke koji se šalju: broj podataka
određenog tipa. Adresni dio poruke određuje gdje se poruka treba poslati.

Primanje poruke se obavlja funkcijom MPI::Recv. Deklaracija funkcije MPI::Recv je:

void MPI::Comm.Recv(void *buf, int count, const Datatype& datatype, int source, int
tag, Status& status);

Funkcija blokira pozivajući process dok se ne završi process komunikacije. Parametri funkcije
MPI::Recv slični su parametrima funkcije MPI::Send, ali se neki parametri koriste drukčije.
Tijelo poruke (međuspremnik, količina i tip podataka), adresni dio poruke (izvor, oznaka i
komunikator) i informacija o primljenoj poruci (status). Argumenti adresnog dijela poruke
određuju koje se poruke mogu primiti pozivom funkcije. Izvor, oznaka i komunikator moraju
odgovarati onima iz poruke na čekanju kako bi se poruka mogla primiti.

99. Napišite i ukratko objasnite funkcije slanja i prijema poruka komunikacije od točke do
točke bez blokiranja, te njihove parametre.

Slanje poruke bez blokiranja se obavlja funkcijom MPI::Isend. Deklaracija funkcije MPI::Isend
je:

request MPI::Comm.Isend(const void *buf, int count, const Datatype& datatype, int dest,
int tag) const;

Proces poziva MPI::Isend za početak slanja, ali bez blokiranja programa do završetka te
funkcije. Slijed pozivanja je sličan pozivanju kod blokirajuće komunikacije, ali uključuje
dodatni izlazni parameter – upravljački zahtjev. Upravljački zahtjev identificira operaciju slanja

50
koja je započeta (jer ih može biti više), a može se koristiti i za provjeru stanja započetkog
procesa slanja ili čekati završetak operacije slanja.

Primanje poruke bez blokiranja se obavlja funkcijom MPI::Recv. Deklaracija funkcije


MPI::Recv je:

request MPI::Comm.Irecv(void *buf, int count, const Datatype& datatype, int source, int
tag);

Proces poziva funkciju MPI::Irecv da bi započeo primanje poruke, bez blokiranja ostatka
programa. Slijed pozivanja je sličan slijedu blokirajuće funkcije, ali parameter status zamijenjen
je s upravljačkim zahtjevom. Za upravljački zahtjev vrijedi isto kao kod funkcije MPI::Isend.
Niti jedan parameter predanih funkciji MPI::Irecv ne može se biti zapisan ili pročitan dok se ne
završi operacija primanja.

100. Koje su prednosti i nedostaci MPI komunikacije bez blokiranja u odnosu na blokirajuću
MPI komunikaciju?

Prednosti: selektivna upotreba funkcija bez blokiranja čini pisanje bez zastoja jednostavnijim,
MPI komunikacija bez blokiranja prikriva latencije

Nedostatci: korištenje komunikacije bez blokiranja može uzrokovati povećanu složenost koda,
što može dovesti do otežanog traženja grešaka i održavanja koda.

101. Navedite i ukratko objasnite osnovne tipove kolektivne međuprocesne komunikacije.

Funkcije za kolektivnu komunikaciju prenose podatke između svih procesa u grupi (grupa je
određena komunikatorom). Kolektivna komunikacija ne koristi mehanizam oznake poruke
prilikom slanja/primanja. Umjesto oznake, mehanizam se zasniva na redoslijedu izvršavanja
programa, te je potrebno osigurati da svi procesi izvrše poziv kolektivne komunikacije. Tipovi
kolektivne komunikacije:

o Razašiljanje poruka (engl. Broadcast)

MPI::Comm.Bcast funkcija omogućuje kopiranje podataka iz memorije matičnog procesa u iste


memorijske spremnike (lokacije) ostalih procesa u komunikatoru.

51
o Redukcija

MPI::Comm.Reduce funkcija omogućuje: sakupljanje podataka od svih procesa u


komunikatoru, sažimanje podataka u jedinstvenu vrijednost (npr. zbroj, umnožak, itd.),
spremanje sažetog podatka na matični process.

o Sinkronizacija na barijeri:

Funkcija MPI::Comm.Barrier() blokira proces koji ju poziva, dok god ostali procesi ne pozovu
istu funkciju. Kada program napusti funkciju MPI::Comm.Barrier(), svi procesi su
sinkronizirani na barijeri

102. Napišite i ukratko objasnite funkciju za razašiljanje poruke svim procesima, te njezine
parametre.

Funkcija koja se koristi za razašiljanje poruke svima procesima jeste MPI::Comm.Bcast. Svi
procesi koji sudjeluju u komunikaciji moraju pozvati MPI::Comm.Bcast. Deklaracija te
funkcije je slijedećeg oblika:

void MPI::Comm.Bcast(void *buf, int count, const Datatype& datatype, int


root_process);

MPI::Comm.Bcast funkcija omogućuje kopiranje podataka iz memorije matičnog procesa u iste


memorijske spremnike (lokacije) ostalih procesa u komunikatoru. Parametri funkcije su: buf
(početna adresa podataka koji se šalju), count (broj elemenata koji se šalju u međuspremnik
slanja), datatype (tip podataka koji se šalju), te Comm (mpi komunikator).

103. Napišite i objasnite funkciju za postizanje sinkronizacije na barijeri.


Postoje situacije gdje neki procesori ne mogu nastaviti s radom dok ostali procesori ne izvrše
vlastite instrukcije. To se često događa kada matični proces čita podatke i zatim ih šalje ostalim
procesorima. Ostali procesori moraju čekati dok se ne završe U/I operacije i ne prenesu podaci.
MPI::Comm.Barrier rutina blokira proces koji ju poziva, dok god ostali procesi ne pozovu istu
funkciju. Kada program napusti funkciju MPI::Comm.Barrier, svi procesori su sinkronizirani

52
na barijeri. Međutim, treba napomenuti da MPI::Comm.Barrier sinkronizira procese, no ne
predaje i ne prenosi nikakve podatke. Stavivši prethodnu činjenicu na stranu,
MPI::Comm.Barrier se kategorizira kao jedna od rutina kolektivne komunikacije.
MPI::Comm.Barrier se odvija samo u softveru i može omogućiti velik dobitak na inače
utrošenom vremenu u nekim sustavima. Općenito, barijere bi se u kod trebale stavljati samo
ako su zbilja potrebne.
Poziv funkcije MPI::Comm.Barrier za programski jezik C++ izgleda ovako:
MPI::Comm.Barrier();

104. Napišite i objasnite funkciju redukcije, te njezine parametre.

MPI::Comm.Reduce funkcija omogućuje:


o Sakupljanje podataka od svih procesora
o Sažimanje podataka u jedinstvenu vrijednost (npr. najveća vrijednost ili zbroj)
o Spremanje sažetog podatka na matični (engl. Root) procesor

MPI::Comm.Reduce kombinira elemente koji se šalju, provodi zadanu operaciju nad njima
(zbroj, max, min, itd.), i vraća rezultat na odredište podataka matičnog procesa, gdje:
o su podaci koji se šalju određeni s parametrima: izvor_podataka, kolicina i
tip_podataka
o odredište podataka je definirano s: odrediste_podataka, kolicina, tip_podataka
o izvorišni i odredišni spremnici podataka imaju isti broj elemenata istog tipa.
Parametri kolicina i tip_podataka moraju imati identične vrijednosti u svim
procesima. Parametar rang, koji je lokacija rezultata nad kojim je izvršena redukcija,
mora također biti jednak kod svih procesa.

Općenito, sintaksa koja se koristi za MPI::Comm.Reduce funkciju jest:


MPI::Comm.Reduce(izvor_podataka, odrediste_podataka, kolicina, tip_podataka,
operacija_redukcije, rang);

53
gdje su parametri:
izvor_podataka in adresa spremnika podataka koji se salje
odrediste_podataka out adresa odredisnog spremnika podataka
kolicina in broj elemenata koji se šalju (u međuspremniku slanja)
tip in tip podataka koji se šalju
operacija_redukcije in načina sažimanja podataka
rang in rang matičnog procesa
Comm in mpi komunikator

105. Pretpostavite da imate MPI kôd u programskom jeziku C++, datoteka je naziva
kod.cpp. Objasnite postupak pokretanja tog programa u MPI okruženju Linux temeljenog
OS-a, na 4 procesa. Kako biste pokrenuli program na samo 2 procesa?

Za kompajliranje: mpiCC kod.cpp –o kod.o

Za pokretanje: mpirun –np 2 kod.o

Kod pokretanja programa, stvoriti će se dvije instance procesa istog programa.

106. Opišite općenitu strukturu MPI C++ programa.

1. Uključi datoteku s MPI zaglavljem -> mpi.h

2. Deklaracija varijabli

3. Inicijaliziraj MPI okruženje -> MPI::Init()

4. Izračuni i MPI komunikacijski pozivi

5. Zatvori MPI okruženje -> MPI::Finalize()

107. Objasnite pojam komunikatora unutar MPI okruženja.

Komunikator je MPI rukovoditelj koji definira grupu procesora s dozvoljenom međusobnom


komunikacijom. Može postojati i veći broj komunikatora, a svaki procesor može biti dio više
različitih komunikatora. MPI automatski pruža osnovni komunikator naziva
MPI::COMM_WORLD, koji sadržava sve procese

108. Kojom MPI funkcijom ćete dohvatiti broj procesa na kojima je program pokrenut?

54
velicina = MPI::COMM_WORLD.Get_size()

109. Kojom MPI funkcijom ćete dohvatiti rang procesa na kojem se izvršava kod?

rang = MPI::COMM_WORLD.Get_rank()

110. Što će se dogoditi prilikom izvođenja sljedećeg koda na 3 procesa?

#include <iostream>
#include <mpi.h>
using namespace std;
int main (int argc, char* argv[]) {
int rang, velicina;
MPI::Init(argc, argv);
rang = MPI::COMM_WORLD.Get_rank();
velicina = MPI::COMM_WORLD.Get_size();

for (int i=0; i<rang; i++) {


cout << "Procesor " << rang << " od " << velicina
<< ": Hello World!\n";
}
MPI::Finalize();
}

Svaki procesor ispisuje svoj rang, ali i ukupan broj procesa u komunikatoru
MPI::COMM_WORLD. Ako se pokrene na 3 procesa, izlaz je:
Procesor 2 od 3: Hello World!
Procesor 0 od 3: Hello World!
Procesor 1 od 3: Hello World!

111. Što će se točno dogoditi nakon pokretanja sljedećeg koda na 2 procesa?

...
if( mojrang == 0 )
{
MPI::COMM_WORLD.Send(a, 100, MPI::DOUBLE, 1, 17);
}
else if( mojrang == 1 )
{
MPI::COMM_WORLD.Recv(b, 100, MPI::DOUBLE, 0, 17, status);
}
...

Proces ranga 0 slati će podatke a, veličine 100, tipa double, procesu 1, s oznakom 17. Proces
ranga 1, primit će podatke b, veličine 100, tipa double, od procesa ranga 0, s oznakom 17.

112. Pretpostavite MPI program koji se izvodi kroz 4 procesa. Jedan proces treba

55
poslati vektor od 50 elemenata svim ostalim procesima koristeći blokirajuću

point-to-point komunikaciju. Napišite dio koda koji je potreban da bi se obavila

navedena radnja (slanje i primanje).

#include <iostream>
#include <mpi.h>
using namespace std;
int main(int argc, char **argv)
{
MPI::INIT(argc, argv);
int rang, i, velicina;
MPI::Status status;

double a[50],b[50];
velicina = MPI::COMM_WORLD.Get_size();
rang = MPI::COMM_WORLD.Get_rank();
if (rang == 0)
{
for (i = 1; i < velicina; i++)
{
MPI::COMM_WORLD.Send(a, 50, MPI::DOUBLE, i, 17);
}
}
else
{
MPI::COMM_WORLD.Recv(b, 50, MPI::DOUBLE, 0, 17, status);
}
MPI::Finalize();
return 0;
}

56
113. Kako biste preuredili slijedeći kôd da proces 1 šalje ostalim procesima (može ih

biti više) 50 elemenata vektora b?

...
if( mojrang == 0 )
{
MPI::COMM_WORLD.Send(a, 100, MPI::DOUBLE, 1, 17);
}
else if( mojrang == 1 )
{
MPI::COMM_WORLD.Recv(b, 100, MPI::DOUBLE, 0, 17, status);
}
...
if (mojrang == 1)
{
for (int i = 0; i < brojProcesa; i++)
{
if (i != 1)
MPI::COMM_WORLD.Send(b, 50, MPI::DOUBLE, i, 17);
}
}
else
{
MPI::COMM_WORLD.Recv(a, 50, MPI::DOUBLE, 0, 17);
}

114. Ukratko opišite mehanizam slanja i primanja poruka u MPI okruženju (što se

događa s porukom prilikom slanja i primanja).

Prilikom slanja izvor se implicitno određuje, dok ostatak poruke eksplicitno daje proces
pošiljatelj. Procesi obično imaju jednu ili više poruka koje su poslane, ali nisu još primljene
zbog toga što procesi slanja i primanja obično nisu sinkronizirani.

Da bi se poruka primila, proces određuje adresni dio poruke koju MPI uspoređuje s adresnim
dijelom poruka na čekanju. Ako se adresni dijelovi podudaraju, poruka se prima. Proces koji
prima poruku mora omogućiti spremnik unutar kojeg se može kopirati sadržaj poruke, i taj
spremnik mora biti dovoljno velik da u njega stane čitava poruka.

57
115. Kako biste preuredili navedeni kôd da ne dođe do zastoja?

...
if( rang == 0 ) {
MPI::COMM_WORLD.Recv(b, 100, MPI::DOUBLE, 1, 19, status);
MPI::COMM_WORLD.Send(a, 100, MPI::DOUBLE, 1, 17);
}else if( rang == 1 ){
MPI::COMM_WORLD.Recv(b, 100, MPI::DOUBLE, 0, 17, status);
MPI::COMM_WORLD.Send(a, 100, MPI::DOUBLE, 0, 19);
}
...
if (rang == 0)
{
MPI::COMM_WORLD.Recv(b, 100, MPI::DOUBLE, 1, 19, status);
MPI::COMM_WORLD.Send(a, 100, MPI::DOUBLE, 1, 17);
}
else if (rang == 1)
{
MPI::COMM_WORLD.Send(a, 100, MPI::DOUBLE, 0, 19);
MPI::COMM_WORLD.Recv(b, 100, MPI::DOUBLE, 0, 17, status);
}

116. Što će se dogoditi pri pokretanju sljedećeg dijela koda, i zašto, ako nigdje u kodu

prije i poslije nema poziva funkcije MPI::Comm.Recv?

...
if( rang == 0 ) {
MPI::COMM_WORLD.Send(a, 100, MPI::DOUBLE, 1, 17);
}else if( rang == 1 ){
MPI::COMM_WORLD.Send(a, 100, MPI::DOUBLE, 0, 19);
}
...

Mogu se dogoditi dvije stvari:

1. MPI kopira poruku u unutarnji međuspremnik za kasniju asinkronu dostavu poruke

 Ako je MPi kopirao poruku, tada je poziv Send funkcije službeno završen, iako
poruka još uvijek nije napustila proces koji je poruku poslao.

2. MPI čekada odredišni proces primi poruku

 Ako je poruka veća od međuspremnika, ne može se izvesti jednostavno kopiraje


u međuspremnik. Tada će funkcija blokirati beskonačno. U tom slučaju se
blokira funkcija dok proces primatelj ne počne primati poruku ili dok se ne
oslobodi više prostora u međuspremniku.
58
117. Objasnite ulogu upravitelja zahtjeva (engl. Request Handle) kod point-to-point

komunikacije bez blokiranja, te način njegove upotrebe.

Nakon što su poslani pozivi slanja ili primanja pomoću funkcije bez blokiranja, proces koji je
poslao taj zahtjev treba način kako referencirati poslanu operaciju, tj. kako je identificirati
među ostalim operacijama istog tipa. Za tu svrhu MPI koristi rukovoditelje zahtjevima.
Funkcije za slanje i primanje bez blokiranja vraćaju rukovoditelj zahtjeva, koji se koristi za
identifikaciju poziva.

118. Navedite i objasnite dvije funkcije koje omogućuju provjeru završetka

komunikacije bez blokiranja, te opišite primjer korištenja za svaku.

MPI::Request.Wait():

 Proces koji je započeo slanje ili primanje pozivanjem rutine bez blokiranja, može
čekati da se započeta operacija izvrši, naknadnim pozivanjem funkcije
MPI::Request.Wait(). Parametri ove funkcije su: Request (rukovoditelj zahtjeva)
i Status (za funkciju primanja, informacija o primljenoj poruci, za slanje može
sadržavati kod pogreške.

 Sintaksa: void MPI::Request.Wait(MPI::Status& status)

void MPI::Request.Wait()

MPI::Request.Test():

 Proces koji je započeo postupak slanja ili primanja pozivom funkcije bez blokiranja
može testirati je li ta funkcija završila pozivom funkcije Test. Parametri ove funkcije su
Request (rukovoditelj zahtjeva), Zastavica (ekvivalent logičkoj istini ako je operacija
slanja /primanja završena), Status (nije definiran ako je zastavica jednaka logičkoj
neistini, inače je jednaka kao i kod Wait funkcije.

 Sintaksa: bool MPI::Request.Test(MPI::Status& status)

59
119. Detaljno objasnite što će se dogoditi prilikom izvođenja sljedećeg programskog

koda

...
if( rang == 0 ) {
zahtjev1 = MPI::COMM_WORLD.Irecv(b, 100, MPI::DOUBLE, 1, 19);
MPI::COMM_WORLD.Send(a, 100, MPI::DOUBLE, 1, 17);
zahtjev1.Wait(status);
}
else if(rang == 1 ) {
zahtjev2 = MPI::COMM_WORLD.Irecv(b, 100, MPI::DOUBLE, 0, 17);
MPI::COMM_WORLD.Send(a, 100, MPI::DOUBLE, 0, 19);
zahtjev2.Wait(status);
}
...
Proces ranga 0 započeti će s primanjem, poslati poruku i čekati završetak primanja. Proces
može obavljati druge zadaće dok čeka da primi poruku, pa tako da u međuvremenu procesu
ranga 1 šalje poruku. Kada dođe do dijela zahtjev1.Wait(statu), zaustavlja se ivršavanje koda
dok se ne završi primanje poruke.

Proces ranga 1 započeti će s primanjem, poslati poruku i čekati završetak primanja. Proces
može obavljati druge zadaće dok čeka da primi poruku, pa tako da u međuvremenu procesu 0
šalje poruku. Kada dođe do dijela zahtjev2.Wait(status), zaustavlja se izvršavanje koda dok se
ne završi primanje poruke.

120. Koje su razlike između kolektivne međuprocesne komunikacije i point-to-point

komunikacije?

Kolektivna komunikacija uključuje slanje i primanje podataka između grupa procesa. Sve
migracije podataka između procesa mogu se ostvariti pomoću MPI funkcija „point-to-point“
komunikacije, no slijed nekih komunikacijskih operacija je toliko čest da je MPI standard
omogućio korištenje funkcija kolektivne komunikacije u takvim situacijama. Pozivi kolektivne
komunikacije ne koriste mehanizam oznake poruke prilikom slanja/primanja podataka.
Mehanizam se zasniva na redoslijedu izvršavanja programa, te je zbog toga nužno da programer
sam osigura da svi procesi izvrše poziv kolektivne komunikacije.

60
121. Koje izmjene je potrebno napraviti u sljedećem kodu, kako bi ga bilo moguće

izvesti na 10 procesa? Objasniti.

...
MPI::Init(argc, argv);
rang = MPI::COMM_WORLD.Get_rank();
if(rang==5) param=23.0;
MPI::COMM_WORLD.Bcast(&param, 1, MPI::DOUBLE, 5);
...

Nikakve, jer proces ranga 5 šalje podatak svim ostalim procesima koji se nalaze u komunikatoru
COMM_WORLD.

122. Kako biste izmijenili navedeni kod na način da svi procesi istovremeno pozivaju

funkciju Bcast?

...
if(rang==matProc) cout << „Maticni proces: “ << rang;
MPI::COMM_WORLD.Bcast(&param, 1, MPI::DOUBLE, matProc);
cout << "P:" << rang << „, “ << param << endl;
MPI::Finalize();
return 0;
}
Kod nema potrebe mijenjati jer funkcija MPI::COMM_WORLD.Bcast() pozivaju svi procesi.

123. Navedeni kod nije ispravan, kako biste ga izmijenili da izbjegnete grešku?

...
if(rang==matProc)
MPI::COMM_WORLD.Bcast(&temp, 1, MPI::DOUBLE, matProc);
else MPI::COMM_WORLD.Bcast(&temp, 0, MPI::DOUBLE, matProc);
...
if (rang==matProc)
MPI::COMM_WORLD.Bcast(&temp, 1, MPI::DOUBLE, matProc);
else
MPI:COMM_WORLD.Bcast(&temp, 1, MPI::DOUBLE, matProc);

ili samo:
MPI:COMM_WORLD.Bcast(&temp, 1, MPI::DOUBLE, matProc);

61
124. Opišite što će se dogoditi nakon pokretanja navedenog isječka programskog

koda, te objasnite postoji li kakvo ograničenje na broj procesa na kojima se

može pokrenuti navedeni kod.

...
matProc = 4;
izvor = rang+1;
cout << "P" << rang << ": izvorisni podatak = " << izvor << endl;

MPI::COMM_WORLD.Reduce(&izvor, &rezultat, 1, MPI::INT, MPI::PROD,


matProc);

if(rang==matProc)
cout << "P" << rang << ": rezultat = " << rezultat << endl;

MPI::Finalize();
return 0;
}

Svaki proces će ispisivati svoj izvorišni podataak (npr. proces 0 će ispisati izvorišni podatak 1,
proces 1 će ispisati izvorišni podatak 2, itd. i to zbog dijela koda izvor == rang+1). Proces ranga
4 tj. matični proces će skupiti sve izvorišne vrijednosti, uključujući i svoju, te ih pomnožiti i
spremiti u određenu varijablu. Matični pcroes će ispisati rezultat. Važno je napomenuti da se
tekstovi neće sinkronizirano ispisivati tj. neče se prvo ispisati izvorišni podaci svakog procesa,
a zatim rezutltat, nego će ispis biti izmješan jer nema sinkronizacije na barijeri zbog ispisa. Broj
procesa na kojima navedeni kod može pokrenuti je 5

62
125. Kako biste paralelizirali navedeni kod pomoću OpenMP-ja?

...
for(i=0; i<dim; i++) {
for(j=0; j<dim; j++) {
for(k=0; k<dim; k++) {
matrix3[i][j]+=matrix1[i][k]*matrix2[k][j];
}
}
}
...

omp_set_num_threads(br_niti);
#pragma omp parallel for
for (i = 0; i < dim; i++)
{
for (j = 0; j < dim; j++)
{
for (k = 0; k < dim; k++)
{
matrix3[i][j] += matrix1[i][k] * matrix2[k][j];
}
}
}

126. Koje izmjene je potrebno napraviti u sljedećem programskom kodu kako bi


paralelni dio (dio unutar smjernice parallel) izvršavala samo nit ranga 4? Na
koliko se minimalno niti mora pokrenuti navedeni kod kako bi takva izmjena
imala smisla?

...
#pragma omp parallel
{
cout << „Rezultat proracuna niti 4 jest: “ << rez << endl;
}
...

omp_set_num_threads(5);
int rang = omp_get_thread_num();
#pragma omp parallel
{
if (rang == 4) cout << "Rezultat proračuna niti 4 jest: " << rez << endl;
}

Kod mora biti pokrenut na minimalno 5 niti, zbog toga što kada stvorima niti i kažemo npr. da
ih stvori 4, on će rangirati brojevima od 0-3, a nama treba proces 4, pa ih zato moramo stvoriti
minimalno 5.

63
127. Što će i kako ispisivati navedeni dio programskog koda, ako je paralelni dio

izvršen na 3 programske niti? Napomena: vrijednost varijable x nije bitna.

...
#pragma omp parallel for private(x) ordered
{
for(i=0; i<sizeA; i++) {
x = workerFunction(i);
#pragma omp ordered {
cout << i << " " << j << x << endl;
}
}
}
...

Odredba ordered u prvoj liniji koda označava da se u petlji može pojaviti smjernica ordered.
Ordered smjernica unutar petlje označava početak dijela petlje koji se mora izvršiti prema
određenom redoslijedu. Dio koji je omeđen zagradama { i } će se izvoditi prema određenom
redoslijedu, NO TREBA PRIPAZITI DA SE SMJERNICA ordered NE POJAVI U ISTOJ
LINIJI S VITIČASTOM ZAGRADOM (to imamo u koda, pa je greška)!!!!!!!!!

Tri niti će ravnomjerno podijeliti posao u ovisnosti od veličine sizeA.

128. Kolika će biti vrijednost varijable br neposredno prije izlaska iz paralelnog

dijela koda (prije uništavanja niti), ako u paralelnom izvođenju sudjeluju 2 niti?

...
int br = 4;
#pragma omp parallel for firstprivate(br)
for(i=1; i<=5; i++){
br += i;
}
...

Ne možemo znati kako će posao bi ti podijeljen po nitima jer i ide od 1 do 5, a u izvođenju


sudjeluju 2 niti, pa ne možemo znati vrijednost varijable br po nitima.

64
129. Kolika će biti vrijednost varijable br neposredno nakon izlaska iz paralelnog

dijela koda (nakon uništavanja niti), ako u paralelnom izvođenju sudjeluju 4

programske niti?

...
#pragma omp parallel for lastprivate(br)
for(i=1; i<=5; i++){
br = i;
}
...
Vrijednost varijable br će biti 5, zbog toga što na završetku petlje nit koja izvodi posljednju
iteraciju vlastitu vrijednost „lastprivate“ varijable kopira u glavnu nit.

130. Da li navedeni dio koda sadrži podatkovnu zavisnost, tj. uvjete utrkivanja (engl.

race conditions)? Objasnite.

...
int i, j;
#pragma omp parallel for private(x)
{
for(i=0; i<width; i++) {
for(j=0; j<height; j++) {
x = workerFunction(i, j);
}
}
}
...
Ne postoji podatkovna zavisnost jer odredba „private“ dodjeljuje odvojene memorijske lokacije
kopijama varijable x za svaku nit.

65

Вам также может понравиться