1
|
|
- Vaso Sekulić
- пре 6 година
- Прикази:
Транскрипт
1 Testiranje konkurentnih programa
2 Uvod Konkurentni program sadrži dve ili više niti koje se izvršavaju uporedo i rade zajedno da izvrše neki zadatak. Kada se program izvršava, operativni sistem stvara proces koji sadrži programski kod i podatke i upravlja procesom dok se program ne završi. Nit je jedinica kontrole u okviru procesa: kada nit radi, izvršava funkciju u programu - "glavna Nit" izvršava "glavni" program a druge Niti izvršavaju druge funkcije. Svaka nit ima svoj: stek, kopiju CPU registara (uključujući stek pointer, program counter) Niti u višenitnom procesu dele podatke, programski kod, resurse, adresni prostor, i stanje procesa
3 Operativni sistem dodeljuje procesor(e) između procesa/niti u sistemu: operativni sistemi bira proces i proces bira nit, ili niti se direktno raspoređuju od strane operativnog sistema. U principu, svako spremna nit dobija deo vremena (nazvan kvantum) procesora. Ako nit čeka nešto, oslobađa procesor. Kada istekne kvant vremena dodeljen niti, izvršavanje niti se privremeno prekida da se dozvoli drugoj spremnoj niti da se izvršava. Prebacivanje procesora od jednog procesa ili niti na drugi je poznat kao izmena konteksta. više procesora => više niti može izvršiti u isto vreme. jedan CPU => niti se smenjuju u izvršavanju Politika raspoređivanja može da uzme u obzir prioritet niti. Ako je politika raspoređivanja fer, to znači da svaka spremna nit na kraju dobija da se izvrši.
4 Komunikacija niti Da bi niti da rade zajedno, one moraju da komuniciraju. Jedan od načina za niti da komuniciraju jeste pristup zajedničkoj memoriji. Niti u istom programu mogu referencirati globalne varijable ili pozvati metode na zajedničkom objektu. Konkurentni programi pokazuju ne-deterministički ponašanje - dva izvršavanja istog programa sa istim ulazom mogu da proizvedu različite rezultate.
5 Nedeterminističko ponašanje pri izvršavanju Primer 1. Pretpostavimo da je ceo broj x inicijalno jednak 0. Thread1 Thread2 Thread3 (1) x = 1; (2) x = 2; (3) y = x; Konačna vrednost za y je nepredvidiva, ali se očekuje da će biti ili 0 ili 1 ili 2. Ispod su neki od mogućih prepletanja ova tri iskaza. (3), (1), (2) konačna vrednost y je 0 (2), (1), (3) konačna vrednost y je 1 (1), (2), (3) konačna vrednost y je 2 Memorijski hardver garantuje da se operacije čitanja i pisanja celobrojne promenljive ne preklapaju. U principu, nedeterminističko ponašanje pri izvršavanju izaziva jednu ili više sledećih stvari: nepredvidiva stopa napredovanja izvršavanja niti na jednom procesoru (zbog izmene konteksta između niti) nepredvidiva stopa napredovanja izvršavanja niti na različitim procesorima (zbog razlike u brzini procesora) upotreba nedeterminističkih programskih konstrukcija, koje čine nepredvidive izbore između dve ili više mogućih akcija.
6 Nedeterministički rezultati ne ukazuju nužno na prisustvo greške. Niti se često koriste za modelovanje objekata u realnom osvetu koji su po prirodi nedeterministički. Nedeterminizam obezbeđuje fleksibilnost u dizajnu. Npr. konačni bafer kompenzuje razlike u brzinama rada proizvođača i potrošača. Redosled depozita i povlačenja novca sa računa je nedeterministički. Nedeterminizam i konkurentnost su srodni koncepti. Konkurentni događaji A i B mogu biti modelovani kao nedeterministički izbor između dva sleda događaja: (A sledi B) ili (B sledi A). Mogući broj prepletanja eksplodira kada se broj konkurentnih događaja povećava. Nedeterminizam je inherentno svojstvo konkurentnih programa.teret suočavanja sa ne-determinizam pada na programatoru, koji mora da obezbedi da niti su pravilno sinhronizovani, bez nametanja nepotrebnih ograničenja koja samo smanjuju nivo konkurentnost. Nedeterminističko izvršavanje stvara posebne probleme u toku testiranja i debagovanja.
7 Atomske Akcije Stanje programa sadrži vrednost za svaku promenljivu definisanu u programu i drugih implicitnih varijabli, kao što je programski brojač. Atomska akcija transformiše stanje programa, na nedeljiv način: {x == 0} x = 1; {x == 1}. Transformacija stanja obavljena tokom atomske akcije je nedeljiva ako druge niti mogu videti stanje programa, kao što se pojavljuje pre ili posle akcije, ali ne i neko srednje stanje dok se akcija dešava.
8 Do izmene konteksta može doći dok jedna nit obavlja atomsku akciju sve dok se dozvoljava drugim nitima da vide ili se mešaju sa akcijom, dok je ona u toku. Pojedinačne mašinske instrukcije kao što su load, add, subtract i store tipično se izvršavaju atomično; ovo je garantovano memorijskim hardverom. U Javi, dodela vrednosti od 32 bita ili manje garantovano da sprovodi atomično, tako da je iskaz, kao što je x = 1 za celobrojnu promenljivu x atomska akcija. U principu, međutim, izvršenje nekog iskaza dodele ne mora biti atomično. Ne-atomski aritmetički izrazi i iskazi dodeljivanja Prepletanje od mašinskih instrukcija iz dva ili više izraza ili iskaza dodele može da proizvede neočekivane rezultate. Primer 2. Pretpostavimo da su y i z inicijalno 0. Ne-atomske grupe izveštaja. Druga vrsta neželjenog nedeterminizma u konkurentanom programu je izazvana prepletanjem grupe iskaza, iako svaki iskaz može biti atomski.
9 Primer 3. Promenljiva first ukazuje na prvi čvor u listi. Pretpostavimo lista je neprazna. class Node { public: valuetype value; Node* next; } Node* first; //first points to the first Node in the list; Thread 1 Thread 2 deposit Node * p = new Node p->value = value p->next = first first = p value = first- >value first = first->value return value withdraw Na kraju ovog niza iskaza: first i dalje ukazuje na uklonjenu stavku deponovana stavka je izgubljena. Da bi se rešio ovaj problem, metode deposit i withdraw moraju se implementirati kao atomske akcije.
10 Sinhronizacija niti Primeri u ovom poglavlju ilustrovali su bagove koji mogu da nastanu prilikom pristupa deljenim promenljivima koji nisu pravilno sinhronizovani. Jedna vrsta sinhronizacije se zove uzajamno isključivanje. Uzajamno isključivanje omogućava da grupa atomskih akcija, nazvana kritična sekcija, ne može da se izvrši od strane više od jedne niti u jednom trenutku. To jest, kritična sekcija mora biti izvršena kao atomska akcije. Neuspeh da se pravilno primeni kritična sekcija je greška pod nazivom trka podataka (data race). Drugi tip sinhronizacije se naziva uslovna sinhronizacija. Uslovna sinhronizacija obezbeđuje da stanje programa zadovoljava određeni uslov pre nego što počne neka radnja. Za povezane liste u Primeru 3, postoji potreba i za uslovnu sinhronizaciju i uzajamnim isključivanjem. Lista ne sme da bude u praznom stanju kada se metod withdraw dozvoli da ukloni stavku, međusobno isključenje je potrebno da se osigura da se deponovane stvari ne gube i ne bivaju uklonjene više puta.
11 Testiranje i otklanjanje grešaka u višenitnim programima Konvencionalni pristup testiranju i debagovanju sekvencijalnog programa: (1) Izabere se skup test primera (2) Pokrene se program po jednom za svaki ulaz i uporede rezultati testa sa očekivanim rezultatima. (3) Ako test primer nađe grešku, pokrene se program ponovo sa istim ulazom u cilju prikupljanja informacija za otklanjanje grešaka i pronađe se greška koja je izazvala neuspeh testa. (4) Nakon što je greška ispravljena, izvršiti program ponovo sa svakim od test primera radi provere da li je greška ispravljena i da, usput, nisu uvedeni novi defekti (tzv. "regresiono testiranje"). Ovaj proces nije u originalnom obliku primenljiv na konkurentne programe.
12 Problemi Neka je CP neki konkurentni program. Višestruko izvršavanje CP sa istim ulazima može da proizvede različite rezultate. Ovo nedeterminističko ponašanje stvara sledeće probleme tokom testiranja i debagovanja CPa: Problem 1. Kada testiramo CP za ulaz X, jedno izvršavanje nije dovoljno da se utvrdi ispravnost CP za X. Čak i ako CP sa ulazom X izvršimo uspešno mnogo puta, moguće je da će buduća izvršenja CZ za X proizvesti netačne rezultate. Problem 2. Kada debagujemo neuspešno izvršavanje CP za ulaz X, ne postoji garancija da će ovo izvršavanje biti ponovljeno izvršavanjem CP za X. Problem 3. Nakon što je CP modifikovan radi ispravke greške otkrivena tokom neuspelog izvršenja CP za ulaz X, jedno ili više uspešnih izvršavanja CP za X tokom regresionog testiranja ne podrazumeva da je otkrivena greška ispravljena ili da nema novo uvedenih grešaka. Postoje mnoga stvari koja se moraju realizovati u cilju rešavanja ovih problema: Ponavljanje programa (replay): Programeri oslanjaju na debagovanje tehnike koje pretpostavljaju program kvarovi mogu se reprodukovati. Ponavljanje izvršenja konkurentnog programa se zove "program replay". Praćenje programa (Tracing): Pre izvršenja može se ponoviti ono mora pratiti. Ali šta tačno znači to ponove se izvršenje? Trag izvršavanja u opštem slučaju sadrži informacije o redosledu akcija koje izvršava svaka nit. Dodatno kod distribuiranih sistema postoji problem u sagledavanju redosleda akcija na različitim računarima (ako nema globalnog časovnika).
13 Izvodljivost sekvence: za niz akcija koji je dozvoljen programom (moguć) se kaže da je izvodljiva sekvenca. Testiranje podrazumeva utvrđivanje da li je ili nije data sekvenca izvodljiva ili nije. Kako se sekvence biraju? Dozvoliti izvršavanje sekvenci bez determinizma (nedeterminističko testiranje) u određenom vremenu. Najlakše, ali neefikasno (ne garantuje rešavanje problema). Forsirati odabrane sekvence za izvršavanje (determinističko testiranje). Izbor sekvenci koje su efikasne u otkrivanju grešaka je teško učiniti. Test pokrivenost kriterijum može da se koristi za usmeravanje izbor testova i da odredi kada da prestane testiranje. Testiranje zasnovano na prefiksu: početke sekvenci izabrati deterministički. Potom sledi nedeterminističko izvršavanje koje forsira definisani početak i dalje nastavlja nedeterministički.
14 Praćenje, testiranje i ponovno izvršavanje za semafore i brave Sadržaj: Tehnika za otkrivanje narušavanja uzajamnog isključivanja. Praćenje i ponovna reprodukcija izvršavanja tokom debagovanja. Detekcija zastoja Testiranje dostižnosti Nedeterminističko testiranje Lockset algoritmom Utrkivanje podataka(data race) predstavlja neuspeh da se pravilno implementiraju kritične sekcije za pristup neatomskih deljenim promenljivim. Konkurentni program može biti testiran za trke podataka: pratiti pristupe zajedničkim promenljivama i uveriti se da je svaka promenljiva pravilno zaključana pre nego što joj se pristupi. Izvršavati program više puta sa istim test primerom u cilju povećanja naše šanse za pronalaženje trke podataka. Ova vrsta testiranja se zove nedeterminističko testiranje. Nedeterminističko testiranje konkurentnog programa CP podrazumeva sledeće korake: 1. Izabrati skup ulaza za CP. 2. Za svaki izabrani ulaz X, izvršavati CP mnogo puta i ispitati rezultat svakog izvršenja. Svrha nedeterminističkog testiranja jeste da se ostvari onoliko varijanti ponašanja koliko je to moguće. Na žalost, eksperimenti su pokazali da su programi imaju tendenciju da ispoljavaju isto ponašanje od izvršenja do izvršenja. Takođe, "efekat sonde"(uticaj test okruženja i test koda) može onemogućiti neke otkaze da se ispolje.
15 Da bi se povećala verovatnoća ostvarivanja različitih ponašanja: promeniti algoritam raspoređivanja koji koristi operativni sistem, npr. promeniti vrednost vremenskog kvanta koji se koristi za round robin raspoređivanje. ubaciti sleep(t) iskaze u program sa intervalom spavanja t odabranim nasumično. Izvršavanje iskaza sleep forsira izmenu konteksta i time posredno utiče na raspoređivanje niti. Najlakše je koristiti posebnu biblioteku sa sinhronizacionim primitivama(npr. binarysemaphore, countingsemaphore, mutexlock) koje su prilagođene testiranju. Kada se želi ova opcija, sleep iskazi izvršavaju se na početku metoda P(), V(), lock() i unlock(). Za otkrivanje trke podataka, kombinujemo nedeterminističko testiranje sa lockset algoritmom: proverava da li sve promenljive slede dosledno disciplinu blokiranja u kojem je svaki deljena promenljiva zaštićena bravom. za svaku promenljivu, utvrđuje da li postoji neka brava koja jee uvek zaključana kad god se promenljivoj pristupa. Za deljenu promenljivu v, neka skup CandidateLocks(v) sadrži one brave koje su štitile v tokom dosadašnjeg izvršavanja programa. Dakle, brava l je u CandidateLocks(v) ako je, u toku prethodnog izvršenjavanja, svaka nit koja je pristupala v držala l u trenutku pristupa. CandidateLocks(v) se izračunava na sledeći način: Kada se nova promenljiva v inicijalizuje, njen za kandidat skup smatra se da drži sve moguće brave. Kada se v pristupa za čitanje ili pisanje od strane niti T, CandidateLocks(v) se ažurira. Nova vrednost CandidateLocks(v) je presek CandidateLocks(v) i skupa brava koje drži nit T.
16 Na osnovu ovog iterativnog algoritma: ako neka brava l dosledno štiti v, ona će ostati u CandidateLocks(v) i kada se CandidateLocks(v) ažurira. ako CandidateLocks(v) postane prazan, to znači da ne postoji brava koja štiti v dosledno. Lockset Algoritam: / / Neka LocksHeld(T) označava skup brava koje trenutno drži nit T Za svaku deljenu promenljivu v, inicijalizovati CandidateLocks(v) na skup svih brava. Na svaki pristup v za čitanje ili upis od strane niti T: CandidateLocks(v) = CandidateLocks(v) LocksHeld(T); if(candidatelocks(v) == {}) izdati upozorenje; Na slici ispod, pristup Thread1 deljenoj promenljivoj s je prvi put zaštićen je prvo sa mutex1 zatim sa mutex2. Ovo kršenje uzajamnog isključivanja može da se detektuje lockset algoritmom: CandidateLocks(a) se inicijalizuje na {mutex1, mutex2} i ažurira se kada se pristupa s. Kada Thread1 zaključava mutex1, LocksHeld(Thread1) postaje {mutex1}. Kada se s pristupa u prvom iskazu dodele, CandidateLocks(a) postaje mutex1, tj. presek skupova CandidateLocks(a) i LocksHeld(Thread1). Kada se izvrši drugi iskaz, dodele Thread1 drži bravu mutex2, a jedini kandidat za zaključavanje s je mutex1. Posle preseka CandidateLocks(a) i LocksHeld(Thread1) CandidateLocks(a) postaje prazan. Lockset algoritam je otkrio da nema brave koja dosledno štiti deljenu promenljivu s. Kao tehnika nedeterminističkog testiranja, lockset algoritam ne može da dokaže da je program slobodan od trke podataka.
17 SYN-sekvence za semafore i brave Izvršavanje uporednog programa možemo se okarakterisati kao niz događaja nad sinhronizacionim objektima. Redosled sinhronizacije dogadjaja se zove SYN-sekvenca. Postoji nekoliko načina da se definiše SYN-sekvenca i definicija SYN-sekvence utiče na dizajniranje rešenja za ponovno izvršavanje programa. Neka CP bude konkurentni program koji koristi deljene promenljive, semafore i brave. Rezultat izvršavanja CP sa datim ulazom zavisi od(nepredvidljivog) poretka u kojem se pristupa zajedničkim promenljivama, semaforima i bravama u CP. Semaforima se pristupa upotrebom operacija P i V Bravama se pristupa upotrebom operacija lock i unlock Deljenim promenljivama se pristupa upotrebom operacija read i write. Sinhronizacioni objekti u CP su njenove deljene promenljive, semafori i brave. Sinhronizacini događaji u CP su izvršavanje operacija read/write, P/V i lock/unlock nad ovim objektima.
18 SYN-sekvenca za binarni semafor ili brojački semafor s je sled događaja sledećih tipova: završetak operacije P završetak operacije V početak operacije P koja se nikada nije završila zbog zastoja ili izuzetka početak operacije V koja se nikada nije završila zbog zastoja ili izuzetka Ovakvu sekvencu događaja nazivamo PV-sekvenca od s. Događaj u PV-sekvenci se označava identifikatorom(id) niti koja izvršava P ili V operaciju. Redosled kojim niti završe P i V operacije nije obavezno isti kao i redosled u kome oni pozivaju P i V ili čak isti kao i redosled u kome P i V operacije počinju. Za operacije koje su završile, upravo njihov redosled završetka mora biti ponovo reprodukovan, jer ovaj redosled određuje rezultat izvršenja programa. Takođe treba ponavljati početke operacija koji ne završavaju, tako da će se isti događaji, izuzeci i zastoji javljajati tokom ponovnog izvršenja programa. SYN-sekvenca za bravu l je sled događaja sledećih tipova: završetak operacije lock završetak operacije unlock početak operacije lock koja nikada nije završen zbog zastoja ili izuzetka početak operacije unlock koja se nikada nije završila zbog zastoja ili izuzetka Ovakvu sekvencu nazivamo LockUnlock-sekvenca za l. Događaj u LockUnlock-sekvenci se označava identifikatorom(id) niti koja izvršava lock ili unlock.
19 Primer: Razmotrimo jednostavan program. Konačna vrednost deljene promenljive x je ili 1 ili 2. binarysemaphore mutex(1); Thread1 Thread2 mutex.p(); mutex.p(); x = 1; x = 2; mutex.v(); mutex.p(); / / greška: treba da bude mutex.v(); (Ilustracija ReadWrite-sekvence i PV-sekvence) Moguća ReadWrite-sekvenca deljene promenljive x je: (1, 0, 0),(2, 1, 0). / / Iz Odeljka 2, format je(id niti, broj verzije, ukupno čitalaca) Ovo označava da x-u prva pristupila nit Thread1 a potom Thread2. Pošto Thread1 pristupiti x-u prva, PV-sekvenca za mutex mora biti: 1, 1, 2, 2 ukazuje da Thread1 obavlja svoj P i V operacije pre Thread2. Druga P operacija u Thread2 je greška. Ova P operacija će početi ali neće završiti i trebalo je da bude V operacija. SYN-sekvence za konkurentni program CP je kolekcija ReadWrite-sekvenci, PV-sekvenci, i LockUnlocksekvenci. Postoji po jedna sekvenca za svaku zajedničku promenljivu, semafor i bravu u programu. SYN-sekvenca za program u listingu sadrži ReadWrite-sekvencu za x i PV-sekvence za mutex: ((ReadWrite-sekvenca za x:(1,0,0),(2,1,0), PV-sekvenca za mutex:(1, 1, 2, 2)). Ovo je parcijalni redosled događaja, odnosno dešavanja na jednom objektu su(potpuno) uređena, ali redosled događaja između različitih objekata nije naveden.
20 SYN-sekvenca takođe može biti jedinstven totalno uređeni sled događaja svih sinhronizacionih objekata. Totalno uređena sekvenca događaja koja je u skladu sa gore delimično uređenom sekvencom je: 1,(1, 0, 0), 1, 2,(2, 1, 0), 2. U principu, mogu postojati dve ili više potpuno uređene sekvence koje su u skladu sa datim parcijalnim uređenjem pošto se dva istovremena događaja mogu pojaviti u ukupnom totalnom poretku u bilo kom redosledu. Definicija SYN-sekvence ima za cilj da uhvati značenje ponavljanja jednog izvršavanja programa drugi put. Pretpostavimo da, kada se program iznad izvršava: Thread2 izvršava mutex.p() i blokira jer je Thread1 je u kritičnoj sekciji. Tokom ponavljanja ovog izvršenja, pretpostavimo da Thread2 izvršava svoju prvu mutex.p() operaciju bez blokiranja, jer je Thread1 već izvršio svoje mutex.p() i mutex.v() operacije. Ova dva izvršavanja nisu identična, ali su oni dovoljno blizu? U oba izvršavanja: sekvenca završenih P() i V() operacija je ista konačna vrednost x je 2. Dakle, smatramo da drugo izvršavanje programa ponavlja prvo.
21 Praćenje i reprodukovanje jednostavne PV-sekvence i LockUnlock-sekvence Menjanje Metoda P() i V(). Praćenje: identifikator niti koja završava poziv metoda s.p() ili s.v() se beleži i čuva u trace datoteci za s. Reprodukcija: pretpostavimo da svaki semafor ima dozvolu, nazvanu PV-dozvola. Nit mora da poseduje semaforsku PV-dozvolu pre nego što izvede P() ili V() operaciju na tom semaforu. Redosled kojim nit prima semaforsku PV-dozvolu se zasniva na PV-sekvenci koja se reprodukuje. Nit zahteva i oslobađa semaforsku PV-dozvolu pozivom metoda requestpermit() i releasepermit(). void P() { if(replaymode) control.requestpermit(id); / / Kod za zaključavanje ovog semafora pojavljuje se ovde if(replaymode) control.releasepermit(); / * Ostatak tela P() * / if(tracemode) control.tracecompletep(id); / / Kod za otključavanje ovog semafora pojavljuje se ovde } public void final V() { if(replaymode) control.requestpermit(id); / / Kod za zaključavanje ovog semafora pojavljuje se ovde if(replaymode) control.releasepermit(); / * Ostatak tela za V() * / if(tracemode) control.tracecompletev(id); / / Kod za otključavanje ovog semafora pojavljuje se ovde }
22 Menjanje Metode lock() i unlock(). Implementacije metoda lock() i unlock() u klasi mutexlock su izmenjene baš kao metode P() i V(). Klasa mutexlock sadrži pozive requestpermit() i releasepermit() pre i posle operacije blokade u mutexlock. Pozivi tracecompletelock() i tracecompleteunlock() pojavljuju se na kraju njihovih kritičnih sekcija. Zastoji (deadlocks) i izuzeci: Kada se ponavljaju operacije koje proizvode deadlock, pozivajuća nit neće biti blokirana unutar tela operacije, već će biti blokirana na pozivu requestpermit() pre operacije. Događaji koji uključuju izuzetke koji se javljaju u toku izvršenja P, V, lock, ili unlock se ne ponavljaju. Ali trag ukazuje da bi izvršenje ovih operacija bacilo izuzetak, što je verovatno dovoljno da pomogne debagovanje programa.
23 Klasa kontrole praćenja/reprodukcije. Svaki semafor i brava povezani su sa kontrolnim objektom. Replay režim: kontrolni objekat ubacuje jednostavne SYN-sekvence na semaforu ili bravi i obrađuje pozive requestpermit() i releasepermit(). Trace režim: kontrolni objekat prikuplja sinhronizacione događaje koji se dešavaju i snima ih u trace fajlu. Kada nit pozove requestpermit() ili jedan od trace metoda, prosleđuje svoj identifikator (ID). C + + klase control prikazana je u listingu na sledećoj strani. Kada se kreira kontrolni objekat za semafor s, on čita jednostavnu PV-sekvencu s u vektor SYNsequence. Metod requestppermit(): Niti koje pokušavaju da izvrše operaciju van redosleda stavljaju se na čekanje u metodu requestppermit() na posebnom semaforu u nizu Threads. Nit koristi svoj ID da odredi na kom semaforu u nizu Threads da čeka. Metod releaseppermit(): povećava index da bi sledeća operacija u SYNsequence mogla da se dogodi. Ako je nit koja treba da izvrši sledeću operaciju blokirana u requestppermit(), biće probuđena.
24 class control { public: control() { / * Unos celobrojnih ID-eva u SYNsequence; inicijalizacija nizova threads i hasrequested * / } void requestpermit(int ID) { mutex.lock(); if(id!= SYNsequence [index]) {// nit ID treba da izvrši sledeći događaj? hasrequested [ID] = true; // Ne; postavi fleg da se zabeleži zahtev mutex.unlock(); threads[id].p();. // čekaj dozvolu hasrequested [ID] = false; // Izbriši fleg i izađi iz requestpermit } else mutex.unlock(); // Da, izlaz iz requestpermit. } void releasepermit() { mutex.lock(); ++index; if(index <SYNsequence.size()) {// Da li postoji još dešavanja za replay? // Da li je sledeća nit već tražila dozvolu? if(hasrequested [SYNsequence [index]]) threads[synsequence[index]].v(); // Da, probudi je. } mutex.unlock(); } void tracecompletep(int ID) {...} // snimanje celobrojnog IDa void tracecompletev(int ID) {...} // snimanje celobrojnog IDa private: // PV-sekvenca ili LockUnlock-sekvenca, niz celobrojnih IDeva vector SYNsequence; binarysemaphore* threads; // Svi semafori su inicijalizovani na 0 // hasrequested[i] je true ako je nit i zaustavljena u requestpermit(); init na false bool* hasrequested; int index = 0; // SYNsequence[index] je ID naredne niti koja treba da izvrši događaj mutexlock mutex; // napomena: ova brava se ne prati niti reprodukuje } (C++ klasa control za reprodukovanje PV-sekvenci i LockUnlock-sekvenci)
25 Da bismo ilustrovali rad kontrolora, razmotrimo ispravljenu verziju jednostavnog programa iz prvog primera. Thread1 Thread2 mutex.p(); mutex.p(); x = 1; x = 2; mutex.v(); mutex.v(); Pretpostavimo da je PV-sekvenca zabeležena tokom izvršenja ovog programa: 1, 1, 2, 2. Pretpostavimo da Thread2 pokuša da izvrši mutex.p() prvo pa poziva requestpermit(2) pre nego što Thread1 pozove requestpermit(1): Pošto je vrednost index-a 0 i vrednost SYNsequence[index] je 1 a ne 2, Thread2 blokira sebe u requestpermit() izvršavanjem Threads[2].P() Kada nit Thread1 najzad pozove requestpermit(1), biće joj dozvoljeno da izađe iz requestpermit() i izvrši svoju mutex.p() operaciju. Thread1 će zatim pozvati releasepermit(). Metod releasepermit() povećava index na 1 i proverava da li nit koja treba da izvrši sledeću P/V operaciju je već pozvala requestpermit(). Sledeća nit je SYNsequence[1], koji je 1. Thread1 nije zvao requestpermit() za sledeću operaciju, tako da se ništa dalje dešava u releasepermit(). Konačno Thread1 poziva requestpermit(1) da zahteva dozvolu da izvrši svoju mutex.v() operaciju. Thread1 dobija dozvolu, izvršava mutex.v() i poziva releasepermit(). Metod releasepermit() povećava index do 2 i zaključuje da je Thread2 nit koja izvršava sledeću P/V operaciju. Thread2, pošto je već pozvala requestpermit(), je i dalje blokirana u Threads[2].P(). Na to ukazuje vrednost hasrequested[2], koja je true. Zbog toga releasepermit() poziva Threads[2].V() Ovo omogućava Thread2 da izađe iz requestpermit() i obavi svoju mutex.p() operaciju. Thread2 će na kraju tražiti i dobiti dozvolu za svoju mutex.v() operaciju, čime se završava reprodukcija.
26 Detekcija zastoja Mrtvi zastoj (deadlock) definišemo kao situaciju u kojoj je jedna ili više niti postala zauvek blokirana. Neka CP bude konkurentni program koji sadrži niti koje koriste semafore i brave za sinhronizaciju. Pretpostavimo da postoji izvršenje CP koje odgovara SYN-sekvenci S, a na kraju S, postoji nit T koja zadovoljava sledeće uslove: T je blokirana zbog izvršenja P(), V(), ili lock() operacije. T će ostati zauvek blokirana, bez obzira na to šta drugi će uraditi ostale niti. Za nit T kaže se da je u mrtvom zastoju na kraju S, i za CP se kaže da ima mrtav zastoj. Zastoj u KP je globalni zastoj ako je svaka nit u CP ili blokirano ili završena, u suprotnom, to je lokalni zastoj. U operativnim sistemima, procesi traže resurse (npr., štampače i datoteke) i ulaze u stanja čekanja ako te resurse drže drugi procesi. Ako zahtevani resurs nikada ne može postati dostupan, onda procesi ne mogu izaći iz stanja čekanja i nastaje mrtav zastoj. Informacija o tome koji proces čeka na resurs koji drži drugi proces može se predstaviti na grafu čekanja na resurse (wait-for graph): grana iz čvora Pi ka Pj pokazuje da proces Pi čeka da proces Pj oslobodi resurs koji Pi potražuje. zastoj postoji u sistemu, ako i samo ako graf čekanja sadrži ciklus. Operativni sistem periodično poziva algoritam koji traži cikluse u grafu čekanja.
27 Detekcija zastoja korišćenjem wait-for grafa nije uvek primenljiva za konkurentne programe. Nit blokirana u P() operaciji, na primer, ne zna koje od ostalih niti mogu da je deblokiraju, pa je time relacija čekanja među nitima nepoznata. Drugi pristup: Pretpostavimo da do zastoja dolazi ako su sve niti u programu trajno blokirane. Pretpostavimo, takođe, da se od svih niti očekuje da jednom završe rad. Za otkrivanje zastoja, uvodi se brojač niti koji nisu završile svoj run() metod, i brojač trenutno blokiranih niti, i upoređuju se vrednosti ta dva brojača: numthreads brojač se uvećava kada nit počinje svoj run() metod i dekrementira kada nit završi svoj run() metod. blockedthreads brojač se uvećava kada se nit blokira u P(), V(), ili lock() opearciji i umanjuje kada se nit odblokira u toku V() ili unlock() operacije. blockedthreads brojač takođe treba da se ažurira u drugim blokirajućim metodima kao što join(). Ako su numthreads i blockedthreads brojači ikada jednaki(i ne-nula), onda su sve niti su blokirane, a mi pretpostavljamo da je došlo do zastoja. Ovaj pristup može da se koristi za otkrivanje globalnih zastoja, ali ne lokalne zastoje, jer zahteva da su sve neblokirane niti završene. Kada se otkrije zastoj, događaji koji dovode do zastoja mogu se pratiti i ponoviti koristeći metode opisane ranije.
28 Neke relacije čekanja među nitima mogu biti opisane wait-for grafom: nit blokirana u lock() operaciji, zna da nit koja poseduje bravu može da je odblokira. Tako je odnos čekanja među nitima i bravama poznat. kada je jedna nit pokuša da zaključa dve brave u jednom redosledu, a druga nit pokušava da ih zaključa u obrnutom redosledu, do zastoja može doći. takav zastoj će biti označen ciklusom u wait-for grafu. Detekcija zastoja je ugrađena u Java VM: Ova alatka se poziva preko prečice Ctrl + (za Linux ili Solaris operativni sistem) ili Ctrl-Pause/Break(za Microsoft Windows) na komandnoj liniji, dok aplikacija radi. Ako je aplikacija blokirana jer su dve ili više niti uključene u ciklus da dobiju bravu, prikazuje se spisak niti koje su uključene u zastoj. Primer import java.util.*; import java.util.concurrent.locks.*; public class Deadlock { public static void main(string[] args) { final Lock lock1 = new ReentrantLock(); final Lock lock2 = new ReentrantLock(); Thread t1 = new Thread() { public void run() { try{ lock1.lock(); sleep(1000); lock2.lock(); } catch(interruptedexception e) {} } }; Thread t2 = new Thread() { public void run() { try{ lock2.lock(); sleep(1000); lock1.lock(); } catch(interruptedexception e) {} } };
29 t1.start(); t2.start(); } } Found one Java-level deadlock: ============================= "Thread-1": waiting for ownable synchronizer 0x23cd2928, (a java.util.concurrent.locks.reentrantlock$nonfairsync), which is held by "Thread-0" "Thread-0": waiting for ownable synchronizer 0x23cd2950, (a java.util.concurrent.locks.reentrantlock$nonfairsync), which is held by "Thread-1" Ova alatka neće naći zastoj koji uključuje jednu ili više niti koje su trajno blokirane u monitoru, čekajući notify koji nikada ne dolazi, što je slično situaciji u kojoj je nit blokirana u P() operaciji čekajući V() operaciju koja nikada neće doći.
30 Testiranje dostižnosti (reachability testing) za semafore i brave Nedeterminističko testiranje je lako za sprovođenje, ali može biti vrlo neefikasno. Moguće je da će se neka ponašanja izvršavati mnogo puta, dok druga neće uopšte. Za jedno rešenje sa zastojem problema filozofa koji jedu (dining philosophers) sa pet filozofa: zastoj nije otkriven tokom 100 normalnih izvršavanja. posle ubacivanja nasumičnih kašnjenja, deadlock je detektovan u osamnaest od sto izvršavanja. za deset filozofa, deadlock je detektovan u samo četiri od stotinu izvršavanja. Kada se broj niti povećava, a time i ukupan broj mogućih ponašanja programa, očigledno postaje sve teže da se otkriju zastoji primenom nedeterminističkog testiranja. Osim toga, instrumentacija programa da se vrši praćenje i otkrivanje zastoja može stvoriti efekat sonde koji sprečava da se uoče neki propusti. Testiranje dostižnosti nam omogućava da ispita sva ponašanja jednog programa, ili barem onoliko različitih ponašanja, koliko je praktično, na "sistematski" način. Pod sistematski, misli se da se svaka SYN-sekvenca izvršava samo jednom i moguće je znati kada su sve SYNsekvence izvršene. Testiranje dostižnosti kombinuje nedeterminističko testiranje i reprizno izvršavanje programa.
31 Tokom testiranja dostižnosti, SYN-sekvenca generisana nedeterminističkim izvršavanjem programa prati se kao i obično. Trag izvršavanja snima ponašanje koje se zapravo dogodilo. Za trag možemo definisati alternativne ponašanja koji su mogle da se dese, ali nisu. Ova alternativna ponašanja nazivaju se "varijante utrke (race variants) u tragu. Reprodukovanje varijanti utrke u toku narednih test izvršavanja programa osigurava da se posmatra drugačije ponašanje od ponašavnja osnovnog traga. Slici je prikazan deo traga izvršavanja programa problem filozofa. Filozof 1 i filozof 2 trkaju se da pokupe deljeni štapić 2 (ili viljušku 2), pri čemu Filozof 1 završava svoju P() operaciju na štapiću 2 pre nego što filozof 2 može da završi svoju P() operaciju. U principu, postoji trka između poziva na P() ili V() operacije na istom semaforu ako ovi pozivi mogu biti završeni u drugačijem redosledu tokom drugog izvršenja (sa istim ulazom programa). Slika b prikazuje varijantu trke izvršenja na slici a. U ovoj varijanti trke, Filozof 2 osvaja trku ka štapiću 2 i pokupi ga pre nego što Filozof 1 može da ga zgrabi. Isprekidana strelica pokazuje da je filozof 1 pozvao P() operaciju za štapić 2, ali je nije završio u varijanti trke. Ovaj poziv će biti završen u izvršavanju koje reprodukuje (i produžava do završetka ili deadlocka) ovu varijantu.
32 U principu, varijanta trke predstavlja početni deo jedne SYN-sekvence. Testiranje dostižnosti koristi reprodukciju do tačke da se ostvare događaji u izabranoj varijanti trke, a zatim omogućava da program nastavi izvršavanje nedeterministički, tako da kompletna sekvenca može da se prati. Može postojati mnogo kompletnih SYN-sekvenci koje imaju datu varijantu trke na početku. Jedna od tih sekvenci će biti uhvaćena u nedeterminističkom delu izvršavanja. Kompletirana sekvenca može se analizirati da se izvede još varijanti trke, koje se mogu koristiti za generisanje još tragova, i tako dalje. Kada se replay primenjuje na varijantu trke na slici b: Filozof 1 i Filozof 2 će pokupiti svoje levo štapiće, što je deo scenarija zastoja u kojoj svi filozofi drže svoj levi štapić i čekaju svoj desni. Iako kompletni scenario zastoja ne mora odmah da se ostvari, testiranje dostižnosti obezbeđuje da se svaka moguća PV-sekvence programa za filozofe izvrši i tako otkrije zastoj.
PowerPoint Presentation
Java konkurentno programiranje Životni ciklus niti i problemi sinhronizacije resursa Multitasking Multithreading Životni ciklus niti http://www.roseindia.net/java/thread/lifecycle-of-threads.shtml Životni
ВишеTutoring System for Distance Learning of Java Programming Language
Deklaracija promenljivih Inicijalizacija promenljivih Deklaracija promenljive obuhvata: dodelu simboličkog imena promenljivoj i određivanje tipa promenljive (tip određuje koja će vrsta memorijskog registra
ВишеP11.3 Analiza zivotnog veka, Graf smetnji
Поједностављени поглед на задњи део компајлера Међурепрезентација (Међујезик IR) Избор инструкција Додела ресурса Распоређивање инструкција Инструкције циљне архитектуре 1 Поједностављени поглед на задњи
ВишеMicrosoft Word - 11 Pokazivaci
Pokazivači U dosadašnjem radu smo imali prilike da koristimo promenljive koje smo deklarisali na početku nekog bloka. Prilikom deklaracije promenljiva dobija jedinstveni naziv i odgovarajući prostor u
ВишеP9.1 Dodela resursa, Bojenje grafa
Фаза доделе ресурса Ова фаза се у литератури назива и фазом доделе регистара, при чему се под регистрима подразумева скуп ресурса истог типа. Додела регистара променљивама из графа сметњи се обавља тзв.
ВишеУвод у организацију и архитектуру рачунара 1
Увод у организацију и архитектуру рачунара 2 Александар Картељ kartelj@matf.bg.ac.rs Напомена: садржај ових слајдова је преузет од проф. Саше Малкова Увод у организацију и архитектуру рачунара 2 1 Секвенцијалне
ВишеОрт колоквијум
II колоквијум из Основа рачунарске технике I - 27/28 (.6.28.) Р е ш е њ е Задатак На улазе x, x 2, x 3, x 4 комбинационе мреже, са излазом z, долази четворобитни BCD број. Ако број са улаза при дељењу
ВишеMicrosoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]
Programski jezik C organizacija izvornog programa Prevođenje Pisanje programa izvorni program Prevođenje programa izvršni program Izvršavanje programa rezultat Faze prevođenja Pretprocesiranje Kompilacija
ВишеClassroom Expectations
АТ-8: Терминирање производно-технолошких ентитета Проф. др Зоран Миљковић Садржај Пројектовање флексибилних ; Математички модел за оптимизацију флексибилних ; Генетички алгоритми у оптимизацији флексибилних
ВишеPROMENLJIVE, TIPOVI PROMENLJIVIH
PROMENLJIVE, TIPOVI PROMENLJIVIH Šta je promenljiva? To je objekat jezika koji ima ime i kome se mogu dodeljivati vrednosti. Svakoj promenljivoj se dodeljuje registar (memorijska lokacija) operativne memorije
ВишеОрт колоквијум
Испит из Основа рачунарске технике - / (6.6.. Р е ш е њ е Задатак Комбинациона мрежа има пет улаза, по два за број освојених сетова тенисера и један сигнал који одлучује ко је бољи уколико је резултат
ВишеZbirka resenih zadataka iz arhitekture racunara
Ј. ЂОРЂЕВИЋ, З. РАДИВОЈЕВИЋ, М. ПУНТ, Б. НИКОЛИЋ, Д. МИЛИЋЕВ, Ј. ПРОТИЋ, А. МИЛЕНКОВИЋ АРХИТЕКТУРА И ОРГАНИЗАЦИЈА РАЧУНАРА ПРЕКИДИ, МАГИСТРАЛА И УЛАЗ/ИЗЛАЗ ЗБИРКА РЕШЕНИХ ЗАДАТАКА Београд 2013. i САДРЖАЈ
Више06 Poverljivost simetricnih algoritama1
ЗАШТИТА ПОДАТАКА Симетрични алгоритми заштите поверљивост симетричних алгоритама Преглед биће објашњено: коришћење симетричних алгоритама заштите како би се заштитила поверљивост потреба за добрим системом
ВишеKDP
Региони Региони Програмска парадигма за приступ критичној секцији Увођење посебне синтаксе за експлицитно означавање критичних секција Обезбеђивање међусобног искључивања процеса Условни критични регион
ВишеAlgoritmi i arhitekture DSP I
Univerzitet u Novom Sadu Fakultet Tehničkih Nauka Katedra za računarsku tehniku i međuračunarske komunikacije Algoritmi i arhitekture DSP I INTERNA ORGANIACIJA DIGITALNOG PROCESORA A OBRADU SIGNALA INTERNA
ВишеMicrosoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]
Osnove programiranja Funkcije - Metode Prenos parametara Po vrednosti Po referenci Po izlazu Sadržaj Opseg važenja promenljive u drugim strukturama Rekurzije Prenos parametara Metoda može vratiti isključivo
ВишеTutoring System for Distance Learning of Java Programming Language
Niz (array) Nizovi Niz je lista elemenata istog tipa sa zajedničkim imenom. Redosled elemenata u nizovnoj strukturi je bitan. Konkretnom elementu niza pristupa se preko zajedničkog imena niza i konkretne
ВишеMicrosoft PowerPoint - C-4-1
Pregled iskaza u C-u Izraz; Iskaz dodele, serijski komponovani iskaz; blok Uslovni iskazi i izrazi; složeno grananje Iterativni iskazi Iskaz dodele Promena vrednosti a = Ψ; Izračunava vrednost izraza Ψ,
ВишеFunkcije predavač: Nadežda Jakšić
Funkcije predavač: Nadežda Jakšić funkcije delovi programa koji izvršavaju neki zadatak, celinu; dele na ugrađene, korisničke i main funkciju ugrađene funkcije printf,scanf... da bi se one izvršile potrebno
ВишеInženjering informacionih sistema
Fakultet tehničkih nauka, Novi Sad Inženjering informacionih sistema Dr Ivan Luković Dr Slavica Kordić Nikola Obrenović Milanka Bjelica Dr Jelena Borocki Dr Milan Delić UML UML (Unified Modeling Language)
ВишеJEZGRO OPERATIVNOG SISTEMA I UPRAVLJANJE PROCESIMA 1. Šta je jezgro, a šta proces? Jezgro (nukleus ili kernel) je osnovni deo svakog operativnog siste
JEZGRO OPERATIVNOG SISTEMA I UPRAVLJANJE PROCESIMA 1. Šta je jezgro, a šta proces? Jezgro (nukleus ili kernel) je osnovni deo svakog operativnog sistema. U hijerarhijskom (slojevitom) modelu, jezgro je
ВишеELEKTROTEHNIČKI FAKULTET, UNIVERZITET U BEOGRADU KATEDRA ZA ELEKTRONIKU UVOD U ELEKTRONIKU - 13E041UE LABORATORIJSKA VEŽBA Primena mikrokontrolera
ELEKTROTEHNIČKI FAKULTET, UNIVERZITET U BEOGRADU KATEDRA ZA ELEKTRONIKU UVOD U ELEKTRONIKU - 13E041UE LABORATORIJSKA VEŽBA Primena mikrokontrolera CILJ VEŽBE Cilj ove vežbe je da se studenti kreiranjem
ВишеPages from 5527 lite guick guide from PDF - prevod_IO_FC - Serbian.doc
Pregled LCD ekran 1. Poklopac baterije 2. Taster za blokiranje 3. Poklopac USB konektora 4. USB konektor 5. Uključivanje/isključivanje i Reprodukcija/pauziranje 6. Jačina zvuka 7. MENI 8. Fn A B 9. REC
ВишеMicrosoft PowerPoint - OOPpredavanja05 [Compatibility Mode]
OBJEKTNO ORIJENTISANO PROGRAMIRANJE PREDAVANJE 5 OBJEKTI U INTERAKCIJI Miloš Kovačević Đorđe Nedeljković 1 /25 OSNOVNI KONCEPTI - Abstrakcija - Modularizacija - Objektne reference - Klasni dijagram - Objektni
ВишеPostavka 12: Uzročnost 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch
Postavka 12: Uzročnost 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch Motivacija za logičke satove 2 U asinhronim sistemima, često ne
ВишеMicrosoft Word - AIDA2kolokvijumRsmerResenja.doc
Konstrukcija i analiza algoritama 2 (prvi kolokvijum, smer R) 1. a) Konstruisati AVL stablo od brojeva 100, 132, 134, 170, 180, 112, 188, 184, 181, 165 (2 poena) b) Konkatenacija je operacija nad dva skupa
ВишеRazvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić
Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić projektni zadatak projektovanje programa (algoritmi) pisanje programskog koda, izvorni kod,
ВишеPostavka 2: Osnovni graf algoritmi 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch
Postavka 2: Osnovni graf algoritmi 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch A1 Slanje svima preko fiksiranog razapinjućeg stabla
ВишеGrafovi 1. Posmatrajmo graf prikazan na slici sa desne strane. a) Odrediti skup čvorova V i skup grana E posmatranog grafa. Za svaku granu posebno odr
Grafovi 1. Posmatrajmo graf prikazan na slici sa desne strane. a) Odrediti skup čvorova V i skup grana E posmatranog grafa. Za svaku granu posebno odrediti njene krajeve. b) Odrediti sledeće skupove: -
Више1, 2, 3, кодирај! Активности циклуса 4 Пројект «Аркадне игре» - Час 6: Програмирање падања новчића (наставак) Доминантна дисциплина Математикa Резиме
1, 2, 3, кодирај! Активности циклуса 4 Пројект «Аркадне игре» - Час 6: Програмирање падања новчића (наставак) Доминантна дисциплина Математикa Резиме Програмирање добијања награда омогућује ученицима да
ВишеDijagrami sekvenci
Dijagrami sekvenci Izrada dijagrama sekvenci Dijagram sekvenci koristi se za specifikaciju vremenskih zahteva u opisu složenih scenarija opis toka poruka između objekata kojima se realizuje odgovarajuća
ВишеSlide 1
predmet Inženjerska informatika Operativni sistem dr Anica Milošević Koji operativni sistemi postoje? Microsoft Windows Linux Suse Red Hat Ubuntu Unix 26.1.2018. 2 Šta je Windows operativni sistem? Operativni
ВишеGenerated by Foxit PDF Creator Foxit Software For evaluation only. Operativni sistem U računarstvu, operativni sistem (OS
Operativni sistem U računarstvu, operativni sistem (OS) je kompleksan programski sistem koji kontroliše i upravlja uređajima i računarskim komponentama i obavljanje osnovne sistemske radnje. Operativni
ВишеRačunarske mreže Čas 2 Ivana Tanasijević Matematički fakultet, Beograd 1
Računarske mreže Čas 2 Ivana Tanasijević e-mail: ivana@matf.bg.ac.rs Matematički fakultet, Beograd 1 Utvrđivanje gradiva sa prethodnog časa: popunjavanje adresne strukture, kreiranje soketa, privezivanje
ВишеMicrosoft PowerPoint - Timer0 16F887.ppt [Compatibility Mode]
TAJMERI I BROJAČI: PIC16F887 PIC 16F887 mikrokontroler ima tri tajmera/brojača: 8 - bitni tajmer/brojač (registar TMR0) 16 - bitni tajmer/brojač (registar TMR1H TMR1L) 8 - bitni tajmer/brojač (registar
ВишеUniverzitet u Nišu Prirodno-Matematički fakultet Marko D. Petković OSNOVI KONKURENTNOG PROGRAMIRANJA SA ZBIRKOM ZADATAKA Niš, 2010
Univerzitet u Nišu Prirodno-Matematički fakultet Marko D. Petković OSNOVI KONKURENTNOG PROGRAMIRANJA SA ZBIRKOM ZADATAKA Niš, 2010 Dr Marko D. Petković, docent Prirodno-Matematičkog fakulteta u Nišu Godina
ВишеОрт колоквијум
I колоквијум из Основа рачунарске технике I - надокнада СИ - 008/009 (10.05.009.) Р е ш е њ е Задатак 1 a) Пошто постоје вектори на којима се функција f не јавља и вектори на којима има вредност један,
ВишеPowerPoint Presentation
Prof. dr Pere Tumbas Prof. dr Predrag Matkovid Identifikacija i izbor projekata Održavanje sistema Inicijalizacija projekata i planiranje Implementacija sistema Dizajn sistema Analiza sistema Faze životnog
ВишеFunkcije predavač: Nadežda Jakšić
Funkcije predavač: Nadežda Jakšić do sada su korišćene "gotove" funkcije iz standardnih biblioteka (cin, cout...) one su pozivane iz main funkcije koja je glavna funkcija u programu jer izvršavanje programa
ВишеMicrosoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]
Организација извршног програма (Марић, Јаничић: Програмирање 1, 9.3.3) Извршавање програма После успешног превођења (претпроцесирања, компилације, повезивања) програм може да се изврши Извршавање се захтева
ВишеTest ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime
Test ispravio: () () Ukupan broj bodova:. veljače 04. od 3:00 do 4:00 Ime i prezime Razred Škola Županija Mentor Sadržaj Upute za natjecatelje... Zadaci... Upute za natjecatelje Vrijeme pisanja: 60 minuta
ВишеUVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke o
UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke od tih jezičkih razlika su: Java kod se prevodi u.class
ВишеTutoring System for Distance Learning of Java Programming Language
Obeležene petlje Obeležene petlje Obeležavanje petlje nekim identifikatorom omogućava da se programski tok usmeri na mesto u programu specificirano tim identifikatorom. Ako se iza naredbi break ili continue
ВишеШкола Ј. Ј. Змај Свилајнац МЕСЕЧНИ ПЛАН РАДА ЗА СЕПТЕМБАР Школска 2018 /2019. Назив предмета: Информатика и рачунарство Разред: 5. Недељни број часова
Школа Ј. Ј. Змај Свилајнац МЕСЕЧНИ ПЛАН РАДА ЗА СЕПТЕМБАР јединице 1. 1. Увод у информатику и рачунарство 1. 2. Oрганизација података на рачунару 1. 3. Рад са текстуалним документима 1. 4. Форматирање
Више08 RSA1
Преглед ЗАШТИТА ПОДАТАКА Шифровање јавним кључем и хеш функције RSA алгоритам Биће објашњено: RSA алгоритам алгоритам прорачунски аспекти ефикасност коришћењем јавног кључа генерисање кључа сигурност проблем
ВишеMicrosoft Word - privitak prijedloga odluke
Informatički sustav za prikupljanje, simulaciju i prikaz podataka o cijenama javnih komunikacijskih usluga (dalje: Sustav e-tarife) Zagreb, HRVATSKA AGENCIJA ZA POŠTU I ELEKTRONIČKE KOMUNIKACIJE Roberta
ВишеMicrosoft Word - pravila RTGS-precišcen tekst2007 (2).doc
Г.бр. 1515 од 18. маја 2004.год., Г.бр. 1968 од 23. јуна 2004. год., Г.бр. 1213 од 11.априла 2005.год., Г.бр. 6259 од 30.априла 2007. год., Г.бр. 13117 од 18. децембра 2007. год. На основу тачке 5. став
ВишеP3.2 Paralelno programiranje 2
Paralelno programiranje II Analiza zavisnosti Struktura algoritma Pomoćne strukture Komunikacioni šabloni 1 4 Koraka paralelizacije programa 2 Evo algoritma. Gde je paralelizam? Dekompozicija zadataka
ВишеProgramiranje za UNIX Okruženje unix procesa
Programiranje za UNIX Okruženje unix procesa Sadržaj Memorijska slika UNIX procesa Argumenti naredbenog retka i varijable okruženja Životni ciklus procesa Izlazni status procesa 2 Memorijska slika UNIX
ВишеPowerPoint Presentation
Metode i tehnike utvrđivanja korišćenja proizvodnih kapaciteta Metode i tehnike utvrđivanja korišćenja proizvodnih kapaciteta Sa stanovišta pristupa problemu korišćenja kapaciteta, razlikuju se metode
ВишеSRV_1_Problematika_real_time_sistema
SISTEMI REALNOG VREMENA Vanr.prof. Dr. Lejla Banjanović-Mehmedović www.lejla-bm.com.ba Mehmedović 1 Sadržaj predmeta 1. Problematika real-time sistema. Klasifikacije sistema u realnom vremenu. 2. Aplikacije
ВишеMicrosoft PowerPoint - vezbe 4. Merenja u telekomunikacionim mrežama
Merenja u telekomunikacionim mrežama Merenja telefonskog saobraćaja Primer 1 - TCBH Na osnovu najviših vrednosti intenziteta saobraćaja datih za 20 mernih dana (tabela), pomoću metode TCBH, pronaći čas
ВишеVEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr
VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstrirana upotreba konstruktora, svojstava, metoda klase,
ВишеP2.1 Projektovanje paralelnih algoritama 1
Projektovanje paralelnih algoritama I Uvod Osnove dinamičke paralelizacije 1 Primer: Fibonačijev niz Primer rekurz. računanja Fibonačijevih brojeva: F 0 = 0; F 1 = 1; F i = F i -1 + F i -2 za i 2 Algoritam
ВишеUniverzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br
Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Brkić SI 29/15 Zrenjanin 2018. Softversko inženjerstvo
ВишеNAPOMENA: Studenti na ispit donose kod urađenog zadatka
Пројекат из предмета Интернет програмирање за августовски и септембарски испитни рок школске 2018/19. године Коришћењем PHP технологије, технологије AJAX и MySQL базе података, реализовати следећу веб
ВишеОрт колоквијум
Задатак 1 I колоквијум из Основа рачунарске технике I - надокнада - 008/009 (16.05.009.) Р е ш е њ е a) Пошто постоје вектори на којима се функција f не јавља и вектори на којима има вредност један, лако
Више3.Kontrlne (upravlja~ke) strukture u Javi
Објектно орјентисано програмирање Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ kartelj@matf.bg.ac.rs Низови у програмском језику Јава Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ
ВишеProgramiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan
Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan realan broj od 0 i 1. Na standardni izlaz ispisati
ВишеMicrosoft PowerPoint - Topic02 - Serbian.ppt
Tema 2 Kriterijumi kvaliteta za softverske proizvode DAAD Project Joint Course on Software Engineering Humboldt University Berlin, University of Novi Sad, University of Plovdiv, University of Skopje, University
ВишеPowerPoint Presentation
+ Fakultet organizacionih nauka Upravljanje razvojem IS MSc Ana Pajić Simović ana.pajic@fon.bg.ac.rs ANALIZA POSLOVNIH PROCESA BUSINESS PROCESS MANAGEMENT (BPM) PROCESS MINING + Business Process Management
ВишеRačunarski softver Da bi računarski sistem mogao da radi, pored hardvera mora biti opremljen i odgovarajućim programima koji će njime upravljati.ova k
Računarski softver Da bi računarski sistem mogao da radi, pored hardvera mora biti opremljen i odgovarajućim programima koji će njime upravljati.ova komponenta računarskog sistema se zove SOFTVER(software
ВишеDocument ID / Revision : 0419/1.1 ID Issuer Sustav (sustav izdavatelja identifikacijskih oznaka) Upute za registraciju gospodarskih subjekata
ID Issuer Sustav (sustav izdavatelja identifikacijskih oznaka) Upute za registraciju gospodarskih subjekata Gospodarski subjekti Definicija: U skladu s Direktivom 2014/40/EU gospodarski subjekt svaka
ВишеZadatak T=5: Jedinica WBSD propušta vred Potiče iz polja Rwb.LMD Signal Rwb.WRLMD izaziva propuštanje ove vrednosti 2. Vrednost 0000
Zadatak 2.1 1. T=5: Jedinica WBSD propušta vred 0000 0003 Potiče iz polja Rwb.LMD Signal Rwb.WRLMD izaziva propuštanje ove vrednosti 2. Vrednost 0000 0003 koja je pročitana u taktu 5 (prethodno pitanje)
ВишеMicrosoft PowerPoint - Topic02 - Serbian.ppt
Tema 2 Kriterijumi kvaliteta za softverske proizvode DAAD Project Joint Course on Software Engineering Humboldt University Berlin, University of Novi Sad, University of Plovdiv, University of Skopje, University
ВишеRačunarski praktikum I - Vježbe 09 - this, static
Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 09 - this, static v2018/2019. Sastavio: Zvonimir Bujanović Pokazivač this Kako funkcija članica
ВишеMicrosoft PowerPoint - jkoren10.ppt
Dickey-Fuller-ov test jediničnog korena Osnovna ideja Različite determinističke komponente Izračunavanje test-statistike Pravilo odlučivanja Određivanje broja jediničnih korena Algoritam testiranja Prošireni
Више6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe
6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe, očekuje se da su koordinate celobrojne. U slučaju
ВишеProblemi zadovoljavanja ogranicenja.
I122 Osnove umjetne inteligencije Tema:. 7.1.2016. predavač: Darija Marković asistent: Darija Marković 1 I122 Osnove umjetne inteligencije. 2/26 (PZO) Problem zadovoljavanja ograničenja sastoji se od 3
ВишеVezbe_AOR1_2014_V1.0
АРХИТЕКТУРА И ОРГАНИЗАЦИЈА РАЧУНАРА 1 Верзија 2014 1.0 САДРЖАЈ Садржај... 3 Кеш меморија (Cache Memory)... 5 Задатак 1.... 5 Задатак 2.... 6 Задатак 3.... 9 Задатак 4.... 12 Задатак 5.... 15 Задатак 6....
ВишеПрограмирај!
Листе Поред појединачних вредности исказаних бројем или ниском карактера, често је потребно забележити већи скуп вредности које су на неки начин повезане, као, на пример, имена у списку путника у неком
ВишеMicrosoft PowerPoint - 10 PEK EMT Logicka simulacija 1 od 2 (2012).ppt [Compatibility Mode]
ij Cilj: Dobiti što više informacija o ponašanju digitalnih kola za što kraće vreme. Metod: - Detaljni talasni oblik signala prikazati samo na nivou logičkih stanja. - Simulirati ponašanje kola samo u
ВишеPowerPoint Presentation
Tehnička škola 9. maj Bačka Palanka Programiranje III razred Tok izvršavanja programa Tok izvršavanja programa Dosadašnji kod se izvršavao praktično linearno. Nije postojala nikakva uslovna ili brojačka
ВишеKATALOG ZNANJA IZ INFORMATIKE
KATALOG ZNANJA IZ INFORMATIKE Nacionalni savjet za obrazovanje je na 27. sjednici održanoj 17. marta 2014. godine utvrdio izmjene predmetnoga programa INFORMATIKA za I razred gimnazije. Na zahtijev Pedagoško-psihološke
ВишеMicrosoft PowerPoint - DS-1-16 [Compatibility Mode]
Ekonometrija 1-D Analiza vremenskih serija Predavač: Zorica Mladenović, zorima@eunet.rs, http://avs.ekof.bg.ac.rs kabinet: 414 1 Struktura predmeta Izučavaju se dve oblasti: Analiza vremenskih serija Analiza
ВишеLAB PRAKTIKUM OR1 _ETR_
UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET STUDIJSKI PROGRAM: ELEKTRONIKA, TELEKOMUNIKACIJE I RAČUNARI PREDMET: OSNOVE RAČUNARSTVA 1 FOND ČASOVA: 2+1+1 LABORATORIJSKA VJEŽBA BROJ 1 NAZIV: REALIZACIJA
ВишеРачунарска интелигенција
Рачунарска интелигенција Генетско програмирање Александар Картељ kartelj@matf.bg.ac.rs Ови слајдови представљају прилагођење слајдова: A.E. Eiben, J.E. Smith, Introduction to Evolutionary computing: Genetic
ВишеPojačavači
Programiranje u fizici Prirodno-matematički fakultet u Nišu Departman za fiziku dr Dejan S. Aleksić Programiranje u fizici dr Dejan S. Aleksić, vanredni profesor Kabinet 307 (treći sprat), lab. za elektroniku
ВишеProgramiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj
Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, te službeni šalabahter. Kalkulatori, mobiteli, razne neslužbene tablice, papiri i sl., nisu dozvoljeni! Sva rješenja napišite
ВишеLogicko projektovanje racunarskih sistema I
PRIMERI SA PREDAVANJA 17 Beta asembler Zadatak 1. Posmatrajmo sledeću funkciju napisanu u programskom jeziku C, za računanje najvećeg zajedničkog delioca dva pozitivna cela broja: int gcd(int a, int b)
ВишеKORISNIČKE UPUTE APLIKACIJA ZA POTPIS DATOTEKA
KORISNIČKE UPUTE APLIKACIJA ZA POTPIS DATOTEKA SADRŽAJ 1. UVOD... 3 1.1. Cilj i svrha... 3 1.2. Područje primjene... 3 2. POJMOVI I SKRAĆENICE... 4 3. PREDUVJETI KORIŠTENJA... 5 4. PREGLED APLIKACIJE...
ВишеProjektna dokumentacija Boostowski - mobile
Projektna dokumentacija Boostowski - mobile OPIS BUDUĆEG PROCESA - MOBILNA APLIKACIJA 00 Dobrodošli Ekran dobrodošlice je prvi ekran koji se prikazuje nakon ulaska u mobilnu aplikaciju. Na njemu je ispisana
ВишеMicrosoft PowerPoint - Strukturni dijagrami, Gantogram - Planiranje [Compatibility Mode]
+ Metode i tehnike planiranja projekta + Projektne strukture + Tehnike struktuiranja projekta Breakdow strukture strukture za dekomponovanje Matrice WBS: Project Work Breakdown Structure OBS: Organization
ВишеMicrosoft PowerPoint - Pred12-13-DistribuiraneBP [Compatibility Mode]
DISTRIBUIRANE BAZE PODATAKA Gordana Pavlović-Lažetić Matematički fakultet, Beograd šk. 2017/18. 2/78 Distribuirane baze podataka Distribuirane baze podataka Sistemi za upravljanje distribuiranim bazama
ВишеMicrosoft Word - pr.o j.n.-web MC-prav.doc
На основу члана 124. став 1. Закона о јавним набавкама («Службени гласник РС» бр. 39/02) и члана 20.1.Статута Машинског факултета Универзитета у Београду, декан Машинског факултета доноси ПРАВИЛНИК О ДOДЕЛИ
ВишеSELECT statement basic form
NAZIV OBJEKTA ZNANJA Uvod u JQuery PROLOG Autor * Katarina Kaplarski Klasifikacija * Težina * Osnovni nivo Ključne reči * Ko sluša * Student OAS Trajanje * Komentari autora SADRŽAJ Apstrakt Cilj * Uvodne
ВишеKombinatorno testiranje
Kombinatorno testiranje Uvod Na ponašanje aplikacije utiče puno faktora, npr. ulazne vrednosti, konfiguracije okruženja. Tehnike kao što je podela na klase ekvivalencije ili analiza graničnih vrednosti
ВишеCelobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: min c T x Ax = b x 0 x Z n Gde pretpostavljamo da je A celobrojna matrica
Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: min c T x Ax = b x 0 x Z n Gde pretpostavljamo da je A celobrojna matrica dimenzije m n, b Z m, c Z n. Takođe, očekuje se da
ВишеNACRT
BOSNA I HERCEGOVINA БОСНА И ХЕРЦЕГОВИНА Brčko distrikt BiH Брчко дистрикт БиХ SKUPŠTINA СКУПШТИНА BRČKO DISTRIKTA BiH БРЧКО ДИСТРИКТА БиХ Mladena Maglova 2, 76100 Brčko distrikt BiH, telefon i faks: 049/215-516
ВишеFAMILY SAFETY - PORODIČNA BEZBJEDNOST Program Family safety veoma je koristan za ograničavanje sadržaja i aplikacija koje učenici mogu koristiti na šk
FAMILY SAFETY - PORODIČNA BEZBJEDNOST Program Family safety veoma je koristan za ograničavanje sadržaja i aplikacija koje učenici mogu koristiti na školskim računarima. Potpuno je besplatan, tako da ga
ВишеR u z v e l t o v a 5 5, B e o g r a d, t e l : ( ) , m a i l : c o n t a c p s i t. r s, w w w. p s i t. r s
UPUTSTVO ZA BRZO UMREŽAVANJE PROGRAMA MPP2 Da bi program MPP2 radio u mrežnom okruženju po sistemu klijent-server, potrebno je da se na računarima koji su mrežno povezani instalira: serverska verzija programa
ВишеOPERATIVNI SISTEMI
OPERATIVNI SISTEMI Pojam i principi rada operativnog sistema Evolucija operativnih sistema Vrste usluga koje obezbeđuje operativni sistem Upravljanje računarskim resursima 1 Operativni sistem Operativni
ВишеR u z v e l t o v a 5 5, B e o g r a d, t e l : , e - m a i l : p r o d a j p s i t. r s, w w w. p s i t. r s
R u z v e l t o v a 5 5, 1 1 0 0 0 B e o g r a d, t e l : + 3 8 1 0 1 1 7 8 5 0 3 6 1, e - m a i l : p r o d a j a @ p s i t. r s, w w w. p s i t. r s Instalacija izmena i dopuna programa MPP2 Izmene i
ВишеDISKRETNA MATEMATIKA
DISKRETNA MATEMATIKA Kombinatorika Permutacije, kombinacije, varijacije, binomna formula Ivana Milosavljević - 1 - 1. KOMBINATORIKA PRINCIPI PREBROJAVANJA Predmet kombinatorike je raspoređivanje elemenata
ВишеMicrosoft PowerPoint - 12-Funkcije_1.ppt [Compatibility Mode]
Osnove programiranja Funkcije - Metode http://www.introprogramming.info/english-intro-csharp-book/read-online/ Sadržaj Funkcije Metode Definisanje Pozivanje Povratne vrednosti Parametri Metode (1) Metoda
ВишеProgramski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk
Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijski program: Informacioni inženjering Informacioni inženjering 1 Rekurzivne funkcije Binarna stabla Informacioni
ВишеРЕПУБЛИКА СРБИЈА МИНИСТАРСТВО ПРИВРЕДЕ ДИРЕКЦИЈА ЗА МЕРЕ И ДРАГОЦЕНЕ МЕТАЛЕ Београд, Мике Аласа 14, ПП: 34, ПАК: телефон: (011)
РЕПУБЛИКА СРБИЈА МИНИСТАРСТВО ПРИВРЕДЕ ДИРЕКЦИЈА ЗА МЕРЕ И ДРАГОЦЕНЕ МЕТАЛЕ 11000 Београд, Мике Аласа 14, ПП: 34, ПАК: 105 305 телефон: (011) 32-82-736, телефакс: (011) 21-81-668 Именовано тело број И
ВишеQFD METODA – PRIMER
QFD METODA - PRIMER PROBLEM: U kompaniji X koja se bavi izradom kompjuterskih softvera uočen je pad prodaje konkretnog softvera - Softver za vođenje knjigovodstva. Kompanija X je raspolagala sa jednom
ВишеLogičke izjave i logičke funkcije
Logičke izjave i logičke funkcije Građa računala, prijenos podataka u računalu Što su logičke izjave? Logička izjava je tvrdnja koja može biti istinita (True) ili lažna (False). Ako je u logičkoj izjavi
ВишеUvod u računarstvo 2+2
Programiranje 2 doc.dr.sc. Goranka Nogo PMF Matematički odsjek, Zagreb Kontakt ured: 228, drugi kat e-mail: nogo@math.hr konzultacije: četvrtak, 12:00-14:00 petak, 11:00-12:00 neki drugi termin, uz prethodni
Више