230 likes | 358 Views
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.
E N D
Concurrencyen 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 nietdoor 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 belovenslechts 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) probeer de variabele te verlagen (en wacht zo nodig tot dat kan) • V(var) 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 gebruikenmoet 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, simulerenen 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[] in elke toestand geldt • A<> 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 F3 heeft vork 3 Vork 3 Vork 1 F3 F2 Vork 2
Maatregelen tegen Deadlock • Preventie: verander één van de voorwaarden • Avoidance:beïnvloed dynamiek van processen • Detectie: laat de zaak op haar beloop gaanen 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/