Problém kritické sekce
Z FAV wiki
(Rozdíly mezi verzemi)
m (kategorizace) |
|||
| (Není zobrazena 1 mezilehlá verze od 1 uživatele.) | |||
| Řádka 1: | Řádka 1: | ||
| − | |||
== Časový souběh == | == Časový souběh == | ||
| Řádka 22: | Řádka 21: | ||
# Proces běžící mimo svou kritickou sekci nesmí blokovat jiné procesy | # Proces běžící mimo svou kritickou sekci nesmí blokovat jiné procesy | ||
# Žádný proces nesmí na vstup do své kritické sekce čekat nekonečně dlouho | # Žádný proces nesmí na vstup do své kritické sekce čekat nekonečně dlouho | ||
| + | |||
| + | {{fav-kiv-bzinf}} | ||
| + | |||
| + | |||
| + | [[Kategorie:fav-kiv-bzinf]] | ||
Aktuální verze z 20. 2. 2014, 06:46
[editovat] Časový souběh
Pokud procesy sdílejí společnou paměť, kterou čtou a zapisují, může nastat časový souběh. Hledání časových souběhů v reálných programech není jednoduché, protože časový souběh se obvykle projevuje nedeterministicky a programy běží po většinu času bez problémů.
Příklad - Přístup do souboru
- 2 procesy chtějí vytvořit soubor a zapsat do něj
- 1. proces – zjistí, že soubor není
- ... přeplánování ...
- 2. proces – zjistí, že soubor není, vytvoří a zapíše
- 1. proces – pokračuje, vytvoří a zapíše znehodnotí činnost druhého procesu
Řešení - časový souběh by nenastal, pokud by čtení+modifikace proběhli atomicky, tj. jako jedna nedělitelná operace. Zařídit HW většinou není praktické. SW řešení - v jednom okamžiku dovolíme číst a zapisovat společná data pouze jednomu procesu.
[editovat] Kritická sekce
= místo programu, kde je prováděn přístup ke společným datům
Dobré řešení musí mít 3 vlastnosti:
- Vzájemné vyloučení: žádné 2 procesy nesmějí být současně uvnitř své kritické sekce
- Proces běžící mimo svou kritickou sekci nesmí blokovat jiné procesy
- Žádný proces nesmí na vstup do své kritické sekce čekat nekonečně dlouho