< Terug naar vorige pagina

Project

Migratie naar agile ontwerpen van ingebedde software die zichzelf herstelt na fouten ten gevolge van externe factoren

Deze thesis handelt over het selecteren en implementeren van softwaregebaseerde technieken die ongewenste sprongen doorheen een programma kunnen detecteren. Deze ongewenste sprongen treden op nadat een of meerdere geheugenlocaties van een ingebed systeem getroffen worden door een storing van buitenaf. Zo een storing, vb. electromagnetische interferentie, kan een opgeslagen bit doen omslaan in waarde. Dit kan tot gevolg hebben dat de volgorde waarin instructies worden uitgevoerd, wijzigt. Dit fenomeen uit zich in een ongewenste sprong doorheen het uitvoerende programma en kan leiden tot een vastgelopen of gecrashet programma.

Softwaregebaseerde detectietechnieken voegen extra controlevariabelen en extra instructies die deze controlevariabelen veranderen toe aan de low-level code van een programma om ongewenste sprongen te detecteren. Omdat er meerdere mogelijkheden zijn om dit gedrag te bekomen, zijn er dan ook al vele detectietechnieken voorgesteld in de literatuur. Dit roept de vraag op: wat is nu de beste techniek? Om het antwoord op deze vraag te vinden, moesten drie problemen overkomen worden: I) de implementatie van de technieken in de low-level code van een programma vereenvoudigen; II) elke techniek objectief karakteriseren; en III) een betere techniek ontwikkelen.

Als oplossing voor het eerste probleem is er een compileruitbreiding ontworpen. Hoewel het mogelijk is om elke techiek manueel aan de low-level code van een programma toe te voegen, is dit proces tijdrovend en leidt veelal tot foutieve implementaties. De ontwikkelde compileruitbreiding lost dit probleem op, daar deze in staat is om elk van de gekozen technieken automatisch toe te voegen aan de low-level code. De gebruiker hoeft dan slechts enkele extra parameters mee te geven aan het compileerproces om een detectietechniek toe te voegen. Dit betekent dan ook dat een gebruiker geen kennis meer nodig heeft van de low-level syntax van het gekozen ingebedde systeem, noch over de interne werking van de geselecteerde techniek.

Daarnaast werden drie criteria gedefinieerd om elke techniek objectief te karakteriseren: 1) het foutdetectiepercentage, 2) de extra benodigde uitvoeringstijd en 3) het extra benodigde codegeheugen. Het foutdetectiepercentage geeft weer welk percentage van de ongewenste sprongen een techniek kan detecteren. Om dit te bepalen, gebruiken we foutinjectie experimenten. Omdat er geen foutinjectie raamwerken en geen deterministische foutinjectie processen beschikbaar waren, hebben we deze zelf ontwikkeld. Ons raamwerk beschikt op dit moment over drie deterministische foutinjectie processen en ondersteunt meerdere ingebedde systemen, zowel fysieke hardware systemen als gesimuleerde systemen. De extra uitvoeringstijd geeft een indicatie over hoeveel langer het beschermde programma nodig heeft om uit te voeren wanneer er geen fout optreedt, vergeleken met het originele, onbeschermde programma. Om dit te meten hebben we gebruik gemaakt van een hardware timer die aanwezig was op de fysieke hardware systemen. Het laatste en derde criterium, extra codegeheugen, duidt aan hoeveel meer geheugen de code van het beschermde programma nodig heeft, vergeleken met het originele, onbeschermde programma.

Gebruikmakend van de ontwikkelde hulpmiddelen en de geselecteerde criteria presenteert deze thesis een vergelijkende studie uitgevoerd op acht reeds bestaande detectietechnieken. Door deze technieken te implementeren voor gelijke gevalstudies, ze uit te voeren op gelijke hardware, ze gelijke foutinjectie experimenten te laten ondergaan, en hun extra uitvoeringstijd en extra codegeheugen op gelijke wijze op te meten, kan er een objectieve vergelijking gemaakt worden. In deze studie komt de techniek Control Flow Checking by Software Signature als de beste bestaande techniek naar boven. Dit omdat de techniek een hoog foutdetectiepercentage koppelt aan een lage extra uitvoeringstijd en laag extra codegeheugen.

Uit de studie bleek ook dat er nog ruimte was voor verbetering. Gebruikmakend van de verzamelde data, hebben we vijf vereisten opgesteld om een ideale detectietechniek te ontwikkelen. Om hun kwaliteiten aan te tonen, hebben we een techniek ontwikkeld die aan alle vijf vereisten voldoet. Deze techniek, genaamd Random Additive Control Flow Error Detection, hebben we dan onderworpen aan dezelfde foutinjectie experimenten zoals gebruikt tijdens de hiervoorgenoemde vergelijkende studie. Deze experimenten tonen inderdaad aan dat deze techniek beter presteert dan de bestaande technieken. Onze techniek haalt een hoger foutdetectiepercentage, en heeft zowel minder extra codegeheugen als minder extra uitvoeringstijd nodig dan de andere besproken technieken.

Deze thesis sluit af met enkele toepassingen van het onderzoek op industriële gevalstudies, waaronder een Industrie 4.0 machine op kleine schaal. Deze laatste experimenten tonen aan dat het onderzoek en zijn resultaten effectief gebruikt kunnen worden in een industriële omgeving.

 

 

 

 

 

 

 

Datum:1 okt 2014 →  10 jan 2020
Trefwoorden:Functional Safety, Embedded Software, Resilient Software
Disciplines:Productietechnieken, Veiligheidsingenieurswetenschappen, Computer hardware, Computertheorie, Scientific computing, Andere computer ingenieurswetenschappen, informatietechnologie en mathematische ingenieurswetenschappen, Toegepaste wiskunde, Computerarchitectuur en -netwerken, Distributed computing, Informatiewetenschappen, Informatiesystemen, Programmeertalen, Theoretische informatica, Visual computing, Andere informatie- en computerwetenschappen
Project type:PhD project