1/35 PB153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Synchronizace procesů 08.

Slides:



Advertisements
Podobné prezentace
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Advertisements

Přednáška č. 5 Proces návrhu databáze
SYSTÉM PŘERUŠENÍ U 68HC11.
Operační systémy. OPERAČNÍ SYSTÉMY pomoc operátorovi, podpora vlastností reálného času, víceuživatelských a více úlohových systémů.
Paralelní programování
If-else, do-while, switch, operátory
Principy překladačů Mezikód Jakub Yaghob.
Paralelní programování
Úvod. Základní úrovně: hardwarová (procesory, jádra) programová (procesy, vlákna) algoritmická (uf... ) Motivace: zvýšení výkonu redundance jiné cíle,
Komunikace v DS Přednášky z distribuovaných systémů Ing. Jiří Ledvina, CSc.
State. State – kontext a problém Kontext  chování objektu má záviset na jeho stavu, který se typicky mění za běhu Neflexibilní řešení  metody obsahují.
13AMP 6. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled Synchronizace procesů Synchronizace procesů Producent-Konzument Producent-Konzument.
Teoretická informatika Tomáš Foltýnek Paralelní programování.
Modely konzistentnosti Ladislav Kotal PDS 2008Ladislav Kotal2 Konzistentnost Konzistentní = soudržný, neporušený, pevný Konzistenční model = dohoda.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Objektové programování
Operační systémy Přednášky pro výuku předmětu Operační systémy Ing. Antonín Vaněk, CSc. DFJP, Univerzita Pardubice září 2003.
Operační systémy Přednášky pro výuku předmětu Operační systémy Ing. Antonín Vaněk, CSc. DFJP, Univerzita Pardubice září 2003.
Jedenácté cvičení Vlákna. Java cv112 Vlákna Operační systém Mutitasking – více úloh se v operačním programu vykonává „současně“ Java Multithreading -
Informatika pro ekonomy II přednáška 10
13AMP 2. přednáška Ing. Martin Molhanec, CSc.. Stav procesu (kontext) Stav procesu je úplná informace, kterou je nutné uschovat při přerušení procesu,
13AMP 3. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled I. Co je to kontext úlohy Co je to kontext úlohy Task switching (přepnutí úlohy)
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
11. přednáška politika přidělování místa, trashing -algoritmy určení oběti -souběžnost procesů -kritická sekce (co je to, požadavky, možnosti.
Zablokování (deadlock, smrtelné objetí, uváznutí)
Distribuovaná sdílená paměť Přednášky z Distribuovaných systémů Ing. Jiří Ledvina, CSc.
Cykly Cykly umožňují provádět určitou část kódu opakovaně až do nastaveného počtu cyklování nebo splnění podmínky. Cykly umožňují provádět určitou část.
A4B33OSS (J. Lažanský) verze: Podzim 2010 Meziprocesní komunikace a synchronizace procesů 1 Obsah Téma 5 – Meziprocesní komunikace a synchronizace procesů.
A4B33OSS (J. Lažanský) verze: Podzim 2013 Meziprocesní komunikace a synchronizace procesů 1 Obsah Téma 5 – Synchronizace procesů a problém uváznutí 1.Problém.
3. konzultace (5 hodin) Studijní materiály najdete na adrese:
13AMP 4. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled Problém sdílených zdrojů Problém sdílených zdrojů Co je to kritická sekce Co.
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Výrok „Vypadá to, že jsme narazili na hranici toho, čeho je možné dosáhnout s počítačovými technologiemi. Člověk by si ale měl dávat pozor na takováto.
Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické.
1/28 PB153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Vlákna 06.
A3B33OSD (J. Lažanský) verze: Jaro 2013 Synchronizace procesů a problém uváznutí 1 Obsah Téma 5 – Synchronizace procesů a problém uváznutí 1.Problém soupeření,
Komunikace v DS Přednášky z distribuovaných systémů Ing. Jiří Ledvina, CSc.
Základy operačních systémů Meziprocesová komunikace a synchronizace Jakub Yaghob.
PB 169 Počítačové sítě a operační systémy1 Synchronizace procesů Uváznutí PB 169 Počítačové sítě a operační systémy.
1/34 PB153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Synchronizace procesů 08.
SVAZEK NEDEDIKOVANÝCH PRACOVNÍCH STANIC NA BÁZI OS LINUX DANIEL LANGR DIPLOMOVÁ PRÁCE 2004.
Operační systémy LS 2014/ přednáška 20. dubna 2015.
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
Synchronizace. nejen provedení dvou operací ve stejný čas jakákoliv forma časové koordinace více procesů nebo událostí synchronizační pravidla / omezení.
SOFTWAROVÁ PODPORA PRO VYTVÁŘENÍ FUZZY MODELŮ Knihovna fuzzy procedur Ing. Petr Želasko, VŠB-TU Ostrava.
UNIX 12. Komunikace mezi procesy © Milan Keršláger
Operační systémy 10. Souběh a uváznutí
Zvídavé otázky 1. Prevence a detekce uváznutí
Služby Windows Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Programovací jazyk C# 4. část - cykly.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Distribuovaný operační systém pro mikroprocesory
Soubor Soubor v informatice označuje pojmenovanou sadu dat uloženou na nějakém datovém médiu, se kterou lze pracovat nástroji operačního systému jako.
ZAL – 3. cvičení 2016.
1. ročník oboru Mechanik opravář motorových vozidel
Vytváření dokumentace algoritmů
Operační systémy 9. Spolupráce mezi procesy
Souběh Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Informatika pro ekonomy přednáška 8
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
Dynamické proměnné (1) Proměnné, jejichž počet a (nebo) velikost pa-měti využívané těmito proměnnými se v prů-běhu programu mění Dynamické proměnné lze.
PB 169 Počítačové sítě a operační systémy
Zablokování Současně běží více procesů požadujících přidělení určitých prostředků výpočetního systému a převedených do stavu blokovaných procesů – tj.
Téma 5 – Synchronizace procesů a problém uváznutí
Přednášky z distribuovaných systémů
Cyklus for (1) Obecný tvar: for (výraz1; výraz2; výraz3) příkaz
Přepínání procesů Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Přednášky z Distribuovaných systémů
Monitor Object 1.
Transkript prezentace:

1/35 PB153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Synchronizace procesů 08

2/35 Synchronizace běhu procesů ●jeden proces čeká na událost z druhého procesu Komunikace mezi procesy ●komunikace – způsob synchronizace, koordinace různých aktivit ●může dojít k uváznutí ●každý proces čeká na zprávu od nějakého jiného procesu ●může dojít ke stárnutí ●dva procesy si opakovaně posílají zprávy zatímco třetí proces čeká na zprávu nekonečně dlouho Sdílení prostředků ●procesy používají a modifikují sdílená data ●operace zápisu musí být vzájemně výlučné ●operace zápisu musí být vzájemně výlučné s operacemi čtení ●operace čtení mohou být realizovány souběžně ●pro zabezpečení integrity dat se používají kritické sekce PARALELNÍ BĚH PROCESŮ PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

3/35 Paralelní přístup ke sdíleným údajům může být příčinou nekonzistence dat Udržování konzistence dat vyžaduje používání mechanismů, které zajistí patřičné provádění spolupracujících procesů Problém komunikace procesů v úloze typu Producent-Konzument přes vyrovnávací paměť s omezenou kapacitou NEKONZISTENCE PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

4/35 Sdílená data #define BUFFER_SIZE 10 typedef struct {... } item; item buffer[BUFFER_SIZE]; int in = 0; int out = 0; int counter = 0; PRODUCENT-KONZUMENT (1) PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

5/35 Producent item nextProduced; while (1) { while (counter == BUFFER_SIZE) ; /* do nothing */ buffer[in] = nextProduced; in = (in + 1) % BUFFER_SIZE; counter++; } PRODUCENT-KONZUMENT (2) PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

6/35 Konzument item nextConsumed; while (1) { while (counter == 0) ; /* do nothing */ nextConsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; counter--; } PRODUCENT-KONZUMENT (3) PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

7/35 Atomická operace je taková operace, která vždy proběhne bez přerušení Následující příkazy musí být atomické ●counter++; ●counter--; count++ v assembleru může vypadat ●register1 = counter ●register1 = register1 + 1 ●counter = register1 count-- v assembleru může vypadat ●register2 = counter ●register2 = register2 – 1 ●counter = register2 PRODUCENT-KONZUMENT (4) PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

8/35 Protože takto implementované operace count++ a count-- nejsou atomické, můžeme se dostat do problémů s konzistencí Nechť je hodnota counter nastavena na 5. Může nastat: ●producer: register1 = counter (register1 = 5) ●producer: register1 = register1 + 1 (register1 = 6) ●consumer: register2 = counter (register2 = 5) ●consumer: register2 = register2 – 1 (register2 = 4) ●producer: counter = register1 (counter = 6) ●consumer: counter = register2 (counter = 4) Výsledná hodnota proměnné counter bude buďto 4 nebo 6, zatímco správný výsledek má být 5. PRODUCENT-KONZUMENT (5) PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

9/35 ANIMACE: PRODUCENT-KONZUMENT (5) PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

10/35 Race condition (podmínka soupeření): ●více procesů současně přistupuje ke sdíleným zdrojům a manipulují s nimi ●konečnou hodnotu zdroje určuje poslední z procesů, který zdroj po manipulaci opustí Ochrana procesů před negativními dopady race condition ●je potřeba procesy synchronizovat RACE CONDITION PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

11/35 N procesů soupeří o právo používat jistá sdílená data V každém procesu se nachází segment kódu programu nazývaný kritická sekce, ve kterém proces přistupuje ke sdíleným zdrojům Problém: ●je potřeba zajistit, že v kritické sekci, sdružené s jistým zdrojem, se bude nacházet nejvýše jeden proces PROBLÉM KRITICKÉ SEKCE PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

12/35 Podmínka vzájemného vyloučení (mutual exclusion), podmínka bezpečnosti, „safety“ ●jestliže proces P1 provádí svoji kritickou sekci, žádný jiný proces nemůže provádět svoji kritickou sekci sdruženou se stejným zdrojem Podmínka trvalosti postupu (progress), podmínka živosti, „liveliness“ ●jestliže žádný proces neprovádí svoji sekci sdruženou s jistým zdrojem a existuje alespoň jeden proces, který si přeje vstoupit do kritické sekce sdružené s tímto zdroje, pak výběr procesu, který do takové kritické sekce vstoupí, se nesmí odkládat nekonečně dlouho Podmínka konečnosti doby čekání (bounded waiting), podmínka spravedlivosti, „fairness“ ●musí existovat horní mez počtu, kolikrát může být povolen vstup do kritické sekce sdružené s jistým zdrojem jiným procesům než procesu, který vydal žádost o vstup do kritické sekce sdružené s tímto zdrojem, po vydání takové žádosti a před tím, než je takový požadavek uspokojen ●předpokládáme, že každý proces běží nenulovou rychlostí ●o relativní rychlosti procesů nic nevíme PODMÍNKY ŘEŠENÍ PROBLÉMU KRITICKÉ SEKCE PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

13/35 Máme pouze 2 procesy, P 0 a P 1 Generická struktura procesu P i do { } while (1); Procesy mohou za účelem dosažení synchronizace svých akcí sdílet společné proměnné Činné čekání na splnění podmínky v „entry section“ – „busy waiting“ POČÁTEČNÍ NÁVRHY ŘEŠENÍ PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ entry section critical section exit section reminder section

14/35 Softwarová řešení ●algoritmy, jejichž správnost se nespoléhá na žádné další předpoklady ●s aktivním čekáním „busy waiting“ Hardwarová řešení ●vyžadují speciální instrukce procesoru ●s aktivním čekáním Řešení zprostředkované operačním systémem ●potřebné funkce a datové struktury poskytuje OS ●s pasivním čekáním ●podpora v programovacím systému/jazyku ●semafory, monitory, zasílání zpráv ŘEŠENÍ PROBLÉMU KS PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

15/35 Sdílené proměnné ●int turn; počátečně turn = 0 ●turn = i  P i může vstoupit do KS Proces P i do { while (turn != i) ; critical section turn = j; reminder section } while (1); Splňuje vzájemné vyloučení, ale ne trvalost postupu ALGORITMUS 1 PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

16/35 Sdílené proměnné ●boolean flag[2]; počátečně flag [0] = flag [1] = false. ●flag [i] = true  P i může vstoupit do své KS Process P i do { flag[i] := true; while (flag[j]) ; critical section flag [i] = false; remainder section } while (1); Splňuje vzájemné vyloučení, ale ne trvalost postupu ALGORITMUS 2 PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

17/35 Kombinuje sdílené proměnné algoritmů 1 a 2 Proces P i do { flag [i]:= true; turn = j; while (flag [j] and turn == j) ; critical section flag [i] = false; remainder section } while (1); Jsou splněny všechny tři podmínky správnosti řešení problému kritické sekce ALGORITMUS 3 (PETERSONŮV) PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

18/35 Speciální instrukce strojového jazyka ●test_and_set, exchange / swap, … Stále zachována idea používání „busy waiting“ Test_and_set ●testování a modifikace hodnoty proměnné – atomicky boolean TestAndSet (boolean &target) { boolean rv = target; target = true; return rv; } Swap ●Atomická výměna dvou proměnných Void Swap (boolean &ra, boolean &rb] { boolean temp = a; a = b; b = temp; } SYNCHRONIZAČNÍ HARDWARE PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

19/35 Sdílená data (inicializováno na false): boolean lock: Proces Pi do { while (TestAndSet(lock)) ; critical section lock = false; remainder section } VYUŽITÍ TESTANDSET PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

20/35 Sdílená data (inicializováno na false): boolean lock; boolean waiting[n]; Proces Pi do { key = true; while (key == true) Swap(lock,key); critical section lock = false; remainder section } VYUŽITÍ SWAP PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

21/35 Nedostatek softwarového řešení ●procesy, které žádají o vstup do svých KS to dělají metodou „busy waiting“ ●po nezanedbatelnou dobu spotřebovávají čas procesoru Speciální instrukce ●výhody ●vhodné i pro multiprocesory (na rozdíl od prostého maskování/povolení přerušení) ●nevýhody ●opět „busy waiting“ ●možnost stárnutí – náhodnost řešení konfliktu ●možnost uváznutí v prioritním prostředí (proces v KS nedostává čas CPU) SITUACE BEZ PODPORY OS PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

22/35 Synchronizační nástroj, který lze implementovat i bez „busy waiting“ ●proces je (operačním systémem) „uspán“ a „probuzen“ ●tj. řešení na úrovni OS Definice Semaphore S : integer Lze ho zpřístupnit pouze pomocí dvou atomických operací wait (S): signal(S): while S ≤ 0 do no-op; S ++; S --; SEMAFORY PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

23/35 Sdílená data: semaphore mutex; // počátečně mutex = 1 Proces P i : do { wait(mutex); critical section signal(mutex); remainder section } while (1); KRITICKÁ SEKCE PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

24/35 Má se provést akce B v P j pouze po té, co se provede akce A v P i Použije se semafor flag inicializovaný na 0 Program: P i P j   A wait(flag) signal(flag)B.. SYNCHRONIZACE SEMAFOREM PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

25/35 Uváznutí ●dva nebo více procesů neomezeně dlouho čekají na událost, kterou může generovat pouze jeden z čekajících procesů ●Nechť S a Q jsou dva semafory inicializované na 1 P 0 P 1 wait(S);wait(Q); wait(Q);wait(S);   signal(S);signal(Q); signal(Q)signal(S); Stárnutí ●neomezené blokování, proces nemusí být odstraněný z fonty na semafor nikdy (předbíhání vyššími prioritami, …) UVÁZNUTÍ A STÁRNUTÍ PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

26/35 Obecný semafor S ●celočíselná hodnota z neomezovaného intervalu Binární semafor ●celočíselná hodnota z intervalu Implementovatelnost ●binární semafor lze snadněji implementovat ●obecný semafor lze implementovat semaforem binárním DVA TYPY SEMAFORŮ PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

27/35 Semafory jsou mocný nástroj pro dosažení vzájemného vyloučení a koordinaci procesů Operace wait(S) a signal (S) jsou prováděny více procesy a jejich účinek nemusí být vždy explicitně zřejmý ●semafor s explicitním ovládáním wait/signal je nástroj nízké úrovně Chybné použití semaforu v jednom procesu hroutí souhru všech spolupracujících procesů Patologické případy použití semaforů: wait(x) wait(x) KS KS wait(x) signal(y) PROBLÉMY SE SEMAFORY PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

28/35 Konstrukt programovacího jazyka vysoké úrovně Sdílená proměnná v typu T, je deklarována jako: v: shared T Proměnná v je dostupná pouze v příkazu region v when B do S kde B je booleovský výraz Po dobu, po kterou se provádí příkaz S, je proměnná v pro jiné procesy nedostupná Oblasti referující stejnou sídlenou proměnnou se v čase vzájemně vylučují KRITICKÉ OBLASTI PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

29/35 Když se proces pokusí provést příkaz region, vyhodnotí se Booleovský výraz B Je-li B pravdivý, příkaz S se provede Je-li B nepravdivý, provedení příkazu S se oddálí do doby až bude B pravdivý a v oblasti (region) spojené s V se nenachází žádný proces KRITICKÉ OBLASTI (2) PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

30/35 Synchronizační nástroj vysoké úrovně Umožňuje bezpečné sdílení abstraktního datového typu souběžnými procesy Provádění P 1, P 2, … se implicitně vzájemně vylučují MONITORY PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ monitor monitor-name { shared variable declarations procedure body P 1 (…) {... } procedure body P 2 (…) {... } procedure body P n (…) {... } { initialization code }

31/35 IPC (InterProcess Communication) ●signály (asynchronní události) ●roury ( ls|pr|lpr ) ●zprávy (messages) ●semafory (semaphores) ●sdílená paměť (shared memory) PŘÍKLAD: LINUX (1) PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

32/35 Semafory podle SYS V IPC, volání jádra ●semget ●semctl ●semop PŘÍKLAD: LINUX (2) PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ array of semaphores sem_queue sem_undo semid_ds ipc times sem_base sem_pending sem_pending_last undo sem_nsems proc_next id_next semid semadj next prev sleeper undo pid status sma sops nsops

33/35 PŘÍKLAD: WIN32 (1) PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

34/35 Semafory (obecné semafory), volání jádra ●CreateSemaphore ●OpenSemaphore ●ReleaseSemaphore ●Wait ●SignalObjectAndWait ●WaitForSingleObject ●WaitForSingleObjectEx ●WaitForMultipleObjects ●WaitForMultipleObjectsEx ●MsgWaitForMultipleObjects ●MsgWaitForMultipleObjectsEx PŘÍKLAD: WIN32 (2) PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ

35/35 Výukovou pomůcku zpracovalo Servisní středisko pro e-learning na MU PB 153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ