Professional Documents
Culture Documents
Medjuprocesna Komunikacija
Medjuprocesna Komunikacija
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)
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
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
35
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
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
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
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).
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
52
53
54
55
Rjeenje problema
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
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
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
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
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