Komunikace a synchronizace proces u

Podobné dokumenty
Komunikace a synchronizace proces u

Komunikace a synchronizace proces u

Distribuovan e algoritmy

Principy operačních systémů. Lekce 6: Synchronizace procesů

Rzen informacn bezpecnosti v organizaci

Rzen informacn bezpecnosti v organizaci

Vl akna. PB 152 Operacn syst emy. Jan ÐStaudek Verze : jaro 2015

Sekven cn soubory. PV 062 Organizace soubor u. Jan Staudek Verze : jaro 2018

Operační systémy Tomáš Hudec. 6 Komunikace procesů (IPC) Obsah: 6.1 Klasické problémy souběhu Obědvající filosofové

Podsyst em vstupu a v ystupu

Vl akna. Proces a vl akna. PB 152 Operacn syst emy. Resen editoru pomoc vl aken. Koncept sekvencnho procesu m uze b yt neefektivn

Procesy. PB 152 Operacn syst emy. Jan Staudek Verze : jaro 2017

Semafory Zobecněním operací WAKEUP a SLEEP přidáním celočíselného čítače vzniknou semafory a jejich atomické operace DOWN a UP.

Procesy a vlákna - synchronizace

Paralelní programování

Procesy. Uvodem k proces um. PB 152 Operacn syst emy. Program a proces. Uvodem k proces um

Operační systémy. Přednáška 5: Komunikace mezi procesy

Obnova transakc po v ypadku

Řada programovacích jazyků nabízí prostředky pro řešení meziprocesové komunikace jako je synchronizace a řízení přístupu do kritické sekce.

Operacn syst emy { prehled

Operační systémy. Přednáška 4: Komunikace mezi procesy

Spr ava hlavn pam eti

Paralelní programování

Procesy a vlákna IPC Komunikace mezi procesy (IPC = Inter-Process Communication)

Spr ava hlavn pam eti

Uvod, celkov y prehled problematiky

Cvičení 9 - Monitory. monitor m; var proměnné... procedure p; begin... end; begin inicializace; end;

Poctacov e syst emy { prehled

Operacn syst emy { prehled

Uvod, celkov y prehled problematiky

Synchronizace Mgr. Josef Horálek

Pl anov an. PB 152 Operacn syst emy. Jan Staudek Verze : jaro 2017

Obnova transakc po v ypadku

Podsyst em vstupu a v ystupu

Volba v udce, Leader Election

GPDR, General Data Protection Regulation

Prklad dokumentov e z akladny ISMS

Management procesu I Mgr. Josef Horálek

Principy počítačů a operačních systémů

2010/2011 ZS. Operační systém. procesy a vlákna. interakce a synchronizace

Management procesu II Mgr. Josef Horálek

Volba v udce, Leader Election

Synchronizace paralelních procesů

Aplikacn bezpecnost. Informacn bezpecnost z pohledu aplikacnch syst em u. PV 017 Bezpecnost informacnch technologi

Prepn an, switching. Propojovac probl em. PV 169 Z aklady prenosu dat. Prepnac, prepnan a st' Metody prepn an

Hasov an (hashing) na vn ejsch pam etech

Projekt implementace ISMS Dodatek 1, PDCA

Paralelní programování

Distribuovan e prostred, cas a stav v distribuovan em prostred

Petr Štěpán, K13133 KN-E-129 Téma 5. Synchronizace a deadlock

Distribuovan e prostred, cas a stav v distribuovan em prostred

Téma 4. Synchronizace a deadlock

Aplikacn bezpecnost. PV 017 Bezpecnost informacnch technologi. Jan Staudek Verze : podzim 2017

Služba ve Windows. Služba (service) je program

Architektury paralelních počítačů II.

Téma 5 Synchronizace procesů a problém uváznutí Obsah

Typologie, funkcn skladba a architektury OS, prklady z Windows, Unix, Linux, MAC OSx

Paralelní programování

PROGRAMOVÁNÍ ŘÍDÍCÍCH SYSTÉMŮ

Vzájemné vyloučení procesů

Typologie, funkcn skladba a architektury OS, prklady z Windows, Unix, Linux, Android

Typologie, funkcn skladby a architektury OS

Soubor, souborov e organizace

Téma 36. Petr Husa

Přednáška 3. Synchronizace procesů/vláken. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Operační systémy - modelování a algoritmy paralelních výpočtů

Téma 5 Synchronizace procesů a problém uváznutí

Virtu aln pam et' PB 152 Operacn syst emy. Jan Staudek Verze : jaro 2017

Projekt implementace ISMS

Spuštění instalace. nastavení boot z cd v BIOSu vložení CD s instal. médiem spuštění PC. nastavení parametrů instalace (F2 čěština)

Paralelní programování

Typologie, funkcn skladby a architektury OS

B4B35OSY: Operační systémy

Transakce, soub eznost a uv aznut v distribuovan em prostred

ZOS 9. cvičení, ukázky kódu. Pavel Bžoch

Principy operačních systémů. Lekce 5: Multiprogramming a multitasking, vlákna

IB109 Návrh a implementace paralelních systémů. Organizace kurzu a úvod. RNDr. Jiří Barnat, Ph.D.

03. Synchronizace procesů. ZOS 2006, L. Pešička

Synchronizace procesů

Synchronizace procesů

4.3 Operace nad ordin ln mi datov mi typy Operace nad logick m datov m typem Operace nad celo seln mi datov mi typy

Operační systém z hlediska procesu Mgr. Josef Horálek

Distribuované algoritmy

PROGRAMOVÁNÍ ŘÍDÍCÍCH SYSTÉMŮ

Databázovéa informačnísystémy NÁVRH IMPLEMENTACE 2 KONZISTENCE DATABÁZE

Pavel Procházka. 3. prosince 2014

Teoretická informatika Tomáš Foltýnek Paralelní programování

Vlákna a přístup ke sdílené paměti. B4B36PDV Paralelní a distribuované výpočty

Chapter 7: Process Synchronization

Typologie, funkcn skladba a architektury OS, prklady z Windows, Unix, Linux, MAC OSx

Konstruktory a destruktory

Přerušení POT POT. Přerušovací systém. Přerušovací systém. skok do obslužného programu. vykonávaný program. asynchronní událost. obslužný.

Metody připojování periferií BI-MPP Přednáška 2

PB153 Operační systémy a jejich rozhraní

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic.

Paralelní programování

Bezs n urov a telefonie, DECT

Operační systémy. Tomáš Vojnar IOS 2009/2010. Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, Brno

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

Transkript:

Motto platn e jiz 35 let Komunikace a synchronizace proces u PB 15 Operacn syst emy Jan Staudek http://www..muni.cz/usr/staudek/vyuka/ Ð Û Å«Æ ±²³ µ ¹º»¼½¾ Ý Verze : jaro 017 Designing correct routines for controlling concurrent activities proved to be one of the most difficult aspects of systems programming. The ad hoc techniques used by programmers of early multiprogramming and real-time systems were always vulnerable to subtle programming errors whose effects could be observed only when certain relatively rare sequences of actions occurred. The errors are particularly difficult to locate, since the precise conditions under which they appear are very hard to reproduce. THE COMPUTER SCIENCE AND ENGINEERING RESEARCH STUDY, MIT Press, 1980 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 1 Osnova predn asky potreba a formy IPC (Interprocess Communication) IPC sdlenou pam et probl emy synchronizace (race conditions) probl em kritick e sekce resen probl emu kritick e sekce softwarov e na urovni aplikace resen probl emu kritick e sekce speci alnmi instrukcemi semafory IPC v ymenou zpr av klasick e synchronizacn ulohy resen e pomoc semafor u monitory prklady synchronizace z konkr etnch OS Potreba a formy IPC, aktivity se dej soubezne Multi-threading soubezne existujc vl akna sdlej adresov y prostor Multi-programming, multi-tasking soubezne existujc procesy a vl akna jsou strdave realizovan e 1 nebo vce procesory Multi-processing participace vce procesor u na multi-taskingu Distribuovan e zpracov an soubezne existujc procesy jsou realizovan e vce uzly ste Soub ezn e aktivity mohou mezi sebou souperit o omezen e zdroje (periferie, soubory dat, oblasti pameti,... ) Soub ezn e aktivity mohou mezi sebou komunikovat v ymenou zpr av Soub ezn e aktivity mohou svoje b ehy vz ajemn e synchronizovat Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 3

Formy koexistence { souperen soub ezn ych aktivit soub ezn e procesy (vl akna) potrebuj speci aln podporu od OS pro komunikace mezi sebou v ymenou zpr av /sdlenm pameti pro pridelov an procesoru a dalsch zdroj u pro jejich beh pro vz ajemnou synchronizaci sv ych beh u souperen { prvn ze dvou forem koexistence proces u / vl aken soubezn e procesy se uch azej o zdroje { procesor, FAP, glob alne dostupn e periferie, soubory dat,... zdroje soupercm proces um typicky prideluje OS OS efektivne isoluje souperc procesy, aby se chybne neovliv novaly souperc procesy se vz ajemne neznaj, souperc proces si nen vedom existence ostatnch soupercch proces u realizace proces u mus b yt deterministick a, reprodukovateln a, procesy mus b yt rusiteln e a restartovateln e bez bocnch efekt u Formy koexistence { Kooperace soub ezn ych aktivit kooperace { druh a forma koexistence proces u / vl aken kooperujc procesy sdl jistou mnozinu zdroj u, vz ajemne se znaj kooperace se dosahuje bud'to implicitnm sdlenm zdroj u nebo explicitn komunikac kooperujcch proces u vl akna jednoho procesu obvykle kooperuj, nesouper procesy mohou jak kooperovat, tak i souperit proc vl akna/procesy kooperuj aby mohly sdlet jist e zdroje aby se mohly nez avisl e akce resit soubezne, napr. cten prstho bloku dat behem zpracov av an jiz precten eho bloku dat aby se podporovala modul arnost architektury aplikacnho syst emu Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 4 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 5 Prnosy kooperace a sdlen moznost sdlet zdroje, informace eliminuje nutnost redundance dojde k urychlen v ypoctu prov aden eho po c astech paralelne modularizace, jednotliv e syst emov e funkce lze resit samostatn ymi procesy ci vl akny pohodl, i uzivatel jednotlivec m uze soub ezn e resit vce ukol u (editace, tisk, kompilace,... ) Prklad probl emu nekonzistence pri soub eznosti Soubezn y prstup ke sdlen ym udaj um se mus mnohdy prov ad et neatomick ymi operacemi Udrzov an konzistence dat pozaduje pouzv an mechanism u, kter e zajist deterministick e prov aden akc kooperujcch proces u Prklad neatomick e operace nad sdlen ymi prom enn ymi void echo() { chin = getchar(); chout = chin; putchar(chout); } procesy P 1 a P prov adej tut ez proceduru echo a operuj se sdlen ymi promenn ymi chin, chout oba procesy lze prerusit ve kter emkoliv mste o rychlosti postupu kazd eho z proces u nelze nic predpovedet Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 6 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 7

Prklad probl emu nekonzistence pri soub eznosti Prklad mozn eho pr ubehu proces u P1 a P P1 P chin = getchar();... chout = chin;... putchar(chout);...... chin = getchar();... chout = chin;... putchar(chout);...... Pr ubeh je validn V multitaskingov em syst emu vsak nem uzeme nic predpokl adat o rychlosti beh u jednotliv ych proces u nerzen a kooperace je zdrojem casov e z avisl ych chyb Prklad probl emu nekonzistence pri soub eznosti Prklad jin eho mozn eho pr ubehu proces u P1 a P P1 P...... chin = getchar();...... chin = getchar(); chout = chin;...... chout = chin; putchar(chout);...... putchar(chout);...... Znak nacten y v P1 se ztr ac drve nez je zobrazen y Znak nacten y v P se vypisuje v P1 i P Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 8 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 9 Typov e ulohy souvisejc se soub eznost Synchronizace proces u { cek an procesu na ud alost Komunikace mezi procesy { v ymena zpr av rozsren synchronizace pro koordinaci r uzn ych aktivit, ke sdelen o vzniku ud alosti se prid av a sdelovan a informace { zpr ava Sdlen prostredk u { souperen (race condition) procesy pouzvaj a modikuj sdlen a data, operace z apisu techto dat mus b yt vz ajemne vyloucen e, operace z apisu techto dat mus b yt vz ajemne vyloucen e s operacemi jejich cten, operace jejich cten b yt realizov any soubezne Pro zabezpecen integrity dat mus program ator pouzt tzv. kritick e sekce zajist'ujc serializaci koniktnch operac (write x write, read x write) B azov e formy komunikace mezi procesy komunikace mezi procesy { IPC, Interprocess Communication Formy IPC sdlen a pamet', shared memory v ymena zpr av, message passing M uze doch azet k,,uv aznut"{ kazd y proces v syst emu cek a na ud alost ci zpr avu generovanou v nekter em jin em procesu v syst em nebo na uvolnen vstupu do kritick e sekce Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 10 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 11

Sd lena pam et', vym ena zprav P r klad: sd lena vyrovnavac pam et' s omezenou kapacitou Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 1 Jan Staudek, FI MU Brno Konzument: item nextproduced; item nextconsumed; while (1) {... /* produkce */ while (1) { while (count == BUFFER SIZE) while (count == 0) ; /* do nothing */ ; /* do nothing */ ++count; - - count; buffer[in] = nextproduced; nextconsumed = buffer[out]; in = (in + 1) % BUFFER SIZE; out = (out + 1) % BUFFER SIZE; }... /* konzumace */} Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu PB15 Operacn systemy { Komunikace a synchronizace procesu 13 X Soub eh R a W neatomickymi operacemi stejne polo zky dat, nap r. p r kazy + + count a count se mus provad et atomicky X provest se atomicky provest se bez p reru sen #define BUFFER SIZE 10 typedef struct {... } item; item buffer[buffer SIZE]; int in = 0; int out = 0; int count = 0; Producent Nutna synchronizace { Race Condition Program producenta a program konzumenta Sd lena data: Pou zit sd lene vyrovnavac pam eti s omezenou kapacitou pro vym enu dat mezi procesy, producentem a konzumentem. y nazev Cast ulohy: Producent/Konzument (zprav), resp. take,,bounded-buffer problem\ 14 p r kaz + + count bude ve strojovem jazyku implementovany takto: register1 = count register1 = register1 + 1 count = register1 p r kaz count bude ve strojovem jazyku implementovany takto: register = count register = register 1 count = register Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 15

Nutn a synchronizace { Race Condition, Jestlize se producent i konzument pokus zkorigovat vyrovn avac pam et' soucasn e, mohou se interpretace instrukc jejich program u v case prokl adat { konkr etn prokl ad an je ale nepredikovateln e Prklad: Necht' count m a inici aln hodnotu 5. Proveden operac + + count; a count; nesm hodnotu count zmenit Mozn e prolozen operac + + count; a count;: producent : register 1 = count (register 1 = 5) producent : register 1 = register 1 + 1 (register 1 = 6) konzument : register = count (register = 5) konzument : register = register 1 (register = 4) producent : count = register 1 (count = 6) konzument : count = register (count = 4) Hodnota count je 4, ne spr avn a hodnota 5. Probl em kritick e sekce n proces u souper o pr avo pouzvat jist y sdlen y zdroj vz ajemne v ylucne v kazd em procesu z n se nach az segment k odu programu naz yvan y kritick a sekce, ve kter em proces vz ajemne v ylucn e pristupuje ke sdlen emu zdroji je potreba zajistit, ze v jist e kritick e sekci sdruzen e s jist ym zdrojem, se bude nach azet nejv yse jeden proces modelov e prostred pro hled an resen probl emu kritick e sekce predpokl ad a se, ze kazd y proces bez nenulovou rychlost nic se nepredpokl ad a o relativn rychlosti proces u z adn y proces nez ustane v kritick e sekci nekonecne dlouho Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 16 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 17 Ilustrace vz ajemn eho vyloucen Rychlost behu proces u nezn ame Vlastnosti spr avn eho resen probl emu kritick e sekce Dosazen vz ajemn eho vyloucen, podmnka bezpecnosti,,,safety" Jestlize nekter y proces prov ad svoji kritickou sekci, z adn y jin y proces nem uze prov adet svoji kritickou sekci sdruzenou se stejn ym zdrojem Trvalost postupu, podmnka zivosti,,,liveliness\, progress Jestlize z adn y proces neprov ad svoji kritickou sekci sdruzenou s jist ym zdrojem a existuje alespo n jeden proces, kter y si preje vstoupit do kritick e sekce sdruzen e se tmto zdrojem, pak v yber procesu, kter y do takov e kritick e sekce vstoup, se nesm odkl adat Konecnost doby cek an, podmnka spravedlivosti, fairness Po vyd an z adosti jist eho procesu z n proces u o vstup do jist e kritick e sekce a pred uspokojenm tohoto pozadavku m uze m uze b yt povolen vstup do sdruzen e kritick e sekce nejv yse n 1 proces um Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 18 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 19

Dals vlastnosti spr avn eho resen probl emu kritick e sekce Koncept resen probl emu kritick e seke Proces, kter y konc svoji cinnost v okamziku, kdy se nenach az v kritick e sekci, mus tak ucinit bez interference s ostatnmi procesy Nelze nic predpokl adat o relativn rychlosti proces u a poctu procesor u Proces pob yv a v kritick e sekci konecnou dobu pro n azornost predpokl ad ame existenci proces u, P 0 a P 1 generick a struktura procesu P i do { enteringcriticalsection() critical section leavingcriticalsection() reminder section } while (1); procesy mohou za ucelem dosazen synchronizace sv ych akc sdlet spolecn e prom enn e poc atecn e pripustme cinn e (aktivn) cek an procesu na spln en podmnek pro vstup do kritick e sekce v enteringcriticalsection() { busy waiting Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 0 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 1 Element arn resen probl emu KS { maskov an prerusen enteringcriticalsection() = disable interrupt leavingcriticalsection() = enable interrupt proces, kter y prvn provede vstup do kritick e sekce, zamaskuje prerusen na procesoru vlastnosti: uplatniteln e pouze v 1-procesorov ych syst emech hloup e, neefektivn resen pln a eliminace rys u multiprogramov an kritick a sekce se st av a nedeliteln ym blokem fyzicky, nikoli logicky Mozn e kategorie z akladen pro resen probl emu KS Softwarov e resen nezprostredkov avan e jin ymi sluzbami algoritmy, jejichz spr avnost se nespol eh a na z adn e dals sluzby pouzvaj standardn instrukcn reperto ar (LOAD, STORE,... ) na moznost vstupu do KS aktivne cekaj, busy waiting Hardwarov e resen nezprostredkov avan e jin ymi sluzbami algoritmy, jejichz spr avnost se nespol eh a na z adn e dals sluzby pouzvaj speci aln instrukce strojov eho jazyka (TST, XCHG,... ) na moznost vstupu do KS aktivne cekaj, busy waiting Softwarov e resen zprostredkovan e operacnm syst emem potrebn e sluzby a datov e struktury poskytuje OS na moznost vstupu do KS se cek a pasivne, ve fronte ex. podpora vol an sluzeb v programovacch syst emech/jazycch { semafory, monitory, zasl an zpr av Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 3

Cist e softwarov e resen Cist e softwarov e resen, Petersonovo resen Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 4 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 5 Cist e softwarov e resen, Petersonovo resen Petersonovo resen nespl nuje podmnku spravedlivosti Vl akna neuv aznou, nekter e vl akno m uze ale st arnout { pri plne synchronnm behu vl aken rozhoduje o vtezi souperen n ahodne urcen a hodnota promenn e turn (0 nebo 1) Petersonovo resen lze generalizovat pro libovoln y, predem zn am y pocet proces u Hardwarov a podpora synchronizace, speci aln instrukce Monoprocesory mohou probl em n asobnosti vstupu do KS vyresit zamaskov anm prerusen v multiprocesorov ych syst emech zamaskov an prerusen na jednom procesoru probl em neres Ex. speci aln atomick e ( neprerusiteln e) synchronizacn instrukce vhodn e i pro multiprocesory (x86, Sparc, IBM z series, Intel IA-3 (Pentium), IA-64 (Itanium)... ) neprerusiteln e { do hlavn pameti pristupuj vcekr at, neprerusitelne Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 6 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 7

Hardwarov a podpora synchronizace, speci aln instrukce Test-and-Set Lock, princip pouzit Test-and-Set Lock, TSL REGISTER,LOCK { zsk an hodnoty promenn e LOCK z FAP do registru a nastaven jej nenulov e hodnoty ve FAP, atomicky XCHG, XCHG REGISTER,LOCK { v ymena obsahu dvou pamet'ov ych mst (registr x bu nka FAP a nebo prp. bu nka FAP x bu nka FAP) atomicky compare-and-swap (int *word, int testval, int newval) testuje hodnotu promenn e (*word) proti hodnote testval, pri shode se nahrad hodnotu promenn e hodnotou newval; jinak ponech a p uvodn hodnotu promenn e vzdy vrac p uvodn hodnotu promenn e, takze msto v pameti se men pokud vracen a hodnota se shoduje s hodnotou pouzitou jako vzor testu (probehne swap) Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 8 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 9 XCHG, princip pouzit pam et' x registr XCHG, princip pouzit pam et' x pam et' Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 30 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 31

compare-and-swap, princip pouzit Z avery z prvnch dvou zp usob u resen Negativa softwarov eho resen Procesy, kter e z adaj o vstup do sv ych KS, to delaj metodou,,busy waiting\, spotrebov avaj cas procesoru Nen splnena podmnka spravedlnosti z av ery ke speci alnm instrukcm klady: { vhodn e i pro multiprocesory { na rozdl od prost eho zamaskov an / odmaskov an prerusen negativa { aktivn cek an { moznost st arnut { dky n ahodnosti resen koniktu { moznost uv aznut { dky cinn emu cek an na vstup do kritick e sekce { resen nespl nuje podmnku spravedlnosti negativa nevad, pokud jsou KS kr atk e a volan e rdce pouzit v j adru OS toto omezen spl nuje Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 3 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 33 Synchronizacn n astroj Semafory promenn a typu semaphore nab yvajc hodnot { volno (podle zp usobu implementace: zvednut y semafor, 1, true,... ) { obsazeno (shozen y semafor, 0, false,... ) operace oznamuji událost (zved am semafor, uvol nuji cestu) { cast e n azvy: release, signal, semsignal, V (z NL { Vrhogen), operace čekám na událost (cek am na zvednut y semaforu a shazuji ho) { detekc ud alosti se informace o vzniku ud alosti ztr ac { vyzaduje se napr. zajisten voln e cesty do kritick e sekce { cast e n azvy: acquire, wait, semwait, P, (z NL { Proberen), operace inicializace semaforu na poc atecn hodnotu Semafory jsou sluzbou poskytovanou proces um/vl akn um implementovanou v nizs vrstv e software v uci proces um/vl akn um (aplikacm) Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 34 Semafory Pozaduje se, aby se cek an na ud alost realizovalo pasivn e Podp urn a vrstva potlac beh procesu/vl akna do doby vzniku ud alosti Standardne se semafory implementuj jako sluzba j adra OS J adro OS poskytuje sluzbu nad identikovateln ym semaforem, aplikacn ucel pouzit konkr etnho semaforu si denuje aplikace Necht' je v semaforu S volno/obsazeno implementovan e 1/0 inici aln hodnotou je 1 Pak lze operace nad semaforem S (ATOMICK E V U CI S) symbolicky vyj adrit n asledovn e (zatm s aktivnm cek anm) acquire(s) { while S 0; // no-operation S ; } release(s) { S++; } Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 35

Vz ajemn e vyloucen KS pomoc bin arnho semaforu Semaphore S; % inicializovaný na 1... acquire(s); criticalsection(); release(s);... Implementace semaforu jako sluzba z rozhran sluzeb OS Jsou potreba dv e pomocn e operace, vnitrn operace v j adru block { potlacuje proces, kter y operaci acquire(s) vyvolal (běžící proces d a mezi procesy čekající na semafor) wakeup(p ) { prerazuje cekajc proces P mezi pripraven e procesy Idea implementace operac acquire(s) a release(s) v j adru acquire(s){ S.value ; if (S.value < 0) { block; } } release(s){ S.value++; if (value 0) {... // z fronty čekajících... // je odebrán process P wakeup(p); } } Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 36 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 37 Implementace semaforu, Implementace mus zarucit, ze z adn e dva procesy nemohou prov ad et operace acquire() a/nebo release() nad stejn ym semaforem soucasn e spln en podmnkek bezpecnosti, zivosti a spravedlnosti v uci z adajcm proces um je probl em resen y softwarov e v j adru OS zivost a spravedlnost zajist implementace lozoe FIFO v operacch block a wakeup(p) bezpecnost { vz ajemn a v ylucnost je dosaziteln a snadno Implementace semaforu, 3 Cast ym resenm operace release() je presunut proces u cekajcch na zvednut semaforu mezi pripraven e procesy s nastavenm ctace instrukc na zopakov an operace acquire() porad aktivace proces u pak urcuje dispecer V n ekter ych implementacch semafor u mohou jejich hodnoty nab yvat i z aporn ych hodnot, kter e pak vesmes vyjadruj pocet cekajcch akt er u na zvednut semaforu Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 38 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 39

Implementace semaforu, 4 Ilustrace implementace operac na semaforem Implementace semaforu se st av a probl emem kritick e sekce operace acquire() a release() mus b yt atomick e na 1 procesorov em stroji lze zajistit atomicitu zamaskov anm prerusen v j adru OS na multiprocesoru se mus pouzt bud'to prm e softwarov e resen kritick e sekce nebo se vyuzij speci aln instrukce, pokud je procesor podporuje,,busy waitnig"nelze plne eliminovat, lze ho presunout z aplikacn urovne (kde mohou b yt kritick e sekce dlouh e) do urovne j adra OS pro implementaci atomicity operac acquire() a release() v distribuovan em prostred se mus pouzt speci aln distribuovan e algoritmy, viz predm et PA 150 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 40 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 41 Semafor coby synchroniz ator M a se prov est akce B v procesu P j az po t e, co se provede akce A v procesu P i pouzije se semafor f lag inicializovan y na 0 0 { ud alost nenastala, 1 { ud alost nastala P i : P j :...... A acquire(flag) release(flag) B Uv aznut Uv aznut a st arnut dva nebo vce proces u neomezene dlouho cekaj na ud alost, kterou m uze generovat pouze jeden z cekajc proces u Necht' S a Q jsou dva semafory inicializovan e na 1 a r adky vyjadruj tok casu P i : P j : acquire(s); acquire(q); acquire(q); acquire(s);...... release(s); release(q); release(q); release(s); St arnut neomezen e blokov an, proces nemus b yt odstranen y z fronty na semafor nikdy (predbh anm procesy s vyssmi prioritami,... ) Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 4 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 43

Semafor, typy Bin arn semafor (tak e { mutex lock) nab yv a celocseln ych hodnot z intervalu < 0, 1 > odpovd a interpretaci obsazeno/ volno lze implementovat i instrukcemi TSL nebo XCHG lze implementovat i prm ym Petersonov ym resenm Obecn y semafor celocseln a hodnota z intervalu < 0, n >, n > 1 slouz napr. k ct an ud alost apod. lze implementovat pouze pomoc komplexnejsch funkc j adra implementovatelnost obecn eho semaforu bin arn semafor lze snadno implementovat obecn y semafor lze implementovat semaforem bin arnm, viz d ale Implementace obecn eho semaforu Datov e struktury obecn eho semaforu S s maxim aln hodnotou C binary-semaphore S1, S; int C; Inicializace: S1 = 1; S = 0; C = iniciální hodnota semaforu S; operace acquire: a release: acquire(s1); acquire(s1); C ; C++ ; if (C < 0) { if (C 0) release(s1); release(s); acquire(s); release(s1); } release(s1); Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 44 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 45 Klasick e synchronizacn ulohy Producent { konzument (Bounded-Buffer Problem) pred av an zpr av mezi procesy Cten ari a psari (Readers and Writers Problem) soubeznost cten a modikace dat (v datab azi,... ) Uloha o vecercch lozofech ilustracne zajmav y probl em pro resen uv aznut 5 filozofů bud myslí nebo jí jí špagety jen vidličkami co se stane, když se všech 5 filozofů najednou chopí např. levé vidličky? no přece časem zemřou hladem, děti Resen ulohy producent { konzument Potrebujeme 1 bin arn semafor pro vz ajemn e vyloucen operac s bankem buer u { mutex k banku buer u sm pristoupit najednou jedin y proces Potrebujeme obecn e semafory pro synchronizaci producenta a konzumenta stavem banku N buer u { { obecn y semafor pro indikaci poctu pln ych (full) a { obecn y semafor pro indikaci poctu pr azdn ych (empty) co nebylo produkov ano, nelze konzumovat, konzumovat lze jen kdyz plat full > 0 nelze produkovat do pln eho banku buer u, produkovat lze jen kdyz plat empty > 0, Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 46 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 47

Resen ulohy producent { konzument, Sdlen e datov e struktury: semaphore full, empty, mutex; Inicializace: full = 0; empty = N; mutex = 1 operace producenta: a konzumenta: do { do { vytvoř data v nextp; acquire(full); acquire(empty); acquire(mutex); acquire(mutex); odeber data z bufferu do nextc; přidej nextp do buferu; release(mutex); release(mutex); release(empty); release(full) konzumuj data z nextc } while (true); } while (true); Variace na ulohu producent konzument Mejme dva vcevl aknov e procesy A a B Kazd e vl akno bez cyklicky a vyme nuje si zpr avu s nekter ym vl aknem druh eho procesu Zpr avou je napr. cslo ukl adan e do sdlen eho bueru Mus platit Pot e co vl akno z A zprstupn zpr avu nekter emu vl aknu z B, m uze pokracovat v behu az zsk a zpr avu od tohoto vl akna z B Pot e co vl akno z B zprstupn zpr avu nekter emu vl aknu z A, m uze pokracovat v behu az zsk a zpr avu od tohoto vl akna z A Jakmile vl akno z A zpr avu zprstupn, mus zajistit, aby ji jin e vl akno z A neprepsalo, dokud si ji nekter e vl akno z B neprevezme Jakmile vl akno z B zpr avu zprstupn, mus zajistit, aby ji jin e vl akno z B neprepsalo, dokud si ji nekter e vl akno z A neprevezme Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 48 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 49 Variace na ulohu producent konzument Cten ari a psari operace z apisu do sdlen eho zdroje mus b yt exklusivn, vz ajemn e vyloucen e s jakoukoli jinou operac operace cten mohou cten y zdroj sdlet libovoln y pocet proces u{cten ar u m uze cst jeden a tent yz zdroj soucasne v jednom okamziku sm dan y zdroj modikovat pouze jeden proces{psar jestlize proces{psar modikuje zdroj, nesm ho soucasn e cst z adn y proces{cten ar cten ar nen konzument, psar nen producent, jde o jinou ulohu Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 50 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 51

Cten ari a psari, Cten ari a psari s prioritou cten ar u Cten ari a psari s prioritou cten ar u prvn cten ar pristupujc ke zdroji zablokuje vsechny psare, posledn z cten ar u koncc cten zdroje uvoln prstup ke zdroji prpadne cekajcm psar um, psari se vz ajemne vylucuj psari mohou st arnout, pokud bude trvale alespo n 1 cten ar pristupovat ke zdroji Cten ari a psari s prioritou psar u prvn cten ar pristupujc ke zdroji zablokuje vsechny psare, posledn z cten ar u koncc cten zdroje uvoln prstup ke zdroji prpadne cekajcm psar um prvn psar z adajc vstup do kritick e sekce nov ym cten ar um prstup ke zdroji zak aze, nov cten ari mus cekat na pasivitu vsech psar u cten ari mohou st arnout, pokud bude ve fronte trvale alespo n 1 psar Sdlen e datov e struktury: semaphore wrt, readcountmutex; var readcount; Inicializace: wrt = 1; readcountmutex = 1; readcount = 0; psar: a cten ar: acquire(wrt); acquire(readcountmutex);... readcount++; písař modifikuje zdroj if (readcount == 1) acquire(wrt);... release(readcountmutex); release(wrt);... čtení sdíleného zdroje acquire(readcountmutex); readcount ; if (readcount == 0) release(wrt); release(readcountmutex); Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 5 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 53 Cten ari a psari s prioritou psar u Cten ari a psari s prioritou psar u, Sdlen e datov e struktury: semaphore wrt, rdr, rqueue, writecountmutex, readcountmutex; var readcount, writecount; Inicializace: wrt = 1; % zajištění vzájemné vyloučení w-w / r-w rdr = 1; % blokování čtenářů chce-li zapisovat alespoň 1 písař rqueue = 1; % obecný semafor pro frontování nových čtenářů writecountmutex = 1; readcountmutex = 1; readcount = 0; writecount = 0; psar: acquire(writecountmutex); writecount ++; if (writecount == 1) acquire(rdr); % prvn z psar u zablokuje nov e cten are release(writecountmutex); acquire(wrt); % vz ajemn e vyloucen psar u... písař modifikuje zdroj... release(wrt); acquire(writecountmutex); writecount ; if (writecount == 0) release(rdr); % posledn z psar u odblokuje nov e cten are release(writecountmutex); Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 54 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 55

Cten ari a psari s prioritou psar u, 3 cten ar: acquire(rqueue); % frontov an dalsch nov ych ct., pokud je alespo n 1 nov y ct. blokovan y ps. acquire(rdr); % prvn psar zablokuje nov eho cten are acquire(readcountmutex); readcount ++; if (readcount == 1) acquire(wrt); % psari mus vyckat release(readcountmutex); % na dokoncen rozpracovan ych cten ar u release(rdr); % cisten informac o cekajcch cten arch release(rqueue); % cisten informac o cekajcch cten arch... čtení sdíleného zdroje... acquire(readcountmutex); readcount ; if (readcount == 0) release(wrt); % posledn rozpracovan y cten ar pripoust psare release(readcountmutex); Probl emy se semafory semafory jsou mocn y n astroj pro dosazen vz ajemn eho vyloucen a koordinaci proces u operace acquire(s) a release(s) jsou prov ad eny vce procesy a jejich ucinek nemus b yt vzdy explicitne zrejm y semafor s explicitnm ovl ad anm operacemi acquire(s) a release(s) je synchronizacn n astroj nzk e urovn e Chybn e pouzit semaforu v jednom procesu hrout souhru vsech kooperujcch proces u prklady patologick eho pouzit semafor u: acquire(s); acquire(s); release(s);......... acquire(s); release(t ); acquire(s); Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 56 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 57 Monitory Monitor je synchronizacn n astroj vysok e urovn e, umoz nuje bezpecn e sdlen n ejak eho zdroje soub ezn ymi procesy/vl akny pomoc vyv azen ych procedur monitor monitor-name {... % deklarace proměnných public entry P1(... ) {... } public entry P(... ) {... } } Prov aden vyv azen ych procedur P1, P,... se implicitne vz ajemn e vylucuj (zajist'uje monitor) Podporuj jazyky typu Java, prostred.net,... Monitory, podmnkov e prom enn e aby proces mohl cekat uvnitr prov ad en procedury monitoru, mus se v monitoru deklarovat prom enn a typu condition, condition x, y; pro typ condition jsou denov any dv e operace x.wait(); proces, kter y vyvol a tuto operaci je potlacen (a uvoln monitor) az do doby, kdy jin y proces provede operaci x.signal x.signal(); Splnen podmnky x signalizuje proces bezc v monitoru provedenm operace x.signal. Operace x.signal aktivuje pr ave jeden proces, kter y posl eze znovu vstoup do monitoru, az bude monitor voln y. Pokud z adn y proces necek a na splnen podmnky x, je jej proveden pr azdnou operac. Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 58 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 59

Monitory, podmnkov e prom enn e, Producent-konzument pomoc monitor u, programy P a K V monitoru se sm nach azet nejv yse 1 proces { typick e resen: signalizujc proces bezprostredne opust monitor a cek a na pokracov an v behu v monitoru ve fronte urgentqueue Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 60 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 61 Producent-konzument pomoc monitor u, deklarace monitoru V ymena zpr av send (destination, message), receive (source, message) Synchronizace Blocking send, blocking receive, randezvous Nonblocking send, blocking receive Nonblocking send, Nonblocking receive blocking = cek a se na komplement arn operaci, synchronn Nonblocking = necek a se na komplement arn operaci, asynchronn Adresov an prm e { ud an identikace cle neprm e { ud an msta pro zpr avy odebran e prijmacem, port, mailbox Vztah mezi vyslacem a prijmacem pri neprm em adresov an 1:1, 1:n, m:1, m:n Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 6 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 63

Mailboxy a porty Mailboxy a porty mailbox { schr anka pro pred av an zpr av m uze b yt priv atn pro dvojici komunikujcch proces u m uze b yt sdlen a vce procesy OS m uze delat typovou kontrolu zpr av OS vytv ar mailbox na pokyn procesu proces je vlastnk schr anky, m uze ji rusit schr anka zanik a kdyz jej vlastnk konc Port mailbox patrc jednomu prijmacmu procesu a vce proces um zaslajcch zpr avy port vytv ar prijmac proces v modelu klient/server je prijmacm procesem server port se rus ukoncenm prijmacho procesu Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 64 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 65 Vz ajemn e vyloucen zpr avami Vz ajemn e vyloucen zpr avami, mailbox mutex sdlen a n procesy send() je asynchronn operac, konc odesl anm zpr avy receive() je synchronn operac, cek a az je mailbox mutex nepr azdn a Inicializace: send(mutex, go ); do kritick e sekce vstoup proces P i kter y dokonc receive() jako prvn Process P i : var msg: message; repeat receive(mutex,msg); kritická sekce send(mutex,msg); zbytek procesu forever Ostatn procesy budou cekat dokud P i zpr avu,,go"nevr at do schr anky Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 66 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 67

Producent { konzument zpravami Producent { konzument zpravami, Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 68 Jan Staudek, FI MU Brno Consumer: var pmsg: message; repeat receive(mayproduce, pmsg); pmsg:= produce(); send(mayconsume, pmsg); forever var cmsg: message; repeat receive(mayconsume, cmsg); consume(cmsg); send(mayproduce, go); forever PB15 Operacn systemy { Komunikace a synchronizace procesu 69 a Cten ri { p sa r zpravami zpravami, priorita p sa re Producent { konzument zpravami, 3 Producer: Producent um st'uje polo zky (ve zprav ach) do mailboxu / bu eru mayconsume Konzument mu ze konzumovat polo zku bu eru obsahuj c zpravu s daty Mailbox mayproduce je po cate cn e vypln ena n prazdn ymi zpravami (n = rozm er bu eru) delka mayproduce se produkc polo zek zkracuje a konzumac se zv et suje lze podporovat v ce producentu a konzumentu Ke sd lenym udaj um p ristupuje proces controller Ostatn procesy ho z adaj o povolen vstupu (writerequest, readrequest), povolen obdr z z skan m zpravy OK Konec p r stupu procesy sd eluj controlleru zpravou finished V controlleru jsou t ri mailboxy, pro ka zdy typ zpravy jeden Prom enna count v controlleru je inicializovana na nejvy ss mo zny po cet c tena ru (nap r. 100) a plat : X count > 0: ne ceka z adn y p sa r, mohou byt aktivn c tena ri, controller mu ze p rijmout pouze finished X count = 0: o p r stup z ad a pouze p sa r, controller mu po sle OK a c eka finished X count < 0: p sa r c eka na dokon cen aktivn ch c tena ru, lze p rijmout pouze finished Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 70 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 71

Cten ari { psari zpr avami zpr avami Uloha o 5 vecercch lozofech Klasick a synchronizacn uloha ilustracne zajmav y probl em pro uvodn ilustraci uv aznut 5 filozofů bud myslí nebo jí jí špagety, ale jen dvěma vidličkami co se stane, když se všech 5 filozofů najednou chopí např. levé vidličky? no přece zemřou hladem, děti Hledáme řešení rituál / protokol zajišt ující ochranu před uváznutím a stárnutím filozofů Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 7 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 73 Uloha o 5 vecercch lozofech, resen semafory Uloha o 5 vecercch lozofech, ochrana pred uv aznutm zrusen symetrie jeden lozof je lev ak, ostatn jsou prav aci lev ak se lis poradm zsk av an vidlicek Strava se pod av a n lozof um v jdelne se n 1 zidlemi vstup do jdelny hld a obecn y semafor poc atecne nastaven y na kapacitu n 1 resen chr anc jak pred uv aznutm, tak i pred st arnutm Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 74 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 75

Uloha o 5 vecercch lozofech, ochrana pred uv aznutm Uloha o 5 vecercch lozofech, ochrana pred uv aznutm Filozof sm uchopit vidlicky pouze kdyz jsou ob e (jeho lev a i prav a) voln e mus je uchopit uvnitr kritick e sekce, pro resen lze pouzt monitor denuje se vektor 5 podmnkov ych promenn ych (cek an na vidlicku) denuje se vektor indikujc stav vidlicek (true = voln a) denuj se dve monitorov e procedury pro zsk an a uvolnen vidlicek uv aznut nehroz, v monitoru m uze b y pouze jeden lozof Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 76 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 77 Uloha o 5 vecercch lozofech, resen monitorem Komplexn prklad synchronizace, holicstv V holicstv jsou tri holici, jedna pokladna, cek arna pro 0 z akaznk u s pohovkou pro 4 sedc z akaznky, jeden vchod a jeden v ychod Holicstv obslouz za den az 50 z akaznk u Poz arn predpisy povoluj nejv yse 0 z akaznk u v provozovn e Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 78 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 79

Komplexn prklad synchronizace, holicstv Holicstv, b azov e synchronizacn (FIFO) semafory Do pln e provozovny z akaznk nevstupuje V cek arn e z akaznci podle porad prchodu sed na pohovce, je-li na n msto, nebo stoj Jakmile m a holic volno, obsluhuje nejd ele cekajcho z akaznka Pohovka se udrzuje st ale pln a, pokud jsou v cek arne alespo n 4 z akaznci Ostrhan y z akaznk plat holici u pokladny, holic vybr a penze od z akaznka. Pokladna je jedna jedin a. Holic bud' strh a z akaznka nebo prebr a penze u pokladny nebo sp ve sv em kresle { cek a na z akaznka Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 80 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 81 Holicstv, celkov y program Holicstv, z akaznk Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 8 Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 83

Holicstv, holic a pokladna Jan Staudek, FI MU Brno PB15 Operacn systemy { Komunikace a synchronizace procesu 84