© Harry Broeders.
onderwijseenheid: | Verdiepende minor Elektrotechniek EVMIN |
onderwijsdeel: | EVMINX9: Real-Time Software (RTSOF) |
studiebelasting: | 84 SBU |
semester / kwartaal: | ECV/2 |
contacturen: | 2 uur/week college en 2 uur/week practicum |
toetsing: | practicumbeoordeling (O/V), huiswerkopgave (cijfer) en eindopdracht (cijfer) |
benodigde voorkennis: | PROS1 tot en met PROS3 en OPSYS. |
verantwoordelijke docent: | Harry Broeders |
Software waarvan het resultaat niet alleen correct maar ook exact op tijd moet zijn wordt realtime software genoemd. Vooral het begrip voorspelbaarheid is erg belangrijk bij real-time systemen. Veel embedded systemen bevatten real-time software. Het is daarom van belang dat een elektrotechnisch ingenieur in staat is om real-time software te ontwikkelen.
De beginnende elektrotechnische ingenieur die de cursus RTSOF heeft gevolgd is in staat om real-time software te ontwikkelen. Hij/zij is bekend met de specifieke kenmerken van realtime systemen en kent verschillende implementatievormen van real-time software.
Als je deze cursus met een voldoende hebt afgesloten:
Real-Time Systems and Programming Languages (Fourth Edition), Alan Burns and Andy Wellings, ISBN: 978-0-321-41745-9 (we gebruiken Hoofdstuk 4 t/m 6, 9, 11 en 12). | Getting started with QNX Neutino 2, Robert Krten, ISBN: ISBN 0-9682501-1-4 (dit boek kun je bij mij lenen). | ||
Als alternatief voor de bovenstaande 4de editie kun je ook
de (oude) 3de editie gebruiken.
Real-Time Systems and Programming Languages (Third Edition), Alan Burns and Andy Wellings, ISBN: 0201729881 (we gebruiken Hoofdstuk 7 t/m 10, 12 en 13). |
C++, Boost, QNX (of een andere POSIX compatible RTOS).
Er worden voor deze cursus drie deelresultaten vastgesteld waarbij het eerste en tweede resultaat (beoordeling practische eindopdracht en huiswerkopdacht) cijfers (1..10) zijn en het derde resultaat (practicum) een O(nvoldoende) of V(oldoende) is. Het eindresultaat wordt dan 0.2 * cijfer huiswerk + 0.8 * cijfer eindopdracht als het practicum Voldoende is en een 1 als het practicum Onvoldoende is. Het bodemcijfer is 4.5.
Je kunt naar keuze alleen werken of in tweetallen. Als je ervoor kiest om samen te werken met een partner kies dan wel een partner van ongeveer hetzelfde niveau.
Het practicum wordt beoordeeld met Onvoldoende of Voldoende. Alle opdrachten worden afzonderlijk beoordeeld met een voldoende of onvoldoende aan de hand van:
Om het practicum met een voldoende af te sluiten moeten alle opdrachten voldoende zijn.
Let op! Deze planning kan tijdens het geven van deze onderwijsmodule nog worden aangepast!
week | inhoud | sheets | boek 3de ed | boek 4de ed | leesvoer |
---|---|---|---|---|---|
1 | Introductie, concurrent programming met de nadruk op Pthreads en shared variabele based synchronisation. Het opfrissen van de bij OPSYS opgedane kennis. | RTSOF_deel1.pps. | H7 en H8. Zie hieronder voor details. | H4 en H5. Zie hieronder voor details. | RTOS versus GPOS
. Artikel uit Embedded
Computer Design van januari 2005. Verplicht
lezen! The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software Artikel uit Dr. Jobb's Journal van maart 2005. Aanbevolen literatuur. |
2 | Concurrent programming in C++ met Boost. | RTSOF_deel2.pps. | Zie hieronder voor details. | Boost
thread library documentatie Hoef je niet door
te lezen maar heb je wel nodig op het practicum. What's New in Boost Threads? Artikel uit Dr. Jobb's Journal van oktober 2008. Aanbevolen literatuur. |
|
3 | Message-based synchronisation and communication. Voorbeeld van concurrent programming in een embedded systeem. |
RTSOF_deel3.pps. | H7 en H9. Zie hieronder voor details. | H4 en H6. Zie hieronder voor details. | - |
4 | Real-time facilities. | RTSOF_deel4.pps. | H12. Zie hieronder voor details. | H9. Zie hieronder voor details. | - |
5 | Scheduling. | RTSOF_deel5.pps. | H13. Zie hieronder voor details. | H11. Zie hieronder voor details. | - |
6 + 7 | Uitloop + begeleiding bij de eindopdracht. | - | - | -- |
Week 1. Introductie, concurrent programming met de nadruk op Pthreads en shared variabele based synchronisation.
Boek 3de editie: hoofdstuk 7:
|
Boek 4de editie: hoofdstuk 4:
|
Boek 3de editie: hoofdstuk 8:
|
Boek 4de editie: hoofdstuk 5:
|
Week 2. Concurrent programming in C++ met Boost.
thread
s in Boost zonder parameteroverdracht:
main.cpp
en bijbehorende
output.txt
.
thread
s in Boost met parameteroverdracht:
main.cpp
en bijbehorende
output.txt
.
Point
die niet geschikt is om in een
multithreaded omgeving te gebruiken:
main.cpp
en bijbehorende
output.txt
.
Point
kan geschikt gemaakt worden om in een multithreaded
omgeving te gebruiken met behulp van een mutex
:
main.cpp
en bijbehorende
output.txt
.
mutex
in combinatie met een lock
te gebruiken.
Piont
die wel correct
werkt maar waarbij je (mogelijk) onnodig moet wachten:
main.cpp
.
shared_mutex
:
main.cpp
.
mutex
in combinatie met een lock
te gebruiken.
Point
kan eenvoudiger en beter (lees:
exception safe) geschikt gemaakt worden om in een multithreaded omgeving
te gebruiken met behulp van een mutex
in combinatie met een
lock_guard
: main.cpp
.
shared_mutex
in combinatie met een lock_guard
en een shared_lock
:
main.cpp
.
mutex
, een
condition_variable
, een unique_lock
en een
lock_guard
: main.cpp
en bijbehorende
output.txt
.
Week 3. Message-based synchronisation and communication + voorbeeld van concurrent programming in een embedded systeem.
Boek 3de editie: hoofdstuk 9:
|
Boek 4de editie: hoofdstuk 6:
|
Boek 3de editie: hoofdstuk 7:
|
Boek 4de editie: hoofdstuk 4:
|
Week 4. Real-time facilities.
Boek 3de editie: hoofdstuk 10:
|
Boek 4de editie: hoofdstuk 7:
|
Boek 3de editie: hoofdstuk 12:
|
Boek 4de editie: hoofdstuk 9:
|
pthread_cond_timedwait
wordt gebruikt:
teller.c
bijbehorende
makefile en
output.txt
.
mutex
, een
condition_variable
, een unique_lock
en een
lock_guard
waarbij een timed_wait
wordt
gebruikt: main.cpp
en bijbehorende
output.txt
.
Week 5. Scheduling.
Boek 3de editie: hoofdstuk 13:
|
Boek 4de editie: hoofdstuk 11:
|
Bij dit practicum wordt op een iets andere manier gewerkt dan dat je tot nu toe gewend was. De practicumopgaven worden in groepjes van 2 studenten uitgevoerd. Het is de bedoeling dat je ongeveer 4 uur/week aan dit practicum besteedt. Als je bij het werken aan het practicum tegen problemen aanloopt waardoor je niet verder kunt wacht dan niet tot het ingeroosterde uur maar stuur een mailtje naar J.Z.M.Broeders@hhs.nl.
week | opdracht | studiemateriaal | onderwerp |
---|---|---|---|
1 | opdracht 1 | Theorie van week 1. | Inleiding QNX. |
2+3 | opdracht 2 | Theorie van week 1 en 3. | Multi-threaded programmeren in POSIX. |
4 | opdracht 3 | Theorie van week 2. | Multi-threaded programmeren in C++. |
5 t/m 7 + week 8 | opdracht 4 | - | Eindopdracht. |