Mutex: processor / hardware

advertisement
Concurrency
en Deadlock
ICT Infrastructuren
David N. Jansen
Stallings hoofdstukken 5 en 6
Concurrency

Meerdere processen worden
(bijna) te gelijker tijd uitgevoerd

voorbeelden



meerdere programma’s
één programma met threads
binnen het besturingssysteem
Interleaving en interferentie

sommige proces-delen zijn “kritiek”



meerdere processen tegelijk in kritieke secties 
interferentie is mogelijk
interferentie = ongewenst gedrag als gevolg van
(een bepaalde) interleaving
voorbeeld

i := 2 en daarna parallel (i := i + 1) || (i := 2 * i)
Mutual Exclusion

de standaardoplossing

idee: een bepaalde bron kan niet
door iedereen tegelijk gebruikt worden
iemand moet ervoor zorgen dat beperkingen
in acht genomen worden


wie?
Taken van besturingssysteem

processen bewaken
bronnen verdelen en beschermen
(processor, geheugen, in-/uitvoer, bestanden)

doel: geen interferentie

Eisen aan mutex-voorziening






slechts één proces tegelijk in kritieke sectie
als een proces in de niet-kritieke sectie stopt,
heeft dat geen gevolg voor de andere
een proces dat toegang vraagt krijgt die
als geen proces toegang heeft,
krijgt de aanvrager onmiddellijk toegang
geen aannames over snelheid van processen
processen moeten beloven
slechts eindig lang in kritieke sectie te blijven
(bron: Stallings, p. 211)
Mutex in de praktijk



Processor / hardware
Semaforen
Monitoren
Mutex: processor / hardware

interrupts tijdelijk verbieden



werkt alleen voor korte kritieke secties
werkt niet bij multicore/multiprocessor-systemen
speciale instructies, b.v. in SPARC




ldstub: laad een byte en zet het op 255
swap: verwissel geheugenwoord met register
deze instructies kunnen niet onderbroken worden,
niet eens in multiprocessor-systemen
eigenlijk te primitief, nog geen volwaardig mutex
Mutex: semaforen

speciale variabele, altijd ≥ 0

P(var)

V(var)
probeer de variabele te verlagen
(en wacht zo nodig tot dat kan)
verhoog de variabele
Stallings: P = semWait, V = semSignal,
variabele kan wel < 0 worden, maar processen moeten dan wachten
Mutex: monitoren

speciale subroutine met exclusieve rechten
wie kritieke bronnen wil gebruiken
moet dat via een monitor doen
monitor zorgt voor mutex

voordeel over semafoor:



gebruiker van kritieke bron vergeet nooit V(var)
Bijwerkingen

Deadlock: dodelijke omarming

Livelock:systeem rommelt,
maar doet niets productiefs

Starvation: één proces wacht oneindig lang
Vijf filosofen

klassiek probleem om deadlock te illustreren

5 filosofen denken en eten
eten met twee vorken
5 vorken


Intermezzo: Uppaal




Uppaal = een modelchecker
modellen van gedrag tekenen, simuleren
en eigenschappen onderzoeken
tool voor de huiswerkopgave 2
http://www.uppaal.com/
Meer over Uppaal...

voorbeeldmodel, aansluiten bij PA




automaten en hun samenhang met PA-termen, in
voorbeelden
definitie van automaat
uitbreidingen van Uppaal

alleen synchronisatie-acties (“channels”) hebben
een naam + ! of ?

klokken om de tijd te meten, variabelen
voorbeeldmodel van filosoof en vork
Demo van Uppaal...


de modellen van filosoof en vork in Uppaal
laten zien dat er deadlock kan ontstaan
Meer over Uppaal-formules

formules om eisen te beschrijven:




A[] 
A<> 
 --> 
in elke toestand geldt 
ooit zal  gelden (wat je ook doet)
telkens als je  bereikt,
zul je daarna ook  bereiken
mogelijkheden voor  en :




namen van toestanden
formules over variabelen of klokken
deadlock
operatoren als in C
Deadlock in detail

voorwaarden voor deadlock




mutual exclusion
bronnen vasthouden en wachten
geen preëmptie (d.w.z. OS kan niet dwingen tot
tijdelijk afstaan)
cirkel van wachtende processen
Cirkel van wachtende
processen

graaf: pijlen tussen processen en bronnen
F0
Vork 0
Vork 4
F4
F1
F4 wil vork 3
Vork 3
F3 heeft vork 3
F3
Vork 2
Vork 1
F2
Maatregelen tegen Deadlock

Preventie: verander één van de voorwaarden

Avoidance:
beïnvloed dynamiek van processen

Detectie: laat de zaak op haar beloop gaan
en grijp achteraf in
Preventie van Deadlocks

één van de vier voorwaarden veranderen





geen mutual exclusion aanbieden
geen bronnen sparen, maar alles tegelijk
aanvragen
preëmptie toestaan
... of ...
bronnen in een vaste volgorde aanvragen
(voor elk proces dezelfde)
Vermijden van Deadlocks


processen moeten van te voren aangeven
hoeveel bronnen ze maximaal nodig hebben
het OS laat een proces alleen toe als er
voldoende bronnen over zijn



testen bij processtart
of: testen bij elke aanvraag van extra bronnen
Bankiers-algoritme: kan ik dit proces nog krediet
verlenen zonder kans te lopen failliet te gaan?
(nalezen in Stallings!)
Detecteren van deadlocks



OS doet niets om deadlocks te vermijden
OS test regelmatig of deadlock is ontstaan
zo ja: processen afbreken
Aanbeveling

Lees het nog eens na
Kijk alvast eens naar Uppaal
Gratis downloaden en installeren
Windows, Linux of Mac

http://www.uppaal.com/



Download