06 - Procesy a vlákna - synchronizace
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) {