7.4 - Deadlock Prevention (p.324)
- Zorgen dat ten minste een van de 4 condities niet voor kan komen (zie vorige paragraaf).
1. Mutual Exclusion
- Kan niet worden voorkomen/genegeerd.
- Sommige resources hoeven niet te wachten voor een gedeelde resource (zoals read-only files).
- Maar wel voor een niet deelbare resource.
2. Hold and wait
- Process mag geen andere resources vasthouden, wanneer het vraagt naar anderen.
- Voorbeeld: Afdrukken van een bestand vanaf een DVD.
- Mogeljke protocollen:
- Zorgen dat een process all zijn resources krijgt toegewezen voordat het gaat uitvoeren.
- Ex. Process heeft zowel de DVD Drive, HDD en Printer nodig om uit te kunnen voeren.
- Zorgen dat een process per gedeelte van zijn process de nodige resources krijgt toegewezen.
- Ex. DVD en HDD eerst. Daarna teruggeven van resources en daarna de HDD en Printer opnieuw vragen om het af te kunnen maken.
- Zorgen dat een process all zijn resources krijgt toegewezen voordat het gaat uitvoeren.
- Nadelen:
- Niet zeker dat tijdens de 2e keer wachten de data ook op de opslag bijft staan (voornamelijk wanneer het om cache gaat).
- Laag gebruik van resources. Ex. printer wordt niet gebruikt tijdens het gehele eerste gedeelte van het process.
- Starvation is mogelijk, wanneer een populaire resource moet worden opgevraagd. Deze zal altijd in gebruik zijn.
3. No preemption
- Wanneer een process al resources bezit en nog een nodig heeft maar deze niet kan krijgen, worden alle resources teruggegeven.
- Het process wordt alleen opnieuw gestart wanneer alle benodigde resources beschikbaar zijn.
- Of wanneer een process resources nodig heeft checken we eerst of deze beschikbaar zijn.
- Als ze niet beschikbaar zijn, checken we of de resources in gebruik zijn genomen door andere wachtende processen.
- Als dit zo is worden ze weggehaald van het wachtende process, en gegeven aan het aanvragende process.
- Dit protocol wordt vaak gebruikt bij resources van welke de status makkelijk kan worden opgeslagen en opnieuw geladen.
- Zoals CPU registers en geheugenruimte, het kan niet worden gebruikt bij appraraten als printers/tape drives.
4. Circular wait
NB. Deze is lastig, ik raad je aan dit stuk nog even door te lezen in het boek. De strekking staat hieronder, maar ik ben niet helemaal zeker dat ik het goed heb verwoord.
- Het rangschikken van resources en processen laten verplichten dat ze de resources opvragen van laag naar hoog (of andersom)
- Lastig want je moet alle resources relatief van elkaar rangschikken.
- Als altijd de Tape drive voor de printer wordt gebruikt moet de tape drive een lagere rangschikking hebben dan de printer.
- Want als de printer al is toegekend, mag volgens de regel de tape driver niet meer worden opgevraagd.
- Rangschikking op zichzelf vermijd deadlocks niet, applicatie ontwikkelaars moeten programas schrijven die deze regels volgen.