poster

advertisement
Nederlandse Prijs voor ICT-onderzoek 2013
Waarom willen we bugs vinden?
Parallel rekenen
Het woord ‘bug’ (letterlijk: insect) als benaming voor een
machinefout werd al gebruikt voordat computers be­
stonden. Maar de term werd pas echt bekend in 1947 bij
het werk aan een voorloper van onze moderne compu­
ters. Computer-pionier Grace Hopper kwam tijdens een
zoektocht naar de oorzaak van een programmafout een
mot ­tegen die zich in een elektromagnetische schake­
laar had genesteld. Daardoor werkte de computer niet
goed. Ze plakte de mot in haar logboek en schreef daarbij
de ­onsterfelijke woorden: ‘First actual case of bug being
found.’ (‘Eerste echte bug gevonden.’)
Een computer draait op een processor:
een chip met een soort rekenmachine
die alle computerprogramma’s aanstuurt.
Tot enkele jaren geleden hadden com­
puters een single-core processor, een
processor met één zo’n reken­machine.
Fabrikanten ontwikkelden steeds
snellere processoren, totdat allerlei
fysieke beperkingen ervoor zorgden dat
ze niet meer sneller konden worden.
Toch zijn de meeste bugs niet de schuld van insecten of andere verstoringen in de fysieke
apparatuur. De meeste computerprogramma’s bestaan uit gigantische hoeveelheden
code (computerinstructies), soms wel miljoenen regels. Bovendien worden zulke grote
programma’s meestal gemaakt door meerdere programmeurs. Daardoor gebeurt het
soms dat programmeurs dingen over het hoofd zien, die ervoor zorgen dat programma’s
niet goed werken. Zo’n softwarefout heet een bug. Door zo’n bug kan het gebeuren dat
een computer vastloopt, dat een programma opeens stopt met werken of dat er
verkeerde dingen worden getoond op het scherm.
Maar er kunnen ook veel ergere dingen gebeuren. In de jaren 80 van de vorige eeuw
zijn er mensen overleden door een softwarefout in Therac-25, een machine voor radiotherapie. In dit apparaat werden patiënten bestraald, bijvoorbeeld voor kanker. Door een
softwarefout gebeurde het een paar keer dat patiënten een veel te hoge dosis straling
toegediend kregen: ongeveer 100 keer zoveel als de bedoeling was. Drie patiënten zijn
overleden aan deze overdosis straling. Na een onderzoek bleek dat een computerfout in
de software ervoor zorgde dat de machine soms verkeerd reageerde als de instructies te
snel ingetypt werden. In dat geval voerde de computer twee processen in de verkeerde
volgorde uit, waardoor de machine een verkeerde dosis straling toediende.
Door meerdere processen tegelijk te draaien op die
verschillende rekenmachines, kun je bijvoorbeeld meerdere
programma’s tegelijk draaien: terwijl je een spelletje speelt
op je smartphone kan er ondertussen een telefoontje binnenkomen. Maar ook één enkel programma kan tegelijkertijd
gebruik maken van die meerdere rekenmachines. Dat heet
een multi-threaded programma.
Marieke Huisman
Dr. Marieke Huisman (1973) studeerde
informatica aan de Universiteit Utrecht en
promoveerde in 2001 aan het Computing
Science Institute van de Universiteit
Nijmegen. Na haar promotie werkte ze
als onderzoeker bij INRIA in Frankrijk.
In 2008 keerde ze terug naar Nederland
om te gaan werken bij de Universiteit
Twente, eerst als universitair docent en
sinds 2011 als universitair hoofddocent
in de vakgroep Formal Methods en Tools.
Cell & Data Memory
Huisman werkt aan het vergroten van betrouwbaarheid en
correctheid van parallelle software. Hiervoor beschrijft ze het
gewenste gedrag van een programma als een wiskundige
formule en vervolgens gebruikt ze wiskunderegels om af te
leiden of het programma inderdaad dit gedrag heeft. Hiervoor
wordt een speciale tak van wiskunde gebruikt, namelijk de
logica. In de logica gaat het niet om het berekenen van
getallen, maar of eigenschappen waar of niet waar zijn.
Huisman heeft diverse prestigieuze beurzen binnen­gehaald,
zoals een ERC Starting Grant voor haar project ‘VerCors:
Verification of Concurrent Data Structures’ en een NWO Vrije
Competitie-beurs voor haar onderzoeksproject ‘SlaLoM:
Security by Logic for Multithreaded applications’.
Naast haar onderzoek zet ze zich ook in om de interesse voor
informatica en techniek te vergroten bij jongeren en met name
bij meisjes. Dat doet ze bijvoorbeeld door mee te doen aan
high teas met informaticastudentes en speeddates met
meisjes op middelbare scholen. Zo presenteert ze zichzelf als
rolmodel voor meisjes met interesse in informatica. Marieke
vertelt waarom dat belangrijk is: ‘Informatica is veel meer dan
hacken en in je eentje achter een computer zitten. Dat is echt
een stereotiep en onvolledig beeld. Voor mij is informatica het
oplossen van wiskundige puzzels. Daarnaast gaat informatica
ook over begrijpen wat voor behoeften mensen hebben.
Je moet met de gebruikers van het systeem communiceren
en dat vervolgens in een concreet ontwerp vertalen.’
Marieke vertelt in een filmpje voor de EU-campagne
‘Wetenschap: echt iets voor meisjes!’ waarom informatica zo leuk is en hoe haar leven als wetenschapper
eruit ziet.
IPN: ICT-onderzoek Platform Nederland
IPN is een landelijk platform voor het Nederlands ICT-onderzoeksveld.
ICT-onderzoek heeft een enorme impact op ons dagelijks leven. Vaak
zijn we ons er niet eens van bewust dat we tientallen keren op een
dag gebruikmaken van de resultaten van ICT-onderzoek. IPN geeft de
ICT in Nederland als wetenschappelijke discipline een sterkere positie
en maakt haar zichtbaarder. Door de Nederlandse ICT-inspanningen te
coördineren fungeert IPN als hét aanspreekpunt richting
Door meerdere rekenmachines naast elkaar op één chip te
zetten was het toch mogelijk om computers nóg sneller te
maken. Dat heet een multi-core processor. Sinds een paar
jaar hebben alle nieuwe computers en de meeste smartphones een chip met twee of zelfs vier rekenmachines
naast elkaar.
Core 1
Core 2
Core 3
Task Manager
Logboek van Grace Hopper. Met dank aan het Naval Surface Warfare Center,
Dahlgren, VA., 1988. [Public domain], via Wikimedia Commons
Controleren van
multi threaded programma s
Omdat computerprogramma’s vaak
erg groot zijn en ingewikkeld in elkaar
zitten, is het best lastig om als programmeur goed in de gaten te houden of
alles klopt en of er geen onderdelen
elkaar in de weg zitten. Dat geldt in
het bijzonder voor multi-threaded
programma’s.
De verschillende processen die tegelijk lopen, kunnen
elkaar verstoren. Als twee processen tegelijk infor­matie
in het gedeelde geheugen van de computer willen lezen
of schrijven, kunnen er onvoorspelbare dingen gebeuren.
beleidsmakers, politiek, bedrijfsleven en andere maatschappelijke
groeperingen. Onderzoekers in de informatica en nauw verwante
disciplines als elektrotechniek, communicatie en signaalverwerking
werken in toenemende mate samen. Het IPN stimuleert deze
verandering richting één ICT-onderzoeksveld en draagt daar
actief aan bij.
Meer informatie: www.ictonderzoek.net
Het ene proces kan bijvoorbeeld de resultaten van het
andere proces per ongeluk overschrijven. Dan kan het
gebeuren dat computers vastlopen of verkeerde resultaten
geven. Je kunt je zo’n programma voorstellen als het
geheel van alle stoplichten op een kruispunt. Die zijn ook
in tijd en volgorde van elkaar afhankelijk: het is niet de
bedoeling dat de verkeerde stoplichten tegelijk op groen
springen. Als zo’n probleem optreedt, kan het bijvoorbeeld
gebeuren dat je computer vastloopt: een crash (letterlijk:
botsing) is het gevolg.
De programmeur moet er dus voor zorgen dat er niet
meerdere dingen tegelijk gebeuren op dezelfde plek in het
geheugen van de computer en dat processen in de goede
volgorde worden uitgevoerd. Hoe groter en ingewikkelder
een computer­programma, hoe moeilijker het is om al die
NWO EXACTE WETENSCHAPPEN
De Nederlandse Organisatie voor Wetenschappelijk Onderzoek
(NWO) is met een budget van ruim 500 miljoen euro per jaar een van
de grootste wetenschapsfinanciers in Nederland. NWO stimuleert
kwaliteit en vernieuwing in de wetenschap. Binnen NWO richt het
cluster Chemische & Exacte Wetenschappen zich op de disciplines
astronomie, chemie, informatica en wiskunde. In de discipline
processen tegelijk in de gaten te houden. Het zou handig
zijn om aan één onderdeel van een computerprogramma te
kunnen werken zonder je zorgen te hoeven maken over wat
de rest van het programma doet en of dat wel goed samen
gaat.
Het onderzoek van Marieke Huisman richt zich op het
ontwikkelen van software die voor een willekeurig multithreaded programma kan controleren of de verschillende
onderdelen van het computer­programma wel goed
samenwerken. Als dat niet het geval is, dan krijgt de
programmeur informatie over waar de verschillende
onderdelen elkaar in de weg zitten. Daar wordt het leven
van een programmeur makkelijker van, en als computergebruiker betekent dat dat je snellere computers hebt die
minder vaak vastlopen.
informatica wordt excellent onderzoek in de gehele keten van
nieuwsgierigheidgedreven tot toepassingsgericht gestimuleerd en
geïnitieerd. Naast de financiering van onderzoekprojecten is nationale
strategieontwikkeling een belangrijke activiteit en wordt er gewerkt
aan het ontwikkelen en uitvoeren van thematische publiek-private
subsidieprogramma’s.
Meer informatie: www.nwo.nl/ew
Een multi-core processor. De verschillende rekenmachines (Core 1,
Core 2 en Core 3) voeren tegelijkertijd berekeningen uit en kunnen dus
tegelijk lezen en schrijven in het geheugen van de computer (Cell & Data
Memory). De Task Manager regelt als een soort verkeersleider wat er op
het scherm van de computer wordt getoond.
Tegenwoordig draaien de meeste computers en smartphones
parallelle software: computerprograma’s waarin verschillende
processen tegelijk lopen. Omdat verschillende berekeningen
tegelijkertijd worden uitgevoerd, wordt de software sneller.
Dat principe wordt bijvoorbeeld gebruikt bij het maken van
een animatiefilm. Verschillende rekenmachines zijn tegelijkertijd bezig met het maken en inkleuren van verschillende
beeldjes. Als de beeldjes klaar zijn, worden ze achter elkaar
gezet om er een film van te maken. Dat is sneller dan als één
rekenmachine alle beeldjes achter elkaar moet maken.
Een beeldje uit een animatiefilm wordt stap voor stap opgebouwd
door een 3D-model schaduw te geven en in te kleuren.
Auteursrecht:
NWO / Exacte Wetenschappen
Ontwerp:
Smidswater
Download