Professional Documents
Culture Documents
Operativni Sistemi: DR - Sc. Amer Hasanović
Operativni Sistemi: DR - Sc. Amer Hasanović
Operativni Sistemi: DR - Sc. Amer Hasanović
Fakultet Eletktrotehnike
Univerzitet u Tuzli
Pregled predavanja
Fakultet Eletktrotehnike
Univerzitet u Tuzli
Semafori
Brava je mehanizam za sinhronizaciju koji prioritetno slui za davanje eksluzivnog prava nekoj niti na pristup kritinoj sekciji.
Semafor je u sutini broja sa dvije operacije P() ili wait() ili down()
operacija koja eka da broja postane pozitivan a zatim ga umanjuje za 1. operacija koja inkrementira broja
Univerzitet u Tuzli
Fakultet Eletktrotehnike
Semafori analogije
Ne mogu biti negativni Mogue ih je samo inicijalizirati sa nekom vrijednosti. itanje ili postavljanje vrijednosti semafora nakon inicijalizacije nije dozvoljeno Inkrementiranje i dekrementiranje semafora (P i V) moraju biti atomske operacije. Semafor inicijaliziran sa 2
2
Fakultet Eletktrotehnike
Univerzitet u Tuzli
Semafori analogije
Ne mogu biti negativni Mogue ih je samo inicijalizirati sa nekom vrijednosti. itanje ili postavljanje vrijednosti semafora nakon inicijalizacije nije dozvoljeno Inkrementiranje i dekrementiranje semafora (P i V) moraju biti atomske operacije. Semafor inicijaliziran sa 2
1
Fakultet Eletktrotehnike
Univerzitet u Tuzli
Semafori analogije
Ne mogu biti negativni Mogue ih je samo inicijalizirati sa nekom vrijednosti. itanje ili postavljanje vrijednosti semafora nakon inicijalizacije nije dozvoljeno Inkrementiranje i dekrementiranje semafora (P i V) moraju biti atomske operacije. Semafor inicijaliziran sa 2
0
Fakultet Eletktrotehnike
Univerzitet u Tuzli
Semafori analogije
Ne mogu biti negativni Mogue ih je samo inicijalizirati sa nekom vrijednosti. itanje ili postavljanje vrijednosti semafora nakon inicijalizacije nije dozvoljeno Inkrementiranje i dekrementiranje semafora (P i V) moraju biti atomske operacije. Semafor inicijaliziran sa 2
0
Fakultet Eletktrotehnike
Univerzitet u Tuzli
Semafori analogije
Ne mogu biti negativni Mogue ih je samo inicijalizirati sa nekom vrijednosti. itanje ili postavljanje vrijednosti semafora nakon inicijalizacije nije dozvoljeno Inkrementiranje i dekrementiranje semafora (P i V) moraju biti atomske operacije. Semafor inicijaliziran sa 2
1
Fakultet Eletktrotehnike
Univerzitet u Tuzli
Semafori analogije
Ne mogu biti negativni Mogue ih je samo inicijalizirati sa nekom vrijednosti. itanje ili postavljanje vrijednosti semafora nakon inicijalizacije nije dozvoljeno Inkrementiranje i dekrementiranje semafora (P i V) moraju biti atomske operacije. Semafor inicijaliziran sa 2
1
Fakultet Eletktrotehnike
Univerzitet u Tuzli
Semafori koritenje
10
Fakultet Eletktrotehnike
Univerzitet u Tuzli
Implementacija semafora
struct semafor { int vrijednost; queue q; }; void P(semafor* sem) { cli(); //onemoguci interrupte while ( sem->vrijednost == 0 ) blokiraj_nit(sem,trenutna_nit()); sem->vrijednost = sem->vrijednost - 1; sti(); //omoguci interrupte } void V(semafor* sem) { cli(); //onemoguci interrupte sem->vrijednost = sem->vrijednost + 1; if (nije_prazan_red(sem->q)) deblokiraj_nit(sem); sti(); //omoguci interrupte }
Fakultet Eletktrotehnike
11
Univerzitet u Tuzli
Problem proizvoai/potroai
12
Definicija problema:
Proizvoa ubacuje proizvode u red koji ima N mjesta Potroa konzumira bilo uzima element iz reda Proizvoa i potroa rade asinhrono
Proizvoa
...
Potroa
Fakultet Eletktrotehnike
Univerzitet u Tuzli
Problem proizvoai/potroai
13
Definicija problema:
Proizvoa ubacuje proizvode u red koji ima N mjesta Potroa konzumira bilo uzima element iz reda Proizvoa i potroa rade asinhrono
Ubacuje novi element u red Proizvoa E E ... Konzumira prvi u redu Potroa
Fakultet Eletktrotehnike
Univerzitet u Tuzli
Problem proizvoai/potroai
14
Definicija problema:
Proizvoa ubacuje proizvode u red koji ima N mjesta Potroa konzumira bilo uzima element iz reda Proizvoa i potroa rade asinhrono
Proizvoa
E ...
Potroa
Fakultet Eletktrotehnike
Univerzitet u Tuzli
Postavke ispravnosti
15
Ogranienja:
Potroa mora ekati da se neko mjesto u redu popuni sa proizvodom Proizvoa mora ekati na prazno mjesto u redu kako bi ga popunio sa proizvodom Niti jedna nit nee pristupiti redu u isto vrijeme semafor popunjena_mjesta semafor prazna_mjesta semafor brava
Fakultet Eletktrotehnike
Univerzitet u Tuzli
Rijeenje sa semaforima
semafor* popunjena_mjesta = semafor_init(0); semafor* prazna_mjesta = semafor_init(N); semafor* brava = semafor_init(1); queue niz;
16
void proizvodjac() { while(1) { proizvod p = proizvedi(); P(prazna_mjesta); P(brava); enqueue(niz,p); V(brava); V(popunjena_mjesta); } }
void potrosac() { proizvod p; while(1) { P(popunjena_mjesta); P(brava); p = dequeue(niz)); V(brava); V(prazna_mjesta); konzumiraj(p); } }
Fakultet Eletktrotehnike
Univerzitet u Tuzli
Diskusija
17
su neelegantni zato to imaju dvostruku ulogu : koordinacija niti (scheduling) protekcija dijeljenog resursa zbunjujui jer nisu direktno vezani za podatke koje tite
redosljed pozivanja semafor operacija moe izazvati zastoje Potrebna bolja abstrakcija Koristiti brave za protekciju dijeljenog resursa Uslovne varijable za koordinaciju niti
Fakultet Eletktrotehnike
Univerzitet u Tuzli
18
Univerzitet u Tuzli
Uslovne varijable
19
Uslovna varijabla
Ima niz niti koje ekaju na ispunjenje nekog uslova unutar kritine sekcije.
dozvoljava da nit blokira (spava) unutar kritine sekcije. wait(lock* brava) Nit atomski odputa bravu i blokira (spava) na redu niti uslovne varijable signal() ili notify() Deblokira (budi) jednu nit koja je blokirana na uslovnoj varijabli (ako postoji takva nit) broadcast() ili notifyAll() Deblokira sve niti blokirane na uslovnoj varijabli
Operacije:
Fakultet Eletktrotehnike
Univerzitet u Tuzli
20
Fakultet Eletktrotehnike
Univerzitet u Tuzli
21
Hoare
Ukoliko neka nit pozove signal() funkciju, ista odmah blokira i predaje kontrolu niti kojoj je signalizirala a signalizirana nit poinje se odmah izvravati Poziv funkcije signal() prouzrokuje da signalizirana nit pree iz stanja "blocked" u stanje "ready" te se prebacuje na "ready queue". Nit koja je signalizirala dalje nastavlja sa izvoenjem.
Mesa
Mesa je mnogo ee u praktinoj primjeni obzirom da je metodologiju lake implementirati bez znaajne modifikacije ostalih komponenti OS-a.
Univerzitet u Tuzli
Fakultet Eletktrotehnike
Pisai/itai
22
itai ele samo da itaju podatke korisnik na bankomatu koji eli uvid u stanje rauna pisai ele da itaju i mijenjaju podatke u bazi slubenica za raunarom u banci koja procesira pristiglu platu za nekog korisnika
Istovremeni pristup bazi proizvoljnom broju itaa kada nema pisaa U nekom trenutku samo jedan pisa moe da pristupa bazi
Fakultet Eletktrotehnike
Univerzitet u Tuzli
Algoritam za implementaciju
23
itai
ekaju dok u bazi nema pisaa rade sa bazom pri izalzu signaliziraju pisaima koji ekaju ekaju dok u bazi nema ni pisaa ni itaa rade sa bazom pri izlazu signaliziraju pisaima ili itaima koji ekaju NAP - broj aktivnih pisaa, NAC - broj aktivnih itaa, NCC broj ekajuih itaa, NCP - broj ekajuih pisaa
Pisai
Varijable stanja
Fakultet Eletktrotehnike
Implementacija
24
void citac() void pisac() { { //preduslov za citanje //preduslov za pisanje brava.acquire(); brava.acquire(); while ( NAP + NCP ) while ( NAP + NAC ) { { ++NCC; ++NCP; dozvoljeno_citanje.wait(); dozvoljeno_pisanje.wait(); --NCC; --NCP; } } ++NAC; ++NAP; brava.release(); brava.release(); //izvrsi citanje //izvrsi pisanje citajpodatake(); pisipodatke(); //signaliziraj cekajucim pisacima //signaliziraj cekajucim pisacima brava.acquire(); //ili citacima --NAC; brava.acquire(); if ( NAC == 0 && NCP > 0 ) --NAP; dozvoljeno_pisanje.signal(); if ( NCP > 0 ) brava.release(); dozvoljeno_pisanje.signal(); } else if( NCC > 0 ) dozvoljeno_citanje.broadcast(); brava.release(); Fakultet Eletktrotehnike Univerzitet u Tuzli }
Monitori
25
Monitor
u programskim jezicima koji ga podravaju omoguava kontrolirani pristup dijeljenim resursima. objedinjuje bravu (protekcija dijeljenog resurse), varijable stanja (dijeljeni resurs), proizvoljan broj uslovnih varijabli i procedure u jednu cijelinu za koje vae pravila:
Zadatak brave
U datom trenutku maksimalno jedna nit u sistemu moe izvravati neku proceduru monitora Maksimalno jedna procedura monitora se izvrava u datom trenutku U bilo kojem trentku unutar procedure monitora nit moe da pozove pozove wait() na nekom uslovu ime prelazi na "blocked queue" uslova.
Univerzitet u Tuzli
Fakultet Eletktrotehnike
Monitori
Varijable stanja monitora
26
... ...
Niti koje ekaju da izvre neki metod monitora
Fakultet Eletktrotehnike
svaki objekat moe sluiti kao monitor nit e izvravati kod u monitoru ako izvrava tijelo metoda monitora koji ima modifikator oznaen kao synchronized Izvrava tijelo bloka koda monitora koji je oznaen kao synchronized Svaki objekat moe da slui kao uslovna varijabla i podrava operacije wait(), notify() i notifyAll() Java kompajler na adekvatna mjesta prilikom kompajliranja ubacuje primitive za sinhronizaciju
Univerzitet u Tuzli