Jak Začít?

Máš v počítači zápisky z přednášek
nebo jiné materiály ze školy?

Nahraj je na studentino.cz a získej
4 Kč za každý materiál
a 50 Kč za registraci!




06 - Procesy a vlákna - synchronizace

PDF
Stáhnout kompletní materiál zdarma (174.15 kB)

Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.

A7B38UOS   Úvod do operačních systémů 06 - Procesy a vlákna - synchronizace

KS – vzájemné vyloučení běhu dvou procesů

Start P1

Start P2

Kritická
sekce P1

Kritická
sekce P2

P2 blokován

t1

t2

t3

t4

Běh P1 
mimo K.S.

Běh P2 
mimo K.S.

A7B38UOS   Úvod do operačních systémů 06 - Procesy a vlákna - synchronizace

KS – řízení přístupu

Přístup do kritické sekce:

do {

entry section

critical section

exit section

reminder section

while (1);

Přístup nelze řešit pomocí jednoduché sdílené proměnné (např. 
locked=FALSE vstup volný, locked=TRUE vstup blokovaný) !!!   

A7B38UOS   Úvod do operačních systémů 06 - Procesy a vlákna - synchronizace

KS – řízení přístupu - příklad

Příklad řízení vstupu do kritické sekce: Dva procesy P1, P2 používají sdílenou proměnnou pro řízení přístupu locked

while (locked != 0) ; /*čeká na uvolnění

while (locked != 0) ;

kritické sekce */ 

locked = TRUE;

locked = TRUE;

/* critical section */

/* critical section */

locked = FALSE;

locked = FALSE;

/* reminder section */                                              /* reminder section */

Toto je špatné řešení !!! Proč?

A7B38UOS   Úvod do operačních systémů 06 - Procesy a vlákna - synchronizace

KS – řízení přístupu pomocí sdílené proměnné

Řízení přístupu do KS podle sdílené proměnné lock:
ƒ

jednotlivé operace jsou prováděny ve více krocích

při souběžném přístupu může dojít k jejich přerušení

vlákno je přeplánováno uprostřed operace

výsledek závisí na pořadí provádění vláken

nastává tzv. chyba souběhu (race condition)

A7B38UOS   Úvod do operačních systémů 06 - Procesy a vlákna - synchronizace

KS – Petersonův algoritmus

Petersonův algoritmus:

p1_locked = FALSE;
p2_locked = FALSE;
int turn;

/* Proces 1 */ 

/* Proces 2 */

p1_locked = TRUE; 

p2_locked = TRUE;

turn = 1; 

turn = 0;

while (p2_locked && turn = 1); 

while (p1_locked && turn == 0);

critical section

critical section

p1_locked = FALSE; 

p2_locked = FALSE;

A7B38UOS   Úvod do operačních systémů 06 - Procesy a vlákna - synchronizace

Synchronizace využívající HW počítače 

Petersonův algoritmus se v praxi nepoužívá, místo něho se aplikuje 
zámek s podporou HW řešení procesoru.
Instrukce TSL (Test and Set Lock) boolean TestAndSet(boolean *target) {

Témata, do kterých materiál patří