Title: CIMSOLUTIONS
1CIMSOLUTIONS
Automation for Industry Business
SIG Embedded Proces Ellende
André Vink CDP real-time embedded 28
september 2005
2CIMSOLUTIONS
Automation for Industry Business
STARVATION
3Wat is starvation?
- Starvation is het verschijnsel dat een thread of
proces geen tijd krijgt om uitgevoerd te worden - Mogelijke oorzaken
- Scheduling algoritme is slecht (geconfigureerd)
- Geen toegang tot bepaalde resources
- Denial Of Service aanval
4Starvation scheduling
- Het algoritme van een scheduler kan zwakke punten
bevatten. - Waarschijnlijker is het dat prioriteiten of de
configuratie verkeerd zijn ingesteld - Vuistregel geef taken die veel processortijd
nodig hebben een lage prioriteit en taken die
weinig tijd nodig hebben een hoge
5Starvation scheduling
- Optie 1 Taak met veel processortijd heeft hoge
prioriteit
- Optie 2 Taak met weinig processortijd heeft hoge
prioriteit
Taak met weinig processortijd Taak met veel
processortijd
6Starvation toegang tot resources
- Toegang tot een resource kan geblokkeerd worden
wanneer de resource veel/vaak gebruikt wordt door
processen met hogere prioriteit - Geen universele oplossing de ontwerper of
programmeur moet een dergelijke situatie proberen
te voorkomen
7Starvation Denial Of Service
- Denial Of Service de processor is zo druk bezig
met het afhandelen van berichten of interrupts
dat andere taken niet aan bod komen. - Voorbeeld 1 aanval op een webserver met
honderden connecties per minuut - Voorbeeld 2 een haperende digitale input zorgt
voor een continue stroom interrupts op een
systeem - Oplossing inbouwen van een detectie met
bijbehorende maatregelen
8CIMSOLUTIONS
Automation for Industry Business
DEADLOCK
9Wat is deadlock?
- Deadlock is een status waarin de processen van
een systeem het niet eens kunnen worden over hoe
ze verder moeten, waardoor (een gedeelte van) het
systeem stil valt. - Meestal gaat het om het bezit van resources.
10Deadlock ingrediënten
- Er zijn drie ingrediënten nodig voor een deadlock
situatie - Mutual exclusion op elk moment kan er maar één
proces gebruik maken van een bepaalde resource - Vasthouden en wachten een proces kan/zal
resources vasthouden tijdens het wachten op
andere resources - Geen preemption een resource zal alleen
vrijgegeven worden als een proces dat vrijwillig
doet. Het vrijgeven forceren is niet mogelijk
11Deadlock Situatie
- Wanneer de drie ingrediënten aanwezig zijn, zal
een deadlock optreden in deze (of een
vergelijkbare) situatie
12Deadlock voorkomen
- Deadlock kan voorkomen worden door
- Minstens één van de ingrediënten te verwijderen
- Zorgen dat de geschetste situatie nooit kan
voorkomen - Nooit toegang tot een resource verlenen als dit
tot een deadlock kan leiden - Detectie regelmatig op deadlocks controleren en
gepaste maatregelen nemen indien gevonden - Het succes van de laatste drie opties hangt af
van of er aan alle situaties is gedacht
13CIMSOLUTIONS
Automation for Industry Business
PRIORITY INVERSION
14Wat is priority inversion?
- Priority inversion is het verschijnsel dat een
taak met hogere prioriteit geblokkeerd wordt,
door een taak met een lagere prioriteit - Dit kan gebeuren wanneer delagere prioriteit
taak een gedeelderesource gebruikt die de
hogereprioriteit taak nodig heeft
15Een voorbeeld met twee taken
Task H moet wachten op gedeelde resource
Task L is klaar met gedeelde resource en Task H
kan eindelijk verder
Task H onderbreekt Task L
Task L lockt gedeelde resource
16Een voorbeeld met drie taken
task H moet wachten op gedeelde resource
Task H onderbreekt Task L
task L is klaar met gedeelde resource en task H
kan verder
Taks M onderbreekt Task L
Task L lockt gedeelde resource
17Oplossing 1 priority ceilings
- elke gedeelde resource krijgt een priority
ceiling - als een taak een gedeelde resource gebruikt, dan
wordt de prioriteit van de taak tijdelijk
verhoogd tot de priority ceiling van de resource - als de taak klaar is met de gedeelde resource,
dan krijgt de taak weer zijn oorspronkelijke
prioriteit terug - priority ceilings moeten hoger zijn dan de
hoogste prioriteit van de taken die de resource
kunnen gebruiken - lost alleen unbounded priority inversion
probleem op - bounded priority inversion probleem blijft
bestaan
18Een voorbeeld met priority ceilings
task L is klaar met gedeelde resource en task H
kan verder
Task H kan Task L nu niet onderbreken
Prioriteit Task L zakt terug naar oorspronkelijke
waarde
Taks M kan Task L nu niet onderbreken
Task L lockt gedeelde resource en prioriteit
wordt verhoogd tot boven prioriteit van Task H
19Oplossing 2 priority inheritance
- Is eigenlijk een variant op priority ceilings
- Lage prioriteit taak gebruikt gedeelde resource
- Als hogere prioriteit taak dezelfde gedeelde
resource wil gebruiken, dan erft de lage
prioriteit taak de prioriteit van de hogere
prioriteit taak - Lost alleen unbounded priority inversion
probleem op - Bounded priority inversion probleem blijft
bestaan
20Een voorbeeld met priority inheritance
Task H moet wachten op gedeelde resource Hierdoor
erft Task L de prioriteit van Task H
Task H kan Task L nu wel onderbreken
Task L is klaar met gedeelde resource en Task H
kan verder
Prioriteit Task L zakt terug naar oorspronkelijke
waarde
Task M kan Task L nu niet onderbreken
Task L lockt gedeelde resource en prioriteit
wordt verhoogd tot boven prioriteit van Task H
21Oplossing 3 voorkom priority inversion
- Voorkomen is vaak makkelijker dan genezen
- Voorkom dat taken met verschillende prioriteiten
resources delen - Manage gedeelde resources
22CIMSOLUTIONS
Automation for Industry Business
SIG Embedded Einde Proces Ellende
André Vink CDP real-time embedded 28
september 2005