Operativni sistemi 2

Similar documents
DISTRIBUIRANI ALGORITMI I SISTEMI

Projektovanje paralelnih algoritama II

Programiranje u realnom vremenu Bojan Furlan

KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ URL:

Red veze za benzen. Slika 1.

Uvod u relacione baze podataka

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

TEORIJA SKUPOVA Zadaci

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

Mathcad sa algoritmima

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

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

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

Sinhronizacija procesa

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

Karakterizacija problema zadovoljenja uslova širine 1

Metrički prostori i Riman-Stiltjesov integral

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU

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

ZANIMLJIVI ALGEBARSKI ZADACI SA BROJEM 2013 (Interesting algebraic problems with number 2013)

BROJEVNE KONGRUENCIJE

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

Konstrukcija i analiza algoritama

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

1.1 Algoritmi. 2 Uvod

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

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

APPROPRIATENESS OF GENETIC ALGORITHM USE FOR DISASSEMBLY SEQUENCE OPTIMIZATION

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

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

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

Neke klase maksimalnih hiperklonova

FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA

UNIVERZITET U NOVOM SADU PRIRODNO-MATEMATIČKI FAKULTET DEPARTMAN ZA MATEMATIKU I INFORMATIKU

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

UOPŠTENI INVERZI, FAKTORI USLOVLJENOSTI I PERTURBACIJE

Funkcijske jednadºbe

Mostovi Kaliningrada nekad i sada

ANALYTICAL AND NUMERICAL PREDICTION OF SPRINGBACK IN SHEET METAL BENDING

U VOD U ALGOR IT ME I S T RUKT URE P ODATAK A

UNIVERZITET U BEOGRADU MATEMATIČKI FAKULTET

HRVATSKA MATEMATIČKA OLIMPIJADA

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

Ariana Trstenjak Kvadratne forme

Konstrukcija i analiza algoritama

Fibonaccijev brojevni sustav

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

VELOCITY PROFILES AT THE OUTLET OF THE DIFFERENT DESIGNED DIES FOR ALUMINIUM EXTRUSION

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

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

Pitagorine trojke. Uvod

NAPREDNI FIZIČKI PRAKTIKUM 1 studij Matematika i fizika; smjer nastavnički MJERENJE MALIH OTPORA

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

VREMENSKE SERIJE U FINANSIJAMA: ARCH I GARCH

AIR CURTAINS VAZDU[NE ZAVESE V H

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

PRIMENA FAZI LOGIKE ZA REŠAVANJE NP-TEŠKIH PROBLEMA RUTIRANJA VOZILA I

PRELIMINARY COMMUNICATION Influence of chloride ions on the open circuit potentials of chromium in deaerated sulfuric acid solutions

INVESTIGATION OF UPSETTING OF CYLINDER BY CONICAL DIES

Metode praćenja planova

Neke primene teorije fazi skupova i fazi logike u procesiranju slika

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

Kristina Popadić. Analiza preživljavanja sa primenama u zdravstvenom osiguranju - master rad -

Uvod u dinamičko programiranje

Maja Antolović Algoritmi u teoriji brojeva

TemidaLib sistem za rad sa velikim brojevima TemidaLib Multiprecision Arithmetic Library

DYNAMIC HEAT TRANSFER IN WALLS: LIMITATIONS OF HEAT FLUX METERS

Prsten cijelih brojeva

O GLATKIM GRAFOVIMA KOMPATIBILNIM SA TEJLOROVIM OPERACIJAMA

Uvod u algoritamske tehnike

Grafovi. Osnovni algoritmi sa grafovima. Predstavljanje grafova

Correctness of Concurrent Programs

Hamiltonovi grafovi i digrafovi

Algoritmi za pronalaºenje minimalnog pokrivaju eg stabla

An Algorithm for Computation of Bond Contributions of the Wiener Index

Algoritmi i programiranje

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

Đorđe Đorđević, Dušan Petković, Darko Živković. University of Niš, The Faculty of Civil Engineering and Architecture, Serbia

ANALYSIS OF INFLUENCE OF PARAMETERS ON TRANSFER FUNCTIONS OF APERIODIC MECHANISMS UDC Života Živković, Miloš Milošević, Ivan Ivanov

IMPLEMENTACIJA PREDIKTORA ZA UPRAVLJANJE PRISTUPIMA SDRAM MEMORIJI IMPLEMENTATION OF PREDICTOR FOR ACCESS CONTROLL TO SDRAM MEMORY

ALGORITAM FAKTORIZACIJE GNFS

Klase neograničenih operatora

EXPERIMENTAL ANALYSIS OF THE STRENGTH OF A POLYMER PRODUCED FROM RECYCLED MATERIAL

Teorija Arbitraže. Jelena Miletić. stipendista Ministarstva za nauku i zaštitu čivotne sredine 16. Decembar 2005.

Karakteri konačnih Abelovih grupa

Velimir Abramovic: KOLIKO IMA BESKONACNOSTI U MATEMATICI? (Iz Osnovi Nauke o Vremenu )

pretraživanje teksta Knuth-Morris-Pratt algoritam

AUTOMATSKE GRUPE I STRUKTURE PREDSTAVLJIVE KONAČNIM AUTOMATIMA

ALGORITMI ZA ISPITIVANJE DJELJIVOSTI

Realizacija i ocjena MPPT algoritama u fotonaponskom sistemu napajanja

OSCILATORNOST NELINEARNIH DIFERENCIJALNIH JEDNAČINA DRUGOG REDA

Metode izračunavanja determinanti matrica n-tog reda

Konstekstno slobodne gramatike

SEMINARSKI RAD IZ VEROVATNOĆE I STATISTIKE. TEMA: Test za proveru znanja

MREŽNI DIJAGRAMI Planiranje

APPLICATION OF THOMAS-FERMI MODEL TO FULLERENE MOLECULE AND NANOTUBE UDC 547. Yuri Kornyushin

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

BLAST-INDUCED DAMAGE AND ITS IMPACT ON STRUCTURAL STABILITY OF UNDERGROUND EXCAVATIONS UTICAJ MINIRANJA NA STRUKTURNU STABILNOST PODZEMNIH PROSTORIJA

U X. 1. Multivarijantna statistička analiza 1

Transcription:

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), request(y), release(y) B: request(y), release(y), request(x), release(x) C: request(x), request(y), release(y), release(x) Da li ova tri procesa mogu da uđu u stanje mrtve blokade (deadlock)? Ako mogu, dati scenario po kome dolaze u ovo stanje i nacrtati graf zauzeća resursa u tom stanju. Ako ne mogu, precizno objasniti (dokazati) zašto ne mogu. Rešenje: Ne mogu, jer nije ispunjen neophodan uslov cirkularno držanje i čekanje (circular wait). Naime, jedino proces C može doći u stanje držanja i čekanja (hold and wait), koje je neophodno za nastanak mrtve blokade, kada zauzme resurs X a eventualno čeka na resurs Y. Da bi postojala mrtva blokada, taj resurs Y mora da drži neki drugi proces (A ili B) koji u isto vreme čeka na neki drugi resurs. Međutim, ni proces A ni proces B ne traže ni jedan drugi resurs u periodu u kome eventualno drže resurs Y, već mogu da nastave svoje izvršavanje i oslobode resurs Y. Zadatak 2. Februar 2007. Dat je interfejs monitora koji obezbeđuje neophodnu sinhronizaciju po protokolu multiple readers single writer: class ReadersWriters { public: void startread(); void stopread(); void startwrite(); void stopwrite(); //... }; a)(5) Korišćenjem ovog monitora napisati kod tela procesa koji najpre čita vrednost celobrojne deljene promenljive x, a onda tu vrednost uvećanu za 1 upisuje u deljenu promenljivu y. Pristup ovim deljenim promenljivim treba da bude po protokolu multiple readers single writer, s tim da se garantuje da vrednost promenljive x ne bude promenjena sve dok upis u y ne bude završen. 1/18

Rešenje: extern int x, y; extern ReadersWriters* xguard; extern ReadersWriters* yguard; xguard->startread(); int xtemp = x; // Alternativno rešenje: bez ovog reda i... yguard->startwrite(); y = xtemp + 1; //... ovde: y = x + 1; yguard->stopwrite(); xguard->stopread(); b)(5) Ako neki drugi proces radi ovu istu grupu operacija na isti način, s tim da samo zamenjuje uloge x i y (čita iz y i upisuje u x), koji problem je moguć? Obrazložiti. Moguća je mtrva blokada (deadlock): prvi proces zaključava x na čitanje (read lock pomoću startread()), tako da zabranjuje upis u x, drugi proces to isto radi za y, prvi proces traži ključ za upis u y (write lock pomoću startwrite()) i blokira se, drugi proces to isto radi za x, i tako se uzajamno mrtvo blokiraju. 2/18

Zadatak 3. Januar 2008. Data je sledeća pogrešna implementacija protokola više čitalaca jedan pisac (multiple readers single writer) pomoću klasičnog monitora i uslovne promenljive. Osim favorizovanja čitalaca i izgladnjivanja pisaca, ova implementacija poseduje još jedan značajan problem moguće je i izgladnjivanje čitalaca. Precizno objasniti kako ovaj problem može da nastane. monitor ReadersWriters export startreading, stopreading, startwriting, stopwriting; var iswriting : boolean; readerscount : integer; queue : condition; procedure startwriting; begin if (iswriting or readerscount>0) wait(queue); iswriting := true; end; procedure stopwriting; begin iswriting := false; signal(queue); end; procedure startreading; begin if (iswriting) wait(queue); readerscount := readerscount + 1; end; procedure stopreading; begin readerscount := readerscount - 1; if (readerscount = 0) signal(queue); end; begin iswriting := false; readerscount := 0; end; Izgladnjivanje čitalaca može da nastane po sledećem scenariju. Neka je u datom intervalu vremena u toku pisanje (pisac je prošao kroz startwriting). Tokom ovog intervala, sve dok ovaj pisac piše i ne izvrši stopwriting, svi novopridošli čitaoci (označimo ih sa čekajućim čitaocima ) blokiraju se na uslovnoj promenljivoj queue u operaciji startreading. Kada pisac završi sa pisanjem i izvrši stopwriting, samo jedan od čekajućih čitalaca se deblokira i izlazi iz procedure startreading, dok ostali i dalje čekaju. Tokom čitanja tog deblokiranog čitaoca, mogu da stižu novi čitaoci koji odmah 3/18

prolaze kroz startreading (jer je iswriting=false), dok ostali čekajući čitaoci, kao i eventualni pisci, ostaju da čekaju potencijalno beskonačno, pošto ni jedan čitalac ne izvrši signal(queue) jer je stalno readerscount>0. Problem je što nisu svi čekajući čitaoci pušteni da čitaju čim je pisac završio pisanje. Zadatak 4. Jun 2006. Drajver nekog uređaja prima zahteve za operacijama tipa A i B u dva reda čekanja. Prelazak sa obrade zahteva za operacijom A na zahtev za operacijom B i obratno nosi relativno veliki režijski trošak i zbog toga ovaj drajver obrađuje zahteve po sledećem algoritmu: ukoliko je završena obrada zahteva jednog tipa, prihvata se i obrađuje zahtev istog tipa (uzima se iz istog reda); ako takvog zahteva nema, obrađuje se zahtev drugog tipa (iz drugog reda). a)(5) Koji problem postoji u ovakvom pristupu? Imenovati i precizno opisati problem. Postoji problem izgladnjivanja (starvation): ukoliko pristigne novi zahtev istog tipa kao i onaj koji se trenutno obrađuje, i to se stalno dešava (ili se dešava u jako dugom vremenskom intervalu), zahtevi drugog tipa ne bivaju opsluženi. b)(5) Predložiti modifikaciju opisanog algoritma koji rešava ovaj problem. Postoji mnogo različitih prihvatljivih rešenja. Jedna klasa rešenja podrazumeva upotrebu tehnike starenja (aging) koja je prikazivana na predavanjima. Na primer, može se ograničiti broj uzastopno opsluženih zahteva istog tipa ukoliko je sve vreme postojao zahtev drugog tipa itd. 4/18

Zadatak 5. Oktobar 2007. U nekom sistemu primenjuje se sledeći pristup sprečavanju mrtve blokade (deadlock). Proces zauzima željeni resurs eksplicitno, odgovarajućim sistemskim pozivom u kome se zadaje i operacija nad tim resursom. Operacija se potom radi asinhrono, u smislu da proces nastavlja svoje izvršavanje uporedo i nezavisno od toka operacije nad resursom. Kada se operacija završi, resurs se oslobađa implicitno (sam sistem ga oslobađa, a ne proces nekom eksplicitnom operacijom). Pre nego što se resurs oslobodi, drugi procesi ga ne mogu zauzeti, već bivaju suspendovani ako ga zatraže. Ovo je ujedno i jedini način zauzimanja i korišćenja resursa od strane procesa. Resursi su interno numerisani prirodnim brojevima, tako da je svakom resursu pridružen jedinstveni prirodan broj. Precizno i u potpunosti objasniti postupak koji sistem treba da sprovodi u sistemskom pozivu zauzimanja resursa da bi sprečio mrtvu blokadu. Posebno objasniti kada i kako sistem treba da suspenduje i deblokira suspendovani proces. U opisanom sistemu nije moguće mrtvo blokiranje jer nije zadovoljen uslov drži i čeka. Naime, iz činjenice da će resursi po završetku operacije biti implicitno oslobođeni sledi da proces ne može (beskonačno) da čeka na jedan resurs, a da pri tome sve vreme drži zauzet drugi resurs, jer će ovaj drugi u konačnom vremenu (pod pretpostavkom ispravnog funkcionisanja sistema) biti oslobođen. Drugim rečima, kada je neki proces blokiran zato što je resurs koga je zatražio zauzet, ostali resursi koje je dobio ranije mogu biti oslobođeni (čim se tražena operacija završi, dakle u konačnom vremenu). Zbog rečenog, pri rezervisanju resursa nije potrebno primenjivati nikakav dodatni algoritam za sprečavanje mrtve blokade. Dakle, pri zahtevu za resursom dovoljno je proveriti da li je resurs već zauzet. Ako jeste, pozivajući proces blokirati. U nastavku, označiti ga kao zauzetog i pokrenuti traženu operaciju. Kada se operacija na nekom resursu završi, ako ne postoji nijedan proces koji na taj resurs čeka, označiti taj resurs kao slobodan. Ako postoji neki proces koji čeka na taj resurs, deblokirati ga. Napomena:Da li je u ovakvom sistemu moguće rešiti problem opisan u zadatku 2 a.)? 5/18

Zadatak 6. Jun 2008. U nekom sistemu upravljanja deljenim resursima resursi su takvi da je moguće sačuvati kontekst korišćenja (stanje) resursa od strane nekog procesa koji ga je zauzeo, osloboditi taj resurs, proces suspendovati, a kasnije restaurirati taj kontekst (stanje) i nastaviti izvršavanje tog procesa uz zauzimanje i korišćenje tog resursa. Predložiti i precizno opisati postupak kojim se sigurno sprečava mrtva blokada (deadlock) u ovom sistemu i dokazati da je mrtva blokada nemoguća. (Obratiti pažnju da se ne traži primena detekcije i rešavanja mrtve blokade, već njeno sprečavanje.) Ukazati na eventualne druge probleme predloženog rešenja. U trenutku kada neki proces zatraži resurs koji je zauzet, treba sačuvati kontekst korišćenja (stanje) svih resursa koje je on već zauzeo i koristi, osloboditi te resurse i suspendovati proces, tako da on čeka da se oslobodi resurs koji je tražio, ali i svi oni koje je već bio zauzeo i koji su mu preoteti. Kada se oslobode svi ti resursi, treba restaurirati kontekst korišćenja resursa koje je proces već koristio, zauzeti onaj koji traži, i deblokirati taj proces. Ovakav protokol sigurno sprečava mrtvu blokadu jer nije ispunjen uslov držanja i čekanja (engl. hold and wait) koji je neophodan za nastajanje mrtve blokade: proces neće držati zauzet ni jedan resurs ako je došao u situaciju da čeka na novi resurs koga je neko drugi zauzeo. Problem ovog pristupa je potencijalno izgladnjivanje: proces kome su ovako preoteti resursi može beskonačno čekati jer mu drugi procesi zauzimaju po neki od resursa na koje on čeka da se oslobode. Napomena: Kako ovaj problem rešiti? Npr. tehnikom starenja sa preotimanjem resursa. 6/18

Zadatak 7. Januar 2016. U nekom sistemu postoje dva procesa, P1 i P2, koji koriste resurse R1, R2 i R3 na način dat dole. Pretpostavlja se da odmah nakon operacije zauzeća određenih resursa dati proces vrši operacije sa tim resursom, odnosno da je proces ovako konstruisan da bi resurse držao zauzete najmanje moguće (alocira ih najkasnije što može, pre same operacije). Prestrukturirati ove procese tako da se spreči njihova mrtva blokada (deadlock) ukidanjem uslova cirkularnog čekanja (circular wait). Prestrukturiranje podrazumeva da proces može da zauzme resurs i ranije nego što je to neophodno za operaciju sa tim resursom, ali ne pre nego što je neophodno za sprečavanje mrtve blokade. P1: P2: request(r1); request(r2); request(r2, R3); request(r1,r3); release(r1,r2,r3); release(r1,r2,r3); Rešenje: Trivijalno rešenje je da oba procesa zatraže odmah sve resurse. Takvo rešenje je neoptimalno. Treba zauzeti samo one resurse koji su potrebni i dovoljni da se izbgne mrtva blokada. Mrtva blokada nastaje kada proces P1 zauzme resurs R1 a proces P2 zauzme resurs R2. Nakon toga svaki proces će tražiti resurs koji drugi poseduje i blokiraće se. Jedan način da se izbegne kružno čekanje je da jedan od procesa traži ranije onaj resurs na koji kružno čeka. Recimo P1 će kružno čekati na resurs R2. P1: P2: request(r1, R2); request(r3); release(r1,r2,r3); request(r2); request(r1,r3); release(r1,r2,r3); 7/18

Zadatak 8. Oktobar 2010. U nekom specijalizovanom sistemu proces se može poništiti (roll back) ugasiti uz poništavanje svih njegovih efekata, i potom pokrenuti ispočetka. U ovom sistemu primenjuje se sledeći algoritam sprečavanja mrtve blokade (deadlock prevention). Svakom procesu se, prilikom kreiranja, dodeljuje jedinstveni identifikator tako da se identifikatori dodeljuju procesima po rastućem redosledu vremena kreiranja: kasnije kreirani proces ima veći ID. Kada proces P i sa identifikatorom i zatraži resurs koga drži proces P j sa identifikatorom j, onda se postupa na sledeći način: ako je i <j, onda se P i blokira i čeka da resurs bude oslobođen; ako je i >j, onda se P i poništava i pokreće ponovo. a)(5) Dokazati da se ovim algoritmom sprečava mrtva blokada. b)(5) Koji ID treba dodeliti poništenom procesu P i kada se on ponovo pokrene, da bi ovaj algoritam sprečio izgladnjivanje (starvation)? Obrazložiti. a)(5) Dokaz kontradikcijom. Pretpostavimo da može nastati mrtva blokada, što znači da postoji zatvoren krug procesa P i1, P i2,..., P in (n>=1) koji su međusobno blokirani. Prema uslovima algoritma, odatle bi sledilo da je: i 1 <i 2 <... <i n <i 1, što ne može biti, pa mrtva blokada ne može nastati. b)(5) Prema uslovima algoritma, ako mlađi proces zatraži resurs koga drži neki stariji proces, mlađi proces se poništava i pokreće ponovo. Kada se poništeni proces ponovo pokrene, ako bi mu se dodelio novi ID koji odgovara vremenu njegovom ponovnog pokretanja, on bi bio još mlađi u sistemu, pa bi trpeo još više poništavanja, što može dovesti do njegovog izgladnjivanja. Zato mu treba dodeliti isti ID koji je imao pri prvom pokretanju. Ako bi on bio dalje ponovo poništavan, vremenom bi taj proces postajao sve stariji i konačno postao najstariji, kada više neće doživeti poništavanje, odnosno neće trpeti izgladnjivanje. 8/18

Zadatak 9. April 2006. U nekom sistemu implementiran je algoritam izbegavanja mrtvog blokiranja zasnovan na analizi bezbednih stanja pomoću grafa alokacije. U sistemu postoji samo po jedna instanca resursa R 1, R 2 i R 3, a pokrenuti su procesi P 1, P 2 i P 3. U nekom trenutku sistem se nalazi u sledećem stanju zauzetosti resursa istog tipa: Proces Zauzeo Potencijalno traži (najavio korišćenje) P 1 R 1, R 2 P 2 R 1 R 1, R 3 P 3 R 3 R 2, R 3 a)(4) Nacrtati graf alokacije resursa za navedeno stanje. R 1 P 1 P 2 R 2 R 3 P 3 R 1 P 1 P 2 R 2 R 3 P 3 b)(3) Ako u datom stanju proces P 1 zatraži korišćenje resursa R 1, da li je novonastalo stanje sigurno? Odgovor i obrazloženje: Jeste, jer postoji sigurna sekvenca P 3, P 2, P 1. 9/18

Stanje je sigurno (safe state) ako sistem može da dodeli resurse svakom procesu (do maksimuma njegove potražnje) u nekom poretku, a da ipak izbegne mrtvu blokadu, tj. da postoji sigurna sekvenca (svaki proces može da završi svoje izvršavanje). c)(3) Ako u datom stanju proces P 1 zatraži korišćenje resursa R 2, da li sistem to treba da mu dozvoli? Odgovor i obrazloženje: Ne treba. Nastala bi petlja i moglo bi doci do blokiranja ako svaki proces zatrazi jos jedan resurs. 10/18

Zadatak 10. Septembar 2013. U nekom sistemu su tri procesa (P1, P2, P3) i tri različite instance resursa (R1, R2, R3). Primenjuje se izbegavanje mrtve blokade praćenjem zauzeća resursa pomoću grafa, a resurs se dodeljuje procesu čim je to moguće i dozvoljeno. Posmatra se sledeća sekvenca operacija: P2.request(R3), P1.request(R1), P2.request(R2), P3.request(R3), P2.release(R3), P1.request(R2), P3.request(R1), P2.release(R2), P1.release(R1), P3.release(R3), P1.release(R2), P3.release(R1) Procesi najavljuju korišćenje onih i samo onih resursa koje zauzimaju u datoj sekvenci. a)(7) Do kog dela se ova sekvenca može izvršiti baš u datom redosledu, ako se primenjuje izbegavanje mrtve blokade? Nacrtati graf zauzeća resursa u tom trenutku. b)(3) Nakon koje operacije će proces koji prvi nije dobio resurs odmah kad ga je tražio dobiti taj resurs? Rešenje: a)(7) Sekvenca: P2.request(R3), P1.request(R1), P2.request(R2), P3.request(R3), P2.release(R3), P1.request(R2). b)(3) Proces P3 će dobiti resurs R3 kada proces P2 oslobodi resurs R2. 11/18

Zadatak 11. Oktobar 2010. Na problemu filozofa koji večeraju (dining philosophers) demonstrira se mehanizam izbegavanja mrtve blokade (deadlock avoidance) zasnovan na grafu alokacije. Svaki filozof traži najpre svoju desnu viljušku, pa kada nju dobije, traži i svoju levu viljušku. Potrebno je prikazati graf alokacije za svako dole navedeno stanje, tim redom. U svakom traženom stanju graf prikazati nakon što je sistem dodelio resurse svima kojima su ih tražili, a kojima se mogu dodeliti resursi. Grane najave posebno naznačiti da bi se jasno razlikovale od ostalih (crtati ih isprekidano, drugom bojom ili slično). Prikazati graf za sledeća stanja: a)(2) kada svi filozofi razmišljaju, potom b)(3) nakon što su svi filozofi zatražili svoju desnu viljušku, potom c)(2) nakon što su svi oni filozofi koji su dobili svoju desnu viljušku, zatražili i svoju levu viljušku, potom d)(3) nakon što su svi oni koji su dobili obe viljuške završili sa jelom. Rešenje: a) b) c) d) 12/18

Zadatak 12. Septembar 2006. U sistemu postoje četiri procesa, P 1, P 2, P 3 i P 4, i po dve instance dva tipa resursa R 1 i R 2. Odigrao se sledeći scenario: P 4 traži jednu instancu R 2, P 3 traži jednu instancu R 1, P 1 traži jednu instancu R 2, P 2 traži jednu instancu R 1, P 3 traži jednu instancu R 2, P 1 traži jednu instancu R 1. a)(5) Nacrtati graf alokacije u ovom trenutku (nakon ovog scenarija). R R b)(5) Da li u ovom sistemu u datom trenutku (nakon ovog scenarija) postoji mrtva blokada (deadlock)? Precizno obrazložiti odgovor. Mrtva blokada ne postoji, jer kada P 4 (koji nije blokiran) oslobodi resurs R 2, P 3 će dobiti taj resurs i nastaviti svoje izvršavanje, čime će osloboditi R 1, pa će i P 1 moći da nastavi izvršavanje. P 2 svakako nije blokiran. 13/18

Zadatak 13. Januar 2006. a)(5) Jedan proces A je zauzeo semafor S (izvršivši wait na tom semaforu i postavivši ga na 0) i čeka da mu bude dodeljen procesor (kao resurs) da bi nastavio svoje izvršavanje. Drugi proces B, koji se izvršava (koristi procesor kao resurs), zadaje operaciju wait na semaforu S. Koji od neophodnih uslova za nastanak mrtve blokade (deadlock) ovde nije ispunjen, pa zbog toga mrtva blokada i ne nastaje? Precizno obrazložiti odgovor. Nije ispunjen uslov nema preotimanja (no preemption): kada proces B ne može da zauzme semafor kao resurs, operativni sistem mu oduzima procesor i dodeljuje drugom procesu, u ovom slučaju, procesu A. Zbog toga takođe nije ispunjen ni uslov držanje i čekanje (hold and wait), jer proces koji drži semafor neće više čekati na procesor. Ovo je i primer koji pokazuje da neophodni uslovi za nastanak mrtve blokade (deadlock) nisu sasvim nezavisni. b)(5) U nekom sistemu implementiran je bankarev algoritam izbegavanja mrtvog blokiranja zasnovan na analizi bezbednih stanja. U nekom trenutku sistem se nalazi u sledećem stanju zauzetosti resursa istog tipa: Proces Zauzeo Najviše traži P 1 0 5 P 2 4 11 P 3 3 6 Slobodnih: 4 Da li sistem treba da dozvoli zauzimanje još jednog resursa od strane procesa P 1 koji ovaj u tom trenutku zahteva? Obrazložiti. Ako bi sistem dozvolio zauzimanje jednog resursa od strane procesa P 1, sistem bi prešao u sledeće stanje: Proces Zauzeo Najviše traži P 1 1 5 P 2 4 11 P 3 3 6 Slobodnih: 3 Ovo stanje je bezbedno, jer postoji sigurna sekvenca: P 3, P 1, P 2, pa sistem može da dodeli traženi resurs. Zadatak 14. Septembar 2009. Kada se primenjuje bankarev algoritam za izbegavanje mrtve blokade (deadlock), kada dati proces zahteva resurse vektorom zahteva (N R1, N R2,..., N Rk,), ako bi alokacija traženih resursa odvela sistem u nebezbedno stanje, resursi se ne alociraju, već se dati proces suspenduje (blokira). Precizno objasniti kada i pod kojim uslovom se taj proces deblokira i šta se tada radi? 14/18

Kada se dealocira neki broj bilo kog od resursa koje je dati proces P tražio u zahtevu (N R1, N R2,..., N Rk ), tj. kada se dealocira neki broj instanci resursa R i za koji je N Ri >0, ispituje se da li bi tada dati zahtev suspendovanog procesa P odveo sistem u nebezbedno stanje primenom bankarevog algoritma. Ako bi, P se i dalje ostavlja suspendovan. Ako ne bi, proces P se deblokira, a njegov zahtev zadovoljava alokacijom traženih resursa. Zadatak 15. Oktobar 2006. U sistemu postoje četiri procesa, P 1, P 2, P 3 i P 4, i tri tipa resursa A, B i C. U nekom trenutku sistem se nalazi u sledećem stanju zauzeća resursa: Allocation Max Available A B C A B C A B C P 1 1 2 0 5 7 3 4 3 3 P 2 0 2 0 3 5 0 P 3 2 1 1 4 2 1 P 4 0 3 1 3 4 5 U sistemu se primenjuje bankarev algoritam izbegavanja mrtvog blokiranja. Da li sistem treba da dozvoli zauzeće još 2 instance resursa A od strane procesa P 4? Precizno obrazložiti odgovor, uz navođenje svih koraka primene bankarevog algoritma. Rešenje: Ako bi sistem dozvolio zauzeće traženih resursa, prešao bi u stanje: Allocation Max Available A B C A B C A B C P 1 1 2 0 5 7 3 2 3 3 P 2 0 2 0 3 5 0 P 3 2 1 1 4 2 1 P 4 2 3 1 3 4 5 Treba ispitati da li je ovo stanje sigurno pronalaženjem sigurne sekvence: Need i := Max i Allocation i Uslov: Need i Available Available := Available + Allocation i Može P 3, P 3, P 2, Allocation Max Available A B C A B C A B C P 1 1 2 0 5 7 3 4 4 4 P 2 0 2 0 3 5 0 P 4 2 3 1 3 4 5 15/18

Allocation Max Available A B C A B C A B C P 1 1 2 0 5 7 3 4 6 4 P 4 2 3 1 3 4 5 P 3, P 2, P 1, Allocation Max Available A B C A B C A B C 5 8 4 P 4 2 3 1 3 4 5 P 3, P 2, P 1, P 4 Pošto je sigurna sekvenca pronađena, odredišno stanje je sigurno, pa sistem može da dozvoli traženo zauzeće resursa. 16/18

Zadatak 16. Oktobar 2009. U nekom sistemu primenjuje se bankarev algoritam izbegavanja mrtve blokade (deadlock). Strukture podataka koje se vode u sistemu i neke operacije nad njima definisane su na sledeći način: class ResourceAllocationVector { public: ResourceAllocationVector (); // Default constructor, null allocation ResourceAllocationVector(const ResourceAllocationVector&); ResourceAllocationVector& operator=(const ResourceAllocationVector&); //... }; typedef ResourceAllocationVector RAV; int operator<=(const RAV& v1, const RAV& v2); // Is v1<=v2? int operator<(const RAV& v1, const RAV& v2); // Is v1<v2? RAV operator+(const RAV& v1, const RAV& v2); // Returns v1+v2 RAV operator-(const RAV& v1, const RAV& v2); // Returns v1-v2 void copy(rav from[],int numofelements,rav to[]); // Copies from to to const int NumOfProcesses; // Number of processes RAV allocation[numofprocesses]; // Process-Resource allocation matrix RAV maxneed[numofprocesses]; // Process-Max resource need matrix RAV available; // Current resource availability Potrebno je realizovati sledeću operaciju bankarevog algoritma koja treba da proveri da li je tekuće stanje bezbedno i vrati 1 ako jeste, odnosno 0 ako nije: int issafestate (); Rešenje: int issafestate () { RAV alloctemp[numofprocesses]; copy(allocation,numofprocesses,alloctemp); RAV availtemp = available; int completed[numofprocesses]; for (int i=0; i<numofprocesses; i++) completed[i]=0; while (1) { int found = 0, allcompleted = 1; for (int i=0; i<numofprocesses; i++) { if (completed[i]) continue; allcompleted = 0; if (maxneed[i]<=alloctemp[i]+availtemp) { found = 1; completed[i]=1; availtemp = availtemp+alloctemp[i]; } } if (allcompleted) return 1; if (!found) return 0; } } 17/18

Zadatak 17. Oktobar 2008. U nekom sistemu mrtva blokada (deadlock) sprečava se zabranom kružnog čekanja tako što su resursi numerisani celim brojevima 0..RN-1, pa svaki proces sme da traži resurse samo u rastućem poretku ove numeracije. U strukturi PCB postoji sledeći niz allocatedresources: struct PCB { //... int allocatedresources[rn]; }; PCB* running; // The running process Ovaj niz je niz Bulovih promenljivih, tako da element i ukazuje da je dati proces alocirao resurs sa numeracijom i. Pristup do resursa obezbeđuje klasa Resource: class DeadlockPreventionException { public: DeadlockPreventionException (int resourceid); //... }; class Resource { public: Resource (int resourceid) : myid(resourceid), sem(1) {} void alloc () throw (DeadlockPreventionException); void dealloc (); private: int myid; Semaphore sem; // For resource allocation (mutual exclusion) }; void Resource::dealloc () { running->allocatedresources[myid]=0; sem.signal(); } Napisati kod operacije alloc()koji treba da baci izuzetak datog tipa u slučaju prekršaja navedenog pravila sprečavanja mrtve blokade i obavi ostale potrebne režijske radnje alokacije resursa. Rešenje: void Resource::alloc () throw (DeadlockPreventionException) { for (int i=rn-1; i>=myid; i--) if (running->allocatedresources[i]) throw DeadlockPreventionException(myID); sem.wait(); running->allocatedresources[myid]=1; } Napomena: Kako dokazati da se ovim algoritmom sprečava mrtva blokada? Dokaz kontradikcijom. Pretpostavimo da može nastati mrtva blokada, što znači da postoji zatvoren krug procesa P i1, P i2,..., P in (n>1) koji su međusobno blokirani tako da svaki proces P ik drži resurs i k, a traži i čeka na resurs i k+1. Prema uslovima algoritma, odatle bi sledilo da je: i 1 <i 2 <... <i n <i 1, što ne može biti, pa mrtva blokada ne može nastati. 18/18