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.

boolean rv;
rv = *target;
*target = true;
return rv;

}
Funkce TSL přečte proměnnou target, nastaví ji na TRUE a vrátí původní
hodnotu.
Funkce je atomická, čtení a zápis se provádí jako jediná, nedělitelná, 
nepřerušitelná operace!!!

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

Synchronizace – příklad TestAndSet

Použití funkce TestAndSet():

boolean TestAndSet(boolean *target);
boolean lock = false;

while (TestAndSet(&lock)) ;

critical section

lock = false;

remainder section

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

Aktivní a pasivní čekání

Aktivní čekání
Spin-lock = zámek s aktivním čekáním 
= proměnná + operace 

lock/unlock

výsledek operace TestAndSet() se ukládá do proměnné

aktivní čekání (busy waiting) při zamčeném zámku (procesor je 

„zbytečně“ vytěžován) 

jeden proces/vlákno spinlock uzamkne a vstoupí do kritické sekce

další procesy/vlákna čekají ve smyčce a testují stav zámku nebo 

vykonávají jinou činnost

po opuštění kritické sekce proces/vlákno zámek odemkne – tím se 
uvolní vstup do KS pro další čekající proces/vlákno

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

Aktivní čekání - spinlock

Aktivní čekání

Použití spin-lock:ƒ

v případě, kdy se proces nesmí uspat (např. obsluha přerušení)

při zamykání na velmi krátkou dobu (nízká časová režie)

Spin-lock má smysl  hlavně na víceprocesorovém počítači!!!

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

Pasivní čekání

Pasivní čekáníƒ

pokud je zámek uzamčen, proces/vlákno se „uspí“, přesune do 
blokovaného stavu (blocked, sleeping, waiting)

změnu stavu (uspání/probuzení) řeší OS

OS poskytuje tzv. synchronizační primitiva = datová struktura + 
synchronizační operace (semafor, mutex, monitor)

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

Semafor

synchronizační objekt obsahující čítač a frontu čekajících 
procesů/vláken

hodnota semaforu se pohybuje od nuly do specifikované maximální
hodnoty

Poskytuje 3 atomicky prováděné operace:
ƒ

Init(): Čítač se nastaví na zadané číslo (většinou 1) a fronta se 
vyprázdní.

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