OS Hoofdstuk 8 Flashcards
Wat is een livelock?
Bijna hetzelfde als een deadlock alleen bij een livelock probeert de thread steeds een action te doen die failed.
Wanneer is er een deadlock in een resource allocation graph?
Wanneer er een cycle in zit.
Als er maar 1 instance is per resource type: altijd deadlock.
Als er meerdere instances zijn per resource is er een kans op een deadlock.
Bij welke 4 condities is er kans op een deadlock?
1: Mutual exclusion.
2: Hold and wait.
3: Circular wait.
4: No pre-emption of resources.
Hoe kan je een deadlock detecteren?
Door een Resource-Allocation Graph te maken. Wanneer er een cycle in de graph zit, is er kans op een deadlock.
Welke 4 entities komen voor in een Resource-Allocation Graph?
1: Process
2: Resoucre type with N instances
3: Request of instance (pijl van proces naar resource)
4: Proces is holding a resource (pijl van resource naar proces)
Wat voor een graph krijg je als elke resource type, 1 instance heeft?
een wait-for graph, processen moeten namelijk op elkaar wachten omdat van elke resource maar 1 is.
In een wait-for graph, gaan er alleen pijlen van en naar processen.
Wanneer is er een deadlock in een wait-for graph?
Wanneer er een cycle in zit.
Welke 3 strategien kan je ondergaan om een deadlock te voorkomen?
1: Deadlock prevention, zorgen dat er nooit een deadlock optreden.
2: Recover from deadlock, requires algoritm to detect deadlock.
3: Ignore deadlocks, pretend they don’t exist.
Wat doet een operating system bij deadlock avoidance?
De OS krijgt extra informatie over de resources die een thread krijgt. Met deze kennis kijkt de OS per request of de thread moet waiten of niet.
Wat gebeurt er met een systeem wanneer er een deadlock gaande is?
De performance verminderd doordat er threads bezig zijn terwijl ze niks nuttig doen.
Wat moet er gebeuren als een OS niks doet tegen deadlocks?
Deadlocks moeten in de applicatie zelf worden afgehandeld. Dit systeem zit in de meeste operating systems zoals unix en windows (+ jvm)
Wat betekent het dat je het gebruik van hold and wait moet vermijden?
Wanneer een proces een resource request, moet hij geen andere resources holden.
Wanneer is de state van een system safe?
Als een systeem resources kan allocaten aan alle threads en geen deadlock krijgt.
Wat wordt bedoeld met impose an ordering of resources?
Altijd in dezelfde volgorde resources aanvragen zodat er geen cycle ontstaat.
lijkt op no-hold-and-wait.
Het probleem hierbij is dat je moet voorspellen welke resources het proces nodig gaat hebben.
Deze methode wordt gebruikt door mysql storage engine.
Noem een voorbeeld van allow pre-emption of resources
Als een proces blocked/waiting is, worden alle resources die hij gebruikt, gereleased.
wait / notify is hier een voorbeeld van