© Harry Broeders.
onderwijseenheid: | RTSYST: Real-time systemen |
studiebelasting: | 3 CP = 84 SBU |
semester / kwartaal: | ECV/2 |
contacturen: | 2 uur/week college, 1 uur/week begeleid practicum en 1 uur/week onbegeleid practicum. |
toetsing: | practicumbeoordeling (O/V), schriftelijke toets (cijfer). |
benodigde voorkennis: | GESPRG, MICPRG en OGOPRG |
verantwoordelijke docent: | Harry Broeders |
Software waarvan het resultaat niet alleen correct maar ook exact op tijd moet zijn wordt real-time software genoemd. Vooral het begrip voorspelbaarheid is erg belangrijk bij real-time systemen. Om het ontwikkelen van real-time software eenvoudiger te maken wordt vaak gebruik gemaakt van een Real-Time Operating System (RTOS). 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 m.b.v. een RTOS.
De beginnende elektrotechnische ingenieur die het vak RTSYST heeft gevolgd is in staat om real-time software te ontwikkelen. Hij/zij is bekend met de specifieke kenmerken van real-time systemen en kent verschillende implementatievormen van real-time software.
Als je dit vak 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 1, 4 t/m 6, 9 en 11). |
Getting started with QNX Neutino 2, Robert Krten, ISBN: ISBN 0-9682501-1-4 (dit boek kun je bij mij lenen). |
C++11, QNX (of een andere POSIX compatible RTOS).
Er worden voor deze cursus twee resultaten vastgesteld die beide apart in OSIRIS worden gezet: RTSYST-co1|real-time systemen (TOETS01) en RTSYST-pr1|real-time systemen (TOETS02). Voor beide toetsen moet je inschrijven! RTSYST-co1 is een schriftelijke toets in week 8 met een herkansing in week 10, het resultaat is een cijfer (1..10). Bij het tentamen mag je boeken, dictaten, oude toetsen en aantekeningen gebruiken. Het tentamen bestaat uit open vragen. RTSYST-pr1 is een practicum beoordeling, het resultaat is een O(nvoldoende) of een V(oldoende). Het practicum moet afgerond zijn in week 7. In week 10 kan het practicum herkanst worden.
Op het practicum werk je in tweetallen. Kies 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 zal tijdens het geven van deze onderwijsmodule nog worden aangepast!
week | inhoud | sheets | boek | leesvoer |
---|---|---|---|---|
1 | Introductie, concurrent programming met de nadruk op Pthreads. | RTSYST_week1.ppsx. | H1 en H4. Zie hieronder voor details. | Verplicht lezen: RTOS versus GPOS . Artikel uit Embedded Computer Design van januari 2005. Aanbevolen literatuur: The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software Artikel uit Dr. Jobb's Journal van maart 2005. TLAs: QNX, RIM, ARM, CES, RPM, and MPH An RTOS for the Automotively Inclined Artikel over populariteit en toepassingen QNX uit Electronic Engineering Journal van september 2012. |
2 | Shared variabele-based synchronisation and communication. | RTSYST_week2.ppsx. | H5. Zie hieronder voor details. | - |
3 | Concurrent programming in C++11. | RTSYST_week3.ppsx. | - | Aanbevolen literatuur: Blog over C++11 threads . |
4 | Message-based synchronisation and communication. Voorbeeld van concurrent programming in een embedded systeem. |
RTSYST_week4.ppsx. | H4 en H6. Zie hieronder voor details. | - |
5 | Real-time facilities. | RTSYST_week5.ppsx. | klein deel H7,H9 en klein deel H13. Zie hieronder voor details. | - |
6 en 7 | Scheduling. | RTSYST_week6_en_7.ppsx. | H11. Zie hieronder voor details. | - |
Week 1. Introductie, concurrent programming met de nadruk op Pthreads.
void*
void_pointer.c . Week 2. Shared variabele-based synchronisation and communication.
Week 3.Concurrent programming in C++11.
-std=c++11
):
thread
s in C++11 zonder
parameteroverdracht: main.cpp
en bijbehorende output.txt . thread
s in C++11 met parameteroverdracht:
main.cpp en bijbehorende output.txt . Point
die niet geschikt is om in
een multithreaded omgeving te gebruiken: main.cpp . Point
kan geschikt gemaakt worden om in een
multithreaded omgeving te gebruiken met behulp van een
mutex
: main.cpp
.
mutex
in combinatie met een lock
te
gebruiken. Piont
die wel
correct werkt maar waarbij je (mogelijk) onnodig moet wachten: main.cpp . boost::shared_mutex
(standaard C++11
kent geen shared_mutex
) of
moet je zelf met behulp van een monitor een shared_mutex
implementeren (Zie onderstaande opgave!). 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 . mutex
, een
condition_variable
, een unique_lock
en een
lock_guard
: main.cpp en bijbehorende output.txt . async
:
main.cpp . auto
: main.cpp . async
: main.cpp . async
en StopWatch
zodat je de snelheidswinst kunt meten (het programma werkt met gebruik
van async
2x zo snel): main.cpp . mutex
: main.cpp . mutex
en een lock_guard
: main.cpp . atomic
: main.cpp . shared_mutex
class met de in C++11
beschikbare mutex
en condition_variable
.
barrier
class met de in C++11
beschikbare mutex
en condition_variable
.
Week 4.Message-based synchronisation and communication + voorbeeld van concurrent programming in een embedded systeem.
Week 5.Real-time facilities.
clock_xxx()
en time.h
. Zie ook: http://bd.eduweb.hhs.nl/micprg/time.htm
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 wait_for
wordt
gebruikt: main.cpp en bijbehorende output.txt . Week 6 en 7.Scheduling.
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 | opdracht 2 a t/m d | Theorie van week 2 | Multi-threaded programmeren in POSIX met shared memory-based synchronisation and communication. |
3 | opdracht 2 e | ||
4 | opdracht 3 | Theorie van week 3. | Multi-threaded programmeren in C++11. |
5 | opdracht 4 | Theorie van week 4.- | Multi-threaded programmeren in POSIX met message-based synchronisation and communication. |
6 | opdracht 5 | Theorie van week 6. | Tool voor schedulability analysis. |
7 | - | - | Uitloop. |