Visoka poslovnotehnika kola Uice OPERATIVNI SISTEMI SINHRONIZACIJA I

  • Slides: 36
Download presentation
Visoka poslovno-tehnička škola Užice OPERATIVNI SISTEMI SINHRONIZACIJA I KOMUNIKACIJA IZMEĐU PROCESA

Visoka poslovno-tehnička škola Užice OPERATIVNI SISTEMI SINHRONIZACIJA I KOMUNIKACIJA IZMEĐU PROCESA

Pojam procesa - podsećanje l l l 2/36 Program – datoteka (fajl) na disku

Pojam procesa - podsećanje l l l 2/36 Program – datoteka (fajl) na disku Datoteka u memoriji - proces Proces (process) je program ili deo programa u stanju izvršavanja nad datim podacima. – program: statičan zapis instrukcija – proces: jedno izvršavanje (instanca) datog programa za dati skup podataka – sa jednim adresnim prostorom – moguće je kreirati više procesa nad istim programom, svaki radi nad svojim podacima – svaki ima svoj adresni prostor

Operacije nad procesima – podsećanje l l 3/36 Kreiranje procesa: roditeljski (parent) proces kreira

Operacije nad procesima – podsećanje l l 3/36 Kreiranje procesa: roditeljski (parent) proces kreira procesdete (child) sistemskim pozivom Varijante dozvoljavanja korišćenja resursa: – proces-dete može da traži bilo koji resurs od OS – proces-dete može da koristi samo podskup resursa roditelja Varijante izvršavanja: – kada kreira potomka, roditeljski proces se suspenduje (zaustavlja izvršavanje) sve dok se svi potomci ne završe – kada kreira potomka, roditeljski proces nastavlja izvršavanje uporedo sa svojim potomcima Varijante formiranja adresnog prostora: – potomak dobija kopiju adresnog prostora (RAM) roditelja – “kloniranje” – potomak ima nezavisan program i (novi, prazan) adresni prostor (RAM)

Podela procesa l l l 4/36 Procesi mogu biti međusobno: – nezavisni, izolovani -

Podela procesa l l l 4/36 Procesi mogu biti međusobno: – nezavisni, izolovani - nema interakcije i/ili razmene informacija između njih, procesi se izvršavaju uporedo i nezavisno – kooperativni - procesi moraju da dele resurse (npr. memorija) računarskog sistema – procesi moraju da se sinhronizuju U višeprocesnom OS izolovanih procesa praktično nema – svi oni dele resurse sistema (memoriju, fajlove, I/O uređaje) Razlozi za postojanje kooperativnih procesa: – smanjiti troškove deobom resursa (jedan računar, više poslova; jedan autoput, mnogo vozila; jedna učionica, mnogo časova) i – procesi zahtevaju informacije od drugih procesa da bi izvršili svoj zadatak.

Kooperativni procesi l l 5/36 Međutim, konkurentnost i deljenje resursa uzrokuju probleme; npr. jedna

Kooperativni procesi l l 5/36 Međutim, konkurentnost i deljenje resursa uzrokuju probleme; npr. jedna železnička pruga - vozovi idu u susret Nezavisni procesi: rezultat izvršavanja procesa ne zavisi od redosleda izvršavanja i preplitanja sa drugim nezavisnim procesima – ne zavisi od raspoređivanja procesa Procesi koji dele podatke: rezultat izvršavanja zavisi od redosleda izvršavanja i preplitanja – zavisi od raspoređivanja procesa. Problem: uočavanje i ispravljanje grešaka veoma teško Osnovni postulat konkurentnog programiranja: rezultat (logička ispravnost) programa ne sme da zavisi od redosleda izvršavanja i preplitanja, tj. od raspoređivanja procesa

Kooperativni procesi l Primeri: – editor, prevodilac i linker Editor Compiler X. cpp X.

Kooperativni procesi l Primeri: – editor, prevodilac i linker Editor Compiler X. cpp X. obj Linker Z. obj • Web server: Client Process Y. obj Server Process HTML Files • korisnički proces koji upravlja nekim izlaznim uređajem: User Process 6/36 Buffer Device Driver Device

Mehanizmi interakcije l l 7/36 Vrste interakcija (veza) između procesa: – komunikacija (communication): razmena

Mehanizmi interakcije l l 7/36 Vrste interakcija (veza) između procesa: – komunikacija (communication): razmena informacija između procesa – sinhronizacija (synchronization): zadovoljavanje ograničenja u pogledu preplitanja akcija različitih procesa (npr. neka akcija jednog procesa mora da se dogodi pre neke akcije drugog procesa i sl. ); simultano dovođenje više procesa u predefinisano stanje Ovi pojmovi su povezani jer: – neki mehanizmi komunikacije podrazumevaju prethodnu sinhronizaciju – sinhronizacija se može smatrati komunikacijom bez razmene sadržaja

Struktura OS – poređenje podsećanje 8/36

Struktura OS – poređenje podsećanje 8/36

Windows XP arhitektura - podsećanje Win 32 -bit App Win 32 Subsytem (Win 32

Windows XP arhitektura - podsećanje Win 32 -bit App Win 32 Subsytem (Win 32 API) User Mode Kernel Mode Executive Services I/O Manager File Systems Security Reference Monitor IPC Manager Virtual Memory Manager Process Manager Plug and Play Manager Object Manager Device Drivers Microkernel Hardware Abstraction Layer (HAL) Computer Hardware 9/36 Power Manager Window Manager and GDI Graphics Device Drivers

Mehanizmi interakcije - komunikacija Modeli međuprocesne komunikacije procesa (Inter Process Communication, IPC): – deljena

Mehanizmi interakcije - komunikacija Modeli međuprocesne komunikacije procesa (Inter Process Communication, IPC): – deljena promenljiva (shared variable): objekat kome može pristupati više procesa; komunikacija se obavlja razmenom informacija preko deljene promenljive ili deljenih podataka (shared data) – razmena poruka (message passing): eksplicitna razmena informacija između procesa u vidu poruka koje putuju od jednog do drugog procesa preko nekog posrednika l Model komunikacije je stvar izbora – ne implicira način implementacije: – deljene promenljive je lako implementirati na multiprocesorima sa zajedničkom memorijom, ali se mogu (teže) implementirati i na distribuiranim sistemima – razmena poruka se može implementirati i na distribuiranim sistemima i na multiprocesorima sa deljenom memorijom – ista aplikacija se može isprogramirati korišćenjem oba modela, ali je po pravilu neki model pogodniji za neku vrstu aplikacije 10/36 l

Mehanizmi interakcije - komunikacija Implementacija na sistemu za deljenom memorijom Process A Sistemska usluga

Mehanizmi interakcije - komunikacija Implementacija na sistemu za deljenom memorijom Process A Sistemska usluga (poziv): slanje poruke Procesi koji nemaju isti adresni prostor – IPC kao usluga OS-a: Process A M Shared Mem Process B Kernel 11/36 Sistemska usluga (poziv): prijem poruke Sistemska usluga (poziv): obezbediti preslikavanje dela adresnog prostora dva procesa u istu deljenu memoriju Process B Kernel M M

Mehanizmi interakcije - sihronizacija 1. 2. 3. 4. 5. l 12/36 Imamo dva procesa,

Mehanizmi interakcije - sihronizacija 1. 2. 3. 4. 5. l 12/36 Imamo dva procesa, P 0 i P 1. Žele privremeno da sačuvaju neku vrednost. Odvijanje događaja: P 0 proverava da li je memorijska lokacija A slobodna. Slobodna je. P 0 je obavešten da je lokacija A slobodna; P 1 proverava da li je memorijska lokacija A slobodna. Slobodna je. P 1 je obavešten da je lokacija A slobodna; Proces P 0 upisuje podatak na lokaciju A; Proces P 1 upisuje svoj podatak na lokaciju A; Proces P 0 čita podatak sa lokacije A – POGREŠAN. OS mora da obezbedi mehanizme konkurentnog (paralelnog) izvršavanja procesa. Osnovni postulat konkurentnog programiranja: rezultat (logička ispravnost) programa ne sme da zavisi od redosleda izvršavanja i preplitanja, tj. od raspoređivanja procesa

Mehanizmi interakcije - sihronizacija l l 13/36 Ukoliko više procesa pristupa istim podacima i

Mehanizmi interakcije - sihronizacija l l 13/36 Ukoliko više procesa pristupa istim podacima i modifikuje ih konkurentno (paralelno) krajnja vrednost zajedničkih podataka zavisi od sekvence (redosleda) instrukcija procesa koje tim podacima pristupaju – stanje trke. Krajnji rezultat se ne zna Obezbediti mehanizam sihronizacije – pristup zajedničkom resursu omogućiti isključivo jednom od konkurentnih procesa u jednom trenutku Kako se obezbeđuje – kritična serkcija

Realizacija – Kritična sekcija l l 14/36 je deo koda (redosled naredbi) procesa (program

Realizacija – Kritična sekcija l l 14/36 je deo koda (redosled naredbi) procesa (program ili deo programa u stanju izvršavanja) gde se pristupa zajedničkim podacima (memorijske promenljive, tabele, datoteke) ili ih modifikuje. To je deo koda procesa koji se mora izvršiti nedeljivo u odnosu na druge delove koda samog procesa tako i koda drugih procesa. OS dozvoljava samo jednom procesu da bude u svojoj kritičnoj sekciji Realizacija: softverski (programer), hardverski, tehnika semafora, operativni sistem i višim programskim strukturama za sihronizaciju

Kritična sekcija – softverska realizacija l l 15/36 Bez pomoći OS. Pretpostavke softverskog rešenja

Kritična sekcija – softverska realizacija l l 15/36 Bez pomoći OS. Pretpostavke softverskog rešenja kritične sekcije su: u jednom trenutku može biti isključivo jedan proces u kritičnoj sekciji – međusobno isključenje proces koji je izvan svoje kritične sekcije NE sme sprečiti druge procese da uđu u svoju kritičnu sekciju (isključivo proces koji je u okviru svoje kritične sekcije može sprečiti ostale procese da uđu u svoju kritičnu sekciju). proces NE sme neograničeno dugo čekati da uđe u svoju kritičnu sekciju. proces NE sme neograničeno dugo ostati u svojoj kritičnoj sekciji

Kritična sekcija – softverska realizacija l l Algoritam striktne alternacije Dva konkurentna procesa P

Kritična sekcija – softverska realizacija l l Algoritam striktne alternacije Dva konkurentna procesa P 0 i P 1 i zajednička promenljiva A Vrednost zajedničke promenljive A određuje koji proces može da uđe u kritičnu sekciju. Samo onaj proces čija je vrednost indeksa procesa jednaka vrednosti promenljive A može ući u svoju kritičnu sekciju (za P 0 je 0, za P 1 je 1). Proces P 0 Proces P 1 do { while (A == 0) // ulazna sekcija while (A == 1) // ulazna sekcija { { /* kritična sekcija */ } A=1; // izlazna sekcija /* ostatak koda */ } while (1) ; 16/36 /* kritična sekcija */ } A=0; // izlazna sekcija /* ostatak koda */ } while (0) ;

Kritična sekcija – softverska realizacija l l 17/36 Algoritam striktne alternacije - nedostaci Striktna

Kritična sekcija – softverska realizacija l l 17/36 Algoritam striktne alternacije - nedostaci Striktna alternacija procesa: P 0 -> P 1 -> P 0. . . Stalno se proverava vrednost promenljive A – troši se procesorsko vreme Primer dva procesa: jedan brz, drugi spor. Brzi proces čeka na ulazak u kritičnu sekciju dok spori proces ne završi svoju kritičnu sekciju. Rešenje: Algoritam ulaska u kritičnu sekciju bez striktne alternacije Uvodi se binarna promenljiva flag za svaki proces ponaosob: – flag = 1 Proces želi da uđe u svoju kritičnu sekciju – flag = 0 Proces NE želi da uđe u svoju kritičnu sekciju

Kritična sekcija – softverska realizacija l 18/36 Algoritam ulaska u kritičnu sekciju bez striktne

Kritična sekcija – softverska realizacija l 18/36 Algoritam ulaska u kritičnu sekciju bez striktne alternacije Nedostatak – mogući scenario (redosled događaja): – Proces P 0 postavlja flag[0]=1, kontrola se predaje P 1 – Proces P 1 postavlja flag[1]=1 i – Procesi P 0 i P 1 ulaze u beskonačnu petlju. Loše rešenje. Dobro rešenje je kombinacija prethodna dva algoritma.

Kritična sekcija – softverska realizacija l l l 19/36 Dekker-Petersonov algoritam Promenljive flag i

Kritična sekcija – softverska realizacija l l l 19/36 Dekker-Petersonov algoritam Promenljive flag i turn za svaki proces ponaosob. Promenljiva turn određuje proces koji ima prednost ulaska u kritičnu sekciju i time obezveđuje mehanizam međusobnog isključenja Proces P 0 postavlja vrednosti: – flag[0] = 1 Proces P 0 želi da uđe u svoju kritičnu sekciju – turn = 1 Proces P 0 daje šansu P 1 da uđe u kritičnu sekciju – proces P 1 ima prednost Proces P 1: – ako promenljive flag i turn imaju vrednosti flag[1] = 1 i turn = 1, ulazi u kritičnu sekciju – ako promenljive flag i turn NEmaju vrednosti flag[1] = 1 i turn = 1, NE ulazi u kritičnu sekciju

Kritična sekcija – softverska realizacija l l 20/36 Algoritmi su data za dva procesa

Kritična sekcija – softverska realizacija l l 20/36 Algoritmi su data za dva procesa P 0 i P 1. Realno N procesa Pekarski algoritam – poštovanje reda, čime se sprečava haos. Pekarski algoritam Svaki kupac u pekari dobije broj, pekar uslužuje kupce redom Svaki proces dobije broj. Pravila algoritma: – generiše se sekvenca brojeva u rastućem redosledu i dodeljuje procesima (1, 2, 3, 3, 3, 4, 4, 5, 6. . . ) – proces sa najnižim dodeljenim brojem ulazi u kritičnu sekciju – ako dva procesa imaju iste dodeljene brojeve, proces sa manjim ID (ID – jedinstveni identifikator procesa unutar OS) ulazi u kritičnu sekciju

Realizacija – Kritična sekcija l l 21/36 je deo koda (redosled naredbi) procesa (program

Realizacija – Kritična sekcija l l 21/36 je deo koda (redosled naredbi) procesa (program ili deo programa u stanju izvršavanja) gde se pristupa zajedničkim podacima (memorijske promenljive, tabele, datoteke) ili ih modifikuje. To je deo koda procesa koji se mora izvršiti nedeljivo u odnosu na druge delove koda samog procesa tako i koda drugih procesa. OS dozvoljava samo jednom procesu da bude u svojoj kritičnoj sekciji Realizacija: softverski (programer), hardverski, tehnika semafora, operativni sistem i višim programskim strukturama za sihronizaciju

Kritična sekcija – hardverska realizacija l l l 22/36 Hardverska implementacija – procesorska instrukcija

Kritična sekcija – hardverska realizacija l l l 22/36 Hardverska implementacija – procesorska instrukcija koja je nedeljiva (atomičan način izvršavanja) – ne može se prekinuti tokom izvršavanja. Naredba Test. And. Set (lock): proces može da pročita vrednost promenljive lock (0 – dozvoljen, 1 – NIJE dozvoljen ulazak u kritičnu sekciju) i postavlja vrednost promenljive lock na 1 Promenljivoj lock se inicijalno dedeljuje vrednost 0. PRVI proces (npr. P 5) koji želi da uđe u kritičnu sekciju naredbom Test. And. Set (lock) proverava vrednost promenljive lock i ako je 0, postavlja vrednost lock = 1. Drugi procesi ne mogu ući u kritičnu sekciju (lock = 1) sve dok P 5 ne izađe iz kritične sekcije i postavi vrednost promenljivoj lock = 0.

Kritična sekcija – tehnika semafora l l l 23/36 Jednostavan koncept, moguće primeniti na

Kritična sekcija – tehnika semafora l l l 23/36 Jednostavan koncept, moguće primeniti na kompleksnije slučajeve (N procesa) i poseduje mehanizam za programiranje međusobnog isključenja i sinhronizaciju aktivnosti procesa. Semafor je celobrojna nenegativna promenljiva koja štiti neki resurs. Vrednost semafora S=0 => resurs zauzet Vrednost semafora S>0 => resurs slobodan Svaki semafor ima svoju početnu vrednost i mogu se izvršiti samo dve nedeljive operacije (primitive): signal (s) i wait (s) – signal i wait se NE mogu podeliti u više ciklusa – dva ili više procesa NE mogu istovremeno izvršavati ove operacije nad ISTIM semaforom

Dijagram stanja procesa l l l START – nastanak, formiranje procesa RUN – procesor

Dijagram stanja procesa l l l START – nastanak, formiranje procesa RUN – procesor izvršava proces READY – proces ima sve resurse, čeka na procesor WAIT – proces čeka na resurs STOP – kraj procesa STOP RUN START 24/36 READY WAIT

Kritična sekcija – tehnika semafora l 25/36 Funkcije operacija signal (s) i wait (s)

Kritična sekcija – tehnika semafora l 25/36 Funkcije operacija signal (s) i wait (s) : – wait(S): vrednost semafora S>0 (resurs slobodan) i vrednost S se umanjuje za jedan; vrednost semafora S=0 (resurs zauzet) proces mora da čeka sve dok S ne postane veće od nule i tada se vrednost semafora S umanjuje za jedan – signal(S): vrednost semafora se uvećava za jedan

Kritična sekcija – tehnika semafora l Primer - binarni semafor mutex čija je inicijalna

Kritična sekcija – tehnika semafora l Primer - binarni semafor mutex čija je inicijalna vrednost 1 semaphore mutex; /* inicijalno mutex=1 */ do { wait(mutex) ; /* kritična sekcija */ signal(mutex) ; /* ostatak koda */ } while (1) ; 26/36

Realizacija – Kritična sekcija l l 27/36 je deo koda (redosled naredbi) procesa (program

Realizacija – Kritična sekcija l l 27/36 je deo koda (redosled naredbi) procesa (program ili deo programa u stanju izvršavanja) gde se pristupa zajedničkim podacima (memorijske promenljive, tabele, datoteke) ili ih modifikuje. To je deo koda procesa koji se mora izvršiti nedeljivo u odnosu na druge delove koda samog procesa tako i koda drugih procesa. OS dozvoljava samo jednom procesu da bude u svojoj kritičnoj sekciji Realizacija: softverski (programer), hardverski, tehnika semafora, operativni sistem i višim programskim strukturama za sihronizaciju

Kritična sekcija – realizacija pomoću OS l 28/36 Nedostaci softverske i hardverske realizacije zaštite

Kritična sekcija – realizacija pomoću OS l 28/36 Nedostaci softverske i hardverske realizacije zaštite kritične sekcije semaforima su: – ignorisanje prioriteta procesa – proces najvišeg prioriteta ulazi u kritičnu sekciju posle mnoštva manje prioritetnih procesa. – proces može biti zauzet čekanjem, proverava vrednost neke promenljive kako bi saznao da li može da uđe u svoju kritičnu sekciju – ne radi ništa korisno a troši procesorske vreme.

Kritična sekcija – realizacija pomoću OS Rešenje: l za svaki semafor (resurs) uvesti red

Kritična sekcija – realizacija pomoću OS Rešenje: l za svaki semafor (resurs) uvesti red čekanja – semaforski red. l svi procesi koji izvršavaju operaciju wait nad semaforom i ako je vrednost semafora S<=0, pomoću sistemskog poziva sleep se blokiraju i prevode u semaforski red (red za resurs). l procesor se oslobađa i predaje nekom drugom procesu da radi nešto korisno. l proces nastavlja svoje izvršenje nakon sistemskog poziva wakeup koji ukida blokadu procesa. Blokada se ukida ako je proces prvi u semaforskom redu ili ima najviši prioritet u semaforskom redu. 29/36

Kritična sekcija – realizacija pomoću OS l l 30/36 Vrednost semafora S može biti:

Kritična sekcija – realizacija pomoću OS l l 30/36 Vrednost semafora S može biti: – S > 0 => resurs slobodan – S = 0 => resurs je zauzet, semaforski red prazan – S < 0 => resurs je zauzet, semaforski red NIJE prazan (postoje procesi koji čekaju na resurs) Vrste semafora: binarni (mogu imati samo vrednost 0 ili 1) i brojački (celobrojna vrednost). Brojački su teži za implementaciju.

Upotreba semafora l l l l 31/36 Za mnoge primene (npr. međusobno isključenje) dovoljni

Upotreba semafora l l l l 31/36 Za mnoge primene (npr. međusobno isključenje) dovoljni su binarni semafori: najveća vrednost mu je 1 Operacija wait blokira proces ako je semafor 0, odnosno postavlja semafor na 0 ako je bio 1 Operacija signal deblokira proces ako čeka, a postavlja semafor na 1 ako ga nema Ponegde se binarni semafor naziva i događaj (event) – samo signalizira da se neki događaj desio (logička, Bulova vrednost, desio se ili ne) U mnogim sistemima na događaj može čekati samo jedan proces (“vlasnik” događaja) i samo on može vršiti wait; signal može uraditi bilo koji proces Neki sistemi podržavaju kombinovano čekanje na više događaja po uslovu “i” i “ili” Posebno pogodni za čekanje na spoljašnje događaje koji se signaliziraju iz prekidne rutine: završena I/O operacija, isteklo vreme suspenzije procesa. Zato su veoma osetljivi za implementaciju

Upotreba semafora l l 32/36 Pogodnosti semafora: – jednostavan i efikasan koncept – generalan

Upotreba semafora l l 32/36 Pogodnosti semafora: – jednostavan i efikasan koncept – generalan koncept niskog nivoa – pomoću njega se mogu implementirati mnogi drugi, apstraktniji koncepti za sinhronizaciju Loše strane semafora: – suviše jednostavan koncept niskog nivoa – nije logički povezan sa konceptima bližim domenu problema (resurs, kritična sekcija, . . . ) – kod složenijih programa lako postaje glomazan, nepregledan, težak za razumevanje, proveru i održavanje jer su operacije nad semaforima rasute – podložan je greškama – mora se paziti na uparenost i redosled operacija wait i signal

Kritična sekcija – više programske strukture za sihronizaciju l l 33/36 Kritični region zahteva

Kritična sekcija – više programske strukture za sihronizaciju l l 33/36 Kritični region zahteva promenljivu koja je zajednička za veći broj procesa i njoj se može pristupiti samo unutar kritičnog regiona. Kritični region štite od grubih, nehotičnih programerskih grešaka u sihronizaciji Monitori omogućavaju programeru da svaki resurs posmatra kao objekat. Monitor se sastoji od: – promenljivih koje opisuju resurs (njihove vrednosti definišu resurs) – skupa procedura i funkcija kojima se pristupa objektu (promenljivima monitora) – dela programskog koda koji inicijalizuje objeka i koji se izvršava samo jednom, prilikom stvaranja objekta

Kritična sekcija – više programske strukture za sihronizaciju l Jezici koji podržavaju monitore: Modula

Kritična sekcija – više programske strukture za sihronizaciju l Jezici koji podržavaju monitore: Modula 1, Concurrent Pascal, Mesa, Ada, Java, C# monitor ime_monitora { /* deklaracija deljenih promenljivih */ P 1 (. . . ) { /* definicija procedure/funkcije P 1 */ } P 2 (. . . ) { /* definicija procedure/funkcije P 2 */ }. . . Pn (. . . ) { /* definicija procedure/funkcije Pn */ } { 34/36 /* inicijalizacija monitora */ } }

Zastoj l l l 35/36 U višeprocesnom okruženju, više procesa sa takmiči za konačan

Zastoj l l l 35/36 U višeprocesnom okruženju, više procesa sa takmiči za konačan broj resursa. Kad proces zahteva resurs i resurs nije raspoloživ, proces ulazi u stanje čekanja (WAIT) i blokira se. Blokirani proces može ostati zauvek u tom stanju ukoliko potreban resurs ostane neraspoloživ. Resurs je prethodno dodeljen drugom procesu na korišćenje. Drugi proces prešao u stanje čekanja jer mu je potreban još jedan resurs koji mu nije raspoloživ. Ove situacije se zovu ZASTOJ.

Zastoj l 36/36 Zastoj se rešava na tri načina: – prevencijom ili izbegavanjem zastoja

Zastoj l 36/36 Zastoj se rešava na tri načina: – prevencijom ili izbegavanjem zastoja (koriste se metode da sistem nikada NE uđe u stanje zastoja) – detekcijom i oporavkom (koriste se metode koje dozvoljavaju sistemu da uđe u stanje zastoja, to stanje se detektuje i oporavlja sistem) – ignorisanje problema zastoja (pretvaraju se da problem zastoja ne postoji)