M2.F3: Critical Section & Mutual Exclusion Flashcards
Ge fem exempel på mekanismer som kontrollerar åtkomsten till delade resurser:
- Locks
- Mutexes
- Semaphores
- Monitors
- Condition variables
Vad finns det för mönster för att koordinera åtkomst till delade resurser?
Writer-Reader och Producer-Consumer (bounded buffer)
Vad är mutual exclusion?
När bara en tråd åt gången får vara i sin critical region vid ett särskilt tillfälle
Hur programmerar man oftast mutual exclusion?
Genom att använda locks
Vad är condition synchronization?
När man signalerar ett tillstånd mellan trådar genom en delad variabel
Hur implementerar man condition synchronization?
Genom att låta en tråd vänta på ett event som signaleras från en annan tråd.
Vad är busy waiting?
När en process väntar på ett tillstånd och upprepat testar en variabel (ett villkor) tills den blir sann
Vad är en critical section/region?
Sekvenser av instruktioner med modifierbara gemensamma resurser, som kan ge inkorrekta resultat om de körs simultant.
Vad finns ofta i en critical section?
Delade variabler
När används atomic actions och critical sections?
När man har trådar som vill komma åt delade resurser
Vad är en fine-grained atomic action?
En som kan implementeras i ett enda steg, av en instruktion
Vad är en coarse-grained atomic action?
En som kan implementeras i flera steg som en kritisk sektion
Med vad kan man genomföra en atomic operation?
Med ett lock, en mutex, en monitor eller en binär semafor.
Vad uppstår när flera trådar har en överlappad (interleaved) körning av en kritisk sektion?
En non-deterministic situation.
Vad är en deterministisk och non-deterministisk situation?
Deterministiskt är när man får samma output med samma input varje gång koden körs, non är när man inte vet vilken output man kommer få av samma input.