Sunteți pe pagina 1din 48

PROGRAMAREA APLICA|IILOR {N TIMP-REAL

Semestrul 2, 2009-2010 Conf.dr.ing. Monica Dr`goicea

Organizare:
Curs: EC 105

Monica Dragoicea, cont2d2b@yahoo.co.uk

Birou: ED 207
Pagina informatii curs: http://monicadragoicea.ics.pub.ro/ http://acs09.curs.pub.ro

Laborator: ED 102

Monica Dragoicea Catalin Chera

Evaluare activitate semestru:

50% activitate in timpul semestrului, din care: 30% activitate lab (inclusiv prezenta) 70% tema laborator (se rezolva in timpul sedintei de laborator) 50% examen final

Bibliografie:

suport curs: Programarea Aplicatiilor in Timp-Real, Ed. Universitara, 2009 disponibil la secretariat catedra AIS, sala ED 216 http://monicadragoicea.ics.pub.ro

Organizare activitate laborator:

statii de lucru cu sistemul de operare in timp-real QNX www.qnx.com


creare cont: MyQNX download: Get momentics x86 (QNX Neutrino Lite), sau All targets (QNX Neutrino Host)

... download QNX Momentics

... download QNX Momentics

Instalare QNX:

Ce va trebui sa cunoasteti la dupa audierea acestui curs:

ce inseamna sistem in timp-real ce inseamna sa implementam o aplicatie pentru conducerea in timp-real a unui "proces" ce inseamna concurenta cum se scrie o aplicatie concurenta ce inseamna sistem de operare in timp-real si cum instalam o aplicatie concurenta (multitasking) pe un astfel de sistem de operare exemplu: cum lucram sub QNX dezvoltare de cod depanare programe

analiza performantelor sistemului

... industria automobile

Mai multe procesoare conectate intr-o retea, mai multe retele locale pana la 100 procesoare (8, 10 sau 32 biti) senzori si elemente de executie distribuite peste tot multiple functii procesate de sistemele embedded ABS Antilock Breaking Systems ESP Electronic Stability Control control airbag-uri cutii de viteza automate sisteme antifurt cu key personalizate etc ...

... telefoane mobile

Microprocesoare 32 biti pentru U(ser) I(nterface) DSP pentru procesare de semnale 32 biti pentru Bluetooth si port IR 8-100 MB memorie cipuri dedicate consumul de energie si viata bateriei depind de software-ul instalat

... telefoane mobile

...

... sau pur si simplu util zilnic

Continutul cursului:

Notiuni introductive: sistem in timp real si sisteme embedded in timpreal, sisteme de operare in timp real, limbaje de programare pentru aplicatii in timp-real, programare concurenta, definitii (proces, fir de executie, task, preemptiune); Aspecte concurentiale ale aplicatiilor in timp-real - mecanisme pentru sincronizarea si comunicarea intre taskuri (sincronizare, excludere mutuala, mesaje, etc); Aspecte temporale ale aplicatiilor in timp-real caracteristici de limbaj pentru specificarea, implementarea si analiza deadline-urilor; Mecanisme de planificare pentru aplicatii in timp-real algoritmi de planificare, evitarea inversiunii de prioritate. Interactiunea cu dispozitivele de I/O - driver-e;

Definitii sistem incorporat (embedded):

Un sistem incorporat (embedded) este un sistem in care componenta de procesare de informatie, in particular softwareul, face parte dintr-un sistem ingineresc mai mare, si este interfatata cu dispozitive fizice monitorizate si comandate prin software
De fapt, este un tip special de sistem de calcul (computer system) - citeva definitii traditionale:

un sistem embedded este proiectat pentru a executa functii dedicate sistemele embedded sunt mult mai limitate sub aspect al functionalitatii hardware si / sau software decat un PC astazi, dispozitivele electronice din aproape orice segment de piata sunt clasificate ca si sisteme embedded nu exista o definitie unica sau un mod de caracterizare globala a tuturor acestor dispozitive

Definitii sistem incorporat (embedded):

orice sistem pentru care utilizatorul nu (doreste sa) stie ca include un microprocesor este format din hardware si software

Definitii sistem in timp-real:

Vorbim despre sistem in timp-real atunci cand: exista o interactiune continua cu mediul (sistem reactiv) mediul extern se schimba in "timp-real" si impune constrangeri de timp (deadline) sistemului considerat sistemul controleaza (sau reactioneaza) simultan diverse (la diverse) aspecte ale mediului (sistem concurent) Exemple de aplicatii in timp-real: monitorizare medicala autovehicule (e.g. control ABS, engine control) simulatoare de zbor comanda instalatiilor / proceselor chimice aviatie (e.g. cabin pressure control)

Definitii sistem in timp-real:

Definitie Sistem in timp-real (Oxford Dictionary of Computing):

Any system in which the time at which the output is produced is significant. This is usually because the input corresponds to some movement in the physical world, and the output has to be related to the same movement. The lag from input to output must be sufficiently small for acceptable timeliness. ... sau, altfel spus: Raspunsul unui sistem in timp real trebuie sa indeplineasca deadline-uri impuse de mediul in care opereaza

Exemplu sistem in timp-real: Sistem de conducere a proceselor in timp-real

Exemplu implementare sistem in timp-real:


Sistem de conducere a proceselor in timp-real
- implementari posibile Sistem de conducere centralizata Sistem de conducere distribuita

comandat de un singur computer sistem de operare in timp-real

comandat prin intermediul unui mediu de comunicatie comunicatie in timp-real

Definitii sistem in timp-real: sistem in timp-real versus sistem de timp-real in pentru ca se refera la procesare date / informatie in timp-real

Caracteristici sistem in timp-real:

comportarea corecta a unui sistem (cu procesare) in timp-real este definita de corectitudinea rezultatelor (calculelor) momentul de timp la care este generat rezultatul procesarii datelor -> indeplinire deadline-uri cel mai important criteriu de evaluare a corectitudinii in functionare este predictibilitatea ce, cum, cand, in cat timp se executa operatiile comportare determinista a programului pentru aceeasi intrare, programul va genera aceeasi iesire predictibila la fiecare executie ... ... in plus, pentru sisteme in timp-real cu deadline-uri, comportarea determinista se analizeaza si in raport cu timpul de executie necesar

Caracteristici sistem in timp-real (cont.):

sunt concurente - este o practica inginereasca proasta sa se scrie un program monolit foarte mare care sa implementeze toate functiile sistemului abordare corecta: se va sparge problema intr-un numar de actiuni = taskuri, care vor fi planificate apoi astfel incat sa se incheie la momentul specificat (deadline) este importanta functionalitatea globala a sistemului, nu cea a taskurilor care compun sistemul (aplicatia)

multe aplicatii in timp-real ruleaza pe procesoare simple, are sens sa se foloseasca cel mai rapid procesor pentru a comanda functionarea unei masini de spalat ?

Exemplu sistem in timp-real:

Sistem de conducere a unitatii de drenare a apei dintr-o mina


Sursa: Real-time systems and programming languages, A. Burns, A. Wellings, Addison Wesley, 2001

Exemplu sistem in timp-real (cont.):

Reprezentare schematica a interactiunii sistemului de conducere cu dispozitivele externe


Sursa: Real-time systems and programming languages, A. Burns, A. Wellings, Addison Wesley, 2001

Exemplu sistem in timp-real (cont.):

componentele unui STR Sistem in Timp-Real

Exemplu sistem in timp-real (cont.):

Organizarea unui STR

Exemplu sistem in timp-real (cont.):

Organizarea unei aplicatii software in timp-real

Cum definim activitatile specifice ? Cum definim taskurile ?

Deadline-uri pentru sisteme in timp-real:

clasificarea sistemelor in timp-real se face in functie de deadlineuri dimensiunea deadline-ului depinde de mediul in care actioneaza sistemului sau de aplicatie, de exemplu: predictii meteo: se masoara in ore sisteme interactive: se masoara in secunde sisteme embedded: mili- sau microsecunde

Deadline-uri:

deadline-urile pot fi:


hard: trebuie indeplinite intotdeauna (e.g. aviatie, centrale nucleare,


instalatii chimice, automobile)

ferme: raspunsul este inutil dupa trecerea deadline-ului


(e.g.tranzactii intr-o baza de date)

soft: valoarea raspunsului descreste progresiv dupa trecerea deadline-ului, sau este posibil ca deadline-ul sa nu fie indeplinit uneori (e.g. controlul temperaturii, aplicatii multimedia)

Clasificare - sisteme in timp-real:


In mod corespunzator, distingem:

Hard real - time systems: sunt sisteme care (pe linga alte caracteristici specifice) au asociate deadline-uri hard cu cerinte stricte de a fi indeplinite Soft real- time systems: sisteme fara deadline-uri hard

Daca se considera ca cerinta de performanta si consecintele defectarii sistemului, putem rafina si putem defini o clasa si mai speciala de sisteme hard real-time:

Safety critical real-time systems: sunt acele sisteme a caror defectare poate avea efecte dezastruoase (pierderi de vieti omenesti, pagube economice si de mediu)

Definitii:
Observatie: Exista tendinta de a egaliza denumirile "sistem in timp - real" = "sistem embedded"

... dar ... Sistem embedded in timp real


caracteristici comune specifice

Cum implementam - sisteme incorporate in timpreal:

calculator PC + software specializat + interfete + "proces" extern dezvoltam aplicatia software direct pe PC si folosim un sistem de operare in timp-real (e.g. QNX), si un limbaj de programare cu facilitati de timp-real (e.g. C sub QNX) embedded board + (eventual) sistem de operare cu facilitati minime de timp-real + "proces" extern aplicatia se dezvolta pe sistemul de dezvoltare (calculator cu IDE dedicat) si se descarca pe sistemul tinta (target) de exemplu, aplicatiile QNX exemple pe parcursul cursului

Aspecte de implementare ale sistemelor in timp-real:

Procesare sistem de operare in timp-real planificare activitati /taskuri, etc ... resurse Comunicatie comunicatie in timp real transfer date Control algoritmi numerici control centralizat control distribuit

Definitii:

timp real deadline aplicatie software in timp-real programare concurenta task sistem de operare in timp-real proces fire de executie preemptiunea taskurilor prioritati planificarea taskurilor mecanisme de sincronizare si comunicare inversiune de prioritate deadlock, starvation ... ...

Definitii - timp-real:

Timp-Real Rapid Timp-Real inseamna Just-in-Time (predictibil)

este importanta functionalitatea globala a sistemului, nu cea a taskurilor care compun sistemul (aplicatia)

Definitii - deadline:

sistemele in timp-real "raspund" la evenimente externe e.g. sistemul de control al airbag-ului trebuie sa raspunda intrun anumit interval de timp in cazul producerii unui accident acest interval poarta denumirea de deadline unele deadline-uri sunt soft, altele hard, de aici si clasificarea sistemelor in timp-real

Definitii aplicatie software in timp - real:

ruleaza intr-un sistem in timp-real este compusa din mai multe actiuni care se executa concurent apar probleme specifice atunci cand intre actiunile care se executa concurent (in paralel) apar interactiuni interactiunile posibile intre actiuni pot fi de mai multe tipuri si pot fi exprimate prin operatii specifice procesarii concurente

Definitii procesare concurenta a informatiilor:

3 aspecte multiprogramarea (managementul mai

multor procese sau fire de executie intr-un sistem uniprocesor) executie cvasiparalela pe principiul diviziunii timpului = alocarea procesorului in felii de timp (e.g. time slice)

multor procese sau fire de executie intr-un sistem multi-procesor) este posibila executia paralela reala a actiunilor alocate taskurilor

multiprocesarea (managementul mai

procesarea distribuita (managementul mai multor procese care se executa pe

mai multe calculatoare conectate intr-o retea, care pot avea sisteme de fisiere diferite sau arhitecturi hardware diferite, e.g. Internet-ul)

Definitii programare concurenta:

programarea paralela (concurenta) reprezinta activitatea de scriere a unui program / aplicatie software care contine o serie de parti necesar a se afla in executie in acelasi moment aceste operatii paralele / concurente reprezinta etape de executie asincrona in cadrul aplicatiei

partile componente ale aplicatiei software (programului), care vor fi executate in paralel, poarta denumirea de taskuri

se sparge problema intr-un numar de actiuni = taskuri, care vor fi planificate apoi astfel incat sa se incheie la momentul specificat (deadline)

Definitii - task:

taskul este cea mai mica unitate de prelucrare a informatiei careia i se atribuie o identitate, reprezentand un program in forma executabila compus dintr-o succesiune de instructiuni executate secvential doua taskuri sunt paralele (concurente) daca prima instructiune a unui task incepe sa se execute inainte ca ultima instructiune a celuilalt task sa fie completata; doua sau mai multe taskuri se numesc disjuncte (independente) daca nu schimba informatii intre ele sau daca nu utilizeaza resurse (zone de memorie, dispozitive periferice) in comun. In caz contrar, taskurile interactioneaza. semnalul de control care initiaza executia task-ului este furnizat de catre sistemul de operare prin intermediul planificatorului de taskuri

Exemplu aplicatie multitasking:

Pas 1. Definire problema

Sa se implementeze o aplicatie formata din 3 taskuri de tip A (tipareste litera a), B (tipareste litera b) si C (tiparesc litera c). Conditiile de tiparire sunt urmatoarele:

un b se scrie intotdeauna inaintea unui c; b si c trebuie sa alterneze in sir; numarul de b-uri si c-uri scrise la un moment, dar nu trebuie sa depaseasca numarul de a-uri.

Exemplu aplicatie multitasking (cont.):

Pas 2. Analiza problema

Secvente posibile: aabcaaabc aaaabcbc ab Secvente imposibile aacb nu indeplineste conditia 1 abacac - nu indeplineste conditia 2 aabcabc - nu indeplineste conditia 3

Exemplu aplicatie multitasking (cont.):

Pas 3. Definirea taskurilor care compun aplicatia


task de tip A (tipareste litera a) task de tip B (tipareste litera b) task de tip C (tipareste litera c)

Exemplu aplicatie multitasking (cont.): Pas 4. Solutie de implementare

aleg mecanismele de sincronizare si comunicare intre taskuri aleg 2 semafoare binare, cu val. initiale SemB = 0, SemC = 1 aleg 1 semafor general, cu val. initiala 0, Sum = 0

Exemplu aplicatie multitasking (cont.):

Pas 5. Scriere cod program

Detalii de implementare in functie de limbaj in Java nu exista semafoare in limbaj, trebuie definite software in C sub QNX exista semafoare generalizate si mutex-uri (corespunzator semafoarelor binare pentru sincronizarea firelor de executie)

Exemplu aplicatie multitasking (cont.):

Pas 6. Validare rezultate

Se executa programul. Face ceea ce s-a specificat la pasul 1, in cerinte?

Elemente pentru dezvoltarea unei aplicatii in timp-real:


alegerea arhitecturii hardware si analiza detaliilor de implementare alegerea unei metode de proiectare a aplicatiei software alegerea componentelor software in functie de hardware si performante sistem de operare ? alegerea limbajului de programare: secvential (C), concurent (Java, Ada) design, implementare, testare