demonstrera kunskaper om de frågor och problem som uppstår när man konstruerar korrekta parallela program;
identifiera synkroniseringsproblem typiska för parallella program, såsom kapplöpningsvillkor och ömsesidig uteslutning.
F
ä
r
d
i
g
h
e
t
o
c
f
ö
m
å
a
:
tillämpa vanliga mönster, såsom låsning, semaforer och meddelandestyrd synkronisering för att lösa parallella programmeringsproblem;
kunna använda tekniker, speciellt avsedda för parallellprogrammering, i moderna parallell-programmeringsspråk;
implementera lösningar med vanliga mönster i moderna programmeringsspråk.
V
n
s
l
värdera styrkorna och möjliga svagheter inom det parallella programmeringsparadigmet;
bedöma om ett program, ett bibliotek, eller en datastruktur är säker för användning i ett parallellprogrammeringsproblem;
välja korrekta språkkonstruktioner för att implementera synkronisering och lösa kommunikationsproblem mellan olika beräkningsenheter.
Kursinnehåll
Fysisk kontra logisk parallellism
Problem som kan uppkomma vid samtidighet: kapplöpningsvillkor, uteslutning, dödläge, rättvisa, livelock
Ömsesidig uteslutning
Synkronisering med delat minne: med semaforer eller finkornig låsning
Meddelandestyrd synkronisering: med meddelandeköer
Förutsättningar
Grundläggande behörighet för grundnivå
Litteratur
Aktuell information om litteratur ges innan kursstart på kursens hemsida. Vid senaste genomförandet av kursen användes "Principles of Concurrent and Distributed Programming (Second edition)", Mordechai Ben-Ari, Addison-Wesley, 2006. ISBN 0-321-31283-X.