You are on page 1of 11

2.3.

Meuprocesna komunikacija
Procesi moraju meusobno komunicirati (npr. izlaz jednog procesa mora se proslijediti drugom procesu cjevovodom) IPC, a zahtjevi su: 1. Prosljeivanje informacije jednog procesa drugom procesu 2. Sprjeavanje da procesi jedan drugom ulaze u kritine odsjeke (izvoenjem
kritinih aktivnosti)

2.3.1. Uvjeti utrkivanja


Procesi koji surauju esto dijele zajedniki prostor za spremanje podataka iz kojeg mogu itati i u koji mogu pisati. Taj prostro moe biti u glavnoj memoriji ili u dijeljenoj datoteci. Primjer: printer spooler. Kada proces eli printati datoteku, on unosi ime u posebni spooler direktorij. Drugi proces, printer daemon periodno ispituje ima li u spooler direktoriju datoteka za ispis. Ako ima, ispisuje ih i uklanja ime iz direktorija. Ako dva ili vie procesa ele ispis, moe doi do nadmetanja za slobodne resurse ispisa. Situacija u kojoj dva ili vie procesa itaju ili piu iz ili u iste dijeljene podatke, a konaan ishod ovisi o tonosti pokretanja procesa, naziva se uvjetima utrkivanja.

3. Omoguavanje redoslijeda izvoenja koji potuje meusobnu zavisnost meu procesima (proces A daje podatke koje treba printati proces B, pa mora ekati na njih) Za niti: 1. primjenjiv za niti i to jo lake za niti u istom adresnom prostoru, a pod nadzorom procesa za niti u razliitim adresnim prostorima 2. jednako primjenjivo i za niti

30

31

2.3.2. Kritini odsjeci (1)


Sprijeiti nadmetanje? Zabraniti da vie od jednog procesa itaju ili piu iz ili u dijeljeni prostor podataka u isto vrijeme - osigurati meusobno iskljuivanje (mutual exclusion). Dio programa u kojem proces pristupa dijeljenoj memoriji kritini odsjeak (critical section). Sve spomenuto sprjeava utrkivanje, ali nije dovoljno kod paralelnih procesa Koji trebaju uinkovito suraivati surauju, pa uvodimo etiri uvjeta koji omoguavaju meusobno iskljuivanje:
1. 2. 3. 4.

Dva procesa ele istovremeni pristup dijeljenoj memoriji

Dva procesa istovremeno ne mogu biti u kritinom odsjeku Ne rade se pretpostavke o brzinama i broju procesora Proces pokrenut izvan kritinog odsjeka ne moe blokirati drugi proces Proces ne mora beskonano ekati do ulaska u svoj kritini odsjeak

32

Slika U T1 A ulazi u K.O. Neto kasnije u T2, B pokuava ui u K.O, ali ne moe, jer je A u njegovom K.O. Zato je B privremeno suspendiran do T3, kada A naputa, a B ulazi u K.O. Kada u T4, B napusti K.O., nema procesa u K.O.

33

2.3.2. Kritini odsjeci (2)

2.3.3. Meusobno iskljuivanje ekanjem - Busy Waiting


Zabrana prekida Najjednostavnije je da svaki proces zabrani svaki prekid odmah kada ue u K.O., a dozvoli im izae. CPU se samo prebacuje s procesa na proces prema takta ili na prekid. Postupak je nepopularan, jer nije zgodno korisnikom procesu dati mogunost dozvole/zabrane prekida (moe ga zaraniti i vie nikad ne dozvoliti - crash). Zabrana prekida korisna, ali unutar OS-a, a ne na razini korisnika. Varijable kljuanja (programsko rjeenje) Imamo dijeljenu (lock) varijablu inicijalno u 0. Kada proces eli ui u K.O., ispituje lock. Ako je lock 0, proces ga postavlja u 1 u ulazi u K.O. Ako je lock ve u 1, proces mora ekati dok ne bude 0. Nedostatak: proces ita lock i vidi da je 0. Prije nego ga postavi u 1, drugi proces je rasporeen za izvoenje i postavlja lock u 1. Kada se prvi proces Ponovo pokrene, on takoer postavi lock u 1 i oba su u K.O.

Meusobno iskljuivanje koritenjem kritinih odsjeaka


34

35

2.3.3. Meusobno iskljuivanje ekanjem - Busy Waiting


Strogo izmjenjivanje (C kod) Kod OS-a najee i je pisan u C ili C++ jeziku. Cjelobrojna varijabla turn je poetno u 0, a postavlja se za ulaz u K.O. Proces 0 ispituje turn, utvruje da je 0, te ulazi u K.O. Proces 1 takoer vidi da je turn 0 i u petlji ispituje turn da vidi kad e biti 1. Stalno ispitivanje varijable do pojave neke vrijednosti naziva se busy waiting. Uglavnom se sprjeava, jer troi vrijeme CPU. Kada proces 0 napusti K.O., postavlja turn u 1 kako bi u K.O. uao proces1. S obzirom da naruava zahtjev 3., nije uvijek stvarno primjenjiv postupak.

Petersonovo rjeenje postizanja meusobnog iskljuivanja Algoritam sadri 2 procedure u ANSI C-u. Prije upotrebe dijeljenih varijabli (prije ulaska u K.O.), svaki proces poziva enter_region sa svojim vlastitim brojem procesa, 0 ili1, kao parametrom. Taj poziv uzrokuje njihovo ekanje do sigurnog ulaska u K.O. Nakon zavretka s dijeljenim varijablama, proces zove leave_region da pokae daje gotov i dozvoli drugom procesu ulazak u K.O. Poetno nijedan proces nije u K.O. Tada proces 0 poziva enter_region.To pokazuje njegov interes postavljanjem turn u 0. Ako proces 1 pozove enter_region, on tamo ostaje dok interested[0] ne bude FALSE

(a) Proces 0.

(b) Proces 1.

36

37

Petersonovo rjeenje postizanja meusobnog iskljuivanja

TSL instrukcija (sklopovsko rjeenje) Veina uP ima instrukciju: TSL RX,LOCK (Test and Set Lock). Ona uitava sadraj memorijske rijei lock u registar RX i sprema ne-nula vrijednost na memorijsku adresu lock. Operacije itanja i spremanja su nedjeljive. CPU izvoenjem TSL instrukcije kljua memorijsku sabirnicu da bi sprijeila da druge CPU pristupaju memoriji. Kada je lock 0, svaki proces moe je postaviti u 1 upotrebom TSL instrukcije i tada ita ili pie po dijeljenoj memoriji. Prva instrukcija kopira staru vrijednost lock u registar i postavlja lock u 1. Stara vrijednost usporeuje se s 0. Ako nije 0, lock je ve postavljen i program ide natrag na poetak testiranja. Prije ili kasnije, ona postaje 0 i vraamo se iz potprograma. Brisanje locka je jednostavno, stavljanjem 0 u lock. Prije ulaska u K.O., proces zove enter_region, koji eka dok se lock ne otkljua, a tada uzima njegovu vrijednost i vraa se. Nakon K.O., proces poziva leave_region koji sprema 0 u lock.
38 39

Ulazak u i izlazak iz kritinog odsjeka uporabom TSL instrukcije

2.3.4. Spavanje i buenje


I Petersonovo rjeenje i TSL ispravno rade, ali imaju ekanje u petlji (neuinkovito i uz neoekivane uinke izmjena prvenstava). Jednostavno rjeenje par sleep i wakeup. Sleep je sustavski poziv koji uzrokuje blokiranje, a wakeup poziv ima jedan parametar proces kojeg budi. Problem proizvoa potroa (problem ogranienog spremnika) Dva procesa dijele zajedniki spremnik stalne duljine. Jedan od njih, proizvoa, stavlja informacije u spremnik, a drugi, potroa, ih uzima iz spremnika. Problem: proizvoa eli staviti informaciju u spremnik, a on je ve pun. Rjeenje: proizvoa ide na spavanje i budi se kada potroak uzme barem jednu stavku iz spremnika. Problem: potroa eli uzeti informaciju iz spremnika, a on je prazan. Rjeenje: potroa ide na spavanje dok proizvoa stavi informaciju u spremnik.
40 41

2.3.4. Spavanje i buenje


Problem proizvoa-potroa s oitim uvjetima za nadmetanje

count broj informacija (stavki) u spremniku. N maksimalan broj stavki u spremniku U kodu proizvoaa najprije se ispituje je li count=N. Ako je, proizvoa ide spavati, a ako ne, dodaje jednu stavku u spremnik i inkrementira count. U kodu potroaa, ispituje se je li count=0. Ako je, potroa ide spavati, a ako nije, on uzima jednu stavku iz spremnika i dekrementira count. Problem Spremnik je prazan i potroa ita count i vidi da je 0. Tada rasporeiva zaustavlja potroaa i pokree proizvoaa koji stavlja stavku u spremnik, te inkrementira count. S obzirom da je count=0 i da potroa mora na spavanje, proizvoa poziva wakeup i budi potroaa, ali on jo nije na spavanju, pa se taj signal buenja gubi. Kod sljedeeg pokretanja potroaa, on ispituje count, vidi da je 0 i ide na spavanje. Prije ili kasnije, proizvoa popunjava spremnik i ide na spavanje. Oba spavaju vjeno. Rjeenje: uvodi se wakeup waiting bit.

42

43

2.3.5. Semafori
Dijkstra (1965) uvodi cjelobrojnu varijablu koja pamti broj buenja za budue koritenje. Ta varijabla je semafor i moe imati vrijednost 0 kada nema spremljenih buenja ili neku pozitivnu vrijednost za jedno ili vie buenja. Dvije opreacije: : down i up (poopenje slepp i wakeup). down ispituje je li vrijednost vea od 0. Ako da, dekrementira vrijednost i nastavlja. Ako je 0, proces odlazi na spavanje bez zavretka down-a. Ispitivanje vrijednosti, njena promjena, te mogui odlazak na spavanje nedjeljive su ili atomarne operacije (jami da semaforu koji pokrenut, ne moe pristupiti drugi proces up inkrementira vrijednost semafora. Ako jedan ili vie procesa spavaju na semaforu i ne mogu zavriti prethodnu down operaciju, jedan od njih se bira da bi je zavrio. Semafori rjeavaju problem proizvoa potroa.

2.3.6. Muteksi
Pojednostavljena inaica semafora dobra samo za upravljanje meusobnim iskljuivanjem na nekom dijeljenom resursu ili dijelu koda. Muteks varijabla s dva mogua stanja otkljuano (0) i zakljuano (1). Kada nit (ili proces) treba pristupiti K.O., poziva mutex_lock. Ako je muteks nezakljuan (K.O.) slobodan, obavlja se poziv i nit (proces) moe u K.O. Ako je muteks ve zakljuan, nit (proces) koja(i) ga poziva je blokirana do zavretka K.O. niti koja je u njemu, kada se poziva mutex_unlock. Lako se implementira ako postoji TSL naredba.

44

45

2.3.7. Monitori
Koritenjem semafora se pri izmjeni redoslijeda down operacija moe se izazvati potpuni zastoj (oba procesa ostaju blokirani). Hoare (1974) i Hansen (1975) sinkronizacijski mehanizam monitor. Monitor - skup procedura, varijabli i strukt. pod. grupiranih u paket ili modul. Proces moe bilo kada zvati procedure u monitoru, ali ne moe izravno pristupati unutarnje pod. strukt. iz vanjskih strukt. Iskljuivo jedan proces istovremeno moe biti aktivan u monitoru. Kada proces poziva proceduru monitora, prvih nekoliko instrukcija procedure ispituju ima li ve koji proces unutra. Ako ima, poziv se odgaa dok trenutni proces ne napusti monitor. Rjeava problem proizvoa potroa.

46

Skica rjeenja problema proizvoa potroa s monitorima (ne to uiti!) Istovremeno aktivna procedura samo jednog monitora Spremnik ima N procjepa

47

2.3.8. Izmjena poruka (Message Passing)


Postupak IPC-a koji koristi operacije send i receive (sustavski pozivi). Oni se mogu smjestiti unutar bibliotenih procedura, koje alju poruku na navedeno odredite, odnosno primaju poruku s odredita. Ako nema poruka, prijemnik se blokira do dolaska poruke ili vraa kod pogreke. send (destination, &message); i receive (source, &mesaage); Pri tome su potrebni signal potvrde prijema i autentifikacija predajnika/prijemnika. Rjeava problem proizvoa potroa: Pretpostavka: sve poruke jednake duljine, OS obavlja automatsko spremanje poruka koje su poslane, a ne mogu biti primljene, ukupno imamo N poruka. Potroa alje N praznih poruka proizvoau. Svaki put kad on ima stavku za potroaa, uzima praznu poruku i alje natrag punu (broj poruka stalan). Adresiranje poruka: - dodijeliti svakom procesu jedinstvenu adresu i svaku poruku adresirati na nju - mailbox (mjesto u spremniku u koje stane odreeni broj poruka Problemi: razilaenje (rjeava se s rendezvous mehanizmom) Upotreba: paralelni sustavi (Message Passing Interface MPI) 48

Problem proizvoa-potroa s N poruka (ne uiti kod)

49

2.3.9. Barijere
Mehanizam usmjeren usklaivanju grupa procesa. Neke aplikacije podijeljene su u faze, pri emu proces ne moe ii u sljedeu fazu (blokira se), dok svi procesi ne budu spremni za ulazak u tu fazu. Zato se iza svake faze stavlja barijera (poziv barrier).

2.4. Klasini IPC problemi


2.4.1. Problem filozofa (1) ne uiti pripadajue kodove!

Filozofi jedu/razmiljaju Za jedenje trebaju 2 vilice Istovremeno uzimaju jednu vilicu Kako sprijeiti zastoj?

Proces pristupa barijeri, od svih procesa, jedan blokira barijeru, posljednji proces dolazi, svi prolaze.

50

51

Problem filozofa (2)

Problem filozofa (3)

Nije rjeenje problema

52

Rjeenje problema (1. dio)

53

Problem filozofa (4)

2.4.3. Problem uspavanog brijaa (1)

Rjeenje problema (2. dio)

54

55

Rjeenje problema

2.5. Rasporeivanje 2.5.1. Uvod u rasporeivanje


- rasporeivanje (postupak izrade rasporeda) - multiprogramiranje: vie proces istovremeno zahtijeva CPU - rad s podjelom vremena: vie korisnika eka posluivanje - PC: barem jedan aktivan i ostali povremeni procesi, CPU brza, pa obrada vie ovisi o U/I jedinicama, viezadanost i zahtjevne aplikacije trae paljivo rasporeivanje - umreena raunala: posebni postupci rasporeivanja - raspored, rasporeiva, algoritam rasporeivanja - preklapanje CPU s procesa na proces izaziva dodatne trokove obrade

56

57

Ponaanje procesa
- CPU radi bez zaustavljanja, dok se na pojavi sistemski poziv itanja ili pisanja, a nakon njega kao i prije. -

Kada rasporeivati?
kad se kreira novi proces, odluiti pokree li se roditelj ili dijete kad proces zavrava, mora se izabrati drugi za izvoenje kad proces blokira na U/I, drugi proces se mora pokrenuti kad doe do U/I prekida, proces koji je blokirao zbog U/I se pokree

Podjela algoritama s obzirom na obradu prekida sata: - neprekidni (proces se izvodi do blokiranja ili ekanja) - prekidni (proces se pokrene i izvodi neko fiksno vrijeme, a onda se pokree drugi). Vrste algoritama rasporeivanja: - batch (ne ekaju korisnici nestrpljivo, malo prekida ili uope ne OK) - Interaktivni (prekidanje, jer su procesi hitni korisniku, u protivnom crash) - za rad u stvarnom vremenu (u prvom redu se pokree proces bitan za
dovretak odreene aplikacije, prekidanje da, ali ne nuno)
58 59

Intervali uporabe CPU izmjenjuju se s periodima ekanja U/I jedinica proces ogranien s CPU proces ogranien s U/I jedinicama

Ciljevi algoritama rasporeivanja

2.5.2. Rasporeivanje u batch sustavima


FCFS (First-Come First-Served) - jednostavan, neprekidan, jedan red, kratki poslovi ekaju vrlo duge SJF (Shortest Job First) - neprekidan, po SJF pojedinana i prosjena vremena zavretka poslova su bolja - optimalan samo ako su poslovi istovremeno pripravni
Primjer

SRTN (Shortest Remaining Time Next) - prekidan, statian, dolazak kraeg procesa izaziva prekid
60 61

Trorazinsko rasporeivanje
- prijemni rasporeiva: mjeavina CPU i U/I poslova i SJF - za primljeni posao, generira se proces i smjeta u memoriju ili swap na disk (koji gdje rasporeiva memorije: - koliko dugo je od zadnjeg swapa procesa - koliko je zauzimao CPU - trajanje procesa - vanost procesa - rasporeivanje na CPU

2.5.3. Rasporeivanje u interaktivnim sustavima


Round Robin rasporeivanje - svakom procesu dodjeljuje se vremenski interval - na kraju tog intervala pokree se drugi proces - drugi proces se pokree i ako se trentuni proces blokira - pitanje je samo duina intervala Slika - lista pokretanih procesa (a) - lista pokretanih procesa nakon to B iskoristi svoj dio vremena (b)

62

63

Rasporeivanje s vie razina prvenstva - svakom procesu dodjeljuje se odreena razina prvenstva, a proces najvie razine pokree se prvi - razine prvenstva mogu se mijenjati svakim novim otkucajem sata - razine se mijenjaju statiki (Unix - nice) ili dinamiki (posluivanje U/I ureaja) - esto grupiranje procesa na razine prvenstva Slika - etiri razine prvenstva (po razinama, a unutar razine RR)

Viestruki redovi - bolje je procesu dati jednom dui interval, nego vie kratkih (prekidi, swapping) - daju li se svim procesima dugi intervali, dobivamo loe vrijeme odziva - procesi se stavljaju u razrede prvenstva: najvia razina jedna jedinica vremena, ispod nje dvije, ispod nje tri - svaki put kad proces potroi cijeli iznos dozvoljenog vremena, sputamo ga razinu nie Shortest Process Next - daje najkrae prosjeno vrijeme odziva, pa je dobro i u interaktivnim sustavima - koji od pokrenutih je najkrai: procjena dotadanjeg ponaanja pokretanih naredbi (procesa) raunanjem teinskih zbrojeva (aging) i pokretanje po procjeni najkraeg procesa Guaranteed Scheduling - n korisnika dobiva 1/n kapaciteta CPU (vrijedi i za jednokorisniki sustav i n procesa) - nainiti omjer potroenog i dodijeljenog vremena na CPU (1/2 pola iskoristio, 2 dvostruko iskoristio) - pokretati proces najmanjeg omjera, dok omjer ne bude pomaknut iznad suparnika
64 65

Lottery Scheduling
- proces s najvie dodijeljenih sreki, ima najvee anse biti sluajno izvuen

2.5.4. Rasporeivanje u sustavima stvarnog vremena


- strogi ili ublaeni vremenski zahtjevi - periodni, aperiodni, sluajni zadaci Rasporediv sustav stvarnog vremena - imamo m periodnih dogaaja - do dogaaja i dolazi unutar perioda Pi, a on zahtijeva Ci sekundi - optereenje se moe podnijeti jedino ako vrijedi

Fair-Share Scheduling
- RR kae: U1- 9 procesa, U2 - 1 proces: U1 90%, U2 - 10% CPU nije fer? - svaki korisnik (U), a ne proces dobiva neki dio vremena CPU: 2 U po 50% fer? Primjer: - U1 ima 4 procesa: A, B, C, D - U2 ima jedan proces: E RR: AEBECEDEAEBECEDE FS: ABECDEABECDE

P
i =1 i

Ci

Primjer!

66

67

2.5.5. Pravila protiv mehanizama


Razdvojiti pitanje to je dozvoljeno napraviti od pitanja kako to napraviti (pravila od mehanizma) - proces zna koje od njegovih niti djece imaju vee znaenje Algoritam rasporeivanje treba biti parametriziran mehanizmi su u jezgri Parametre popunjavaju korisniki procesi pravila postavljena od korisnikih procesa

2.5.6. Rasporeivanje niti

Mogue rasporeivanje niti korisnike razine 50-ms udio procesa niti pokrenute 5 msec/CPU zauzeu
68 69

10

Mogue rasporeivanje niti razine jezgre 50-ms udio procesa niti pokrenute 5 msec/CPU zauzeu
70

11

You might also like