1. Usporedite raspodijeljeno i centralizirano računalstvo, te navedite barem tri primjera raspodijeljenih računalnih sustava. Jednoprocesorsko računalstvo može se zvati centraliziranim računalstvom. Raspodijeljeni sustav (distributed system) je skupina nezavisnih računala spojenih mrežom, sposobnih za suradnju u obavljanju postavljenog zadatka. Raspodijeljeno računalstvo (distributed computing) je računalstvo omogućeno na raspodijeljenom sustavu. Raspodijeljeno računalstvo je značajno u porastu zahvaljujući povećanju performansi i smanjenju cijene računala i računalnih mreža. Primjeri: Internet ATM (bankovna) računala Intranet/Radneskupine(workgroups) Intranet/Radne skupine (workgroups) Računalno okružje ubrzo će u potpunosti postati od sveprisutnih (ubiquitous) umreženih uređaja “Mreža je računalo” 2. Skicirajte programske komponente raspodijeljenog sustava, te ukratko objasnite ulogu svake od njih.
Računala u raspodijeljenim sustavima - Radne stanice (workstations): računala koja koriste krajnji korisnici za zahtjevne primjene - Poslužitelji (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 vezom. -… 3. Navedite i ukratko objasnite barem 5 izazova raspodijeljenog računalstva. Izazovi i razlike u odnosu na lokalno računalstvo - 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 -Lamportova definicija raspodijeljenog sustava: “One on which I cannot get any work done because some machine I have never heard of has crashed” - Potrebe za otvorenošću (openness) -Otvoreni standardi: ključna sučelja u programskoj podršci i komunikacijskim protokolima tebaju biti standardizirana - Sigurnost (security) -Odbijanje napada na razini usluga -Mobilni kodovi - Nadogradivost/proširivost (scalability) - Transparentnost (transparency) 4. Objasnite problem i rješenja proširivosti/nadogradivosti raspodijeljenog računalnog sustava. Nadogradivost/proširivost - 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 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
5. Objasnite problem i rješenja transparentnosti raspodijeljenog računalnog sustava. Transparentnost u raspodijeljenim sustavima Transparentnost pristupa: omogućava da lokalni i udaljeniresursi mogu biti dostupni korištenjem identičnih operacija 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 mobilosti: 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 opterećenja (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. Osnovni/apstraktni modeli -Trimodela -Model međudjelovanja -Odražava pretpostavke o procesima i komunikacijskim kanalima u raspodijeljenom sustavu -Model pogrešaka -Prikazuje razlike između vrsta pogrešaka procesa i komunikacijskih kanala -Model sigurnosti -Pretpostavke o odgovornima za sigurnost i neprijateljima/nametljivcima Modeli međudjelovanja - Sinkroni raspodijeljeni sustavi: sustav sa slijedećim definiranim ograničenjima -Vrijeme za izvođenje svakog koraka procesa ima donju i gronju 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 - Asinkroni raspodijeljeni 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 asinkronom sustavu 7. Navedite barem 5 proizvoljnih i vremenskih pogrešaka u raspodijeljenom računalnom sustavu. Propusti i proizvoljne greške:
Vremenske pogreške:
8. Navedite osnovne ciljeve posredničkog sloja. Posrednički sloj (midleware - sl. na 1.str.) širi se preko više strojevai omogućava aplikcijama isto sučelje. Ciljevi posredničkog sloja - Posrednički sloj vodi računa o raznorodnosti - Podrška više razine -Čini raspodijeljenu prirodu aplikacije transparentnom prema korisniku/programeru -Remote Procedure Calls -RPC + Object orientation = CORBA - Podrška više razine, ali prikazuje udaljene objekte, parcijalne pogreške, itd. prema programeru -JINIJavaspaces JINI, Javaspaces - Dogradivost 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 (resource management)centraliziran na poslužitelju - “Peer to Peer” računalstvo predstavlja pomak prema istinskim raspodijeljenim aplikacijama - P2P: umrežavanje računala bez poslužitelja, svako računalo 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 poslužitelju. Primjer: Microsoft Workgroups, za razliku od domene (Domain) gdje se korisnici moraju prijaviti nasredišnji poslužitelj domene. Klijenti pozivaju pojednične poslužitelje
Usluga omogućena od višestrukih poslužitelja
Web proxy poslužitelj
10. Skicirajte osnovne oblike organiziranja procesora i memorije u raspodijeljenim računalnim sustavima, te oblike višeprocesorskih i višeračunalnih sustava.
Višeprocsorski (sustavi multiprocessors)(1) -A bus based multiprocessor
Multiprocessor (2)
11. Usporedite prema stupnju transparentnosti, osnovi komuniciranja, upravljanju resursima, nadogradivosti i otvorenosti raspodijeljenje, mrežne i posrednički zasnovane OS. Programska načela Sustav DOS
Opis Čvrsto povezan OS za višeprocesorske i istorodne višeračunalne sustave NOS Lagano povezan OS za raznorodni višeračunalni sustav (LAN i WAN) Posrednički Dodatni sloj na vrhu NOS implementiranih sloj usluga opće namjene
Osnovni cilj Skriva sklopovlje i upravlja s njim Omogućava lokalne usluge udaljenim klijentima Omogućava transparentnost raspodijeljenosti
Pregled - Raspodijeljeni OS (DOS - Distributed Operating Systems) - Mrežni OS (NOS - Network Operating Systems) - Posrednički sloj (Middleware) 12. Skicirajte prema razini složenosti paradigme raspodijeljenih računalnih sustava. Po složenosti: 1 najviše, 5 je najmanje 1. object space 2. network services, object request broker, mobile agent 3. remote procedure call, remote method invocation 4. client-server 5. message passin 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. Najpoznatija paradigma mrežnih aplikacija- 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.
15. Skicirajte i ukratko objasnite P2P raspodijeljenu paradigmu. 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 odvojeno slanje i prijem poruka. Preko posredničkog sloja, pošiljatelj deponira poruku u red poruka procesa primatelja. - 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 - Svakoj poruci pridruženi su određena tema ili događaj. Aplikacije zainteresirane za određen događaj mogu se pretplatiti na njegove poruke. 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). Remote Procedure Call (RPC), paradigma koja omogućava programiranje raspodijeljenih programa slično onima pokretljivima na jednom procesoru. 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.
18. Skicirajte i ukratko objasnite poziv udaljene metode (RMI). RMI - Poziv udaljene metode (Remote Method Invocation) 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 - 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.
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.
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 prema ruti na karti (itinerary) koju nosi. Pri svakom stajanju, agent pristupa nužnim resursima ili uslugama I obavljaju zadatke nužne za obavljanje ciljanog posla. Paradigma omogućava apstrakciju prenosivog programa ili objekta. Tijekom izmjene poruka, podatke nose programi/objekti koji putuju između sudionika.
22. Objasnite prednosti i nedostatke višenitnosti u raspodijeljenim računalnim sustavima. Prednosti: Niti obično dijele adresni prostor – izmjene okoline za niti na jednom procesoru je “jeftina”. Višenitni proces može se izvoditi transparentno na jednom procesoru ili na višeprocesorskom sustavu. Niti koje surađuju mogu biti prirodni strukturni mehanizam nekih aplikacija. Implementiranje niti treba omogućiti samo obuhvaćenoj nitiblokiranje sustavskog poziva. Nedostatak: 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 Cilj: Omogućiti sredinu u kojoj korisnik međudjeluje s udaljenim poslužiteljima Višenitnost - sakriti komunikacijska kašnjenja (latency) - omogućiti višestruka simultana spajanja (connections) Mora se znati ili otkriti položaj poslužitelja - poznata krajnja točka (endpoint) ili sučelje (port) nasuprot a lookup mehanizma Blokiranje (sinkrono) zahtjeva ili neblokiranje (asinkrono) Transparentnost repliciranja Detalji dizajna poslužitelja Omogućavanje informacija o krajnjoj točki - Poznata krajnja točka - Daemon osluškivanje na krajnjoj točki
Superposlužitelj koji generira niti Spajanju usmjeren (connection-oriented) ili poslužitelj bez spajanja (connection-less) - 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). 24. Skicirajte spajanje klijenta na poslužitelj korištenjem daemona i korištenjem superposlužitelja. Spajanje klijent-na-poslužitelj korištenjem daemona.
Spajanje klijent-na-poslužitelj korištenjem superposlužitelja.
25. Skicirajte način rada višenitnog poslužitelja organiziranog po modelu dispečer/radnik.
26. Ukratko objasnite postupak i razloge migriranja koda. Migriranje koda (Code Migration)
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žitelja ili s poslužitelja na klijent 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). Razlozi migriranja koda Dijeljenje opterećenja u raspodijeljenim sustavima - Dugo pokrenuti procesi mogu migrirati na slobodne procesore Klijent-poslužitelj sustav - Kod s podacima isporučen klijentu - Ako treba obrađivati velike količine podataka, bolje je slati komponentu obradbe podataka slati klijentu - Dinamički konfigurabilni klijentski program - Više fleksibilnosti, lakše održavanje i nadogradnje klinentskih programa Enterprise i “Desktop Grids”, odnosno SETI@home - Računalno zahtjevni zadaci šalju se slobodnim osobnim računalima na mreži 27. Navedite korake poziva udaljene procedure. Koraci RPC-a: 1. Klijentska procedura poziva klijenta na uobičajeni način 2. Klijentska strana stvara poruku (marshalling the parameters) I poziva lokalni operacijski sustav 3. Klijentski OS šalje poruku preko mreže do udaljenog OS-a. 4. Udaljeni OS daje poruku poslužiteljskoj strani 5. Poslužiteljska strana odpakira parametre 6. Pozivi poslužitelja implementiraju funkciju. 7. Poslužitelj obavlja posao i vraća rezultat izlazu 8. Poslužiteljski kraj pakira rezultat u poruku i poziva svoj lokalni OS 9. Poslužiteljski OS šalje poruku preko mreže klijentovom OS- u 10. Klijentov OS daje poruku krajnjem klijentu 11. Krajnji klijent odpakira rezultat i vraća ga klijentu. 28. Skicirajte način međudjelovanja klijenta i poslužitelja kod asinkronog RPC-a.
29. Skicirajte jednostavnu organizaciju udaljenog objekta s proxyjem na prijemnoj strani.
30. Navedite osam koraka stvaranja raspodijeljene aplikacije korištenjem RMI-ja. 1. Definirati udaljeno sučelje 2. Implementirati udaljene objekte 3. Implementirati klijenta (može se načiniti uvijek nakon definiranja udaljenog sučelja) 4. Registrirati udaljeni objekt u registry imena poslužitelja 5. Generirati komunikacijsku točku klijenta koristeći rmic 6. Pokrenuti registry 7. Pokrenuti poslužitelj 8. 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 (a “door”) u okviru kojeg aplikacijski proces može slati i primati poruke na/od drugog (udaljenog ili lokalnog) aplikacijskog procesa Programiranje socketa s TCP-om Klijent mora kontaktirati poslužitelja • Poslužiteljski proces mora biti prvo pokrenut • Poslužitelj mora imati kreirano sučelje (door) koje očekuje kontakt klijenta Klijent kontaktira poslužitelj kroz: • Kreiranje klijent-lokalni TCP socket • Specificiranjem IP adrese, broja pristupa poslužiteljskog 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 Programiranje socketa s UDP-om • UDP: nema “konekcije” između klijenta i poslužitelja • Nema usklađivanja (handshaking) • Pošiljatelj eksplicitno dodaje IP adresu i pristup odredišta • Poslužitelj mora izdvojiti IP adresu i pristup pošiljetalja iz primljenih datagrama • S gledišta aplikacije UDP omogućava nepouzdani prijenos grupa bajta (“datagrams”) između klijenta i poslužitelja • UDP: prenošeni podaci mogu se primati proizvoljnim redom, ili izgubiti 32. Skicirajte izravno i T-razinsko dodjeljivanje imena u raspodijeljenim sustavima.
a) izravno b)T-razinsko 33. Ukratko objasnite hijerarhijski pristup lociranja entiteta.
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. 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. Proslijeđ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. 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] 35. Ukratko definirajte pojmove: LDAP, UDDI i WSDL LDAP (Lightweight Directory Access Protocol ) • Aplikacijski protokol za upite i izmjene podataka direktorija usluga ugrađenih u IP mreže. UDDI (Universal description, discovery, and integration) • Registry sustav s XML/SOAP standardima okvir za opis, otkrivanje i upravljanje web uslugama • Koristi standardne zapise (taxonomy) za opis poslova, usluga i tipa usluga WSDL (Web Services Definition Language) • Formalni jezik koji služi kao IDL i podupire RPC-zasnovanu komunikaciju na webu. • WSDL opisi sadrže definicije sučelja omogućenih uslugama (tipovi podataka, položaj, …). • 36. Skicirajte i ukratko objasnite Cristianov algoritam sinkronizacije fizičkog sata.
Ovaj algoritam periodno uzima informaciju s vremenskog poslužitelja (s pretpostavkom da je on točan). Klijent zatraži vrijeme od servera. Nakon što server primi zahtjev, sastavlja odgovor i šalje svoje vrijeme T. Kada klijent primi odgovor, postavlja svoje vrijeme na T plus vrijeme potrebno da se primi odgovor. 37. Ukratko objasnite pojam logičkih satova u raspodijeljenim računalnim sustavima s osvrtom na Lamportove satove.
Logički satovi su mehanizmi koji služe za kronološko, na temelju događaja, sinkroniziranje vremena u sustavu. Lamportovi satovi Svaki proces održava lokalno brojilo Ci. Obnavljanje brojila Ci za proces Pi 1. Prije izvođenja događaja Pi izvodiCi ← Ci + 1. 2. Kada proces Pi šalje poruku m prema Pj, on postavlja m-tu vremensku oznaku ts (m) jednaku Ci nakon izvođenja prethodnog koraka. 3. Nakon prijema poruke m, proces Pj podešava svoje lokalno brojilo kao Cj ← max{Cj , ts (m)}, nakon čega izvršava prvi korak i isporučuje poruku aplikaciji.
38. Usporedite prema bitnim pokazateljima tri algoritma međusobnog isključivanja.
39. Objasnite i po potrebi skicirajte Bullyjev algoritam nadglasavanja. Kada proces P uoči da trenutni koordinator više ne odgovara na zahjeve, on inicira izbore: 1. P šalje ELECTION poruku svim procesima s većim brojevima. 2. Ako niti jedan ne odgovara, P dobiva izbore i postaje koordinator. 3. Ako neki od procesa s većim brojevima odgovori, on dobiva. P’-ov posao je obavljen. 40. Navedite barem 3 mehanizma koji podržavaju paradigmu raspodijeljenih objekata. RMI, CORBA, GIOP, IIOP
41. Ukratko objasnite osnove rada Java RMI (eng. Remote Method Invocation) arhitekture.
Slojevi arhitekture Java RMI Implementacija arhitekture RMI definira tri sloja: sloj kostura korisnika i kostura poslužitelja, (eng. Stub and Skeleton Layer), sloj udaljene reference (eng. Remote Reference Layer) i transportni sloj (eng. Transport Layer). 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. Sloj udaljene reference interpretira i upravlja referencama udaljenih objekata i održava logičku vezu s poslužiteljima u kojima se udaljeni objekti nalaze. Transportni sloj zadužen je za komunikaciju između procesa korisnika i procesa poslužitelja. 42. Ukratko objasnite osnove rada CORBA sustava raspodijeljenih objekata. Common Object Request Broker Architecture (CORBA) je standardna arhitektura sustava raspodijeljenih objekata. CORBA omogućava suradnju raspodijeljenih objekata u raznorodnim okružjima, pri čemu objekti mogu biti implementirani u različitim programskim jezicima i/ili izvođeni na raznim platformama (C, C++, Java, COBOL, Smalltalk, Ada, Lisp, Python i IDLScript). Sučelje joj je definirano univerzalnim jezikom CORBA Interface Definition Language (IDL). 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. General Inter-ORB Protocol (GIOP) omogućava opći okvir za protokole koji se izgrađuju na određenom transportnom sloju. 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. 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. “Object bus” omogućava da Internet bude vidljiv kao sabirnica spojenih CORBA objekata. CORBA DO isporučuje se od servera. Klijent obnavlja reference prema distribuiranim objektima te poziva metode tih objekta. 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. Model raspodijeljene memorije (distributed memory) - Više neovisnih procesora sa vlastitim spremnicima. Podjela podataka i sinkronizacija odvija se porukama (message passing). Brz pristup lokalnoj memoriji, ali teško je postojeće podatkovne strukture prilagoditi ovom modelu.
Danas se koriste dva oblika paralelnog računala: • GRZOD RAČUNALA (CLUSTER) - skup računala povezan lokalnom mrežom • Značajke: manji broj računala i veća brzina komunikacije, najsličniji modelu multiračunala (neovisna računala povezana komunikacijom koja ne ovisi o njihovom međusobnom položaju) • SPLET RAČUNALA (GRID) – infrastruktura koja omogućuje pristup računalnim resursima na (u budućnosti) svakom mjestu • Značajke: veći broj računala koji podržavaju splet, različita brzina komunikacije (manja) 45. Ukratko objasnite osnovne modele (paradigme) paralelnih programa. Modeli (paradigme) paralelnih programa: • Komunikacija porukama (message passing) - vjerojatno najkorišteniji model paralelnog programiranja o više (stalni broj) zadataka izvode se neovisno; podaci se razmjenjuju porukama o ponekad nazivano i SPMD - single program, multiple data: jedan program se izvodi na više procesora o unutar jedinstvenog programa implementiraju se uloge u sustavu (master-stave i sl.) • Podatkovni paralelizam (data parallelism) o primjena iste operacije na više elemenata podatkovne strukture (npr. "pomnoži sve
•
•
elemente polja sa 2") o programski jezik High Performance Fortran = HPC Zajednička memorija o svi procesori / zadaci dijele isti memorijski spremnik, gdje je čitanje i pisanje asinkrono (razlika od računalnog modela!) o moguća uporaba (pseudo-) nedeterministi o kih algoritama o potrebni eksplicitni mehanizmi zaštite memorije (semafori i si.) o jednostavnije programiranje - manja razlika od slijednog modela algoritma Sustav zadataka i kanala (tasks and channels) o prikazuje se usmjerenim grafom u kojem su čvorovi zadaci (koji se mogu izvoditi paralelno i neovisno jedan o drugome), a veze su kanali kojima zadaci komuniciraju o broj zadataka može se mijenjati tijekom izvođenja o poopćenje modela komunikacije porukama itd.
Koristit ćemo: model zajedničke memorije uz višeprocesorsko računalo (tj. PRAM) te kodel zadataka i kanala (komunikacija porukama) 46. 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: 1 ubrzanje= 1−P 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či li se broj procesora koji izvode paralelni posao, izraz postaje: 1 ubrzanje= P S+ N S-slijedni udio programa, P-paralelni udio, N-broj procesora
47. Navedite osnovne korake pretvorbe slijednog algoritma u paralelni. •
•
Pronaći dijelove slijednog programa koji se mogu izvoditi istodobno o Zahtijeva detaljno poznavanje rada algoritma o Može zahtijevati i potpuno novi algoritam Rastaviti algoritam o Funkcionalna dekompozicija – podjela problema na manje dijelove (koji se mogu riješiti istovremeno) o Podatkovna dekompozicija – podjela podataka s kojima algoritam radi na manje dijelove; 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
48. Navedite i ukratko objasnite barem 2 tipa dekompozicije problema za rad na paralelnoj platformi. 4. Podjela podataka (domain decomposition) a. podaci nad kojima algoritam radi dijele se u manje cjeline (obi b. no podjednake veli c. ine) - domenska dekompozicija d. definiramo zadatke koji su 'zaduženi' za odgovaraju e. i dio podataka f. u op g. enitom slu h. aju među zadacima je potrebno definirati neki oblik komunikacije – u ovoj fazi ne razmatramo kakav i. primjeri: podjela višedimenzijske podatkovne strukture na elemente smanjenih dimenzija (npr. volumen, površina, niz, to j. ka) 5. Podjela izračunavanja (functional decomposition) a. prvo se izvodi podjela ra b. unanja, a zatim eventualna raspodjela podataka – funkcionalna dekompozicija c. u op d. enitom slu e. aju teže za izvesti i manje intuitivno f. primjeri: algoritam pretraživanja stabla; simulacija klimatskog modela (rastav na fizikalne komponente: atmosferu, površinu, ocean itd.)
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 Pogodna je za određene klase problema (npr. modeliranje eko-sistema, klimatskih promjena ili procesiranje signala) Primjer: računanje broja Pi(x) prema formuli: π=
4∗P krug P kvadrat
Paralelizacija algoritma: • Svaki procesor izvodi svoj dio petlje – funkcionalna dekompozicija • Svaki procesor tijekom rada ne treba nikakvu informaciju od drugih (tzv. trivijalni paralelni algoritam) Ostvarenje algoritma: korištenjem SPMD modela (komunikacija porukama) – jedan proces ''Master'' sakuplja rezultate od svih ostalih (sluge, workers). Problem: računala su različitih brzina -> potrebno je ujednačiti opterećenje skupom zadataka (pool of tasks) odnosno podjelom posla na broj dijelova jednak broju procesora 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. DEKOMPOZICIJA DOMENE Podaci povezani sa problemom se dijele. Svaki paralelni zadatak potom radi na dijelu podataka. Primjer: računanje elementa matrice Problem: obrada elemenata podatkovne strukture (npr. matrice) na način da ne zahtijeva informacije o drugim elementima (drugim poljima matrice).Trivijalno paralelni problem. Paralelizacija algoritma: svaki procesor računa samo dio matrice (podatkovna dekompozicija), npr. samo redak ili stupac ili podmatricu. Informacije koje se šalju slugama: početni i krajnji indeks podmatrice i vrijednosti elementa Primjer posla sluge: ... ponovi za moje indekse retka ponovi za moje indekse stupca Matrica[i,j] = Funkcija(i,j); kraj_ponovi kraj_ponovi ...
51. Navedite osnovne značajke nakupina računala (engl. cluster), te ukratko opišite barem 3 vrste od njih. Postrojenje umreženih, samostalnih, common-off-the-shelf računala korištenih zajedno za rješavanje danog problema. Različite vrste nakupina računala 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 opterećenja (Load Balancing) - performanse u obliku raspodjele opterećenja - s ftp i web poslužiteljima - potreban veliki broj računala kako bi se dijelilo opterećenje 3. Visokoraspoložive nakupine (High Availability) - sprječavaju ispade usluga, sa zalihošću, uglavnom s LB - za 2. i 3. RedHat HA cluster, Turbolinux Cluster Server, Linux Virtual Server Project 52. Objasnite pojam spleta raćunala (engl. grid) kroz postojeće definicije, te navedite barem 4 oblika upotrebe takvih sustava. Vrsta paralelnog i raspodijeljenog sustava koji omogućava dijeljenje, izmjenu, izbor i nakupljanje zemljopisno raspodijeljenih “autonomnih” sredstava: Računala – PC, radne stanice, nakupine, superračunala, prijenosna računala, 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, mogućnostima, troškovima, te zahtjevima korisnika za QoS. Upotrebe: Utility computing High-performance computing Collaborative desing Financial modeling High-energy physics Life science Drug discovery Data centar automation Data mining Collaborative data-sharing
53. Skicirajte slojeve građe spleta računala i njegovih posredničkih slojeva.
54. Navedite i ukratko objasnite barem 4 usluge spleta računala. Usluge spleta računala (1): Sigurnost: raspoznavanje korisnika, autoriziranje Informacije: objavljivanje, isporuka Upravljanje resursima: rezerviranje, alociranje, nadzor, upravljanje Podaci: pristup podacima, upravljanje repliciranjem, pristup metapodacima + otkrivanje pogrešaka, upravljanje izvođenjem, bilježenje, ostalo Usluge spleta računala (2): Definirati uniformnu prijavu korisnika i mehanizme autorizacije ovlasti koji omogućavaju prostor suradnje prihvaćajući nove resurse koji i dalje ostaju pod lokalnim nadzorom i upravljanjem Prednost: Samo jedna infrastruktura treba se održavati na svakom site-u; to dozvoljava dijeljenje resursa i međuoperabilnost između site-ova Zahtjevi: Autentificiranje/autoriziranje prema standardima Certificiranje prema pravilima Usluge spleta računala (2): Grid Information Service Učinkovito upotreba resursa temeljena na znanju o komponentama sustava Struktura objavljivanja informacija i informacije o stanjima, dinamičke performanse, infoemacije o SW, itd. Izbor i raspoređivanje resursa Otkrivanje resursa: “pronađi me na X s obilježjima Y raspoloživog u vremenu T”
Auto-konfiguriranje: “reci mi što trebam znati da bih koristio A učinkovito/sigurno/...” Mogućnost pristupanja drugim podatkovnim resursima Usluge spleta računala (3): Upravljanje resursima (Resource Management) Uključuje: Lociranje i izbor resursa Dodjeljivanje resursa Autentificiranje, stvaranje procesa Ostale aktivnosti koje pripremaju resurse za upotrebu; nadzor, upravljanje End-to-end upravljanje/ponovno dodjeljivanje Različiti resursi: CPU, diskovi, mreža Rezerviranje resursa Usluge spleta računala (4): Spremničke i U/I usluge Pristup udaljenim podacima (GASS) Uniformni pristup raznim spremničkim upravljačkim mehanizmima Upravljanje priručnom memorijom (cache management) Vrlo brzi sigurni prijenos: gsiftp Integriranje s metapodacima & spremničkim sustavima Komunikacija (Nexus, GlobusIO) Sučelja na razini aplikacije prema komunikacijskim uslugama Višestruke metode: pouzdane/nepouzdane, IP/ostali, unicast/multicast Sučelja za kvalitetu usluge 55. 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 Strategija: smanjenje troškova 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 Strategija: povećati povrat uloženog Trebaju alate i tehnologije koji im pomažu u iskazivanju, prenošenju i izvođenju vrijednosti/koristi. Korisnici usluga spleta računala: Kako iskazati zahtjeve za QoS? Kako trgovati uziajući u obzir vremenske okvire i cijene? Kako pridružiti poslove resursima uz postizanje zahtjeva za QoS ? Kako upravljati dinamikom spleta računala i dobiti obavljen posao? Davatelji usluga spleta računala: Kako odrediti modele cijena usluga? Kako specificirati cijene usluga?
Kako ih preslikati u dodjeljivanje resursa? Kako ih primijeniti? Kako ih oglasiti? Kako obračunati i rukovati plaćanjem? 56. 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 parametera spleta računala. Na temelju tzv, računalne ekonomije spleta računala vrši optimalan izbor računalnih i podatkovnih usluga ovisno o njihovoj kvaliteti, cijeni i raspoloživosti, kao i korisnikovim QoS zahtjevima (vrijeme nužnog završetka, proračun, optimizacija vremena korištenja i cijene) Glavne mogućnosti: 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 57. Navedite barem 3 primjera spleta računala u primjeni i ukratko ih opišite. Primjer 1: On-line instrumentacija
Primjer 2: Distributed Supercomputing
Primjer 3: 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 Budućnost: sigurnost, QoS, dodjeljivanje, rezerviranje Primjer 4: High-Throughput Computing Raspoređuje više nezavisnih zadataka Globus sigurnosni sustav, otkrivanje, pristup podacima, raspoređivanje Budućnost: Rezerviranje, migriranje koda. 58. Opišite osnovna načela oblaka računala (cloud computing). Osnovna načela: • Oblak računala može se smatrati poširenjem SOA na resurse isporučive u oblaku računala, kao što su spremnik kao usluga (storage-as-aservice), podaci kao usluga (data-as-aservice), platforma kao usluga (platform-as-aservice), 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.
Osnovna ideja:
59. 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 obradbe, aplikacije i virtualizacija Problematika je slična: - upravljanje raznim mogućnostima definiranje metoda kojima tražitelji usluga otkrivaju - otkrivaju, zahtijevaju i koriste resurse omogućene središnjim sustavom - često 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 60. Navedite i ukratko objasnite osnovne modele isporuke oblaka računala. 1. Model isporuke SaaS: • Nema rukovanja sklopovljem ili programima • Usluge dostupne kroz preglednik • Korisnici koriste usluge na zahtjev • Trenutna skalabilnost Primjeri SaaS: • Trenutni CRM (Customer Relationship Management) paket ne upravlja opterećenjem ili ga nema kao uslugu. Koristiti o st t SaaS davatelja usluge kao što je Salesforce.com.
• E-pošta se nalazi na poslužitelju u uredu i vrlo je spora. Koristiti Hosted Exchange. 2. Model isporuke PaaS: • Platforme su izgrađene na infrastrukturi koja koja je skupa • Procjena zahtjeva nije složena • Upravljanje platformom nije zabavno Primjeri PaaS: • Treba udomaćiti veću datoteku (npr. 100 MB na web stranici i omogućiti je dostupnom za 40000 korisnika na samo 2 mjeseca. Koristiti Cloud Front (Amazon). • Treba pokrenuti uslugu spremanja na mreži za veliki broj datoteka, a nemaš spremničke kapacitete. Koristiti Amazon S3 ili neku drugu uslugu. 3.Model isporuke IaaS: • Okolina virtualiziranja platforme • Računalni resursi, kao što su spremnički i obradbeni kapaciteti • Virtualizacija korak unaprijed Primjeri IaaS: • Treba pokrenuti batch posao, ali nemaš infrastrukturu potrebnu za izvođenje tog posla u prihvatljivom vremenu. Koristiti Amazon Amazon EC2 ili GoogleApp Engine. • Treba udomaćiti web stranicu na nekoliko dana. Koristiti Flexiscale ili nešto drugo. Video: Cloud Computing Explained 58. Opišite osnovna načela oblaka računala (cloud computing). Oblak računala može se smatrati poširenjem SOA na resurse isporu ive u oblaku računala, kao što su spremnik kao usluga (storage-as-aservice), podaci kao usluga (dataas-aservice), platforma kao usluga (platform-as-aservice), 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. 59. Opisno usporedite (ili skicirajte) oblak računala s ostalim računalnim tehnologijama slične namjene. •
60. Navedite i ukratko objasnite osnovne modele isporuke oblaka računala. SaaS (Software as a Service): Nema rukovanja sklopovljem ili programima, Usluge dostupne kroz preglednik, Korisnici koriste usluge na zahtjev, Trenutna skalabilnost PaaS (Platform as a Service): Platforme su izgrađene na infrastrukturi koja koja je skupa, Procjena zahtjeva nije složena, Upravljanje platformom nije zabavno IaaS (Infrastructure as a Service): Okolina virtualiziranja platforme, Računalni resursi, kao što su spremnički i obradbeni kapaciteti, Virtualizacija korak unaprijed
61. Navedite barem 7 usluga koje može ponuditi oblak računala. 62. Što mora ispunjavati oblak računala da bi se mogao nametnuti kao optimalan izbor mogućem korisniku? 63. Skicirajte građu Google App Engine-a i objasnite njegovu ulogu. 64. Što je Microsoft Windows Azure, čemu služi i koji su alati potrebni krajnjem korisniku za njegovu upotrebu? 65. Usporedite Amazon, Microsoft i Google po pitanju svojstava njihovih PaaS usluga. 66. Opišite probleme postojećih računala visokih performansi sa stajališta potrošnje energije. Disipacija topline (hlađenje), potrošnja energije (hlađenje), Ostvarivanje što veće računalne snage po wattu, Idle stanje, Paljenje/gašenje 67. Navedite i opišite principe uštede energije procesora i radne memorije. CPU – DVFS: 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 ↓; 60% potrošnje energije od strane memorije može se uštedjeti ako memorija nije potrebna 68. Opišite virtualizaciju sa stajališta zelenog računalstva. dinamička pravila potrošnje, uravnoteženje/raspodjela opterećenja 69. Navedite energetski učinkovite tehnologije prema slojevima primjene.
70. Ukratko objasnite višeslojnu arhitekturu na webu zasnovanih sustava i skicirajte način korištenja CGI programa na poslužiteljskoj strani. Nema na moodlu 71. 72. Navedite barem 3 raspodijeljena računalna sustava, te ukratko objasnite što ih čini raspodijeljenima. mreža radnih stanica, WWW, Oblak računala, Obradbeni i upravljački sustav robota 73. Navedite željena svojstva kod stvaranja paralelnih programa. istodobnost (concurrency) - mogućnost izvođenja više radnji istovremeno - nužno za razvoj algoritma skalabilnost (scalability) - 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 (locality) - veći omjer lokalnog u odnosu na udaljeni pristup memoriji - korištenje priručne memorije (cache) modularnost (modularity) - mogućnost uporabe dijelova algoritma unutar različitih programa 74. Navedite četiri faze razvoja paralelnog algoritma. 1. pronaći dijelove slijednog programa koji se mogu izvoditi istodobno - zahtijeva detaljno poznavanje rada algoritma - može zahtijevati i potpuno novi algoritam 2. rastaviti algoritam - funkcionalna dekompozicija - podjela problema na manje dijelove (koji se mogu rješavati istodobno) - podatkovna dekopozicija - podjela podataka s kojima algoritam radi na manje dijelove; obično jednostavnije izvesti - kombinacija gornja dva načina 3. ostvarenje programa - odabir programske paradigme, sklopovskog okruženja - usklađivanje komunikacije (način, učestalost, sinkorinizacija...) - vanjska kontrola izvođenja 4. ispravljanje grešaka, optimiranje izvođenja 75. Navedite podjelu međuprocesne komunikacije na cjeline po nekoliko osnova. globalna, point-to-point; blokirajuća, neblokirajuća 76. Navedite datoteke zaglavlja koje moraju biti uključene u programskom kodu koji koristi MPI biblioteku, te u programskom kodu koji koristi OpenMP biblioteku. MPI (mpi.h), openMP (omp.h)
77. Napišite i ukratko objasnite dvije osnovne funkcije koje se moraju nalaziti u svakom MPI programu u kojem će se koristiti MPI pozivi. Inicijalizacija MPI okruženja (MPI::Init), zatvaranje MPI okruženja (MPI::Finalize) 78. Navedite 5 tipova podataka MPI C++ okruženja. MPI::Char, MPI::Short, MPI::Int, MPI::Long, MPI::Float, MPI::Double, MPI::Byte 79. Napišite i ukratko objasnite funkcije slanja i prijema poruka blokirajuće komunikacije od točke do točke, te njihove parametre. void Comm::Send(const void* buf, int count, MPI::Datatype& datatype, int dest, int tag) const void Comm::Recv(const void* buf, int count, MPI::Datatype& datatype, int source, int tag, Status& status) const podaci koji se šalju/primaju, količina podataka, tip podatka, odredište/izvor, tag, (status) primanje : MPI::ANY_SOURCE, MPI::ANY_TAG, izlazne buf i status, status tipa MPI::Status, status.Get_source(), status.Get_tag() 80. Napišite i ukratko objasnite funkcije slanja i prijema poruka komunikacije od točke do točke bez blokiranja, te njihove parametre. request MPI::Comm.Isend (const void* buf, int count, const Datatype& datatype, int dest, int tag) const request MPI::Comm.Irecv (void* buf, int count, const Datatype& datatype, int source, int tag) const 81. Navedite i ukratko objasnite osnovne tipove kolektivne međuprocesne komunikacije. (Više point-to-point), Barrier, Broadcast, Redukcija 82. Napišite i ukratko objasnite funkciju za razašiljanje poruke svim procesima, te njezine parametre. void MPI::Comm.Bcast(void* buffer, int kolicina, const MPI::Datatype& tip, int maticni_proces) omogućuje kopiranje podataka iz memorije matičnog procesa u iste memorijske lokacije svih ostalih procesa u komunikatoru 83. Napišite i objasnite funkciju za postizanje sinkronizacije na barijeri. MPI::Comm.Barrier() blokira proces koji ju poziva, dok god ostali procesi ne pozovu istu funkciju (djeluje poput semafora) 84. Napišite i objasnite funkciju redukcije, te njezine parametre. MPI::Comm.Reduce(izvor_podataka, odredište_podataka, koli ina, tip_podataka, operacija_redukcije, rang_procesa_primatelja) Sakupljanje podataka od svih procesa, sažimanje podataka u jedinstvenu vrijednost (npr. najve a vrijednost ili zbroj), spremanje sažetog podatka na matični proces
85. Što je OpenMP i koje su njegove 3 glavne komponente? biblioteke koje pomažu programskom prevodiocu u paralelizaciji programskog koda aplikacija na računalima s arhitekturom zajedničke memorije OpenMP se sastoji od 3 komplementarne komponente: 1. Set smjernica koje koristi programer za komunikaciju s programskim prevodiocem (engl. compilerom) vezano uz paralelizam. 2. Runtime biblioteke (funkcije) koje omogućuju postavljanje paralelnih parametara i upite nad njima, kao što je primjerice broj niti koji sudjeluje u obradi. 3. Ograničen broj varijabli okruženja koji se mogu koristiti za određivanje paralelnih parametara prilikom izvođenja aplikacije, kao što je npr. broj niti. 86. Koja OpenMP smjernica paralelizira kod koji slijedi odmah nakon nje? #pragma omp parallel 87. Koja OpenMP smjernica paralelizira „for“ petlju koja slijedi odmah nakon nje? #pragma omp parallel for 88. Koja su 2 glavna pristupa paralelizmu pomoću OpenMP-ja? Princip paralelnih regija(niti), paralelizam na bazi petlji 89. Koja je razlika između zajedničkih i privatnih varijabli OpenMP smjernica? private (default samo za i u for) - dodjeljuju se odvojene memorijske lokacije kopijama varijable za svaku nit shared (default) - svi dijele istu 90. Navedite i ukratko objasnite 3 temeljne funkcije OpenMP okruženja. omp_get_thread_num() - vraća rang niti u paralelnom dijelu koda omp_set_num_threads() - postavlja broj niti koje će se koristiti u paralelnim dijelovima koda koji slijede omp_get_num_threads() - vraća broj niti koje se koriste u paralelnom dijelu koda 91. Pretpostavite da imate MPI kôd u programskom jeziku C++, datoteka je naziva Program.cpp. Objasnite postupak pokretanja tog programa na MPI okruženju Linux temeljenog OS-a na 4 procesa. Kako biste pokrenuli program na samo 2 procesora? mpiCC Programa.cpp -o Program.o mpirun -np 4 Programa.o mpirun -np 2 Programa.o (samo 2) 92. Opišite općenitu strukturu MPI C++ programa. 1.uključi datoteku s MPI zaglavljem (mpi.h) deklaracija varijabli 2.inicijaliziraj MPI okruženje (MPI::Init) …izračun i MPI komunikacijski pozivi… 3.zatvori MPI okruženje (MPI::Finalize) 93. Objasnite pojam komunikatora unutar MPI okruženja. Komunikator je MPI rukovoditelj koji definira grupu procesora s dozvoljenom međusobnom komunikacijom. 94. Kojom MPI funkcijom ćete dohvatiti broj procesa na kojima je program pokrenut?
MPI::COMM_WORLD.Get_size() 95. Kojom MPI funkcijom ćete dohvatiti rang procesa na kojem se izvršava kod? rang = MPI::COMM_WORLD.Get_rank(); 96. Što će se dogoditi prilikom izvođenja slijedećeg koda na 3 procesa? Procesor 1 od 3: Hello World! Procesor 2 od 3: Hello World! Procesor 2 od 3: Hello World! 97. Što će se točno dogoditi nakon pokretanja slijedećeg koda na 2 procesora? Proces 0 ce poslati 100 elemenata tipa double iz polja a, prema procesu 1 s tagom 17. Proces 1 će primiti 100 elemenata tipa double i spremiti ih u polje b, od procesa 0, s oznakom taga 17 98. Pretpostavite MPI program koji se izvodi kroz 4 procesa. Jedan proces treba poslati vektor od 50 elemenata svim ostalim procesima koristeći blokirajuću point-to-point komunikaciju. Ispišite dio koda koji je potreban da bi se obavila navedena radnja (slanje i primanje). MPI:: COMM_WORLD.Bcast(&a, 50, MPI::DOUBLE, 0); ili #include #include using namespace std; int main (int argc, char* argv[]) { MPI::Init(argc, argv); int rang = MPI::COMM_WORLD.Get_rank(); MPI::Status status; double a[50]; if( rang == 0 ) { for(int i=0;i<50;++i) a[i] = i + 1; MPI::COMM_WORLD.Send(a, 50, MPI::DOUBLE, 1, 17); MPI::COMM_WORLD.Send(a, 50, MPI::DOUBLE, 2, 17); MPI::COMM_WORLD.Send(a, 50, MPI::DOUBLE, 3, 17); } else{ MPI::COMM_WORLD.Recv(a, 50, MPI::DOUBLE, 0, 17, status); cout << "proces(" << rang << ")" << endl; for(int i=0;i<50;++i) cout << "b[" << i << "]=" << a[i] << ", "; cout << endl; } MPI::Finalize(); } 99. Kako biste preuredili slijedeći kôd da proces 1 šalje ostalim procesima (može ih biti više) 50 elemenata vektora b? #include #include using namespace std;
int main (int argc, char* argv[]) { MPI::Init(argc, argv); int rang = MPI::COMM_WORLD.Get_rank(); MPI::Status status; double a[50]; if( rang == 1 ) { for(int i=0;i<50;++i) a[i] = i + 1; int size = MPI::COMM_WORLD.Get_size(); for(int i=0;i
cout << endl; 100. Kako biste preuredili slijedeći kôd da proces 1 šalje ostalim procesima (može ih biti više) 50 elemenata vektora b? Nakon što proces 0 inicijalizira svoje polje podataka a, poziva MPI::Send() funkciju u kojoj označava proces 1 kao odredište poruke (podataka). Zauzvrat, proces 1 poziva MPI::Recv(), te određuje proces 0 kao izvor podataka (poruke) i stavlja podatke u svoje polje podataka b. Nakon što se završi prijenos podataka, proces 0 još uvijek sadrži polje podataka a u svojoj lokalnoj memoriji. Podaci su samo kopirani u polje b procesa 1. 101. Kako biste preuredili navedeni kôd da ne dođe do zastoja? Treba zamijeniti redoslijed Recv i Send funkcije u samo jednoj if grani. 102. Što će se dogoditi pri pokretanju slijedećeg dijela koda, i zašto, ako nigdje u kodu prije i poslije nema poziva funkcije MPI::Comm.Recv? Proces 0 i 1 će trajno blokirati jer čekaju podatke jedan od drugoga i ne mogu doći od instrukcija za slanje. 103. Objasnite razliku između blokirajuće point-to-point komunikacije i point-to-point komunikacije bez blokiranja. Blokirajuća blokira dok se ne obavi slanje i primanje podataka, tek nakon toga se počinju izvršavati sljedeće naredbe. Neblokirajuća nastavlja dalje izvršavati naredbe, složenija je potrebno je koristiti mehanizme za čekanje i provjeru je li poruka primljena. 104. Objasnite ulogu upravljačkog zahtjeva (engl. Request Handle) kod point-to-point komunikacije bez blokiranja, te način upotrebe. Služi za provjeru ili osiguravanje da je komunikacija završena. 105. Navedite i objasnite dvije funkcije testiranja završetka komunikacije bez blokiranja. MPI::Request.Wait() blokira dok se ne izvrši slanje i primanje MPI::Request.Test() provjerava i nastavlja dalje 106. Detaljno objasnite što će se dogoditi prilikom izvođenja slijedećeg programskog koda Proces 0 šalje podatke iz vektora a procesu 1 i prima podatke od procesa 1 i sprema ih u b. Isto radi i proces 1 samo što šalje procesu 0 i prima od procesa 0. Za primanje se koristi Irecv koji je ne blokirajući te omogućava izvršavanje sljedećih naredbi dok send ne bude spreman. Kad su send i reciv spremni dolazi do komunikacije. Ukoliko send s druge strane nije bio spreman do poziva wait funkcije proces će blokirati na tom dijelu. 107. Koje su razlike imeđu kolektivne međuprocesne komunikacije i point-to-point komunikacije? Kolektivna je u biti više point-to-point, napravljena je kako bi se olakšalo korisniku (smanjio broj linija koda) jer se često pojavljuje. 108. Koje izmjene je potrebno napraviti na slijedećem kodu, kako bi ga bilo moguće izvesti na 10 procesora? Objasniti. Nikakve, proces 5 postavlja parametar i šalje svim ostalima. 109. Koja je razlika između funkcija MPI::Comm.Gather i MPI::Comm.Allgather? All prime svi procesi. 110. Koja je razlika između funkcija MPI::Comm.Reduce i MPI::Comm.Allreduce? All prime svi procesi.
111. Kako biste izmijenili navedeni kod da svi procesi istovremeno pozovu funkciju Bcast? Pozivom funkcije MPI::COMM_WORLD.Barrier() prije Bcast, ali nema svrhe. 112. Navedeni kod nije ispravan, kako biste ga izmijenili da izbjegnete grešku? MPI::COMM_WORLD.Bcast(&temp, 1, MPI::DOUBLE, matProc); 113. Opišite što će se dogoditi nakon pokretanja navedenog dijela koda, te objasnite postoji li kakvo ograničenje na broj procesa na kojima se može pokrenuti navedeni kod. Izvor varijabla (1, 2, 3…) svakog pojedinog procesa će biti pomnožene međusobno i spremljene u varijablu rezultat na matičnom procesu. Matični proces će ispisati rezultat. Broj procesa ne smije biti manji od 5 jer je proces broj 4 matični. 114. Kako biste paralelizirali navedeni kod pomoću OpenMP-ja? #pragma omp parallel for 115. Koje izmjene je potrebno napraviti u slijedećem 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? Mora biti minimalno 5 niti, prije cout: int rank = omp_get_thread_num(); if(rank == 4)