Proces ellende

advertisement
CIMSOLUTIONS
Automation for Industry & Business
SIG Embedded
“Proces Ellende”
André Vink
CIMSOLUTIONS B.V.
CDP real-time embedded
28 september 2005
CIMSOLUTIONS
Automation for Industry & Business
STARVATION
CIMSOLUTIONS B.V.
Wat 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
•
•
•
CIMSOLUTIONS B.V.
Starvation: 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
•
CIMSOLUTIONS B.V.
Starvation: 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
CIMSOLUTIONS B.V.
Starvation: 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
CIMSOLUTIONS B.V.
Starvation: 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
CIMSOLUTIONS B.V.
CIMSOLUTIONS
Automation for Industry & Business
DEADLOCK
CIMSOLUTIONS B.V.
Wat 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.
CIMSOLUTIONS B.V.
Deadlock: 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
•
•
CIMSOLUTIONS B.V.
Deadlock: Situatie

Wanneer de drie ingrediënten aanwezig zijn, zal een
deadlock optreden in deze (of een vergelijkbare) situatie:
CIMSOLUTIONS B.V.
Deadlock: 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
CIMSOLUTIONS B.V.
CIMSOLUTIONS
Automation for Industry & Business
PRIORITY
INVERSION
CIMSOLUTIONS B.V.
Wat 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 de
lagere prioriteit taak een gedeelde
resource gebruikt die de hogere
prioriteit taak nodig heeft
CIMSOLUTIONS B.V.
Een 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
CIMSOLUTIONS B.V.
Een voorbeeld met drie taken
Task H
onderbreekt
Task L
task H moet wachten
op gedeelde resource
task L is klaar met gedeelde
resource en task H kan verder
Taks M onderbreekt Task L
Task L “lockt” gedeelde resource
CIMSOLUTIONS B.V.
Oplossing 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
CIMSOLUTIONS B.V.
Een voorbeeld met priority ceilings
Task H kan Task L nu
niet onderbreken
task L is klaar met gedeelde
resource en task H kan verder
Taks M kan Task L nu niet onderbreken
Task L “lockt” gedeelde resource en prioriteit
wordt verhoogd tot boven prioriteit van Task H
CIMSOLUTIONS B.V.
Prioriteit Task L
zakt terug naar
oorspronkelijke
waarde
Oplossing 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
CIMSOLUTIONS B.V.
Een voorbeeld met priority inheritance
Task H moet wachten op gedeelde resource
Task H kan Task L nu Hierdoor erft Task L de prioriteit van Task H
wel onderbreken
Task L is klaar met gedeelde
resource en Task H kan verder
Task M kan Task L nu niet onderbreken
Task L “lockt” gedeelde resource en prioriteit
wordt verhoogd tot boven prioriteit van Task H
CIMSOLUTIONS B.V.
Prioriteit Task L
zakt terug naar
oorspronkelijke
waarde
Oplossing 3: voorkom priority inversion

Voorkomen is vaak makkelijker dan genezen

Voorkom dat taken met verschillende prioriteiten resources delen

Manage gedeelde resources
CIMSOLUTIONS B.V.
CIMSOLUTIONS
Automation for Industry & Business
SIG Embedded
Einde
“Proces Ellende”
André Vink
CIMSOLUTIONS B.V.
CDP real-time embedded
28 september 2005
Download