Real-Time Systems (RTSYST)



Vergelijkbare documenten
Real-Time Software (RTSOF) EVMINX9 Week 1

Real-Time Systems (RTSYST)

Technology, Innovation & Society Delft

Centrale begrippen hoofdstuk 3. Waarom multiprogramming? Vandaag. processen proces state: running, ready, blocked,... Vragen??

Inhoud RTSYST. Week 1 Week 2 Week 3 Week 4 Week 5 Week 6 Week 7

Het begrip 'Proces' Proces-toestand

EE1400: Programmeren in C BSc. EE, 1e jaar, , 3e college

EE1400: Programmeren in C BSc. EE, 1e jaar, , 4e college

Oefententamen 2. Tijd: 2 uur. Maximaal aantal punten: 30. Naam: Studentnummer:

Tentamen Computersystemen

High Performance Computing

Een.NET-besturingssysteemtoolkit. Discovering Cosmos. Sijmen J. Mulder

Lineaire data structuren. Doorlopen van een lijst

Real-Time Systems (RTSYST)

Voorkennis: C, basiskennis microprocessoren (bij voorkeur ARM7 processor)

Programmeren in C++ (deel 1)

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

Belangrijkste ideeën/concepten uit OS, incl. proces

4EE11 Project Programmeren voor W. College 2, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

Gebruiker afschermen van de hardware

Modelleren en Programmeren

Tim Mallezie Architectuur van besturingssystemen: Vraag A2.

Multi-core systemen. door Alexander Melchior

Tentamen Programmeren in C (EE1400)

Instructies en blokken

Hoofdstuk 3: Processen: Beschrijving en Besturing. Wat is een proces? Waarom processen? Wat moet het OS ervoor doen? Is het OS zelf een proces?

Real-Time Systems (RTSYST)

Objective-C Basis. 23 april 2005, Eindhoven Patrick Machielse

Gelijktijdigheid: Wederzijdse Uitsluiting & Synchronisatie Concurrency: Mutual Exclusion & Synchonization (5e ed: , Appendix A.

Computerarchitectuur. H&P Ch 5. Thread-Level Parallelism

Demo document template available on the Rapptorlab website

Dynamisch geheugen beheer

Computerarchitectuur en netwerken. Gedistribueerde IPC

Tentamen Programmeren in C (EE1400)

De MySQL C API. Variabelen in C Functies in C Pointers in C

ICT Infrastructuren: Processen en Threads. 18 november 2013 David N. Jansen

Programmeren in Java les 3

VHDL overzicht. Digitale Systemen (ET1 410) VHDL? VHDL? Sequentieel vs. Concurrent 2/15/2011

EE1400: Programmeren in C BSc. EE, 1e jaar, , 1e college

in Operating System Concepten

in Operating System Concepten Doel van een Operating System Interrupts 3-Lagen model spooling (Simultaneous Peripheral Operation On Line)

9 Meer over datatypen

RTOS Labo. L. Rutten 27/ 2/2017

Toets In2305-ii Embedded Programming Dinsdag 28 November 2006, 15:45-16:30

Technology, Innovation & Society Delft

Tim Mallezie Architectuur van besturingssystemen: Vraag A4.

Instructies en blokken

continue in een for, while of do lus herhaalt de lus vroegtijdig. De volgende herhaling wordt onmiddellijk begonnen.

Inhoudsopgave. Onderzoeksrapport: SSL; Dion Bosschieter; ITopia

React en React Native voor websites en apps

Modelleren en Programmeren

De standaard programmeertaal

Debugging in embedded en native systemen met GDB

Waarmaken van Leibniz s droom

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010

1e college Introductie Applicatiebouw. Applicatiebouw{ } Onderdeel van SmartProducts

Modulewijzer Tirdat01

High Performance Computing

IN1805 I - Operating System Concepten

Microcontrollers Introductie INLMIC Jesse op den Brouw INLMIC/

Programmeren in Java 3

Vakgroep CW KAHO Sint-Lieven

Geheugenbeheer. ICT Infrastructuren 2 december 2013

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Opdrachten numerieke methoden, week 1

Examen Software Ontwikkeling I 2e Bachelor Informatica Academiejaar Januari, **BELANGRIJK** : Schrijf je naam onderaan dit blad

Conclusies over semaforen

Week 5 : Hoofdstuk 11+ extra stof: meer over functies. Hoofdstuk 11:

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

VOORBLAD SCHRIFTELIJKE TOETSEN

Hardware-software Co-design

Academie voor ICT en Media 2013/2014

APPLICATIEBOUW 1E COLLEGE: INTRODUCTIE. Onderdeel van SmartProducts

APPLICATIEBOUW 1E COLLEGE: INTRODUCTIE. Onderdeel van SmartProducts

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008

A2: Bedrijfssystemen. A2 en PC. Boek. Voorkennis

Project Software Engineering XML parser: Parsen van een xml CD catalogus

college 2: Introductie

Algoritmen en programmeren: deel 1 - overzicht

Hoofdstuk 2. - is verantwoordelijk voor de communicatie van de software met de hardware.

Software Mobiliteit. UAMS - 6 maart Theo D'Hondt Lab voor Pogrammeerkunde Vrije Universiteit Brussel

EmSE presentatie. Starten met de ATtiny2313: Een RGB powerled driver Kees Moerman, 13 juli 2010

Computerarchitectuur en netwerken Toets 1 4 okt

1750,00 excl. BTW. analytisch denkvermogen, empathie, assertief, communicatief, aanleg voor formalisme,...

HOGESCHOOL ROTTERDAM / CMI

Tentamen Computersystemen

Modelleren en Programmeren

Beter, Sneller, Mooier. Processoren 12 januari 2015

Inleiding C++ Coding Conventions

Inleiding programmeren

Zelftest Programmeren in Java

College 13: Patterns (2)

DOMjudge teamhandleiding

C++ C++ als een verbetering van C. Abstracte datatypen met classes. Constructoren en destructoren. Subklassen. binding van functies

IMP Uitwerking week 13

Zelftest Java concepten

slides7.pdf 23 nov

DOMjudge teamhandleiding

Transcriptie:

Real-Time Systems (RTSYST) Week 1 Real-Time Systems (RTSYST) Onderwerpen: Concurrent programming (threads). Real-Time OS(VxWorks, QNX, FreeRTOS). Concurrent programming in C en C++. Synchronisation and Communication. Real-Time faciliteiten(clocks, timeouts). Scheduling. Werkvormen: 14 lessen theorie + 7 lessen begeleid practicum. 5 uur/week zelfstudie(inclusief onbegeleid practicum). 2 Harry Broeders 1

Leermiddelen Boeken Real-Time Systems and Programming Languages(Fourth Edition), Alan Burns and Andy Wellings, ISBN: 9780321417459 Hoofdstuk 1, 4 t/m 6, 9 en 11. QNX Neutino2, Robert Krten(kun je bij mij lenen) Blackboard en http://bd.eduweb.hhs.nl/rtsyst/ Studiewijzer met uitgebreide planning Practicumopdrachten + uitgebreide practicumhandleiding Sourcecode van alle voorbeelden Sheets Links 3 Real-Time Systeem Definitie(s): Systeem waarvan de reactietijdop een onvoorspelbare inputverandering voorspelbaar is. Systeem waarbij de uitvoer niet alleen correct moet zijn maar ook op het juiste moment. 4 Harry Broeders 2

Indeling Real-Time Systemen Hard real-time Missen van een deadline is fataal. Soft real-time Missen van een deadline is ongewenst. Interactief(niet real-time) Er zijn geen expliciete deadlines maar wachten is wel irritant. 5 Voorbeelden Real-Time Systeem Procesbesturing (meet en regeltechniek) Productiebesturingssysteem (industriële automatisering) Embedded systemen ABS (Anti-Blokeer-Systeem) Pacemaker Besturing kruisraket Kopieer apparaat DVD recorder 6 http://www.youtube.com/watch?v=2fww5dnhbla Harry Broeders 3

Karakteristieken Real-Time Systeem Groot en complex(niet altijd) Onderhoudbaar: uitbreidbaar, aanpasbaar en herbruikbaar Betrouwbaar en veilig Intensive care apparatuur Kerncentrale Automatische piloot Concurrentgedrag Multitasking, multiprocessor, distributed RTOS of RTL moet dit ondersteunen Timing faciliteiten Taak op bepaalde tijd starten, taak binnen bepaalde tijd afronden RTOS of RTL moet dit ondersteunen Interactie met hardware 7 Concurrent programming Single processor system Multitasking m.b.v. time sharing Multi processorsystem met gedeeld geheugen (SMP) of multi-core processor systeem Parallel (true multitasking) Distributed system Parallel Verschillendesystemen(elk met eeneigengeheugen) verbonden met een netwerk 8 Harry Broeders 4

Why Concurrent programming Programma model komt overeen met de werkelijkheid Benutten van parallellisme in applicatie Zoek je weg in een doolhof Vergelijken van vingerafdrukken Processor beter benutten op single processor systeem 9 Sequential Maze Search 10 Harry Broeders 5

Concurrent Maze Search 11 Concurrent programming Processor beter benutten op single processor systeem C X W X W X C X W X W X c=calculate x=transmit w=wait for ACK time C C C C sneller X W X W X W X W X W X 12 Harry Broeders 6

Beperking van parallellisme Amdahl'sLaw(boek p. 96) De versnelling (speedup) van een program door het gebruik van meerdere parallellle processoren (of cores) is begrensd door het deel van het programma dat sequentieel uitgevoerd moet worden. N = aantal processoren S N = speedupmet Nprocessors (cores) P= deelvan het programma dat paralleluitgevoerd kan worden Voorbeeld: Bereken de maximale speedupvoor een programma waarvan 25% sequentieel uitgevoerd moet worden? (4) Wat is de maximale speedupbij 2, 4, 8 en 16 cores? (1.60, 2.29, 2.91 en 3.37) 13 Process versus Thread Process Eigen stack = veilig Eigen (data) memory map Eigen virtueel geheugen = veilig, communicatie = traag Process switch is traag(zwaar) Cache flush, MMU TLB flush Thread Eigen stack = veilig Gedeelde (data) memory map binnen hetzelfde process Gedeeld geheugen = onveilig Communicatie = snel Thread switch is snel(licht) binnen hetzelfde process Geen flushes 14 Harry Broeders 7

Process versus Thread Veel GPOSs(General PurposeOperating Systems) gebruiken: Processes om verschillende applicaties van elkaar te scheiden Threads om concurrency binnen applicatie mogelijk te maken Voorbeelden: Windows en Linux Veel RTOSs(Real-Time Operating Systems) gebruiken: Threads/ Tasks om concurrency mogelijk te maken Voorbeeld: FreeRTOS QNX gebruikt processes en threads Wij behandelen alleen threads 15 QNX (POSIX compatible RTOS) 16 Harry Broeders 8

Huiswerk Bestudeer: BoekH1 t/m 1.3. Bestudeer: Artikel uit Embedded Computer Design: RTOS versus GPOS Achtergrondinformatie: Artikel The Free Lunch Is Over ArtikelTLAs: QNX, RIM, ARM, CES, RPM, and MPH. An RTOS for the Automotively Inclined Web seminar: Why do I need an RTOS anyway? 17 Concurrent programming Sequentiële programmeertaal (C of C++) + OS (Linux, Windows, QNX, FreeRTOS) Portable als taal en OS portable zijn IEEE POSIX 1003 Meerdere talen combineren in 1 applicatie is mogelijk Concurrent programmeertaal (ADA, Java, C#, C++11, C11) Beter leesbaar Beter onderhoudbaar Portable als taal portable is Concurrent framework (OpenMP, OpenCL) Portable (ondersteund meerdere talen en OS-en) Middleware(RPC, RMI, CORBA) Vereenvoudigt bouwen van distributed applicaties 18 Harry Broeders 9

Fundamentele vragen Hoe kun je processen / threads beheren? Support in OS via API(= Application Programming Interface) of library Support in programmeertaal Hoe kunnen processen / threads communiceren? IPC= Inter Process Communication (term wordt ook voor communicatie tussen threads gebruikt) Hoe kun je processen / threads synchroniseren? IPC zonder dataoverdracht. 19 Concurrent OOP Actieve objecten Object heeft eigen thread of process. Versturen zelf actief (spontaan) messages. Passieve objecten Object heeft geen eigen thread of process. Reageren op binnenkomende messages en kunnen als reactie: Zelf message versturen. Toestand van aanroepende thread of process veranderen (b.v. van running naar waiting). 20 Harry Broeders 10

Specificatie van concurrent taken Coroutine Coöperatief (eerste Apple, win16) System call UNIX, win32 pthread_t t; pthread_create(&t, NULL, &func, NULL) Concurrent blok Concurrent Pascal, High Performance Fortran cobegin s1; s2; s3 coend; Expliciete declaratie ADA, Java task body NAME is begin end NAME; 21 Concurrent execution IEEE POSIX 1003.1-2013 fork()en wait() posix_spawn() Combinatie van fork(), exec() en wait() pthread_create() en pthread_join() Documentatie: IEEE Std1003.1-2013 = The Open Group Base Specifications Issue 7 http://pubs.opengroup.org/onlinepubs/9699919799/ QNX documentation: http://www.qnx.com/developer/docs/ 22 Harry Broeders 11

Pointers naar functies In C kun je een pointer naar een functie definiëren. De waarde van de pointer is het beginadres (van de code) van de functie. #include <stdio.h> int kwadraat(int c) { return c * c; int dubbel(int c) { return c + c; pnfis een pointer naar een functie met een intals parameter en een int returnwaarde int main(void) { int a = 7, b; int (*pnf)(int); pnf = &dubbel; b = (*pnf)(a); Waarom haakjes? 23 Pointers naar functies In C kun je een pointer naar een functie definiëren. De waarde van de pointer is het beginadres (van de code) van de functie. #include <stdio.h> int kwadraat(int c) { return c * c; int dubbel(int c) { return c + c; pnfwijst naarde functie dubbel (pnfwordt gelijk aan het adres van de functie dubbel) int main(void) { int a = 7, b; int (*pnf)(int); pnf = &dubbel; b = (*pnf)(a); 24 Harry Broeders 12

Pointers naar functies In C kun je een pointer naar een functie definiëren. De waarde van de pointer is het beginadres (van de code) van de functie. #include <stdio.h> int kwadraat(int c) { return c * c; int dubbel(int c) { return c + c; De functie waar pnfnaar wijstwordt aangeroepenmet de waarde van aals argument int main(void) { int a = 7, b; int (*pnf)(int); pnf = &dubbel; b = (*pnf)(a); Waarom haakjes? 25 Pointers naar functies Verkorte schrijfwijze. Naam van een functie beginadres (van de code) van de functie. #include <stdio.h> int kwadraat(int c) { return c * c; int dubbel(int c) { return c + c; int main(void) { int a = 7, b; int (*pnf)(int); pnf = dubbel; b = pnf(a); 26 Harry Broeders 13

Pointers naar functies Wat is het nut? Functie als parameter. #include <stdio.h> /* */ void printtabel(int (*p)(int), int van, int tot, int stap) { int x; for (x = van; x < tot; x += stap) { printf("%10d %10d\n", x, (*p)(x)); int main(void) { printf("de kwadraten van 1 t/m 10\n"); printtabel(&kwadraat, 1, 11, 1); printf("de dubbelen van de drievouden van 0 t/m 30\n"); printtabel(&dubbel, 0, 31, 3); 27 Uitvoer De kwadraten van 1 t/m 10 1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 9 81 10 100 De dubbelen van de drievouden van 0 t/m 30 0 0 3 6 6 12 9 18 12 24 15 30 18 36 21 42 24 48 27 54 30 60 28 Harry Broeders 14

void* Eenvoid*kanwijzennaarelktype. Alswe de waardewillenophalenwaareenvoid*naar wijstdanmoetenwe de pointer castennaarhet juiste type. int main(void) { int i = 3; double d = 4.3; void* vp = &i; printf("%d\n", *(int*)vp); vp = &d; printf("%lf\n", *(double*)vp); return EXIT_SUCCESS; 29 pthread (1 van 3) #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <pthread.h> void check(int error) { if (error!= 0) { fprintf(stderr, "Error: %s\n", strerror(error)); exit(exit_failure); 30 Harry Broeders 15

pthread (2 van 3) void* (void* par) { struct timespec ts = {0, 10000000; int i; for (i = 0; i < 10; i++) { nanosleep(&ts, NULL); printf("\n"); return NULL; void* (void* par) { struct timespec ts = {0, 20000000; int i; for (i = 0; i < 10; i++) { nanosleep(&ts, NULL); printf("\n"); return NULL; 31 pthread (1 van 3) int main(void) { pthread_t t1, t2; check( pthread_create(&t1, NULL, &, NULL) ); check( pthread_create(&t2, NULL, &, NULL) ); check( pthread_join(t1, NULL) ); check( pthread_join(t2, NULL) ); return EXIT_SUCCESS; 32 Harry Broeders 16

pthread Alternatieve implementatie void* print(void* p) { par_t* pp = p; struct timespec ts = {0, pp->ns; int i; for (i = 0; i < 10; i++) { nanosleep(&ts, NULL); printf(pp->msg); return NULL; int main(void) { pthread_t t1, t2; par_t p1 = {"\n", 10000000; par_t p2 = {"\n", 20000000; typedef struct { char* msg; long ns; par_t; Pas op: void* check( pthread_create(&t1, NULL, &print, &p1) ); check( pthread_create(&t2, NULL, &print, &p2) ); //... 33 Command line argumenten Aan een programma kunnen command line argumenten worden doorgegeven. Deze zijn in mainbeschikbaar via de parameters argcen argv int main(int argc, char* argv[]) { argv[0]is de naam van het programma. argc geeft het aantal meegegeven parameters + 1 argv[1] is de eerste meegegeven parameter. Enz. int main(int argc, char* argv[]) { int i; for (i = 0; i < argc; i++) { printf("%s\n", argv[i]); return EXIT_SUCCESS; $ a.exe dat is leuk a.exe dat is leuk 34 Harry Broeders 17