Problém kritické sekce
Z FAV wiki
(Rozdíly mezi verzemi)
(Založena nová stránka: 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...) |
m (kategorizace) |
||
| (Nejsou zobrazeny 2 mezilehlé verze od 1 uživatele.) | |||
| Řádka 1: | Řádka 1: | ||
| + | == Č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ů. | 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 | |
| − | - | + | |
| − | + | ||
| − | + | ||
| − | Ř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é. | + | * 2 procesy chtějí vytvořit soubor a zapsat do něj |
| − | SW řešení - v jednom okamžiku dovolíme číst a zapisovat společná data pouze jednomu procesu. | + | * 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. | ||
| + | |||
| + | == 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: | 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 | |
| + | |||
| + | {{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