390 likes | 561 Views
Vi soka poslovno-tehnička škola Užice. OPERATIVNI SISTEMI. SINHRONIZACIJA I KOMUNIKACIJA IZMEĐU PROCESA. Pojam procesa - po dsećanje. Program – datotek a (fajl) na disku Datoteka u memoriji - proces Proces (process) je program ili deo programa u stanju izvršavanj a nad datim podacima .
E N D
Visoka poslovno-tehnička škola Užice OPERATIVNI SISTEMI SINHRONIZACIJA I KOMUNIKACIJA IZMEĐU PROCESA
Pojam procesa - podsećanje 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 Kreiranje procesa: roditeljski(parent) proces kreira proces-dete (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 • 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 • 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
Web server: Client Process Server Process HTML Files Client Process Server Process Client Process Server Process • korisnički proces i proces koji upravlja nekim izlaznim uređajem: User Process Buffer Device Driver Device Kooperativni procesi • Primeri: • editor, prevodilac i linker Y.obj Editor X.cpp Compiler X.obj Linker Z.obj
Mehanizmi interakcije • 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
Windows XP arhitektura - podsećanje Win 32-bit App Win 32-bit App Win 32-bit App Win 32-bit App Win32 Subsytem (Win32 API) User Mode Kernel Mode Executive Services Security Virtual Plug and Window I/O IPC Process Power Reference Memory Play Manager Manager Manager Manager Manager Monitor Manager Manager and GDI Graphics Object Manager File Device Systems Drivers Device Drivers Microkernel Hardware Abstraction Layer (HAL) Computer Hardware
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 • Model komunikacije je stvar izbora – ne implicira način implementacije: • deljene promenljive je lako implementirati na multiproce-sorima 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
Process A Process A Shared Mem Process B Process B Kernel Kernel Mehanizmi interakcije - komunikacija Implementacija nasistemu za deljenom memorijom Procesi koji nemaju isti adresni prostor – IPC kao usluga OS-a: Sistemska usluga (poziv): slanje poruke M Sistemska usluga (poziv): prijem poruke M Sistemska usluga (poziv): obezbediti preslikavanje dela adresnog prostora dva procesa u istu deljenu memoriju M
Mehanizmi interakcije- sihronizacija Imamo dva procesa, P0 i P1. Žele privremeno da sačuvaju neku vrednost. Odvijanje događaja: • P0 proverava da li je memorijska lokacija A slobodna. Slobodna je. P0 je obavešten da je lokacija A slobodna; • P1 proverava da li je memorijska lokacija A slobodna. Slobodna je. P1 je obavešten da je lokacija A slobodna; • Proces P0 upisuje podatak na lokaciju A; • Proces P1 upisuje svoj podatak na lokaciju A; • Proces P0 č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 • 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 • 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 Bez pomoći OS. Pretpostavke softverskog rešenja kritične sekcije su: • u jednom trenutku može bitiisključ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 Algoritam striktne alternacije • Dva konkurentna procesa P0 i P1 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 P0 je 0, za P1 je 1).
Kritična sekcija – softverska realizacija Algoritam striktne alternacije - nedostaci • Striktna alternacija procesa: P0 -> P1 -> P0 -> P1 -> P0 ... • 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 Algoritam ulaska u kritičnu sekciju bez striktne alternacije • Nedostatak – mogući scenario (redosled događaja): • Proces P0 postavlja flag[0]=1, kontrola se predaje P1 • Proces P1 postavlja flag[1]=1 i • Procesi P0 i P1 ulaze u beskonačnu petlju. Loše rešenje. Dobro rešenje je kombinacija prethodna dva algoritma.
Kritična sekcija – softverska realizacija 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 P0 postavlja vrednosti: • flag[0] = 1 Proces P0 želi da uđe u svoju kritičnu sekciju • turn = 1 Proces P0daje šansu P1 da uđe u kritičnu sekciju – proces P1 ima prednost • Proces P1: • 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, NEulazi u kritičnu sekciju
Kritična sekcija – softverska realizacija • Algoritmi su data za dva procesa P0 i P1. 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 • 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 • Hardverska implementacija – procesorska instrukcija koja je nedeljiva (atomičan način izvršavanja) – ne može se prekinuti tokom izvršavanja. • Naredba TestAndSet (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. P5) koji želi da uđe u kritičnu sekciju naredbomTestAndSet (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 P5 ne izađe iz kritične sekcije i postavi vrednost promenljivoj lock = 0.
Kritična sekcija – tehnika semafora • 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 zauzetVrednost 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 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 WAIT READY
Kritična sekcija – tehnika semafora • 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 • Primer - binarni semafor mutexčija je inicijalna vrednost 1
Realizacija– Kritična sekcija • 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 • 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: • za svaki semafor (resurs) uvesti red čekanja – semaforski red. • 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). • procesor se oslobađa i predaje nekom drugom procesu da radi nešto korisno. • 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.
Kritična sekcija – realizacija pomoću OS • 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 • 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 • 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 • 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 • Jezici koji podržavaju monitore: Modula 1, Concurrent Pascal, Mesa, Ada, Java, C# monitor ime_monitora { /* deklaracija deljenih promenljivih */ P1 ( ... ) { /* definicija procedure/funkcije P1 */ } P2 ( ... ) { /* definicija procedure/funkcije P2 */ } . . . Pn ( ... ) { /* definicija procedure/funkcije Pn */ } { /* inicijalizacija monitora */ } }
Zastoj • 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 • 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)