06 - OS-Sihronizacija Procesa

download 06 - OS-Sihronizacija Procesa

of 36

Transcript of 06 - OS-Sihronizacija Procesa

  • OPERATIVNI SISTEMISINHRONIZACIJA I KOMUNIKACIJA IZMEU PROCESAVisoka poslovno-tehnika kola Uice

  • Pojam procesa - podseanjeProgram datoteka (fajl) na diskuDatoteka u memoriji - procesProces (process) je program ili deo programa u stanju izvravanja nad datim podacima.program: statian zapis instrukcijaproces: jedno izvravanje (instanca) datog programa za dati skup podataka sa jednim adresnim prostorommogue je kreirati vie procesa nad istim programom, svaki radi nad svojim podacima svaki ima svoj adresni prostor*/36

  • Operacije nad procesima podseanjeKreiranje procesa: roditeljski (parent) proces kreira proces-dete (child) sistemskim pozivomVarijante dozvoljavanja korienja resursa:proces-dete moe da trai bilo koji resurs od OSproces-dete moe da koristi samo podskup resursa roditeljaVarijante izvravanja:kada kreira potomka, roditeljski proces se suspenduje (zaustavlja izvravanje) sve dok se svi potomci ne zavrekada kreira potomka, roditeljski proces nastavlja izvravanje uporedo sa svojim potomcimaVarijante formiranja adresnog prostora:potomak dobija kopiju adresnog prostora (RAM) roditelja kloniranjepotomak ima nezavisan program i (novi, prazan) adresni prostor (RAM)*/36

  • Podela procesaProcesi mogu biti meusobno:nezavisni, izolovani - nema interakcije i/ili razmene informacija izmeu njih, procesi se izvravaju uporedo i nezavisnokooperativni - procesi moraju da dele resurse (npr. memorija) raunarskog sistema procesi moraju da se sinhronizujuU vieprocesnom OS izolovanih procesa praktino nema svi oni dele resurse sistema (memoriju, fajlove, I/O ureaje)Razlozi za postojanje kooperativnih procesa:smanjiti trokove deobom resursa (jedan raunar, vie poslova; jedan autoput, mnogo vozila; jedna uionica, mnogo asova) iprocesi zahtevaju informacije od drugih procesa da bi izvrili svoj zadatak.*/36

  • Kooperativni procesiMeutim, konkurentnost i deljenje resursa uzrokuju probleme; npr. jedna eleznika pruga - vozovi idu u susretNezavisni procesi: rezultat izvravanja procesa ne zavisi od redosleda izvravanja i preplitanja sa drugim nezavisnim procesima ne zavisi od rasporeivanja procesaProcesi koji dele podatke: rezultat izvravanja zavisi od redosleda izvravanja i preplitanja zavisi od rasporeivanja procesa. Problem: uoavanje i ispravljanje greaka veoma tekoOsnovni postulat konkurentnog programiranja: rezultat (logika ispravnost) programa ne sme da zavisi od redosleda izvravanja i preplitanja, tj. od rasporeivanja procesa*/36

  • Kooperativni procesiPrimeri:editor, prevodilac i linkerEditorCompilerLinkerX.cppX.objY.objZ.obj*/36

  • Mehanizmi interakcijeVrste interakcija (veza) izmeu procesa:komunikacija (communication): razmena informacija izmeu procesasinhronizacija (synchronization): zadovoljavanje ogranienja u pogledu preplitanja akcija razliitih procesa (npr. neka akcija jednog procesa mora da se dogodi pre neke akcije drugog procesa i sl.); simultano dovoenje vie procesa u predefinisano stanjeOvi pojmovi su povezani jer:neki mehanizmi komunikacije podrazumevaju prethodnu sinhronizacijusinhronizacija se moe smatrati komunikacijom bez razmene sadraja*/36

  • Struktura OS poreenje podseanje*/36

  • Windows XP arhitektura - podseanjeI/O ManagerSecurity Reference MonitorIPC ManagerVirtual Memory ManagerProcess ManagerPlug and Play ManagerPower ManagerWindow Manager and GDI

    Computer HardwareExecutive ServicesUser ModeKernel ModeHardware Abstraction Layer (HAL)Graphics Device DriversObject ManagerDevice DriversMicrokernelFile SystemsWin 32-bitAppWin 32-bitAppWin 32-bitAppWin 32-bitAppWin32Subsytem(Win32 API)*/36

  • Mehanizmi interakcije - komunikacijaModeli meuprocesne komunikacije procesa (Inter Process Communication, IPC):deljena promenljiva (shared variable): objekat kome moe pristupati vie procesa; komunikacija se obavlja razmenom informacija preko deljene promenljive ili deljenih podataka (shared data)razmena poruka (message passing): eksplicitna razmena informacija izmeu procesa u vidu poruka koje putuju od jednog do drugog procesa preko nekog posrednikaModel komunikacije je stvar izbora ne implicira nain implementacije:deljene promenljive je lako implementirati na multiproce-sorima sa zajednikom memorijom, ali se mogu (tee) implementirati i na distribuiranim sistemimarazmena poruka se moe implementirati i na distribuiranim sistemima i na multiprocesorima sa deljenom memorijomista aplikacija se moe isprogramirati korienjem oba modela, ali je po pravilu neki model pogodniji za neku vrstu aplikacije*/36

  • Implementacija na sistemu za deljenom memorijomSistemska usluga (poziv): obezbediti preslikavanje dela adresnog prostora dva procesa u istu deljenu memorijuMMSistemska usluga (poziv): slanje porukeMSistemska usluga (poziv): prijem porukeProcesi koji nemaju isti adresni prostor IPC kao usluga OS-a:Mehanizmi interakcije - komunikacija*/36

  • Mehanizmi interakcije - sihronizacijaImamo dva procesa, P0 i P1. ele privremeno da sauvaju neku vrednost. Odvijanje dogaaja:P0 proverava da li je memorijska lokacija A slobodna. Slobodna je. P0 je obaveten da je lokacija A slobodna;P1 proverava da li je memorijska lokacija A slobodna. Slobodna je. P1 je obaveten 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 POGREAN.OS mora da obezbedi mehanizme konkurentnog (paralelnog) izvravanja procesa. Osnovni postulat konkurentnog programiranja: rezultat (logika ispravnost) programa ne sme da zavisi od redosleda izvravanja i preplitanja, tj. od rasporeivanja procesa*/36

  • Ukoliko vie procesa pristupa istim podacima i modifikuje ih konkurentno (paralelno) krajnja vrednost zajednikih podataka zavisi od sekvence (redosleda) instrukcija procesa koje tim podacima pristupaju stanje trke.Krajnji rezultat se ne znaObezbediti mehanizam sihronizacije pristup zajednikom resursu omoguiti iskljuivo jednom od konkurentnih procesa u jednom trenutkuKako se obezbeuje kritina serkcijaMehanizmi interakcije - sihronizacija*/36

  • Realizacija Kritina sekcijaje deo koda (redosled naredbi) procesa (program ili deo programa u stanju izvravanja) gde se pristupa zajednikim podacima (memorijske promenljive, tabele, datoteke) ili ih modifikuje. To je deo koda procesa koji se mora izvriti nedeljivo u odnosu na druge delove koda samog procesa tako i koda drugih procesa.OS dozvoljava samo jednom procesu da bude u svojoj kritinoj sekcijiRealizacija: softverski (programer), hardverski, tehnika semafora, operativni sistem i viim programskim strukturama za sihronizaciju*/36

  • Kritina sekcija softverska realizacijaBez pomoi OS. Pretpostavke softverskog reenja kritine sekcije su:u jednom trenutku moe biti iskljuivo jedan proces u kritinoj sekciji meusobno iskljuenjeproces koji je izvan svoje kritine sekcije NE sme spreiti druge procese da uu u svoju kritinu sekciju (iskljuivo proces koji je u okviru svoje kritine sekcije moe spreiti ostale procese da uu u svoju kritinu sekciju). proces NE sme neogranieno dugo ekati da ue u svoju kritinu sekciju.proces NE sme neogranieno dugo ostati u svojoj kritinoj sekciji*/36

  • Kritina sekcija softverska realizacijaAlgoritam striktne alternacijeDva konkurentna procesa P0 i P1 i zajednika promenljiva AVrednost zajednike promenljive A odreuje koji proces moe da ue u kritinu sekciju. Samo onaj proces ija je vrednost indeksa procesa jednaka vrednosti promenljive A moe ui u svoju kritinu sekciju (za P0 je 0, za P1 je 1).*/36

    Proces P0Proces P1do {do {while (A == 0) // ulazna sekcijawhile (A == 1) // ulazna sekcija{ /* kritina sekcija */ }{ /* kritina sekcija */ }A = 1 ; // izlazna sekcijaA = 0 ; // izlazna sekcija /* ostatak koda */ /* ostatak koda */ } while (1) ; } while (0) ;

  • Kritina sekcija softverska realizacijaAlgoritam striktne alternacije - nedostaciStriktna alternacija procesa: P0 -> P1 -> P0 -> P1 -> P0 ...Stalno se proverava vrednost promenljive A troi se procesorsko vremePrimer dva procesa: jedan brz, drugi spor. Brzi proces eka na ulazak u kritinu sekciju dok spori proces ne zavri svoju kritinu sekciju. Reenje: Algoritam ulaska u kritinu sekciju bez striktne alternacijeUvodi se binarna promenljiva flag za svaki proces ponaosob: flag = 1 Proces eli da ue u svoju kritinu sekcijuflag = 0Proces NE eli da ue u svoju kritinu sekciju*/36

  • Kritina sekcija softverska realizacijaAlgoritam ulaska u kritinu sekciju bez striktne alternacijeNedostatak mogui scenario (redosled dogaaja):Proces P0 postavlja flag[0]=1, kontrola se predaje P1Proces P1 postavlja flag[1]=1 iProcesi P0 i P1 ulaze u beskonanu petlju.Loe reenje. Dobro reenje je kombinacija prethodna dva algoritma.*/36

  • Kritina sekcija softverska realizacijaDekker-Petersonov algoritamPromenljive flag i turn za svaki proces ponaosob. Promenljiva turn odreuje proces koji ima prednost ulaska u kritinu sekciju i time obezveuje mehanizam meusobnog iskljuenja Proces P0 postavlja vrednosti:flag[0] = 1 Proces P0 eli da ue u svoju kritinu sekcijuturn = 1 Proces P0 daje ansu P1 da ue u kritinu sekciju proces P1 ima prednostProces P1:ako promenljive flag i turn imaju vrednosti flag[1] = 1 i turn = 1, ulazi u kritinu sekcijuako promenljive flag i turn NEmaju vrednosti flag[1] = 1 i turn = 1, NE ulazi u kritinu sekciju*/36

  • Kritina sekcija softverska realizacijaAlgoritmi su data za dva procesa P0 i P1. Realno N procesaPekarski algoritam potovanje reda, ime se spreava haos.Pekarski algoritamSvaki kupac u pekari dobije broj, pekar usluuje kupce redomSvaki proces dobije broj. Pravila algoritma:generie se sekvenca brojeva u rastuem redosledu i dodeljuje procesima (1,2,3,3,3,4,4,5,6 ...)proces sa najniim dodeljenim brojem ulazi u kritinu sekcijuako dva procesa imaju iste dodeljene brojeve, proces sa manjim ID (ID jedinstveni identifikator procesa unutar OS) ulazi u kritinu sekciju*/36

  • Realizacija Kritina sekcijaje deo koda (redosled naredbi) procesa (program ili deo programa u stanju izvravanja) gde se pristupa zajednikim podacima (memorijske promenljive, tabele, datoteke) ili ih modifikuje. To je deo koda procesa koji se mora izvriti nedeljivo u odnosu na druge delove koda samog procesa tako i koda drugih procesa.OS dozvoljava samo jednom procesu da bude u svojoj kritinoj sekcijiRealizacija: softverski (programer), hardverski, tehnika semafora, operativni sistem i viim programskim strukturama za sihronizaciju*/36

  • Kritina sekcija hardverska realizacijaHardverska implementacija procesorska instrukcija koja je nedeljiva (atomian nain izvravanja) ne moe se prekinuti tokom izvravanja. Naredba TestAndSet (lock): proces moe da proita vrednost promenljive lock (0 dozvoljen, 1 NIJE dozvoljen ulazak u kritinu sekciju) i postavlja vrednost promenljive lock na 1Promenljivoj lock se inicijalno dedeljuje vrednost 0. PRVI proces (npr. P5) koji eli da ue u kritinu sekciju naredbom TestAndSet (lock) proverava vrednost promenljive lock i ako je 0, postavlja vrednost lock = 1. Drugi procesi ne mogu ui u kritinu sekciju (lock = 1) sve dok P5 ne izae iz kritine sekcije i postavi vrednost promenljivoj lock = 0. */36

  • Kritina sekcija tehnika semaforaJednostavan koncept, mogue primeniti na kompleksnije sluajeve (N procesa) i poseduje mehanizam za programiranje meusobnog iskljuenja i sinhronizaciju aktivnosti procesa.Semafor je celobrojna nenegativna promenljiva koja titi neki resurs. Vrednost semafora S=0 => resurs zauzet Vrednost semafora S>0 => resurs slobodanSvaki semafor ima svoju poetnu vrednost i mogu se izvriti samo dve nedeljive operacije (primitive): signal (s) i wait (s)signal i wait se NE mogu podeliti u vie ciklusadva ili vie procesa NE mogu istovremeno izvravati ove operacije nad ISTIM semaforom

    */36

  • Dijagram stanja procesaSTART nastanak, formiranje procesaRUN procesor izvrava procesREADY proces ima sve resurse, eka na procesorWAIT proces eka na resursSTOP kraj procesa*/36

  • Kritina sekcija tehnika semaforaFunkcije 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 vee od nule i tada se vrednost semafora S umanjuje za jedansignal(S): vrednost semafora se uveava za jedan*/36

  • Kritina sekcija tehnika semaforaPrimer - binarni semafor mutex ija je inicijalna vrednost 1*/36

    semaphore mutex; /* inicijalno mutex=1 */

    do {wait(mutex) ; /* kritina sekcija */signal(mutex) ; /* ostatak koda */ } while (1) ;

  • Realizacija Kritina sekcijaje deo koda (redosled naredbi) procesa (program ili deo programa u stanju izvravanja) gde se pristupa zajednikim podacima (memorijske promenljive, tabele, datoteke) ili ih modifikuje. To je deo koda procesa koji se mora izvriti nedeljivo u odnosu na druge delove koda samog procesa tako i koda drugih procesa.OS dozvoljava samo jednom procesu da bude u svojoj kritinoj sekcijiRealizacija: softverski (programer), hardverski, tehnika semafora, operativni sistem i viim programskim strukturama za sihronizaciju*/36

  • Kritina sekcija realizacija pomou OSNedostaci softverske i hardverske realizacije zatite kritine sekcije semaforima su:ignorisanje prioriteta procesa proces najvieg prioriteta ulazi u kritinu sekciju posle mnotva manje prioritetnih procesa.proces moe biti zauzet ekanjem, proverava vrednost neke promenljive kako bi saznao da li moe da ue u svoju kritinu sekciju ne radi nita korisno a troi procesorske vreme.*/36

  • Kritina sekcija realizacija pomou OSReenje:za svaki semafor (resurs) uvesti red ekanja semaforski red. svi procesi koji izvravaju operaciju wait nad semaforom i ako je vrednost semafora S
  • Kritina sekcija realizacija pomou OSVrednost semafora S moe biti:S > 0 => resurs slobodanS = 0 => resurs je zauzet, semaforski red prazanS < 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 brojaki (celobrojna vrednost). Brojaki su tei za implementaciju.*/36

  • Upotreba semaforaZa mnoge primene (npr. meusobno iskljuenje) dovoljni su binarni semafori: najvea vrednost mu je 1Operacija wait blokira proces ako je semafor 0, odnosno postavlja semafor na 0 ako je bio 1Operacija signal deblokira proces ako eka, a postavlja semafor na 1 ako ga nemaPonegde se binarni semafor naziva i dogaaj (event) samo signalizira da se neki dogaaj desio (logika, Bulova vrednost, desio se ili ne)U mnogim sistemima na dogaaj moe ekati samo jedan proces (vlasnik dogaaja) i samo on moe vriti wait; signal moe uraditi bilo koji procesNeki sistemi podravaju kombinovano ekanje na vie dogaaja po uslovu i i iliPosebno pogodni za ekanje na spoljanje dogaaje koji se signaliziraju iz prekidne rutine: zavrena I/O operacija, isteklo vreme suspenzije procesa. Zato su veoma osetljivi za implementaciju*/36

  • Upotreba semaforaPogodnosti semafora:jednostavan i efikasan konceptgeneralan koncept niskog nivoa pomou njega se mogu implementirati mnogi drugi, apstraktniji koncepti za sinhronizacijuLoe strane semafora:suvie jednostavan koncept niskog nivoa nije logiki povezan sa konceptima bliim domenu problema (resurs, kritina sekcija, ...)kod sloenijih programa lako postaje glomazan, nepregledan, teak za razumevanje, proveru i odravanje jer su operacije nad semaforima rasutepodloan je grekama mora se paziti na uparenost i redosled operacija wait i signal*/36

  • Kritina sekcija vie programske strukture za sihronizacijuKritini region zahteva promenljivu koja je zajednika za vei broj procesa i njoj se moe pristupiti samo unutar kritinog regiona. Kritini region tite od grubih, nehotinih programerskih greaka u sihronizacijiMonitori omoguavaju programeru da svaki resurs posmatra kao objekat.Monitor se sastoji od:promenljivih koje opisuju resurs (njihove vrednosti definiu resurs)skupa procedura i funkcija kojima se pristupa objektu (promenljivima monitora)dela programskog koda koji inicijalizuje objeka i koji se izvrava samo jednom, prilikom stvaranja objekta*/36

  • Kritina sekcija vie programske strukture za sihronizacijuJezici koji podravaju 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 */ } }

    */36

  • ZastojU vieprocesnom okruenju, vie procesa sa takmii za konaan broj resursa. Kad proces zahteva resurs i resurs nije raspoloiv, proces ulazi u stanje ekanja (WAIT) i blokira se. Blokirani proces moe ostati zauvek u tom stanju ukoliko potreban resurs ostane neraspoloiv. Resurs je prethodno dodeljen drugom procesu na korienje. Drugi proces preao u stanje ekanja jer mu je potreban jo jedan resurs koji mu nije raspoloiv.Ove situacije se zovu ZASTOJ. */36

  • ZastojZastoj se reava na tri naina:prevencijom ili izbegavanjem zastoja (koriste se metode da sistem nikada NE ue u stanje zastoja)detekcijom i oporavkom (koriste se metode koje dozvoljavaju sistemu da ue u stanje zastoja, to stanje se detektuje i oporavlja sistem)ignorisanje problema zastoja (pretvaraju se da problem zastoja ne postoji)

    */36