Problém kritické sekce

Z FAV wiki
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(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...)
 
Řá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ů.
  
−
Problém kritické sekce nastává v situacích, kdy:
+
Příklad - Přístup do souboru
−
- Procesy soupeří o zdroj
+
 
−
- Ke zdroji nemůže přistupovat více než jeden proces v daném čase
+
* 2 procesy chtějí vytvořit soubor a zapsat do něj
−
- Každý proces může existovat bez ostatních, interakce je nutná pouze pro zajištění serializace přistupu ke zdroji
+
* 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 ==
  
−
Ř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é.
+
= místo programu, kde je prováděn přístup ke společným datům
−
SW řešení - v jednom okamžiku dovolíme číst a zapisovat společná data pouze jednomu procesu.
+
  
 
Dobré řešení musí mít 3 vlastnosti:
 
Dobré řešení musí mít 3 vlastnosti:
−
1. Vzájemné vyloučení: žádné 2 procesy nesmějí být současně uvnitř své kritické sekce
+
# Vzájemné vyloučení: žádné 2 procesy nesmějí být současně uvnitř své kritické sekce
−
2. Proces běžící mimo svou kritickou sekci nesmí blokovat jiné procesy
+
# Proces běžící mimo svou kritickou sekci nesmí blokovat jiné procesy
−
3. Žá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

Verze z 29. 8. 2011, 13:48

Č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

Ř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:

  1. Vzájemné vyloučení: žádné 2 procesy nesmějí být současně uvnitř své kritické sekce
  2. Proces běžící mimo svou kritickou sekci nesmí blokovat jiné procesy
  3. Žádný proces nesmí na vstup do své kritické sekce čekat nekonečně dlouho
Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje