Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
|
mgr-szz:in-pos:1-pos [2019/06/13 11:19] lachmanfrantisek |
mgr-szz:in-pos:1-pos [2020/04/12 16:56] (aktuální) |
||
|---|---|---|---|
| Řádek 53: | Řádek 53: | ||
| * příklad: MACH | * příklad: MACH | ||
| * ➕ snadná přenositelnost OS, jádro je malé | * ➕ snadná přenositelnost OS, jádro je malé | ||
| - | * ➕ vyšší spolehlivost (moduly mají jasné API a jsou snadněji | + | * ➕ vyšší spolehlivost (moduly mají jasné API a jsou snadněji testovatelné) |
| - | testovatelné) | + | |
| * ➕ vyšší bezpečnost (méně kódu OS běží v režimu jádra) | * ➕ vyšší bezpečnost (méně kódu OS běží v režimu jádra) | ||
| * ➕ flexibilita (jednodušší modifikace, přidání, odebrání modulů) | * ➕ flexibilita (jednodušší modifikace, přidání, odebrání modulů) | ||
| Řádek 245: | Řádek 244: | ||
| * Toto je úkol dlouhodobého (strategického) plánovače | * Toto je úkol dlouhodobého (strategického) plánovače | ||
| * Vybírá který proces lze zařadit mezi připravené procesy. | * Vybírá který proces lze zařadit mezi připravené procesy. | ||
| + | * Řeší přechod ze stavu ''nový'' do stavu ''připravený''. | ||
| * Plánovač je spouštěn je relativně málo často. | * Plánovač je spouštěn je relativně málo často. | ||
| * Typicky při ukončení jednoho procesu rozhodne, kterou úlohu dále vybrat k zavedení do paměti a spuštění. | * Typicky při ukončení jednoho procesu rozhodne, kterou úlohu dále vybrat k zavedení do paměti a spuštění. | ||
| * Nemusí být super rychlý. | * Nemusí být super rychlý. | ||
| * Určuje stupeň multiprogramování. | * Určuje stupeň multiprogramování. | ||
| + | * Nemusí být ve všech systémech přítomen. | ||
| === Krátkodobý plánovač === | === Krátkodobý plánovač === | ||
| Řádek 370: | Řádek 371: | ||
| </box> | </box> | ||
| - | ===== Synchronizace procesů ===== | + | ===== Komunikace a synchronizace procesů ===== |
| Synchronizace běhu procesů = "Jeden proces čeká na událost z druhého procesu." | Synchronizace běhu procesů = "Jeden proces čeká na událost z druhého procesu." | ||
| Řádek 377: | Řádek 378: | ||
| Se souběžně běžícími procesy se můžeme setkat buď v přímo paralelním prostředí, kde je jedna paměť sdílena více procesy, nebo v prostředí distribuovaném, kde má každý proces vlastní lokální paměť. Hlavním problémem výskytu souběžných procesů je sdílení prostředků (paměť, zařízení, soubory, atd.) Tento problém se vyskytuje dokonce i v mnohouživatelských OS, kdy se např. řeší sdílení paměti mezi hlavní linií výpočtu v jádře a obslužnou rutinou přerušení při I/O operaci. Především při sdíleném přístupu do paměti nebo do souboru mohou vznikat neočekávané problémy – časové závislé chyby. | Se souběžně běžícími procesy se můžeme setkat buď v přímo paralelním prostředí, kde je jedna paměť sdílena více procesy, nebo v prostředí distribuovaném, kde má každý proces vlastní lokální paměť. Hlavním problémem výskytu souběžných procesů je sdílení prostředků (paměť, zařízení, soubory, atd.) Tento problém se vyskytuje dokonce i v mnohouživatelských OS, kdy se např. řeší sdílení paměti mezi hlavní linií výpočtu v jádře a obslužnou rutinou přerušení při I/O operaci. Především při sdíleném přístupu do paměti nebo do souboru mohou vznikat neočekávané problémy – časové závislé chyby. | ||
| </note> | </note> | ||
| + | |||
| Řádek 382: | Řádek 384: | ||
| * **Komunikaci mezi procesy** | * **Komunikaci mezi procesy** | ||
| - | * komunikace – způsob synchronizace, koordinace různých aktivit | + | * zasílání zpráv |
| - | * může dojít k uváznutí (každý proces čeká na zprávu od nějakého jiného procesu) | + | * synchronizace |
| - | * 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á paměť |
| + | * vzdálené volání procedur (RPC) | ||
| * **Sdílení prostředků** | * **Sdílení prostředků** | ||
| Řádek 392: | Řádek 395: | ||
| * operace čtení mohou být realizovány souběžně | * operace čtení mohou být realizovány souběžně | ||
| * pro zabezpečení integrity dat se používají kritické sekce | * pro zabezpečení integrity dat se používají kritické sekce | ||
| + | |||
| + | |||
| + | |||
| + | 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) | ||
| + | |||
| Řádek 504: | Řádek 514: | ||
| * zamezujeme současné platnosti všech nutných podmínek | * zamezujeme současné platnosti všech nutných podmínek | ||
| * prostředek se nepřidělí, pokud by hrozilo uváznutí (hrozí stárnutí) | * prostředek se nepřidělí, pokud by hrozilo uváznutí (hrozí stárnutí) | ||
| - | |||
| <box 95% round blue|Bankéřův algoritmus > | <box 95% round blue|Bankéřův algoritmus > | ||
| Řádek 561: | Řádek 570: | ||
| * postupně předbíhat uváznuté procesy | * postupně předbíhat uváznuté procesy | ||
| * zamezit současné platnosti nutných podmínek | * zamezit současné platnosti nutných podmínek | ||
| + | |||
| + | |||
| + | <box 90% blue|Resource-Allocation Graph, RAG> | ||
| + | * množina uzlů (procesy ⚫, zdroje ⬛) | ||
| + | * hrany | ||
| + | * požadavků (proces -> zdroj) | ||
| + | * přidělení (zdroj -> proces) | ||
| + | * zdroje mohou mít více instancí | ||
| + | |||
| + | Jestliže se v RAG nevyskytuje cyklus: | ||
| + | * => k uváznutí nedošlo | ||
| + | Jestliže se v RAG vyskytuje cyklus: | ||
| + | * existuje pouze jedna instance daného typu => k uváznutí došlo | ||
| + | * existuje více instancí daného typu => k uváznutí může dojít | ||
| + | </box> | ||
| + | |||
| + | |||
| + | <box 90% blue|Wait-for-Graph, WFG> | ||
| + | * vztahy pouze mezi procesy | ||
| + | * hrana = proces čeká na uvolnění zdroje druhým procesem | ||
| + | |||
| + | * Systém uvázl, pokud je v grafu cyklus. | ||
| + | </box> | ||