Synchronizace procesu: Problém kritické sekce v OS

Obsah:

Anonim

Co je synchronizace procesů?

Synchronizace procesů je úkolem koordinace provádění procesů tak, aby žádné dva procesy neměly přístup ke stejným sdíleným datům a prostředkům.

Je to zvláště nutné v systému s více procesy, když běží více procesů 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ž ostatní procesy přistupují ke stejným sdíleným datům. Aby se zabránilo tomuto typu nekonzistence dat, je třeba procesy synchronizovat navzájem.

V tomto kurzu operačního systému se naučíte:

  • Co je synchronizace procesů?
  • Jak funguje synchronizace procesů?
  • Sekce programu
  • Co je problém kritické sekce?
  • Pravidla pro kritickou sekci
  • Řešení kritické sekce

Jak funguje synchronizace procesů?

Například proces A měnící data v paměťovém místě, zatímco jiný proces B se pokouší načíst data ze stejného paměťového místa. Existuje vysoká pravděpodobnost, že data načtená druhým procesem budou chybná.

Sekce programu

Zde jsou čtyři základní prvky kritické sekce:

  • Vstupní část: Je součástí procesu, který rozhoduje o vstupu konkrétního procesu.
  • Kritická část: Tato část umožňuje jednomu procesu zadávat a upravovat sdílenou proměnnou.
  • Exit Section: Exit section allows the other process that are waiting in the Entry Section, to enter into the Critical Sections. Rovněž kontroluje, zda by měl být proces, který dokončil své provádění, odstraněn prostřednictvím této části.
  • Sekce zbytku: Všechny ostatní části Kodexu, které se nenacházejí v části Kritické, Vstupní a výstupní, jsou známé jako Část zbytku.

Co je problém kritické sekce?

Kritická část je segment kódu, ke kterému lze přistupovat prostřednictvím signálního procesu v určitém časovém okamžiku. Sekce se skládá ze sdílených datových zdrojů, ke kterým je vyžadován přístup jinými procesy.

  • Vstup do kritické sekce je zpracován funkcí wait () a je reprezentován jako P ().
  • Výstup z kritického úseku je řízen funkcí signal (), představovanou jako V ().

V kritické části lze provést pouze jeden proces. Ostatní procesy, které čekají na provedení své kritické sekce, musí počkat, dokud aktuální proces nedokončí své spuštění.

Pravidla pro kritickou sekci

Kritická část musí vynutit 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 prostředku. Zahrnuje mechanismus dědičnosti priorit, aby se zabránilo problémům s inverzí rozšířené priority. V jeho kritické části nelze spustit více než jeden proces najednou.
  • Průběh: Toto řešení se používá, když nikdo není v kritické sekci a někdo ji chce. Pak by procesy, které nejsou v jejich sekci připomenutí, měly rozhodnout, kdo by měl vstoupit, v konečném čase.
  • Vázané čekání: Když proces zadá požadavek na vstup do kritické sekce, existuje konkrétní omezení počtu procesů, které se mohou dostat do jejich kritické sekce. Když je tedy dosaženo limitu, systém musí umožnit, aby se proces dostal do své kritické sekce.

Řešení kritické sekce

Při synchronizaci procesů hraje hlavní roli kritická sekce, takže problém musí být vyřešen.

Zde je několik široce používaných metod k řešení problému kritické sekce.

Řešení Peterson

Petersonovo řešení je široce používaným řešením problémů kritických sekcí. Tento algoritmus vyvinul počítačový vědec Peterson, proto je pojmenován jako Petersonovo řešení.

V tomto řešení, když se proces provádí v kritickém stavu, pak druhý proces provede pouze zbytek kódu a může dojít k opaku. Tato metoda také pomáhá zajistit, aby v kritické sekci běžel v konkrétní čas pouze jeden proces.

Příklad

PROCESS PiFLAG[i] = truewhile( (turn != i) AND (CS is !free) ){ wait;}CRITICAL SECTION FLAG[i] = falseturn = 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 udržováno pole FLAG [] o velikosti N, které je ve výchozím nastavení false. Takže kdykoli proces vyžaduje vstup do kritické sekce, musí nastavit svůj příznak jako pravdivý. Například pokud chce Pi vstoupit, nastaví VLAJKU [i] = PRAVDA.
  • Další proměnná s názvem TURN označuje číslo procesu, které se právě chystá vstoupit do CS.
  • Proces, který vstupuje do kritické sekce při ukončení, by změnil TURN na jiné číslo ze seznamu připravených procesů.
  • Příklad: turn je 2, pak P2 vstoupí do kritické sekce a při opuštění turn = 3 a proto se P3 vymaní z čekající smyčky.

Synchronizační hardware

Někdy jsou problémy kritické sekce vyřešeny také hardwarem. Některý operační systém nabízí funkci zámku, kde Proces získá zámek při vstupu do kritické sekce a uvolní zámek po jeho opuštění.

Když se tedy do kritické sekce pokouší vstoupit jiný proces, nebude schopen vstoupit, protože je uzamčen. Může tak učinit, pouze pokud je zdarma získáním samotného zámku.

Zámky Mutex

Synchronizační hardware není jednoduchý způsob implementace pro každého, takže byla zavedena také 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 prostředky použitými uvnitř kritické sekce. Ve výstupní části je zámek uvolněn.

Semaforové řešení

Semafor je jednoduše proměnná, která je nezáporná a sdílená mezi vlákny. Jedná se o další algoritmus nebo řešení problému kritické sekce. Jedná se o signalizační mechanismus a vlákno, které čeká na semaforu, který může být signalizován jiným vláknem.

Využívá dvě atomové 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;

Souhrn:

  • Synchronizace procesů je úkolem koordinace provádění procesů tak, aby žádné dva procesy neměly 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) Připomenutí sekce
  • Kritická část je segment kódu, ke kterému lze přistupovat prostřednictvím signálního procesu v určitém časovém okamžiku.
  • Tři pravidla, která musí vynutit kritická sekce, jsou: 1) Vzájemné vyloučení 2) Procesní řešení 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 prostředku.
  • Procesní řešení se používá, když nikdo není v kritické sekci a někdo chce.
  • V řešení vázaného čekání, poté, co proces odešle požadavek na vstup do své kritické sekce, existuje omezení, kolik dalších procesů se může dostat do jejich kritické sekce.
  • Petersonovo řešení je široce používaným řešením problémů kritických sekcí.
  • Problémy kritické sekce řeší také synchronizace hardwaru
  • Synchronizační hardware není jednoduchý způsob implementace pro každého, proto byla zavedena také přísná softwarová metoda známá jako Mutex Locks.
  • Semafor je další algoritmus nebo řešení problému kritické sekce.