Proces Synchronizace: Problém kritické sekce v OS
Co je proces Synchronizace?
Proces Synchronizace je úkolem koordinovat provádění procesů tak, aby žádné dva procesy nemohly mít přístup ke stejným sdíleným datům a zdrojům.
Je to zvláště potřeba ve víceprocesovém systému, když více procesů běží společně a více než jeden proces se pokouší získat přístup ke stejnému sdílenému prostředku nebo datům současně.
To může vést k nekonzistenci sdílených dat. Takže změna provedená jedním procesem se nemusí nutně projevit, když jiné procesy přistupují ke stejným sdíleným datům. Aby se předešlo tomuto typu nekonzistence dat, je třeba procesy vzájemně synchronizovat.
Jak zpracovat Syncfunguje korunizace?
Například proces A mění data v paměťovém místě, zatímco jiný proces B se pokouší číst data z stejný paměťové místo. Je vysoká pravděpodobnost, že data načtená druhým procesem budou chybná.
Části programu
Zde jsou čtyři základní prvky kritické části:
- Vstupní sekce: Je součástí procesu, který rozhoduje o vstupu konkrétního procesu.
- Kritická sekce: Tato část umožňuje jednomu procesu zadat a upravit sdílenou proměnnou.
- Výstupní sekce: Výstupní sekce umožňuje dalšímu procesu, který čeká ve vstupní sekci, vstoupit do kritických sekcí. Také kontroluje, že proces, který dokončil své provádění, by měl být odstraněn prostřednictvím této části.
- Zbývající část: Všechny ostatní části Kodexu, které nejsou v kritické, vstupní a výstupní části, jsou známé jako zbývající část.
Co je problém kritické sekce?
Kritická sekce je segment kódu, ke kterému lze přistupovat signálovým procesem v určitém okamžiku. Sekce se skládá ze sdílených datových zdrojů, ke kterým musí mít přístup jiné procesy.
- Vstup do kritické sekce je zpracován funkcí wait() a je reprezentován jako P().
- Výstup z kritické sekce je řízen funkcí signal() reprezentovanou jako V().
V kritické části lze provést pouze jeden proces. Ostatní procesy, které čekají na provedení své kritické sekce, musí čekat, dokud aktuální proces nedokončí své provedení.
Pravidla pro kritickou sekci
Kritická sekce musí prosazovat všechna tři pravidla:
- Vzájemné vyloučení: Vzájemné vyloučení je speciální typ binárního semaforu, který se používá pro řízení přístupu ke sdílenému zdroji. Zahrnuje mechanismus dědičnosti priorit, aby se zabránilo rozšířeným problémům s inverzí priorit. V kritické části nemůže být spuštěn více než jeden proces najednou.
- Průběh: Toto řešení se používá, když nikdo není v kritické sekci a někdo chce dovnitř. Pak by procesy, které nejsou v jejich připomenutí, měly rozhodnout, kdo by měl vstoupit, v konečném čase.
- Vázané čekání: Když proces požádá o vstup do kritické sekce, existuje specifický limit počtu procesů, které se mohou dostat do své kritické sekce. Když je tedy dosaženo limitu, systém musí umožnit, aby se požadavek procesu dostal do jeho kritické sekce.
Řešení kritické sekce
V přípravě Synchronizace, kritický úsek hraje hlavní roli, takže problém musí být vyřešen.
Zde jsou některé široce používané metody k řešení problému kritické sekce.
Petersonovo řešení
Petersonovo řešení je široce používané řešení problémů kritických úseků. Tento algoritmus byl vyvinut počítačovým vědcem Petersonem, proto je nazýván jako Petersonovo řešení.
V tomto řešení, když je proces vykonáván v kritickém stavu, pak druhý proces provádí pouze zbytek kódu a může se stát opak. Tato metoda také pomáhá zajistit, aby v kritické sekci v určitou dobu běžel pouze jeden proces.
Příklad
PROCESS Pi FLAG[i] = true while( (turn != i) AND (CS is !free) ){ wait; } CRITICAL SECTION FLAG[i] = false turn = j; //choose another process to go to CS
- Předpokládejme, že existuje N procesů (P1, P2, … PN) a každý proces v určitém okamžiku vyžaduje vstup do kritické sekce
- Je zachováno pole FLAG[] o velikosti N, což je ve výchozím nastavení nepravda. Takže kdykoli proces vyžaduje vstup do kritické sekce, musí nastavit svůj příznak jako true. Pokud chce například Pi vstoupit, nastaví FLAG[i]=TRUE.
- Další proměnná nazvaná TURN označuje číslo procesu, který aktuálně čeká na vstup do CS.
- Proces, který při výstupu vstoupí do kritické sekce, změní TURN na jiné číslo ze seznamu připravených procesů.
- Příklad: zatáčka je 2, pak P2 vstoupí do kritické sekce a při opuštění zatáčky=3 a proto P3 vypadne z čekací smyčky.
SyncHronizační hardware
Někdy jsou problémy kritické sekce také vyřešeny hardwarově. Některé operační systémy nabízejí funkci uzamčení, kdy proces získá zámek při vstupu do kritické sekce a po jejím opuštění zámek uvolní.
Takže když se jiný proces pokouší vstoupit do kritické sekce, nebude moci vstoupit, protože je uzamčen. Může tak učinit pouze v případě, že je volný, a to získáním samotného zámku.
Zámky Mutex
SyncHronizační hardware není jednoduchý způsob implementace pro každého, proto byla také zavedena přísná softwarová metoda známá jako Mutex Locks.
V tomto přístupu se ve vstupní části kódu získá LOCK nad kritickými zdroji používanými uvnitř kritické sekce. Ve výstupní části je zámek uvolněn.
Semaphore Řešení
Semaphore je jednoduše proměnná, která je nezáporná a sdílená mezi vlákny. Je to další algoritmus nebo řešení problému kritického úseku. Je to signalizační mechanismus a vlákno, které čeká na semafor, což může být signalizováno jiným vláknem.
Používá dvě atomické operace, 1) čekání a 2) signál pro synchronizaci procesu.
Příklad
WAIT ( S ): while ( S <= 0 ); S = S - 1; SIGNAL ( S ): S = S + 1;
Shrnutí
- Synchronizace procesů je úkolem koordinace provádění procesů tak, aby žádné dva procesy nemohly mít přístup ke stejným sdíleným datům a zdrojům.
- Čtyři prvky kritické sekce jsou 1) Vstupní sekce 2) Kritická sekce 3) Výstupní sekce 4) Sekce připomenutí
- Kritická sekce je segment kódu, ke kterému lze přistupovat signálovým procesem v určitém okamžiku.
- Tři pravidla, která musí kritická sekce vynutit, jsou: 1) Vzájemné vyloučení 2) Řešení procesu 3) Vázané čekání
- Vzájemné vyloučení je speciální typ binárního semaforu, který se používá pro řízení přístupu ke sdílenému zdroji.
- Procesní řešení se používá, když nikdo není v kritické sekci a někdo chce dovnitř.
- V řešení vázaného čekání, poté, co proces zadá požadavek na vstup do své kritické sekce, existuje limit, kolik dalších procesů se může dostat do své kritické sekce.
- Petersonovo řešení je široce používané řešení problémů kritických úseků.
- Problémy kritické sekce jsou také řešeny synchronizací hardwaru
- SyncHronizační hardware není jednoduchá metoda k implementaci pro každého, proto byla také zavedena přísná softwarová metoda známá jako Mutex Locks.
- Semaphore je další algoritmus nebo řešení problému kritické sekce.