Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Operační systémy Souběh a uváznutí © Milan Keršláger 15.11.2016 http://www.pslib.cz/ke/slajdy http://creativecommons.org/licenses/by-nc-nd/3.0/
2
Souběh
3
● vzniká v případě, že dva nebo více procesů modifikuje stejná data ● pokud by procesy byly spuštěny samostatně, k problému by nedošlo ● vznikají mysteriózní chyby ● data mohou být uložena různě: ● data operačního systému: paměť jádra OS ● uživatelská data: soubor, sdílená paměť ● thready: z principu mají sdílenou paměť
4
Souběh – ze života ● sekretářka přidává všem zaměstnancům 100 Kč ● její program načte sdílená data ● sekretářka přičte 100 Kč ● data jsou uložena do sdíleného úložiště ● šéf se rozhoduje o přidělení prémie 500 Kč ● sekretářka načte další, ale odejde udělat kafe ● šéf načte stejná data, přičte 500 a data uloží ● sekretářka přijde, přičte 100 k původní částce ● sekretářka přepíše výsledek, 500 Kč se ztratí
5
Souběh – programování ● vytváření souborů ● soubor musí mít v adresáři unikátní jméno ● nové nejprve testujeme, pak teprve vytváříme ● může dojít k přerušení mezi testem a vytvořením ● nutnost atomické operace (typicky v jádru OS) ● přístup do SQL databáze ● aktualizace několika položek → nekonzistence dat ● ne vše lze vyřešit jako jedinou SQL instrukci ● používá se zamykání (viz dále), problém uváznutí
6
Pojmy pro popis souběhu ● kritická oblast ● data sdílena několika procesy (vlákny) ● kritická sekce ● nejmenší část programu pracující s kritickou oblastí ● může do ní vstoupit maximálně jeden proces – při řízení přístupu do kritické sekce tři problémy: – zajištění výhradního přístupu, vývoj, omezené čekání ● musí být provedena jako jeden celek – řešení: atomická operace nebo ochrana dat
7
Atomická operace ● proběhne jako jeden celek ● operaci nelze přerušit ● výsledek (všechny výsledky) se projeví najednou ● typicky jedna strojová instrukce ● delší (složitější) operace nejsou atomické ● atomicitu je možné zajistit dalšími prostředky ● jeden CPU: operace je pak zdánlivě atomická ● vícejádrový systém ● zdánlivá atomicita operace problém neřeší ● řešení: budeme chránit data
8
Kritická sekce musí vyřešit: ● zajištění výhradního přístupu ● v kritické sekci vždy nejvýše jeden proces ● vývoj ● rozhodování o vstupu do kritické sekce ● nelze odkládat rozhodnutí o procesu do nekonečna ● → např. striktní alternace ● omezené čekání ● střídání dvou procesů nemůže vyřadit třetí proces ● → dovolíme maximálně jeden vstup za obrátku
9
Zajištění výhradního přístupu ● zákaz přerušení ● při multitaskingu to nelze procesům dovolit ● používá se běžně v jádře OS ● instrukce TSL ● neodstraňuje problém aktivního čekání ● lze implementovat hardwarově i softwarově ● semafory ● univerzálnější, ale složitější implementace
10
Čekání před kritickou sekcí ● aktivní čekání ● realizováno jako smyčka (neustále testování) ● není vhodné pro víceúlohové systémy – zbytečně spotřebovává čas procesoru ● pasivní čekání ● realizováno frontou čekajících procesů ● odstraňuje problém aktivního čekání ● podobně jako blokování procesů při I/O
11
Zákaz přerušení ● znemožní přepnutí kontextu ● lze ohraničit kritickou sekci – na začátku zákaz, na konci povolení přerušení ● je to však privilegovaná instrukce ● její použití může zablokovat počítač ● nelze použít u preemptivního multitaskingu – vyhrazena jen pro jádro operačního systému – procesům musíme nabídnout jiné řešení ● běžně se používá uvnitř jádra OS
12
Instrukce TSL ● „Test and Set Lock“ ● nastaví proměnnou a vrátí její původní hodnotu – celá akce musí být nepřerušitelná ● po výstupu z kritické sekce proměnná na „false“ ● implementace ● speciální strojová instrukce ● instrukce prohození obsahu paměti s registrem – SWAP, XCHG ● softwarová implementace – využijeme zákaz přerušení → služba jádra OS
13
Semafory ● 1965 – popsal Dijkstra ● proměnná boolean z TSL nahrazena čítačem – do kritické sekce lze vpustit více procesů – je-li větší, než 0, je vstup umožněn – při výstupu zvýšena hodnota proměnné o 1 ● operace Down (P) – operace Down se zablokuje, je-li proměnná <=0 – je-li > 0, pak je snížena a ukončena (vstup povolen) ● operace Up (V) – proměnná je zvýšena o 1 ● také problém aktivního čekání
14
Problém aktivního čekání ● spotřebovává systémové prostředky ● nevhodné do víceúlohového prostředí ● ale vhodné pro krátkodobé zamykání (spinlock) ● pasivní čekání ● využíváme synchronizační prostředky ● vytvoříme frontu čekajících procesů ● zablokovaný proces do fronty – využijeme funkci OS sleep() – nebo přesuneme proces mezi blokované ● při výstupu z kritické sekce volání průchodu frontou
15
Uváznutí
16
Uváznutí – deadlock ● dva nebo více procesů čeká na událost, ke které by došlo jen pokud by jeden z nich mohl pokračovat ● souvisí se zamykáním (viz dříve souběh) ● je možná detekce uváznutí ● čekání ukončí buď OS nebo správce ● problém uváznutí v jádře OS → reboot ● v běžném životě se řeší couváním ● program (resp. CPU) couvat neumí ● couvat umí SQL server (rollback)
17
Uváznutí (v dopravě)
18
Podmínky uváznutí ● musí být splněny 4 následující podmínky ● výlučný přístup – existence nesdílitelných prostředků ● postupné přidělování prostředků – nežádá se o všechny prostředky najednou, ale postupně – není-li prostředek dostupný, musí se čekat ● přidělování bez preempce – přidělený prostředek nelze procesu odebrat ● cyklické čekání
19
Řešení uváznutí ● ignorování ● používá se v unixových systémech ● uživatel (nebo správce) jeden proces ukončí ● předcházení ● zabráníme splnění alespoň 1 z podmínek uváznutí ● vyhýbání ● systém zjišťuje, zda přidělením nezpůsobí uváznutí ● může být komplikované ● detekovat a zotavit se
20
Předcházení uváznutí (1) ● odstraníme alespoň 1 podmínku uváznutí: ● výlučný přístup: ● soubory jen pro čtení ● virtualizace prostředků – tzv. spooling (simultaneous peripherial output on-line) – např. vytvoření fronty pro tiskárny, frontu obsluhuje jen jeden proces (démon) – pro některé prostředky nelze použít (CPU, RAM)
21
Předcházení uváznutí (2) ● postupné přidělování prostředků ● jednorázové přidělování prostředků – jen při startu procesu, později už nic nepřidělíme – nejsou-li přiděleny, musí proces čekat ● přidělování jen pokud proces žádné nemá – proces musí všechny přidělené vrátit a pak požádat ● nevýhody: – plýtvání prostředky (nejsou potřeba celou dobu) – stárnutí procesů – bude-li usilovat o často používané prostředky, nemusí se dočkat
22
Předcházení uváznutí (3) ● přidělování bez preempce ● preempce → násilné odebrání prostředku – odebírat lze jen prostředky, u kterých lze snadno obnovit původní stav → nelze např. tiskárnu – takto lze přidělovat procesor nebo paměť ● jediná reálně použitelná strategie ● cyklické čekání ● odstranění očíslováním prostředků ● proces může žádat pouze o ty s vyšším číslem ● prostředky se stejným číslem pouze najednou
23
Vyhýbání se uváznutí ● při žádosti o prostředek se kontroluje, jestli po přidělení prostředku existuje alespoň jeden proces, který lze dokončit ● po jeho dokončení musí existovat alespoň jeden další atd. ● bankéřův algoritmus ● proces deklaruje maximální požadavky ● systém si musí ponechat prostředky alespoň pro uspokojení jediného procesu ● po ukončení jsou uvolněny další prostředky pro uspokojení dalších procesů (nutno pro všechny)
24
Detekce a zotavení ● údržba grafu přidělených prostředků ● pokud je v grafu cyklus → došlo k uváznutí ● komplikace: ● některý prostředek existuje ve více exemplářích a ● procesy pak nežádají o konkrétní exemplář ● používá se např. u SQL serverů
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.