Sinhronizacija procesa

Size: px
Start display at page:

Download "Sinhronizacija procesa"

Transcription

1 Sinhronizacija procesa Procesi često moraju međusobno komunicirati. Za procese smo rekli da su kooperativni ako utiču ili na njih utiču drugi procesi. Oni mogu, ili direktno dijeliti logički adresni prostor, dakle kôd i podatke, ili im je dozvoljeno da dijele podatke preko fajlova ili poruka. Međutim, konkurentni pristup djeljivim podacima može rezultirati nekonzistentnošću. Preporučljivo je da komunikacija između procesa bude dobro struktuirana tako da se ne koriste prekidi. U kompjuterskoj teoriji termin komunikacije između procesa poznat je pod nazivom međuprocesna komunikacija (InterProcess Comunication ICP). Kada je riječ o ICP postoje tri pitanja na koje se mora dati odogovor. Prvo pitanje implicitno je postavljeno u samom nazivu termina: kako jedan proces prosljeđuje informaciju drugom. Prošli put smo vidjeli da se u savremenim operativnim sistemima najčešće koriste tehnike dijeljenja memorije i prosljeđivanja poruka. Međutim, dali smo samo opći opis tehnika bez detaljnijeg upištanja u problematiku. Drugo pitanje se tiče osiguranja da dva ili više procesa ne stanu jedan drugom na put. Na primjer, kod rezervacije avionskih karata, dva procesa pokušavaju ugrabiti zadnje slobodno mjesto u avionu za različite putnike. Treće pitanje se tiče pravilnog uređivanja kad su prisutne zavisnosti: ako proces A proizvodi podatke a proces B ih ispisuje, on mora čekati dok A ne proizvede neke podatke kako bi mogao početi sa ispisom. Također, veoma važno je napomenuti da se gornja pitanja tiču i niti. Prvo je pitanje (prosljeđivanje informacija) je jednostavno za niti istog procesa jer dijele isti adresni prostor. Što se tiče niti različitih procesa, komuniciraju na isti način kao da se radi o različitim procesima. Međutim, druga dva pitanja kod niti izazivaju iste probleme kao i kod procesa, ali se primjenjuju i ista rješenja. S druge strane, u jednoprocesorskom sistemu sa multiprogramiranjem, procesi se prepliću u vremenu da bi se stvorio privid istovremenog izvršavanja. Iako to zapravo nije stvarno paralelno izvršavanje, i mada se gubi vrijeme na mijenjanje procesa koji se izvršavaju, multiprogramiranjem se povećava efikasnost rada. Problemi proističu iz toga što se relativna brzina izvršavanja procesa ne može predvidjeti jer zavisi od aktivnosti drugih procesa, od načina na koji operativni sistem radi sa prekidima i od politike raspoređivanja procesa. U sistemu sa više procesora, osim što je izvršavanje procesa moguće preplitati, oni se mogu i preklapati tokom izvršavanja. Na prvi pogled, čini se da su preplitanje i preklapanje potpuno različiti tipovi izvršavanja i da zbog toga prouzrokuju drugačije probleme. Međutim, obje tehnike se mogu posmatrati kao primjeri konkurentne obrade, što znači da su problemi isti. Zato, kad se budu objašnjavali problemi koji proističu iz istovremenog izvršavanja procesa u sistemima sa jednim procesorom, postaće jasno da se isti problemi pojavljuju i u multiprocesorskim sistemima. Pored toga, posljedica konkurentnog pristupa zajedničkim podacima može da bude nekonzistentnost tih podataka. Na primjer, zamislimo slučaj u kome dva procesa žele da sačuvaju neku vrijednost na istoj memorijskoj lokaciji. Operativni sistem mora da obezbijedi mehanizme kojima će sprečiti konkurentan pristup procesa istoj lokaciji. Drugačije rečeno, operativni sistem mora obezbijediti mehanizme kojima se rješava problem usklađivanja ili sinhronizacije procesa. 1

2 Stanje trke U nekim operativnim sistemima, procesi mogu dijeliti zajedničko skladište podataka koje, svaki od njih, može čitati ili u njega upisivati. Ovaj prostor može biti u glavnoj memoriji ili može biti djeljivi fajl. U svakom slučaju, lokacija djeljive memorije ne mijenja prirodu međuprocesne komunikacije kao ni problema koji se pri komunikaciji javljaju. Za razumjevanje međuprocesne komunikacije i problema koji se javljaju, razmotrićemo sljedeća dva primjera. Razmotrimo prvo tzv. usmjerivač ispisa (print spooler). Kada proces želi ispisati fajl, upisuje ime fajla u posebni direktorij za usmjeravanje (spooler directory). Drugi proces, tzv. printer deamon, periodično provjerava da li treba ispisati neke fajlove, te ako ih ima, ispisuje ih i uklanja njihova imena iz direktorija. Neka je spooler directory izdijeljen na veliki broj dijelova (slotova), koji su označeni brojevima 0, 1, 2,..., a svaki može sadržavati ime fajla. Također, postoje i dvije djeljive varijable, out pokazuje na sljedeći fajl koji treba ispisati, i in pokazuje na sljedeći slobodan slot u direktoriju. U određenom trenutku, slotovi 0, 1, 2 i 3 su prazni, jer su fajlovi već ispisani, a slotovi 4, 5 i 6 su puni, dakle fajlovi čekaju na ispis. Skoro simultano, procesi A i B upućuju zahtjev za ispis fajlova (donja slika). Može se desiti sljedeći slučaj. Proces A čita in i pohranjuje vrijednost 7 u lokalnu varijablu koja se zove next_free_slot. U tom trenutku javlja se ciklični prekid (clock interrupt) i CPU odlučuje da se proces A dovoljno izvršavao, pa se prebacuje na proces B. Proces B također čita in i također dobija 7. On također tu vrijednost pohranjuje u svoju lokalnu varijablu next_free_slot. Od ovog trenutka, oba procesa misle da je sljedeći slobodni slot 7. Nakon toga, proces B se nastavlja izvršavati. Pohranjuje ime svoga fajla u slot 7 i povećava in na 8, te nastavlja raditi druge aktivnosti. Na kraju, proces A se ponovo izvršava, i počinje tamo gdje je stao. Dakle, u next_free_slot pronalazi 7, i upisuje ime svoga fajla u slot 7, pri čemu se briše ime koje je upravo upisao proces B. Izračunava next_free_slot+1, koji je 8, i postavlja in na 8. Sa stanovišta spooler direkotorija nema nekonzistetnosti, pa printer deamon neće primijetiti grešku, ali proces B neće nikada primiti svoj izlaz. Korisnik B će godinama oblijetati oko sobe sa štampačima, nadajući se da će dobiti svoj ispis koji nikada neće doći. Sada zamislimo dva procesa, P1 i P2 koji dijele globalne promjenljive b i c sa početnim vrijednostima b=1 i c=2. U nekom trenutku izvršavanja proces P1 izvršava naredbu b=b+c, a isto tako u nekom trenutku izvršavanja proces P2 izvršava naredbu c=b+c. Uočite da dva procesa ažuriraju različite promjenljive. Međutim, konačne vrijednosti promjenljivih zavisiće od redoslijeda u kome se izvršavaju naredbe dodjele. Ako P1 prvi izvrši naredbu dodjele, 2

3 konačne vrijednosti promjenljivih biće b=3 i c=5. Ako P2 prvi izvrši dodjelu, konačne vrijednosti promjenljivih biće b=4 i c=3. Ovakve situacije, u kojima dva ili više procesa čitaju ili upisuju neke djeljive podatke, gdje krajnji rezultat zavisi od redoslijeda izvršavanja instrukcija u različitim procesima naziva se stanje trke (race condition). Situacije kao što su upravo opisane, često se dešavaju u operativnim sistemima kada njegovi različiti dijelovi rade sa resursima. Zbog toga je važno proučiti tehnike komunikacije i sinhronizacije procesa. Otklanjanje grešaka u programima koji imaju stanja trke nije nimalo jednostavan posao. Rezultati testiranja mogu biti odlični, ali jednom, doduše rijetko, nešto se čudno i neočekivano desi. Problem kritične sekcije Postavlja se pitanje kako izbjeći stanja trke. Ključni je problem kod sprečavanja gore opisanih situacija, kao i mnogih drugih koje uključuju dijeljenje memorije, fajlova i svega ostalog, pronaći način da se procesima zabrani da u isto vrijeme čitaju i upisuju djeljive podatke. Drugim riječima potrebna je međusobna ili uzajamna isključivost (mutual exclusion). To znači, da moramo na neki način biti sigurni da ako jedan proces koristi djeljivu varijablu ili fajl, istovremeno, ostali procesi su spriječeni da to isto rade. Teškoća koja se javila u prvom gornjem primjeru nastala je zbor činjenice da jedan proces koristi djeljivu varijablu prije nego što je njegov prethodnik sa njom završio. Izbor odgovarajućih osnovnih operacija za postizanje međusobne isključivosti je glavni projektanski problem u svim operativnim sistemima. Problem izbjegavanja stanja trke može se izreći i na apstraktan način. Dio vremena proces vrši unutrašnja izračunavanja kao i ostale stvari koje ne dovode do stanja trke. Međutim, nekad proces mora pristupiti djeljivoj memoriji ili fajlovima, ili mora izvršiti neke kritične poslove koji dovode do stanja trke. Taj dio programa gdje se pristupa djeljivoj memoriji se naziva kritična sekcija (critical section). Kada bi se stvari mogle posložiti tako da nikada istovremeno dva procesa nisu u svojoj kritičnoj sekciji, izbjegli bi stanje trke. Dakle, problem kritične sekcije je: kako projektovati protokol koji će procesi koristiti za saradnju. Kako bi proces ušao u kritičnu sekciju, on mora zatražiti dozvolu za ulazak. Dio kôda u kojem se implementira taj zahtjev naziva se ulazna sekcija (entry section). Iza kritične sekcije je izlazna sekcija (exit section), a ostatak je preostala sekcija (remainer section). Ako posmatramo na ovaj način, opća struktura tipičnog procesa je prikazana donjim algoritmom: do { ulazna sekcija kritična sekcija izlazna sekcija preostala sekcija } while (true); Iako su zahtjevi za izbjegavanjem stanja trke donekle u suprotnosti sa paralelnim procesima koji ispravno sarađuju i efikasnim korištenjem djeljivih podataka, može se dobiti dobro rješenje ako je zadovoljeno: 3

4 1. Međusobno isključivanje (Mutual Exclusion): Ako jedan proces izvršava svoju kritičnu sekciju, onda nijedan drugi proces ne smije da izvršava svoju kritičnu sekciju. 2. Napredovanje (Progress): Ako nijedan proces ne izvršava kritičnu sekciju, a neki procesi žele da uđu u svoju kritičnu sekciju, onda samo oni procesi koji ne izvršavaju svoju preostalu sekciju (dakle, samo procesi koji žele da uđu u svoju kritičnu sekciju) mogu da učestvuju u odlučivanju koji će proces (od njih) dobiti pravo da prvi uđe u svoju kritičnu sekciju, i ta odluka ne smije se beskonačno odlagati. 3. Ograničeno čekanje (Bounded Waiting): Nakon što proces napravi zahtjev za ulazak u svoju kritičnu sekciju, a prije odobravanja tog zahtjeva, drugim procesima kojima je taj ulazak dozvoljen, broj ulazaka se mora ograničiti. Apstrakcija kritične sekcije prikazana je na ovoj slici. Proces A ulazi u kritičnu sekciju u trenutku T1. Malo poslije, u trenutku T2 proces B pokušava ući u svoju kritičnu sekciju, ali ne uspijeva jer je drugi proces u svojoj kritičnoj sekciji, a samo se jednom procesu u datom trenutku dopušta da je u svojoj kritičnoj sekciji. Prema tome, B je privremeno suspendovan do trenutka T3 kad A napušta svoju kritičnu sekciju, dopuštajući da B uđe. Na kraju, u trenutku T4 napušta svoju kritičnu sekciju, te se vraćamo na početnu situaciju kada nema procesa u njihovim kritičnim sekcijama. Obratite pažnju da se u operativnim sistemima koji ne primjenjuju prinudnu suspenziju procesa (nonpreemptive) stanje trke ne može da se pojavi, jer se svaki proces izvršava do kraja, kada dobrovoljno predaje kontrolu procesoru. Stanje trke aktuelno je samo u operativnim sistemima sa prinudnom suspenzijom procesa (preemptive), koji se moraju pažljivo projektovati. Međutim, jezgre sa prinudnom suspenzijom procesa omogućuju programiranje u realnom vremenu i odziv im je mnogo kraći jer procesi jezgre po pravilu se izvršavaju dovoljno kratko tako da drugi procesi dugo ne čekaju. Na primjer, Windows XP koristi jezgro bez prinudne suspenzije, dok Solaris i Linux (od verzije jezgra 2.6) primjenjuju prinudnu suspenziju procesa. Onemogućavanje prekida Kod jednoprocesorskih sistema najjednostavnije je rješenje da svaki proces neposredno nakon ulaska u svoju kritičnu sekciju, onemogući sve prekide, a neposredno pred napuštanje kritične sekcije, ponovo ih omogući. Onemogućavanje prekida sprečava i ciklične prekide. Pošto se CPU prebacuje sa procesa na proces kao rezultat cikličnih ili nekih drugih prekida, sa isključenim prekidima CPU se neće prebaciti na drugi proces. Zato, kad proces isključi prekide, može provjeriti i ažurirati djeljivu memoriju bez straha da će drugi proces umiješati. U općem slučaju, ovaj pristup je neprikladan jer se ne preporučuje davanje ovlasti korisničkim procesima da isključe prekide. Šta ako jedan od njih to uradi, te ih zaboravi ponovo uključiti? To bi bio kraj za sistem. Nadalje, kod sistema sa dva ili više CPU, 4

5 isključivanje prekida pogađa samo CPU koji izvršava isključenu instrukciju. Procesi dodijeljeni drugim CPU nastavljaju se izvršavati i mogu pristupiti djeljivoj memoriji. S druge strane, često je prikladno da sâmo jezgro isključi prekide za nekoliko instrukcija kako bi ažurirao varijable ili liste. Ako bi se, na primjer, desio prekid dok je lista spremnih poslova u nekonzistentnom stanju, desilo bi se stanje trke. Dakle, zaključak je: isključivanje prekida je često korisna tehnika unutar sâmog operativnog sistema, ali nije prikladna kao opći mehanizam međusobnog isključivanja za korisničke procese. Mogućnost postizanja međusobnog isključivanja isključivanjem prekida, čak i unutar kernela, svakim danom je sve manja zbog porasta korištenja sistema sa više jezgri. U ovim sistemima isključivanje jednog CPU ne sprečava druge CPU da ometaju operacije koje se izvršavaju na prvom. Zato su potrebne sofisticiranije metode i tehnike. Varijable zaključavanja Drugo rješenje se tiče postojanje jedne djeljive varijable tzv. brave koja se postavlja na 0. Kada proces želi ući u svoju kritičnu sekciju, prvo ispituje bravu. Ako je ona 0, proces je postavlja na 1 i ulazi u kritičnu sekciju. Međutim, ako je brava 1, proces čeka dok ona ne postane 0. Zato, 0 znači da nema procesa u kritičnoj sekciji, a 1 znači da je neki proces u njoj. Nažalost, ova ideja ima istu grešku kao i primjer spooler directory. Neka jedan proces vidi da je brava na 0. Prije nego što postavi bravu na 1, raspoređuje se, izvršava i postavlja bravu na 1 drugi proces. Prvi će proces također postaviti bravu na 1, i dva procesa će biti u svojim kritičnim sekcijama u isto vrijeme. Problem bi se možda mogao riješiti tako da se prvo pročita vrijednost brave, a onda je još jednom provjeriti prije samog ulaska. Međutim, od tog neće biti puno pomoći jer se stanje trke pojavljuje ako drugi proces promijeni vrijednost brave uprvo u trenutku kad je prvi proces završio svoju drugu provjeru. Strogo smjenjivanje Treći pristup međusobnog isključivanja prikazan je sljedećim algoritmom u C programskom jeziku: While(THRU){ while(thru){ while(red!=0)/vrti se u petlji/ while(red!=1)/vrti se u petlji/ kriticna_sekcija(); kriticna_sekcija(); red=1; red=0; nekriticna sekcija(); nekriticna sekcija(); } } Cjelobrojna varijabla red, koja je početno je postavljena na 0, prati čiji je red da uđe u kritičnu sekciju, te pregledava ili ažurira djeljivu memoriju. U početku proces P0 provjerava red, vidi da je 0, i ulazi u kritičnu sekciju. Proces P1 također vidi da je red=0, te se vrti u petlji i stalno provjerava vrijednost varijable red. Stalno provjeravanje do pojave neke zahtijevane vrijednosti naziva se zaposleno čekanje (busy waiting). Treba ga izbjegavati jer troši CPU 5

6 vrijeme. Koristi se jedino kad je razumno očekivati da će čekanje biti kratko. Brava koja koristi zaposleno čekanje naziva se kružna brava (spin lock). Kad proces P0 napušta kritičnu sekciju, postavlja red na 1, dopuštajući procesu P1 da uđe u svoju. Neka proces P1 brzo završi svoju kritičnu sekciju, pa su oba procesa u svojim nekritičnim sekcijama, a red je postavljen na 0. Sad proces P0 brzo izvršava cijelu petlju, izlazi iz svoje kritične sekcije i postavlja red na 1. U tom trenutku oba procesa izvršavaju svoje nekritične sekcije. Iznenada, P0 završava svoju nekritičnu sekciju i vraća se nazad. Nažalost, ne može ući u svoju kritičnu sekciju jer je red na 1, a proces P1 je još u svojoj nekritičnoj sekciji. P0 se vrti u svojoj while petlji dok proces P1 ne postavi red na 0. To znači da se ovim rješenjem krši napredovanje jer je proces P0 blokiran procesom koji nije u svojoj kritičnoj sekciji. Petersonovo rešenje problema kritične sekcije Kombiniranjem ideja praćenja reda ulaska u kritičnu sekciju preko varijabli zaključavanja i varijabli upozorenja holandski matematičar T. Dekker je prvi dao softversko rješenje problema međusobnog isključivanja koje ne zahtijeva strogo smjenjivanje. G.L. Peterson godine ovo je rješenje pojednostavio, a njegovo algoritamsko rješenje koje je sastavljeno od procedure napisano u programskom jeziku C je prikazano u donjoj tabeli. Zbog načina na koji moderne računarske arhitekture izvode osnovne instrukcije mašinskog jezika, kao što su load i store, ne postoje garancije da će Petersonovo rješenje ispravno raditi na takvim arhitekturama. Međutim, ovo rješenje pruža dobar algoritamski opis rješavanja problema kritične sekcije i pokazuje svu složenost uključenu u projektovanje softvera koji zahtijevaju međusobno isključivanje, napredovanje i ograničeno čekanje. Ovo je rješenje ograničeno na dva procesa koji izmjenjuju izvršavanje svojih kritičnih i preostalih sekcija. //flag[] je boolean niz; and red je cijeli broj flag[0] = false; flag[1] = false; red; P 0: flag[0] = true; P 1: flag[1] = true; red = 1; red = 0; while (flag[1] == true && red == 1) while (flag[0] == true && red == 0) { { // zaposleno čekanje // zaposleno čekanje } } // kritična sekcija // kritična sekcija // kraj kritične sekcije // kraj kritične sekcije flag[0] = false; flag[1] = false; Promenljiva red označava čiji je red da uđe u kritičnu sekciju, odnosno red==i znači da je procesu Pi dozvoljeno da izvrši svoju kritičnu sekciju. Niz fleg koristi se za označavanje da je proces spreman da uđe u kritičnu sekciju, odnosno ako je fleg[i]==true, to znači da je proces Pi spreman da uđe u kritičnu sekciju. 6

7 Da bi ušao u kritičnu sekciju, proces Pi prvo postavlja fleg[i] na true, a zatim postavlja red na j, čime stavlja do znanja drugim procesima da mogu zahtijevati ulazak u kritičnu sekciju. Ako dva procesa P0 i P1 pokušaju da uđu u kritičnu sekciju približno u isto vrijeme, onda će promenljiva red biti postavljena na 0 i na 1 približno istovremeno. Samo jedna od te dvije dodjele će potrajati, dok će druga biti odmah prepisana. Konačna vrijednost promjenljive red odrediće kojem će procesu biti dozvoljeno da prvi uđe u kritičnu sekciju. Proces P0 može da uđe u svoju kritičnu sekciju samo ako je fleg[1]==false ili je red==0. Također, ako dva procesa istovremeno izvršavaju svoje kritične sekcije, onda je fleg[0]==fleg[1]==true. Iz prethodnog slijedi da oba procesa nisu mogla uspješno izvršiti naredbu while približno istovremeno jer vrijednost promjenljive red može da bude ili 0, ili 1. Dakle, jedan od procesa (na primjer P1) je uspješno izvršio naredbu while, a P0 je morao izvršiti barem još jednu naredbu (red==1). Pošto su u tom trenutku fleg[1]==true i red==1, ovaj uslov će važiti sve dok je P1 u svojoj kritičnoj sekciji. To znači da važi međusobno isključivanje. Razmotrimo sada druga dva uslova koja mora da zadovolji rješenje za problem kritične sekcije. Proces P0 može biti spriječen da uđe u kritičnu sekciju samo ako je zaglavljen u while petlji sa uslovima fleg[1]==true i red==1. Ako P1 nije spreman da uđe u kritičnu sekciju, onda je fleg[1]==false, pa P0 ulazi u kritičnu sekciju. Ako je P1 postavio fleg[1]==true i izvršava se u svojoj while petlji, onda je red==0 ili red==1. Ako je red==0, onda će P0 ući u kritičnu sekciju. Međutim, kada P1 izađe iz svoje kritične sekcije, postaviće fleg[1]==false, što će procesu P0 omogućiti da uđe u kritičnu sekciju. Ako P1 resetuje fleg[1]na true, mora i da postavi red na 0. Tako, pošto P0 ne mijenja vrijednost promjenljive red dok izvršava naredbu while, P0 će ući u kritičnu sekciju (napredovanje) nakon najviše jednog prolaska P1 kroz kritičnu sekciju (ograničeno čekanje). Hardversko zaključavanje Mnogi moderni računarski sistemi imaju specijalne hardverske instrukcije koje omogućuju korisnicima da promijenu jednu riječ ili da zamijenu dvije riječi na nedjeljiv (atomic) način, odnosno u jednom nedjeljivom koraku. Te specijalne instrukcije mogu se koristiti za rješavanje problema kritične sekcije na relativno jednostavan način. Međutim, sa stajališta hardvera implementacija ovih instrukcija na multiprocesorskim sistemima nije nimalo lagan zadatak. Ovo su samo jednostavniji načini rješavanja problema kritične sekcije, odnosno komunikacije i sinhronizacije između dva procesa. Za probleme koji se javlju kod više procesa koji komuniciraju, koriste se složenija rješenja kao što su semafori i monitori. Pomoću njih se mogu riješti klasični problemi međuprocesne komunikacije i sinhronizacije o kojima će biti riječi u nastavku. Međutim, njihovo razumijevanje zahtijeva dublji ulazak u spomenu problematiku, pa ćemo se ovdje zaustaviti. Ukoliko ipak neko želi saznati nešto više, iza dijela Literatura u ovom materijalu su prikazane gore spomenute strukture. 7

8 Klasični problemi sinhronizacije U ovom dijelu biće predstavljeni sinhronizacijski problemi kao primjeri velike klase problema kontrole konkurentnosti procesa. Ovi se problemi koriste za testiranje svake nove šeme sinhronizacije. Problem proizvođača i potrošača Jedan od najčešćih problema u konkurentnoj obradi je problem proizvođača i potrošača (producer/consumer), ili, kako se još naziva, problem ograničenog međuskladišta (bounded buffer). Neka dva procesa dijele zajedničko međuskladište fiksnog kapaciteta. Proizvođač ubacuje informacije u međuskladište, a potrošač ih vadi. Moguće je generalizirati problem sa m proizvođača i n potrošača, ali koristićemo samo po jedan kako bismo pojednostavili razmatranje problema. Problem nastaje kada proizvođač želi ubaciti novu informaciju u međuskladište koje je puno. Rješenje je da proizvođač ode spavati, a probudi se kad potrošač izvadi jednu ili više stavki iz međuskladišta. Slično tome, ako potrošač želi uzeti nešto iz međuskladišta i vidi da je prazno, ide na spavanje dok proizvođač nešto ne ubaci u njega i probudi ga. Jednostavno, zar ne? Međutim, vodi istoj vrsti stanja trke koja je objašnjena na primjeru spooler direktorija. U dodatku je dato rješenje pomoću semafora. Problem čitača i pisača Neka nekoliko konkuretnih procesa dijele bazu podataka. Neki od njih žele samo da čitaju iz baze, dok drugi je žele ažurirati, to jest čitati i pisati u nju. Pri tome, prva grupa procesa se nazivaju čitači, a druga pisači. Očigledno je da nema štetnih efekata ako dva čitača simultano pristupaju bazi. Međutim, ako bazi simultano pristupa pisač i neki drugi proces, ili pisač ili čitač, može nastati nered. Kako bi se osiguralo da ne dođe do poteškoća, obično se zahtijeva da pisači, ako upisuju u djeljivu bazu, imaju joj isključivo pravo pristupa. Problem čitača i pisača ima nekoliko varijanti. Najjednostavnija, koja se označava kao prvi problem čitača i pisača, zahtijeva da nijedan čitač ne čeka osim ako neki pisač nije već dobio dozvolu za pristup zajedničkoj bazi. Drugim riječima, nijedan čitač ne bi trebao čekati da drugi čitači završe jer pisač čeka. Drugi problem čitača i pisača zahtijeva da kad je pisač spreman, onda što je prije moguće izvodi svoje upisivanje. To znači da ako pisač čeka na pristup bazi, nijedan novi čitač ne može započeti čitanje. Rješavanje oba ova problema može rezultirati izgladnjivanjem. U prvom slučaju, mogu izgladnjivati pisači, a u drugom čitači. U dodatku je predstavljeno rješenje prvog problema uz pomoć semafora. 8

9 Problem filozofa za večerom Zamislimo pet filozofa koji život provode razmišljajući i jedući. Oni sjede za okruglim stolom sa pet stolica, po jedna za svakog filozofa (donja slika). Na sredini stola nalazi se posuda sa špagetama, a na stolu ima pet viljuški. Međutim, špagete su toliko klizave da filozofu trebaju dvije viljuške kako bi mogao jesti. Kada filozof misli, on ne komunicira sa svojim kolegama. S vremena na vrijeme filozof ogladni i pokušava da uhvati jednu od dvije viljuške koje su mu najbliže. U svakom trenutku filozof može da podigne samo jednu viljušku. Kada gladan filozof ima obje viljuške istovremeno, on jede bez ispuštanja viljušaka. Kada završi sa jelom, filozof spušta viljuške i počinje ponovo da razmišlja. Filozofi za večerom Problem filozofa za večerom je klasični problem sinhronizacije koji se ne razmatra zbog praktične važnosti niti zbog činjenice da kompjuteraši ne vole filozofe. To je jednostavno predstavljanje potrebe alociranja nekoliko resursa procesima bez izgladnjivanja i(li) potpunog zastoja. U dodatku je rješenje pomoću semafora. Potpuni zastoj U multiprogramskom okruženju, nekoliko procesa se može takmičiti za ograničen broj resursa. Proces zatraži resurse. Ako u tom trenutku resursi nisu slobodni, proces prelazi u stanje čekanja. Ponekad, proces koji čeka nikad više ne promjeni to stanje jer resurse koji su mu potrebni drže drugi procesi. Ova situacija se naziva potpuni zastoj (deadlock). Računatska teorija formalno definiše potpuni zastoj na sljedeći način: skup procesa je u potpunom zastoju ako svaki proces u skupu čeka događaj koji zavisi od drugog procesa iz skupa. Na primjer, dva procesa žele prebaciti skenirani dokumen na CD. Proces A zatraži dozvolu za korištenje skenera, i odobri mu se. Proces B drugačije je programiran, odobrava mu se zahtjev za korištenje CD-pisača. Nakon toga, proces A zahtijeva CD-pisač, ali se zahtjev odbija dok ga proces B ne oslobodi. Nažalost, umjesto oslobađanja CD-pisača proces B traži skener. U ovom trenutku oba su procesa blokirana i tako će ostati zauvijek. U ovom slučaju, zastoj je potpun zato što nijedan od tih događaja ne može nikako da se desi. Za razliku od drugih problema upravljanja konkurentnim procesima, u općem slučaju ne postoji efikasno rješenje za izbjegavanje potpunog zastoja. U svim slučajevima potpunog zastoja postoji nekoliko procesa čiji su zahtjevi u sukobu. Uobičajen primjer kojim se ilustruje potpuni zastoj je primjer 9

10 raskrsnice na ovoj slici koja prikazuje potpuni zastoj u saobraćaju, kada četiri automobila pristižu u raskrsnicu približno u isto vrijeme, a na raskrsnici ne postoje nikakvi saobraćajni znaci koji regulišu saobraćaj. Četiri kvadranta raskrsnice predstavljaju resurse nad kojima je potrebno ostvariti kontrolu. Praktično pravilo koje se primjenjuje u raskrsnicama je da prednost ima vozilo koje se nalazi sa desne strane, ali ovo pravilo važi samo ako na raskrsnici ima maksimalno tri vozila. Međutim, ako četiri vozila pristignu u raskrsnicu približno u isto vrijeme, nijedno neće ući u raskrsnicu zato što ima vozilo sa desne strane, čime će se prouzrokovati potpuni zastoj. U uobičajenom režimu korištenja resursa, proces može da bude u nekoj od tri faze: Zahtjev (request): proces zahtijeva resurs, a ako ne može da ga dobije, čeka da se on oslobodi. Korištenje (use): proces je dobio resurs i koristi ga. Oslobađanje (release): proces oslobađa resurs pošto je završio sa korištenjem. Potpuni zastoj se može definisati kao trajno blokiranje skupa procesa koji se takmiče za sistemske resurse. Zastoj nastupa ako su istovremeno ispunjeni sljedeći uslovi: 1. međusobno isključenje (mutual exclusion): barem jedan resurs mora da bude u stanju u kome se ne može dijeliti, odnosno samo jedan proces može da koristi određeni resurs. Ako drugi proces zatraži isti resurs, dodjela mora biti odložena sve dok se resurs ne oslobodi. 2. dobrovoljno oslobađanje resursa (no preemption): resurs može biti oslobođen samo ako ga dobrovoljno oslobodi proces kome je dodijeljen. 3. zadržavanje resursa tokom čekanja (hold and wait): proces mora da ima barem jedan resurs dok čeka da mu se dodijeli neki drugi resurs koji je trenutno dodijeljen nekom drugom procesu. 4. kružno čekanje (circular wait): postoji skup procesa P1, P2,..., Pn takvih da proces P1 čeka na resurs koji drži proces P2, proces P2 čeka na resurs koji drži P3, i tako redom do procesa Pn koji čeka na resurs koji drži proces P1. Rukovanje potpunim zastojima U općem slučaju rukovanje problemom potpunog zastoja moguće je na tri načina: - Korištenje protokola za sprečavanje ili izbjegavanje potpunih zastoja obezbjeđujući da sistem nikad ne uđe u stanje potpunog zastoja. To znači da se u trenutku zahtjeva za resursom predvidi da li taj zahtjev potencijalno može da izazove potpuni zastoj, odnosno da se predvidi kakvi će biti budući zahtjevi za resursima. - Sistemu se može dozvoliti da uđe u stanje potpunog zastoja, zastoj se otkriva i otklanja. U tom slučaju koriste se algoritmi koji ga otkrivaju. Tada su na raspolaganju su dvije mogućnosti. Prva je da se jedan ili nekoliko procesa napuste da bi se spriječilo kružno čekanje. Druga je da se određeni resursi nasilno preuzmu od procesa u potpunom zastoju. - Problem se ignoriše kao da se potpuni zastoji nikad ne pojavljuju u sistemu. Ovo rješenje koristi većina operativnih sistema uključujući Windows i UNIX. U tom slučaju onaj ko razvija aplikaciju mora napisati programe koji rukuju potpunim zastojima. 10

11 Literatura: 1. Avi Silberschatz, Peter Baer, Galvin Greg Gagne, Operating System Concepts 8 th Edition, godine, John Wiley & Sons, Inc., 111 River Street, Hoboken, New Jersey 2. Andrew S. Tanenbaum, Modern Operating Systems 3rd Edition, Pearson Education Inc., Ranko Popović, Irina Branović, Marko Šarac, Operativni sistemi I izdanje, godine, Univerzitet Singidunum, Danilova 32, Beograd Semafori Hardverska rješenja problema kritične sekcije kao što su nedjeljive instrukcije programerima su prilično teška za korištenje. Da bi se taj problem prevazišao, koristi se tehnika semafora (semaphore). Semafor S je cjelobrojna promjenljiva kojoj se, osim inicijalizacije, pristupa samo preko dvije nedjeljive (atomic) operacije: wait() i signal(). Operacija wait() se definiše kao: wait(s) { while S<= 0; //ne radi ništa S--; } A operacija signal()kao: signal(s) { S++; } Svaka promjena cjelobrojne vrijednosti semafora mora da se obavi nedjeljivo, odnosno kada jedan proces mijenja vrijednost semafora, nijedan drugi proces ne smije istovremeno da je mijenja. Također, testiranje cjelobrojne vrijednosti semafora u operaciji wait()i njegovo eventualno mijenjanje (S--) moraju da se obave nedjeljivo. Operativni sistemi razlikuju brojačke semafore (counting semaphores) i binarne semafore (binary semaphore). Vrijednost brojačkog semafora može da bude proizvoljna pozitivna vrijednost, dok vrijednost binarnog semafora može da bude 0 ili 1. U nekim sistemima binarni semafori se zovu muteksi (mutex), jer omogućuju međusobno isključivanje (mutual exclusion). Binarni semafori mogu se iskoristiti za rješavanje problema kritične sekcije za više procesa. Pretpostavimo da n procesa dijeli semafor, mutex, inicijalizovan na 1; rješenje problema je sljedeće: do { wait(mutex) kritična sekcija signal(mutex) preostala sekcija } while(true); 11

12 Semafore možemo iskoristiti i za rješavanje drugih problema sinhronizacije. Na primjer, pretpostavimo da proces P1 izvršava naredbu S1, a proces P2 naredbu S2, i daje zahtjev da se naredba S2 izvrši tek pošto se izvrši naredba S1. Problem se može riješiti tako što će P1 i P2 dijeliti semafor synch koji će biti inicijalizovan na nula. U proces P1 će biti dodana naredba: S1; Signal(synch); a u proces P2: wait(synch); S2; Pošto je synch inicijalizovan na 0, P2 će izvršiti naredbu S2 tek nakon što P1 pozove signal(synch) a to će se desiti tek pošto se izvrši naredba S1. Najvažniji nedostatak implementacije semafora koju smo upravo opisali jeste to što zahtjeva uposleno čekanje (busy waiting). Dok je proces u svojoj kritičnoj sekciji, drugi procesi koji pokušavaju da uđu u kritičnu sekciju moraju da se vrte u svojim ulaznim sekcijama. Očigledno je da to može prouzrokovati problem u stvarnim multiprogramskim sistemima u kojima se procesor dijeli između brojnih procesa. Zaposleno čekanje troši procesorske cikluse koje bi neki drugi procesi mogli efikasno da iskoriste. Vrsta semafora koju smo upravo opisali zove se spinlok jer se proces vrti (spins) dok čeka da dobije bravu (lock). Spinlok semafori su korisni kada se očekuje da će zaključavanje kritične sekcije trajati kratko i često se primjenjuju u multiprocesorskim sistemima u kojima jedna nit može da se vrti na jednom procesoru, dok druga nit izvršava kritičnu sekciju na drugom procesoru. Da bi se prevazišla potreba za uposlenim čekanjem, može se promijeniti definicija semaforskih operacija wait() i signal(). Kada proces izvrši operaciju wait()i ustanovi da vrijednost semafora nije pozitivna, mora da čeka. Međutim, umjesto da uposleno čeka, može sam sebe da blokira i da se premjesti u red čekanja povezan sa semaforom, pri čemu stanje procesa postaje Waiting. Kontrola se zatim prepušta raspoređivaču procesa, koji bira sljedeći proces koji će biti izvršen. Proces koji je blokiran u čekanju na semafor S treba da se vrati na izvršavanje kada neki drugi proces obavi operaciju signal(). Proces se budi operacijom wakeup()koja mijenja stanje procesa iz Waiting u Ready. Nakon toga proces se premješta u red spremnih poslova. Pri tome, procesor može ali i ne mora da prekine izvršavanje tekućeg procesa, u zavisnosti od toga kako je implementirano raspoređivanje procesa. Impelementiranje semafore po ovoj definiciji typedef struct { int value; struct process * list; } semaphore; Svaki semafor ima cjelobrojnu vriednost value i listu procesa list. Kada proces mora da čeka na semafor, on se dodaje u listu procesa. Operacija signal()uklanja jedan proces iz liste procesa koji čekaju na semafor i budi ga. 12

13 Semaforska operacija wait()sada se može definisati kao: wait(semaphore *s) { s->value--; if(s->value < 0) { dodaj ovaj proces u s->list; block(); } } Operacija signal()definiše se kao: signal(semaphore *s) { s->value++; if(s->value <= 0) { ukloni proces iz s->list; wakeup(proces); } } Operacija block()suspenduje proces koji je poziva, a operacija wakeup(p)nastavlja izvršavanje blokiranog procesa p. Ove dvije funkcije operativni sistem obezbjeđuje u vidu sistemskih poziva. Postavlja se pitanje po kojem redoslijedu se procesi uklanjaju iz reda čekanja na semafor. Najpravednija je FIFO (first-in-first-out) politika, u kojoj se proces koji je najduže bio blokiran prvi oslobađa iz reda. Semafori koji primjenjuju takvu politiku zovu se jaki semafori (strong semaphore), za razliku od slabih semafora (weak semaphore) koji ne zadaju redoslijed kojim se procesi uklanjaju iz reda (donja slika). Procesi A, B i C zavise od rezultata procesa D. U početku se izvršava proces A, procesi B, C i D su u stanju Ready, a semafor ima vrijednost 1, što znači da je dostupan jedan rezultat semafora D. Kada proces A izvrši operaciju wait()na semaforu S, on se dekrementira tako da mu je vrijednost 0, pa proces A može da nastavi da se izvršava, da bi na kraju ponovo stigao u red spremnih procesa. Zatim se izvršava proces B koji izdaje naredbu wait()i blokira se, dozvoljavajući izvršavanje procesa D. Kada D izda novi rezultat, izvršava operaciju signal() koja omogućuje procesu B da se premjesti u red spremnih poslova. D ponovo stiže u red spremnih poslova i proces C počinje da se izvršava, ali se blokira kada obavi operaciju wait(). Slično, procesi A i B čekaju na semafor, dozvoljavajući procesu D da nastavi izvršavanje. Primjer mehanizma semafora Kada D izda rezultat, obavlja operaciju signal()koja prevodi proces C u red spremnih poslova. 13

14 Monitori Iako su semafori efikasan i koristan način za sinhronizaciju procesa, njihovo neispravno korištenje može da prouzrokuje greške u vremenu izvršavanja koje se teško otkrivaju jer se dešavaju samo u slučajevima tačno određene sekvence izvršavanja instrukcija. Ponovo ćemo se vratiti na problem kritične sekcije, u kome svi procesi dijele semafor mutex inicijalizovan na 1. Svaki proces mora da izvrši operaciju wait(mutex)prije nego što uđe u kritičnu sekciju, odnosno signal(mutex)kada izađe iz nje. Ako se taj sijed pozivanja ne poštuje, može se desiti da se dva procesa istovremeno nađu u kritičnoj sekciji. Na primjer, pretpostavimo da proces izmjeni redoslijed pozivanja operacija wait()i signal()za semafor mutex(), na sljedeći način: U ovom slučaju nekoliko procesa može da se nađe istovremeno u kritičnoj sekciji, čime je narušen princip međusobnog isključivanja. Ova greška se može otkriti jedino ako je nekoliko procesa istovremeno aktivno u kritičnoj sekciji, ali takva situacija ponekad se ne može lako izazvati. Zatim, pretpostavimo da proces zamijeni signal(mutex)sa wait(mutex), odnosno: wait(mutex); kritična sekcija wait(mutex); U ovom slučaju, desiće se potpuni zastoj, odnosno nijedan proces neće moći da uđe u kritičnu sekciju. Treće, pretpostavimo da proces zaboravi da pozove wait(mutex)ili signal(mutex), ili obje funkcije. U tom slučaju može biti narušen princip međusobnog isključivanja, a može se pojaviti i potpuni zastoj. Prethodni primeri ilustruju da je veoma lako pogrešno upotrijebiti semafore, što prouzrokuje greške u sinhronizaciji. Zbog toga su u višim programskim jezicima razvijene konstrukcije poput monitora čija je sintaksa: 14

15 Konstrukcija monitora obezbjeđuje da unutar monitora u određenom trenutku bude aktivan samo jedan proces. Procedura definisana unutar monitora može da pristupi samo promjenljivim koje su deklarisane lokalno, unutar monitora, kao i svojim parametrima. Da bi se riješio problem sinhronizacije, monitoru se moraju dodati definicije promjenljivih tipa uslova: uslov x, y; Jedine operacije koje se mogu primjenjivati na uslovne promjenljive su wait()i signal(). Operacija x.wait()znači da će proces koji je poziva biti suspendovan dok neki drugi proces ne pozove x.signal(). Operacija signal()nastavlja izvršavanje samo jednog procesa. Ako nijedan proces nije suspendovan, onda pozivanje operacije signal()nema nikakvog efekta, odnosno stanje uslovne promenljive x je isto kao da operacija nikada nije bila izvršena. Primjetite razliku u odnosu na operaciju signal()za semafore, koja uvijek utiče na stanje semafora. Pretpostavimo sada da je operaciju x.signal()pozvao proces P1, i da postoji suspendovan proces P2 povezan sa uslovom x. Ako se suspendovanom procesu P2 dozvoli da nastavi izvršavanje, proces P1 koji šalje signal mora da čeka. U suprotnom bi procesi P1 i P2 bili istovremeno aktivni unutar monitora. Međutim, oba procesa nastavljaju da se izvršavaju, pri čemu postoje dvije mogućnosti: 1. Signaliziraj i čekaj. P1 ili čeka dok P2 izađe iz monitora ili čeka neki drugi uslov. 2. Signaliziraj i nastavi. P2 čeka dok P1 izađe iz monitora ili čeka drugi uslov. Implementacija monitora pomoću semafora Za svaki monitor uvodi se semafor mutex i inicijalizuje na 1. Proces mora da izvrši wait(mutex)prije nego što uđe u monitor, a kada izađe iz njega, mora da izvrši signal(mutex). Pošto proces koji signalizira mora da čeka da proces koji se nastavlja završi izvršavanje ili se blokira, uvodi se dodatni semafor next i inicijalizuje na 0. Njega će koristiti procesi koji signaliziraju da bi sami sebe suspendovali. Cjelobrojna promjenljiva next_count broji suspendovane procese za next. Svaka spoljašnja procedura P se zamjenjuje sa: Međusobno isključivanje unutar monitora je obezbjeđeno. Sada ćemo opisati kako se implementiraju uslovne promjenljive. Za svaki uslov x uvode se semafor x_sem i cjelobrojna promjenljiva x.count i inicijalizuju se na 0. Operacija x.wait()se implementira kao: 15

16 Operacija x.signal() se implementira kao: Problem proizvođača i potrošača Ovaj problem se javlja kada ima nekoliko proizvođača koji smještaju neku vrstu podataka (zapise, znakove) u bafer. Sa druge strane postoji jedan potrošač koji podatke čita iz bafera redom, jedan po jedan. Sistem mora da obezbijedi preklapanje operacija sa baferom, odnosno u istom trenutku baferu može da pristupi ili proizvođač, ili potrošač. Za početak, pretpostavimo da je bafer neograničen i da se sastoji od linearnog niza elemenata. Funkcije proizvođača i potrošača možemo da definišemo na sljedeći način: proizvođač: potrošač: Proizvođač generiše podatke i smješta ih u bafer b svojim tempom. Kad god doda stavku, inkrementira se indeks in bafera. Potrošač slično tome čita podatke iz bafera, ali mora da provjeri da bafer slučajno nije prazan (in > out). Implementiraćemo ovaj sistem pomoću binarnih semafora. Semafor mutex se koristi za međusobno isključivanje (tj. onemogućavanje istovremenog pristupa baferu), semafor empty primorava potrošača da stane kada je bafer prazan, a semafor full označava da je bafer pun. proizvođač: potrošač: do { do { produce(); wait(full); wait(empty); wait(mutex); wait(mutex); signal(mutex); signal(mutex); signal(empty); signal(full); consume(); } while(true); } while(true); 16

17 Problem čitača i pisača Podaci se mogu dijeliti između nekoliko konkurentnih procesa. Neki od tih procesa će ih samo čitati, a neki će ih i čitati i mijenjati (upisivati). Te dvije vrste procesa zvaćemo čitači i pisači. Ako dva čitača istovremeno pristupaju istom podatku, očigledno je da se neće desiti ništa. Međutim, ako pisač i neki drugi proces (čitač ili pisač) istovremeno pristupaju podatku, može nastati problem. Da bi se problem izbjegao, zahtijeva se da pisači imaju isključiv pristup dijeljenim podacima. Postoji nekoliko varijacija na temu problema čitača i pisača. Ovde ćemo predstaviti rješenje za problem u kome se zahtijeva da nijedan čitač ne čeka osim ako neki pisač nije već dobio dozvolu da koristi dijeljene podatke. Za čitače se uvode semafori mutex i write koji se inicijalizuju na 1, kao i cjelobrojna promjenljiva readcount koja se inicijalizuje na 0. Semafor write je zajednički za čitače i pisače, a semafor mutex se koristi da bi obezbijedio međusobno isključivanje prilikom ažuriranja promjenljive readcount. Promjenljiva readcount prati koliko ima procesa koji trenutno čitaju objekat. Semafor write služi za međusobno isključivanje pisača, a koriste ga i prvi ili poslednji čitač koji ulaze ili izlaze iz kritične sekcije. Ovaj semafor ne koriste čitači koji ulaze ili izlaze iz kritične sekcije dok se drugi čitači nalaze u kritičnim sekcijama. pisač: čitač: do { do { wait(write); wait(mutex); pisanje readcount++; signal(write; if(readcount == 1) } while(true); wait(write); signal(mutex); citanje wait(mutex); readcount--; if(readcount ==0) signal(write); signal(mutex); } write(true); Primijetite da ako je pisač u kritičnoj sekciji, a n čitača čeka, onda je jedan čitač u redu za write, a n-1 čitača su u redu za mutex. Također, kada pisač pozove signal(write), može se nastaviti izvršavanje čitača koji čekaju, ili jednog pisača koji čeka. Ovaj izbor obavlja raspoređivač procesa. Problem filozofa za večerom Predstavićemo rješenje za problem sinhronizacije filozofa koji večeraju pomoću semafora. U rješenju sa semaforima svaka viljuška se predstavlja posebnim semaforom. Filozof pokušava da uzme viljušku tako što poziva operaciju wait() za viljušku. Kada spušta viljušku, poziva operaciju signal() za odgovarajuće semafore. Prema tome, dijeljeni 17

18 podaci su semafori viljuška[0],..., viljuška[4] koji se inicijalizuju na 1. Struktura rješenja je sljedeća: Iako ovo rješenje garantuje da dva susjedna filozofa neće jesti istovremeno, može da prouzrokuje potpuni zastoj. Pretpostavimo da svih pet filozofa ogladne u istom trenutku i da se svaki uhvati za lijevu viljušku. Tada će svi semafori imati vrijednost 0. Ako svaki filozof pokuša da uzme desnu viljušku, to će biti odlagano unedogled. Problem potpunog zastoja rješava se primjenom monitora. 18

Algoritam za množenje ulančanih matrica. Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek

Algoritam za množenje ulančanih matrica. Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek Algoritam za množenje ulančanih matrica Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek O problemu (1) Neka je A 1, A 2,, A n niz ulančanih matrica duljine n N, gdje su dimenzije matrice

More information

DISTRIBUIRANI ALGORITMI I SISTEMI

DISTRIBUIRANI ALGORITMI I SISTEMI Postavka 7: međusobno isključivanje sa read/write promenljivama 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch Read/Write deljene promenljive

More information

ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA. Šefket Arslanagić, Sarajevo, BiH

ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA. Šefket Arslanagić, Sarajevo, BiH MAT-KOL (Banja Luka) XXIII ()(7), -7 http://wwwimviblorg/dmbl/dmblhtm DOI: 75/МК7A ISSN 5-6969 (o) ISSN 986-588 (o) ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA Šefket Arslanagić,

More information

TEORIJA SKUPOVA Zadaci

TEORIJA SKUPOVA Zadaci TEORIJA SKUPOVA Zadai LOGIKA 1 I. godina 1. Zapišite simbolima: ( x nije element skupa S (b) d je član skupa S () F je podskup slupa S (d) Skup S sadrži skup R 2. Neka je S { x;2x 6} = = i neka je b =

More information

Red veze za benzen. Slika 1.

Red veze za benzen. Slika 1. Red veze za benzen Benzen C 6 H 6 je aromatično ciklično jedinjenje. Njegove dve rezonantne forme (ili Kekuléove structure), prema teoriji valentne veze (VB) prikazuju se uobičajeno kao na slici 1 a),

More information

Projektovanje paralelnih algoritama II

Projektovanje paralelnih algoritama II Projektovanje paralelnih algoritama II Primeri paralelnih algoritama, I deo Paralelni algoritmi za množenje matrica 1 Algoritmi za množenje matrica Ovde su data tri paralelna algoritma: Direktan algoritam

More information

Mathcad sa algoritmima

Mathcad sa algoritmima P R I M J E R I P R I M J E R I Mathcad sa algoritmima NAREDBE - elementarne obrade - sekvence Primjer 1 Napraviti algoritam za sabiranje dva broja. NAREDBE - elementarne obrade - sekvence Primjer 1 POČETAK

More information

Slika 1. Slika 2. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će

Slika 1. Slika 2. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će Permutacije Zadatak. U vreći se nalazi n loptica različitih boja. Iz vreće izvlačimo redom jednu po jednu lopticu i stavljamo jednu pored druge. Koliko različitih redosleda boja možemo da dobijemo? Primer

More information

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU MAT KOL Banja Luka) ISSN 0354 6969 p) ISSN 1986 58 o) Vol. XXI )015) 105 115 http://www.imvibl.org/dmbl/dmbl.htm PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU Bernadin Ibrahimpašić 1 Senka Ibrahimpašić

More information

Operativni sistemi 2

Operativni sistemi 2 Operativni sistemi 2 3. Upravljanje resursima Zadatak 1. Januar 2007. Tri uporedna procesa, A, B i C zauzimaju i oslobađaju dva nedeljiva resursa X i Y po sledećem redosledu: A: request(x), release(x),

More information

Programiranje u realnom vremenu Bojan Furlan

Programiranje u realnom vremenu Bojan Furlan Programiranje u realnom vremenu Bojan Furlan Tri procesa sa D = T imaju sledeće karakteristike: Proces T C a 3 1 b 6 2 c 18 5 (a) Pokazati kako se može konstruisati ciklično izvršavanje ovih procesa. (b)

More information

Metode praćenja planova

Metode praćenja planova Metode praćenja planova Klasična metoda praćenja Suvremene metode praćenja gantogram mrežni dijagram Metoda vrednovanja funkcionalnosti sustava Gantogram VREMENSKO TRAJANJE AKTIVNOSTI A K T I V N O S T

More information

Fajl koji je korišćen može se naći na

Fajl koji je korišćen može se naći na Machine learning Tumačenje matrice konfuzije i podataka Fajl koji je korišćen može se naći na http://www.technologyforge.net/datasets/. Fajl se odnosi na pečurke (Edible mushrooms). Svaka instanca je definisana

More information

Uvod u relacione baze podataka

Uvod u relacione baze podataka Uvod u relacione baze podataka Ana Spasić 2. čas 1 Mala studentska baza dosije (indeks, ime, prezime, datum rodjenja, mesto rodjenja, datum upisa) predmet (id predmeta, sifra, naziv, bodovi) ispitni rok

More information

KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ URL:

KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ   URL: KLASIFIKACIJA NAIVNI BAJES NIKOLA MILIKIĆ EMAIL: nikola.milikic@fon.bg.ac.rs URL: http://nikola.milikic.info ŠTA JE KLASIFIKACIJA? Zadatak određivanja klase kojoj neka instanca pripada instanca je opisana

More information

Geometrijski smisao rješenja sustava od tri linearne jednadžbe s tri nepoznanice

Geometrijski smisao rješenja sustava od tri linearne jednadžbe s tri nepoznanice Osječki matematički list 6(2006), 79 84 79 Geometrijski smisao rješenja sustava od tri linearne jednadžbe s tri nepoznanice Zlatko Udovičić Sažetak. Geometrijski smisao rješenja sustava od dvije linearne

More information

Veleučilište u Rijeci. Dodjela procesora (eng. CPU scheduling)

Veleučilište u Rijeci. Dodjela procesora (eng. CPU scheduling) Veleučilište u Rijeci Dodjela procesora (eng. CPU scheduling) Pojmovi Program Statični niz instrukcija Proces Program u izvođenju Dretva (thread) Niz instrukcija koje se izvode Po potrebi dretve dijelimo

More information

LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE

LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE Linearni model Promatramo jednodimenzionalni linearni model. Y = β 0 + p β k x k + ε k=1 x 1, x 2,..., x p - varijable poticaja (kontrolirane) ε - sl.

More information

Asian Journal of Science and Technology Vol. 4, Issue 08, pp , August, 2013 RESEARCH ARTICLE

Asian Journal of Science and Technology Vol. 4, Issue 08, pp , August, 2013 RESEARCH ARTICLE Available Online at http://www.journalajst.com ASIAN JOURNAL OF SCIENCE AND TECHNOLOGY ISSN: 0976-3376 Asian Journal of Science and Technology Vol. 4, Issue 08, pp.037-041, August, 2013 RESEARCH ARTICLE

More information

Šime Šuljić. Funkcije. Zadavanje funkcije i područje definicije. š2004š 1

Šime Šuljić. Funkcije. Zadavanje funkcije i područje definicije. š2004š 1 Šime Šuljić Funkcije Zadavanje funkcije i područje definicije š2004š 1 Iz povijesti Dvojica Francuza, Pierre de Fermat i Rene Descartes, posebno su zadužila matematiku unijevši ideju koordinatne metode

More information

U člnaku se nastoji na jednostavan i sažet način bez ulaženja u egzaktne i formalizirane dokaze postići slijedeće:

U člnaku se nastoji na jednostavan i sažet način bez ulaženja u egzaktne i formalizirane dokaze postići slijedeće: Mr Ratimir Kvaternik Fakultet organizacije i informatike V a r a ž d i n UDK 681.142.2 Prethodno saopćenje O D R E D J I V A N J E R A D N O G S K U P A S T R A N I C A U člnaku se nastoji na jednostavan

More information

Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu

Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu 1. Izdvojiti ime i prezime studenata koji su rođeni u Beogradu. (DOSIJE WHERE MESTO_RODJENJA='Beograd')[IME, PREZIME] where mesto_rodjenja='beograd'

More information

Iskazna logika 1. Matematička logika u računarstvu. oktobar 2012

Iskazna logika 1. Matematička logika u računarstvu. oktobar 2012 Matematička logika u računarstvu Department of Mathematics and Informatics, Faculty of Science,, Serbia oktobar 2012 Iskazi, istinitost, veznici Intuitivno, iskaz je rečenica koja je ima tačno jednu jednu

More information

Kontrolni uređaji s vremenskom odgodom za rasvjetu i klimu

Kontrolni uređaji s vremenskom odgodom za rasvjetu i klimu KOTROI SKOPOVI ZA RASVJETU I KIMA UREĐAJE Kontrolni i s vremenskom odgodom za rasvjetu i klimu Modularni dizajn, slobodna izmjena konfiguracije Sigurno. iski napon V Efikasno čuvanje energije Sigurnost.

More information

6. PROGRAMSKE STRUKTURE STRUKTUIRANOG PROGRAMIRANJA

6. PROGRAMSKE STRUKTURE STRUKTUIRANOG PROGRAMIRANJA 6. PROGRAMSKE STRUKTURE STRUKTUIRANOG PROGRAMIRANJA U programiranju često postoji potreba da se redoslijed izvršavanja naredbi uslovi prethodno dobivenim međurezultatima u toku izvršavanja programa. Na

More information

Osobine metode rezolucije: zaustavlja se, pouzdanost i kompletnost. Iskazna logika 4

Osobine metode rezolucije: zaustavlja se, pouzdanost i kompletnost. Iskazna logika 4 Matematička logika u računarstvu Department of Mathematics and Informatics, Faculty of Science,, Serbia novembar 2012 Rezolucija 1 Metod rezolucije je postupak za dokazivanje da li je neka iskazna (ili

More information

1.1 Algoritmi. 2 Uvod

1.1 Algoritmi. 2 Uvod GLAVA 1 Uvod Realizacija velikih računarskih sistema je vrlo složen zadatak iz mnogih razloga. Jedan od njih je da veliki programski projekti zahtevaju koordinisani trud timova stručnjaka različitog profila.

More information

Mehurasto sortiranje Brzo sortiranje Sortiranje učešljavanjem Sortiranje umetanjem. Overviev Problemi pretraživanja Heš tabele.

Mehurasto sortiranje Brzo sortiranje Sortiranje učešljavanjem Sortiranje umetanjem. Overviev Problemi pretraživanja Heš tabele. Bubble sort Razmotrimo još jedan vrlo popularan algoritam sortiranja podataka, vrlo sličan prethodnom algoritmu. Algoritam je poznat pod nazivom Bubble sort algoritam (algoritam mehurastog sortiranja),

More information

Metrički prostori i Riman-Stiltjesov integral

Metrički prostori i Riman-Stiltjesov integral Metrički prostori i Riman-Stiltjesov integral Sadržaj 1 Metrički prostori 3 1.1 Primeri metričkih prostora................. 3 1.2 Konvergencija nizova i osobine skupova...................... 12 1.3 Kantorov

More information

FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA

FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA KOZMIČKI SAT ranog svemira Ekstra zračenje u mjerenju CMB Usporedba s rezultatima LEP-a Usporedba CMB i neutrina Vj.: Pozadinsko zračenje neutrina

More information

Hornerov algoritam i primjene

Hornerov algoritam i primjene Osječki matematički list 7(2007), 99 106 99 STUDENTSKA RUBRIKA Hornerov algoritam i primjene Zoran Tomljanović Sažetak. U ovom članku obrad uje se Hornerov algoritam za efikasno računanje vrijednosti polinoma

More information

Zadatci sa ciklusima. Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva.

Zadatci sa ciklusima. Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva. Zadatci sa ciklusima Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva. StrToIntDef(tekst,broj) - funkcija kojom se tekst pretvara u ceo broj s tim da je uvedena automatska kontrola

More information

Metode izračunavanja determinanti matrica n-tog reda

Metode izračunavanja determinanti matrica n-tog reda Osječki matematički list 10(2010), 31 42 31 STUDENTSKA RUBRIKA Metode izračunavanja determinanti matrica n-tog reda Damira Keček Sažetak U članku su opisane metode izračunavanja determinanti matrica n-tog

More information

Ariana Trstenjak Kvadratne forme

Ariana Trstenjak Kvadratne forme Sveučilište Josipa Jurja Strossmayera u Osijeku Odjel za matematiku Sveučilišni preddiplomski studij matematike Ariana Trstenjak Kvadratne forme Završni rad Osijek, 014. Sveučilište Josipa Jurja Strossmayera

More information

Quasi-Newtonove metode

Quasi-Newtonove metode Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Milan Milinčević Quasi-Newtonove metode Završni rad Osijek, 2016. Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Milan Milinčević

More information

Termodinamika. FIZIKA PSS-GRAD 29. studenog Copyright 2015 John Wiley & Sons, Inc. All rights reserved.

Termodinamika. FIZIKA PSS-GRAD 29. studenog Copyright 2015 John Wiley & Sons, Inc. All rights reserved. Termodinamika FIZIKA PSS-GRAD 29. studenog 2017. 15.1 Thermodynamic Systems and Their Surroundings Thermodynamics is the branch of physics that is built upon the fundamental laws that heat and work obey.

More information

Matrice u Maple-u. Upisivanje matrica

Matrice u Maple-u. Upisivanje matrica Matrice u Maple-u Tvrtko Tadić U prošlom broju upoznali ste se s matricama, a u ovom broju vidjeli ste neke njihove primjene. Mnoge je vjerojatno prepalo računanje s matricama. Pa tko će raditi svo to

More information

pretraživanje teksta Knuth-Morris-Pratt algoritam

pretraživanje teksta Knuth-Morris-Pratt algoritam pretraživanje teksta Knuth-Morris-Pratt algoritam Jelena Držaić Oblikovanje i analiza algoritama Mentor: Prof.dr.sc Saša Singer 18. siječnja 2016. 18. siječnja 2016. 1 / 48 Sadržaj 1 Uvod 2 Pretraživanje

More information

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Mateja Dumić Cjelobrojno linearno programiranje i primjene Diplomski rad Osijek, 2014. Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku

More information

BROJEVNE KONGRUENCIJE

BROJEVNE KONGRUENCIJE UNIVERZITET U NOVOM SADU PRIRODNO-MATEMATIČKI FAKULTET DEPARTMAN ZA MATEMATIKU I INFORMATIKU Vojko Nestorović BROJEVNE KONGRUENCIJE - MASTER RAD - Mentor, dr Siniša Crvenković Novi Sad, 2011. Sadržaj Predgovor...............................

More information

ALGORITAM FAKTORIZACIJE GNFS

ALGORITAM FAKTORIZACIJE GNFS SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA ALGORITAM FAKTORIZACIJE GNFS Ivan Fratrić Seminar iz predmeta Sigurnost računalnih sustava ZAGREB, Sažetak Faktorizacija brojeva jedan je od

More information

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni nastavnički studij matematike i informatike. Sortiranje u linearnom vremenu

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni nastavnički studij matematike i informatike. Sortiranje u linearnom vremenu Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni nastavnički studij matematike i informatike Tibor Pejić Sortiranje u linearnom vremenu Diplomski rad Osijek, 2011. Sveučilište J.

More information

Prsten cijelih brojeva

Prsten cijelih brojeva SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ODJEL ZA MATEMATIKU Marijana Pravdić Prsten cijelih brojeva Diplomski rad Osijek, 2017. SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ODJEL ZA MATEMATIKU

More information

Šta je to mašinsko učenje?

Šta je to mašinsko učenje? MAŠINSKO UČENJE Šta je to mašinsko učenje? Disciplina koja omogućava računarima da uče bez eksplicitnog programiranja (Arthur Samuel 1959). 1. Generalizacija znanja na osnovu prethodnog iskustva (podataka

More information

Dr. Željko Jurić: Matematička logika i teorija izračunljivosti Radna skripta za istoimeni kurs na Elektrotehničkom fakultetu u Sarajevu.

Dr. Željko Jurić: Matematička logika i teorija izračunljivosti Radna skripta za istoimeni kurs na Elektrotehničkom fakultetu u Sarajevu. Dr. Željko Jurić: Matematička logika i teorija izračunljivosti Radna skripta za istoimeni kurs na Elektrotehničkom fakultetu u Sarajevu (akademska godina 2015/16) Funkcijske relacije i funkcije (preslikavanja)

More information

Fibonaccijev brojevni sustav

Fibonaccijev brojevni sustav Fibonaccijev brojevni sustav Ljerka Jukić asistentica Odjela za matematiku Sveučilišta u Osijeku, ljukic@mathos.hr Helena Velić studentica Odjela za matematiku Sveučilišta u Osijeku, hvelic@mathos.hr Sažetak

More information

KVADRATNE INTERPOLACIJSKE METODE ZA JEDNODIMENZIONALNU BEZUVJETNU LOKALNU OPTIMIZACIJU 1

KVADRATNE INTERPOLACIJSKE METODE ZA JEDNODIMENZIONALNU BEZUVJETNU LOKALNU OPTIMIZACIJU 1 MAT KOL (Banja Luka) ISSN 0354 6969 (p), ISSN 1986 5228 (o) Vol. XXII (1)(2016), 5 19 http://www.imvibl.org/dmbl/dmbl.htm KVADRATNE INTERPOLACIJSKE METODE ZA JEDNODIMENZIONALNU BEZUVJETNU LOKALNU OPTIMIZACIJU

More information

Vedska matematika. Marija Miloloža

Vedska matematika. Marija Miloloža Osječki matematički list 8(2008), 19 28 19 Vedska matematika Marija Miloloža Sažetak. Ovimčlankom, koji je gradivom i pristupom prilagod en prvim razredima srednjih škola prikazuju se drugačiji načini

More information

Funkcijske jednadºbe

Funkcijske jednadºbe MEMO pripreme 2015. Marin Petkovi, 9. 6. 2015. Funkcijske jednadºbe Uvod i osnovne ideje U ovom predavanju obradit emo neke poznate funkcijske jednadºbe i osnovne ideje rje²avanja takvih jednadºbi. Uobi

More information

MREŽNI DIJAGRAMI Planiranje

MREŽNI DIJAGRAMI Planiranje MREŽNI DIJAGRAMI Planiranje 1 Mrežno planiranje se zasniva na grafičkom prikazivanju aktivnosti usmerenim dužima. Dužina duži nema značenja, a sa dijagrama se vidi međuzavisnost aktivnosti. U mrežnom planiranju

More information

Matematika (PITUP) Prof.dr.sc. Blaženka Divjak. Matematika (PITUP) FOI, Varaždin

Matematika (PITUP) Prof.dr.sc. Blaženka Divjak. Matematika (PITUP) FOI, Varaždin Matematika (PITUP) FOI, Varaždin Dio II Bez obzira kako nam se neki teorem činio korektnim, ne možemo biti sigurni da ne krije neku nesavršenost sve dok se nam ne čini prekrasnim G. Boole The moving power

More information

O aksiomu izbora, cipelama i čarapama

O aksiomu izbora, cipelama i čarapama O aksiomu izbora, cipelama i čarapama Aksiom izbora može se izreći u raznim ekvivalentnim formama. Dokazi ekvivalencije aksioma izbora npr. sa Zornovom lemom, ili pak sa Zermelovim teoremom o dobrom uredaju,

More information

Uvod u analizu (M3-02) 05., 07. i 12. XI dr Nenad Teofanov. principle) ili Dirihleov princip (engl. Dirichlet box principle).

Uvod u analizu (M3-02) 05., 07. i 12. XI dr Nenad Teofanov. principle) ili Dirihleov princip (engl. Dirichlet box principle). Uvod u analizu (M-0) 0., 07. i. XI 0. dr Nenad Teofanov. Kardinalni broj skupa R U ovom predavanju se razmatra veličina skupa realnih brojeva. Jasno, taj skup ima beskonačno mnogo elemenata. Pokazaće se,

More information

Konstekstno slobodne gramatike

Konstekstno slobodne gramatike Konstekstno slobodne gramatike Vežbe 07 - PPJ Nemanja Mićović nemanja_micovic@matfbgacrs Matematički fakultet, Univerzitet u Beogradu 4 decembar 2017 Sadržaj Konstekstno slobodne gramatike Rečenična forma

More information

Zbirka ispitnih zadataka iz Baza Podataka 1 Ispiti i kolokvijumi u periodu

Zbirka ispitnih zadataka iz Baza Podataka 1 Ispiti i kolokvijumi u periodu Beogradski univerzitet Elektrotehnički fakultet Miloš Cvetanović Zbirka ispitnih zadataka iz Baza Podataka 1 Ispiti i kolokvijumi u periodu 2007-2011 Beograd, Januar 2012 Ispiti... 3 Januarski ispitni

More information

Neke klase maksimalnih hiperklonova

Neke klase maksimalnih hiperklonova UNIVERZITET U NOVOM SDU PRIRODNO-MTEMTIČKI FKULTET DERRTMN Z MTEMTIKU I INFORMTIKU Jelena Čolić Neke klase maksimalnih hiperklonova - završni rad - MENTOR: Prof. dr Rozalija Madaras-Siladi Novi Sad, 2012.

More information

Ivan Soldo. Sažetak. U članku se analiziraju različiti načini množenja matrica. Svaki od njih ilustriran je primjerom.

Ivan Soldo. Sažetak. U članku se analiziraju različiti načini množenja matrica. Svaki od njih ilustriran je primjerom. Osječki matematički list 5(005), 8 Različiti načini množenja matrica Ivan Soldo Sažetak U članku se analiziraju različiti načini množenja matrica Svaki od njih ilustriran je primjerom Ključne riječi: linearni

More information

Mjerenje snage. Na kraju sata student treba biti u stanju: Spojevi za jednofazno izmjenično mjerenje snage. Ak. god. 2008/2009

Mjerenje snage. Na kraju sata student treba biti u stanju: Spojevi za jednofazno izmjenično mjerenje snage. Ak. god. 2008/2009 Mjerenje snae Ak. od. 008/009 1 Na kraju sata student treba biti u stanju: Opisati i analizirati metode mjerenja snae na niskim i visokim frekvencijama Odabrati optimalnu metodu mjerenja snae Analizirati

More information

NIZOVI I REDOVI FUNKCIJA

NIZOVI I REDOVI FUNKCIJA SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK Danijela Piškor NIZOVI I REDOVI FUNKCIJA Diplomski rad Voditelj rada: izv. prof. dr. sc. Ljiljana Arambašić Zagreb, rujan 206.

More information

Ksenija Doroslovački KOMBINATORIKA INTERPRETIRANA FUNKCIJAMA I NJIHOVIM OSOBINAMA MASTER RAD. NOVI SAD jun 2008

Ksenija Doroslovački KOMBINATORIKA INTERPRETIRANA FUNKCIJAMA I NJIHOVIM OSOBINAMA MASTER RAD. NOVI SAD jun 2008 1 Ksenija Doroslovački KOMBINATORIKA INTERPRETIRANA FUNKCIJAMA I NJIHOVIM OSOBINAMA MASTER RAD NOVI SAD jun 2008 2 Sadržaj 1 UVOD 5 2 FUNKCIJE 11 3 KLASIČNI KOMBINATORNI OBJEKTI 17 4 NEKI NEKLASIČNI KOMBINATORNI

More information

3. Programiranje u Matlab-u

3. Programiranje u Matlab-u 3. Programiranje u Matlab-u 3.1 M-datoteke M-datoteka nije ništa drugo do obična tekstualna datoteka koja sadrži MATLAB komande i sačuvana je sa ekstenzijom.m. Postoje dva tipa M-datoteka, skriptovi i

More information

Karakteri konačnih Abelovih grupa

Karakteri konačnih Abelovih grupa Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni preddiplomski studij matematike Matija Klarić Karakteri konačnih Abelovih grupa Završni rad Osijek, 2015. Sveučilište J. J. Strossmayera

More information

INVESTIGATION OF UPSETTING OF CYLINDER BY CONICAL DIES

INVESTIGATION OF UPSETTING OF CYLINDER BY CONICAL DIES INVESTIGATION OF UPSETTING OF CYLINDER BY CONICAL DIES D. Vilotic 1, M. Plancak M 1, A. Bramley 2 and F. Osman 2 1 University of Novi Sad, Yugoslavia; 2 University of Bath, England ABSTRACT Process of

More information

Nilpotentni operatori i matrice

Nilpotentni operatori i matrice Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni preddiplomski studij matematike Nikolina Romić Nilpotentni operatori i matrice Završni rad Osijek, 2016. Sveučilište J. J. Strossmayera

More information

BAZE PODATAKA Predavanje 03

BAZE PODATAKA Predavanje 03 BAZE PODATAKA Predavanje 03 Prof. dr. sc. Tonči Carić Mario Buntić, mag. ing. traff. Juraj Fosin, mag. ing. traff. Sadržaj današnjeg predavanja Relacijski model podataka Coddova pravila Terminologija Domena

More information

ATOMSKA APSORP SORPCIJSKA TROSKOP

ATOMSKA APSORP SORPCIJSKA TROSKOP ATOMSKA APSORP SORPCIJSKA SPEKTROS TROSKOP OPIJA Written by Bette Kreuz Produced by Ruth Dusenbery University of Michigan-Dearborn 2000 Apsorpcija i emisija svjetlosti Fizika svjetlosti Spectroskopija

More information

AKSIOME TEORIJE SKUPOVA

AKSIOME TEORIJE SKUPOVA MAT-KOL (Banja Luka) ISSN 0354/6969 XV(1)(2009), 17-25 AKSIOME TEORIJE SKUPOVA Duško Bogdanić 1, Bojan Nikolić 2 i Daniel A. Romano 2 Sažetak: Postoji više od jedne mogućnosti aksiomatizacije teorije skupova.

More information

4 Funkcije. 4.1 Definicija funkcije

4 Funkcije. 4.1 Definicija funkcije Definicija funkcije Poziv funkcije Funkcijski parametri Pozicijski parametri Slijedni parametri Imenovani parametri Funkcija je objekt Funkcijski prostor imena Ugnjež dene funkcije Rekurzivne funkcije

More information

TEHNIČKO REŠENJE. Algoritam za sinhronizaciju rada prediktora DRAM memorija

TEHNIČKO REŠENJE. Algoritam za sinhronizaciju rada prediktora DRAM memorija TEHNIČKO REŠENJE Algoritam za sinhronizaciju rada prediktora DRAM memorija M-85: Prototip, nova metoda, softver, standardizovan ili atestiran instrument, nova genetska proba, mikroorganizmi Autori: Vladimir

More information

Realizacija i ocjena MPPT algoritama u fotonaponskom sistemu napajanja

Realizacija i ocjena MPPT algoritama u fotonaponskom sistemu napajanja INFOTEH-JAHORINA Vol., March. Realizacija i ocjena MPPT algoritama u fotonaponskom sistemu napajanja Srđan Lale, Slobodan Lubura, Milomir Šoja Elektrotehnički fakultet, Univerzitet u Istočnom Sarajevu

More information

Karakterizacija problema zadovoljenja uslova širine 1

Karakterizacija problema zadovoljenja uslova širine 1 UNIVERZITET U NOVOM SADU PRIRODNO-MATEMATIČKI FAKULTET DEPARTMAN ZA MATEMATIKU I INFORMATIKU Aleksandar Prokić Karakterizacija problema zadovoljenja uslova širine 1 -master rad- Mentor: dr Petar Marković

More information

ALGORITMI ZA ISPITIVANJE DJELJIVOSTI

ALGORITMI ZA ISPITIVANJE DJELJIVOSTI SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU FAKULTET ELEKTROTEHNIKE, RAČUNARSTVA I INFORMACIJSKIH TEHNOLOGIJA Preddiplomski stručni studij Elektrotehnika, smjer Informatika ALGORITMI ZA ISPITIVANJE

More information

Kvaternioni i kvaternionsko rješenje kvadratne jednadžbe

Kvaternioni i kvaternionsko rješenje kvadratne jednadžbe Kvaternioni i kvaternionsko rješenje 1 Uvod Kvaternioni i kvaternionsko rješenje kvadratne jednadžbe Željko Zrno 1 i Neven Jurić Što je matematika? Na što prvo čovjeka asocira riječ matematika? Matematika

More information

Mostovi Kaliningrada nekad i sada

Mostovi Kaliningrada nekad i sada Osječki matematički list 7(2007), 33 38 33 Mostovi Kaliningrada nekad i sada Matej Kopić, Antoaneta Klobučar Sažetak.U ovom radu su najprije dane stvarne situacije oko Kalingradskih mostova kroz povijest.

More information

Formule za udaljenost točke do pravca u ravnini, u smislu lp - udaljenosti math.e Vol 28.

Formule za udaljenost točke do pravca u ravnini, u smislu lp - udaljenosti math.e Vol 28. 1 math.e Hrvatski matematički elektronički časopis Formule za udaljenost točke do pravca u ravnini, u smislu lp - udaljenosti Banachovi prostori Funkcija udaljenosti obrada podataka optimizacija Aleksandra

More information

L A T E X 1. predavanje

L A T E X 1. predavanje L A T E X 1. predavanje Ivica Nakić PMF-MO Računarski praktikum 3 nakic@math.hr LAT E X- predavanje 1 - p. 1 Što je LAT E X? Mali primjer PDF dokument Zašto LAT E X? LAT E X- predavanje 1 - p. 2 Što je

More information

Mersenneovi i savršeni brojevi

Mersenneovi i savršeni brojevi Sveučilište J.J. Strossmayera u Osijeku Odjel za matematiku Diplomski studij matematike Ana Maslać Mersenneovi i savršeni brojevi Diplomski rad Osijek, 2012. Sveučilište J.J. Strossmayera u Osijeku Odjel

More information

DISKRETNI LOGARITAM. 1 Uvod. MAT-KOL (Banja Luka) ISSN (p), ISSN (o) Vol. XVII (2)(2011), 43-52

DISKRETNI LOGARITAM. 1 Uvod. MAT-KOL (Banja Luka) ISSN (p), ISSN (o) Vol. XVII (2)(2011), 43-52 MAT-KOL (Banja Luka) ISSN 0354-6969 (p), ISSN 1986-5228 (o) Vol. XVII (2)(2011), 43-52 DISKRETNI LOGARITAM Bernadin Ibrahimpašić 1, Dragana Kovačević 2 Abstract U ovom članku se opisuje pojam diskretnog

More information

HRVATSKA MATEMATIČKA OLIMPIJADA

HRVATSKA MATEMATIČKA OLIMPIJADA HRVATSKA MATEMATIČKA OLIMPIJADA prvi dan 5. svibnja 01. Zadatak 1. Dani su pozitivni realni brojevi x, y i z takvi da je x + y + z = 18xyz. nejednakost x x + yz + 1 + y y + xz + 1 + z z + xy + 1 1. Dokaži

More information

Projektovanje paralelnih algoritama I. Uvod Osnove dinamičke paralelizacije

Projektovanje paralelnih algoritama I. Uvod Osnove dinamičke paralelizacije Projektovanje paralelnih algoritama I Uvod Osnove dinamičke paralelizacije 1 Uvod PLATFORMA ZA DINAMIČKU PARALELIZACIJU Omogućava specificiranje paralelizma u aplikaciji Bez brige o komunikacionim protokolima,

More information

IMPROVEMENT OF HIPPARCOS PROPER MOTIONS IN DECLINATION

IMPROVEMENT OF HIPPARCOS PROPER MOTIONS IN DECLINATION Serb. Astron. J. 172 (2006), 41-51 UDC 521.96 DOI: 10.2298/SAJ0672041D Preliminary report IMPROVEMENT OF HIPPARCOS PROPER MOTIONS IN DECLINATION G. Damljanović 1, N. Pejović 2 and B. Jovanović 1 1 Astronomical

More information

ANALYSIS OF THE RELIABILITY OF THE "ALTERNATOR- ALTERNATOR BELT" SYSTEM

ANALYSIS OF THE RELIABILITY OF THE ALTERNATOR- ALTERNATOR BELT SYSTEM I. Mavrin, D. Kovacevic, B. Makovic: Analysis of the Reliability of the "Alternator- Alternator Belt" System IVAN MAVRIN, D.Sc. DRAZEN KOVACEVIC, B.Eng. BRANKO MAKOVIC, B.Eng. Fakultet prometnih znanosti,

More information

DRUGI KOLOKVIJ ZADACI ZA VJEŽBU. 1. zadatak. Za rad s bazom podataka moja_baza koristimo naredbu:

DRUGI KOLOKVIJ ZADACI ZA VJEŽBU. 1. zadatak. Za rad s bazom podataka moja_baza koristimo naredbu: DRUGI KOLOKVIJ ZADACI ZA VJEŽBU 1. zadatak. Za rad s bazom podataka moja_baza koristimo naredbu: a. SELECT moja_baza b. ENTER moja_baza c. USE moja_baza d. OPEN moja_baza 2. zadatak. Koja od ovih naredbi

More information

Sveučilišni studijski centar za stručne studije. Zavod za matematiku i fiziku. Uvod u Matlab. Verzija 1.1

Sveučilišni studijski centar za stručne studije. Zavod za matematiku i fiziku. Uvod u Matlab. Verzija 1.1 Sveučilišni studijski centar za stručne studije Zavod za matematiku i fiziku Uvod u Matlab Verzija 1.1 Karmen Rivier, Arijana Burazin Mišura 1.11.2008 Uvod Matlab je interaktivni sistem namijenjen izvođenju

More information

Maja Antolović Algoritmi u teoriji brojeva

Maja Antolović Algoritmi u teoriji brojeva Sveučilište J.J.Strossmayera u Osijeku Odjel za matematiku Preddiplomski studij matematike Maja Antolović Algoritmi u teoriji brojeva Završni rad Osijek, 2017. Sveučilište J.J.Strossmayera u Osijeku Odjel

More information

Zanimljive rekurzije

Zanimljive rekurzije Zanimljive rekurzije Dragana Jankov Maširević i Jelena Jankov Riječ dvije o rekurzijama Rekurzija je metoda definiranja funkcije na način da se najprije definira nekoliko jednostavnih, osnovnih slučajeva,

More information

Turingovi strojevi Opis Turingovog stroja Odluµcivost logike prvog reda. Lipanj Odluµcivost i izraµcunljivost

Turingovi strojevi Opis Turingovog stroja Odluµcivost logike prvog reda. Lipanj Odluµcivost i izraµcunljivost Odluµcivost logike prvog reda B. µ Zarnić Lipanj 2008. Uvod Turingovi strojevi Logika prvoga reda je pouzdana. Logika prvog reda je potpuna. Γ `LPR K ) Γ j= SPR K Γ j= SPR K ) Γ `LPR K Prema tome, ako

More information

Paralelni algoritmi 1

Paralelni algoritmi 1 SVEUČILIŠTE U ZAGREBU PMF MATEMATIČKI ODJEL Sanja Singer i Saša Singer Paralelni algoritmi 1 Predavanja i vježbe Zagreb, 2003. Sadržaj 1. Uvod.................................... 1 1.1. Mali podsjetnik

More information

Simetrične matrice, kvadratne forme i matrične norme

Simetrične matrice, kvadratne forme i matrične norme Sveučilište JJStrossmayera u Osijeku Odjel za matematiku Sveučilišni preddiplomski studij matematike Martina Dorić Simetrične matrice, kvadratne forme i matrične norme Završni rad Osijek, 2014 Sveučilište

More information

Asocijativna polja POGLAVLJE Ključevi kao cijeli brojevi

Asocijativna polja POGLAVLJE Ključevi kao cijeli brojevi POGLAVLJE 7 Asocijativna polja U ovom poglavlju promotrit ćemo poopćenje strukture podataka polja. Upoznali smo se s činjenicom da se elementima polja efikasno pristupa poznavajući cjelobrojni indeks određenog

More information

Metoda parcijalnih najmanjih kvadrata: Regresijski model

Metoda parcijalnih najmanjih kvadrata: Regresijski model Sveučilište u Zagrebu Prirodoslovno-matematički fakultet Matematički odsjek Tamara Sente Metoda parcijalnih najmanjih kvadrata: Regresijski model Diplomski rad Voditelj rada: Izv.prof.dr.sc. Miljenko Huzak

More information

MATHEMATICAL ANALYSIS OF PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR FEEDING BOTTLE CAPS

MATHEMATICAL ANALYSIS OF PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR FEEDING BOTTLE CAPS http://doi.org/10.24867/jpe-2018-02-055 JPE (2018) Vol.21 (2) Choudhary, M., Narang, R., Khanna, P. Original Scientific Paper MATHEMATICAL ANALYSIS OF PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR FEEDING

More information

Grafovi. Osnovni algoritmi sa grafovima. Predstavljanje grafova

Grafovi. Osnovni algoritmi sa grafovima. Predstavljanje grafova Grafovi Osnovni algoritmi sa grafovima U ovom poglavlju će biti predstavljene metode predstavljanja i pretraživanja grafova. Pretraživanja grafa podrazumeva sistematično kretanje vezama grafa, tako da

More information

NAPREDNI FIZIČKI PRAKTIKUM II studij Geofizika POLARIZACIJA SVJETLOSTI

NAPREDNI FIZIČKI PRAKTIKUM II studij Geofizika POLARIZACIJA SVJETLOSTI NAPREDNI FIZIČKI PRAKTIKUM II studij Geofizika POLARIZACIJA SVJETLOSTI studij Geofizika NFP II 1 ZADACI 1. Izmjerite ovisnost intenziteta linearno polarizirane svjetlosti o kutu jednog analizatora. Na

More information

Vektori u ravnini i prostoru. Rudolf Scitovski, Ivan Vazler. 10. svibnja Uvod 1

Vektori u ravnini i prostoru. Rudolf Scitovski, Ivan Vazler. 10. svibnja Uvod 1 Ekonomski fakultet Sveučilište J. J. Strossmayera u Osijeku Vektori u ravnini i prostoru Rudolf Scitovski, Ivan Vazler 10. svibnja 2012. Sadržaj 1 Uvod 1 2 Operacije s vektorima 2 2.1 Zbrajanje vektora................................

More information

AGENTI ZA RUDARENJE WEBA

AGENTI ZA RUDARENJE WEBA SVEUČILIŠTE U ZAGREBU FAKULTET ORGANIZACIJE I INFORMATIKE VARAŽDIN Andrea Danzante AGENTI ZA RUDARENJE WEBA ZAVRŠNI RAD Varaždin, 2017 SVEUČILIŠTE U ZAGREBU FAKULTET ORGANIZACIJE I INFORMATIKE VARAŽDIN

More information

Neke primene teorije fazi skupova i fazi logike u procesiranju slika

Neke primene teorije fazi skupova i fazi logike u procesiranju slika Univerzitet u Beogradu Matematički fakultet Neke primene teorije fazi skupova i fazi logike u procesiranju slika - Master rad - Nebojša Perić 1024/2013 Beograd, 2014. 2 Mentor: Članovi komisije: Datum

More information

Sveučilište Josipa Jurja Strossmayera u Osijeku Odjel za matematiku

Sveučilište Josipa Jurja Strossmayera u Osijeku Odjel za matematiku Sveučilište Josipa Jurja Strossmayera u Osijeku Odjel za matematiku Valentina Volmut Ortogonalni polinomi Diplomski rad Osijek, 2016. Sveučilište Josipa Jurja Strossmayera u Osijeku Odjel za matematiku

More information

The Prediction of. Key words: LD converter, slopping, acoustic pressure, Fourier transformation, prediction, evaluation

The Prediction of. Key words: LD converter, slopping, acoustic pressure, Fourier transformation, prediction, evaluation K. Kostúr, J. et Futó al.: The Prediction of Metal Slopping in LD Coerter on Base an Acoustic ISSN 0543-5846... METABK 45 (2) 97-101 (2006) UDC - UDK 669.184.224.66:534.6=111 The Prediction of Metal Slopping

More information