188319228 Programarea Aplicatiilor in Timp Real Curs

20
1/28/2 013 1 P r o g ra m area A plicatii l or In T im p Real Aplicatiile in timp real asigura un raspuns in timp util. Sistemele trebuie sa aiba costuri scazute. Dezavantajul consta in faptul ca avem resurse limitate. Avem: - sisteme concurete - sisteme current ( sistemele de operare ) Sistemele cu raspuns in timp real, asigura un raspuns la stimuli/ evenimente externe. Ca intrari au stimuli, iar ca iesiri au raspunsul propriu zis. Sistemul trebuie sa fie in stare sa interpreteze stimuli( stimulul trebuie captat ). Aplicatiile cu raspuns in timp real sunt folosite in sisteme incorporate ( embedded system ). Printr-un system incorporate intelegem un system de calcul cu hardware si software strans integrat, conceput pentru a indeplinii o functie dedicate ( cu un anumit scop). Sistemele de timp real trebuie sa aiba: pret corespunzator, dimensiuni mici, consum scazut si un raspuns in timp util. <<Print-un sisteme de timp real se intelege un system care raspunde evenimentelor externe in timp util.>> Un system este de timp real, daca asigura raspunsul la anumite evenimente externe intr-un timp garantat. Un system de timp real este un system care raspunde unor stimuli externi inclusiv curgerea unei perioade de timp intr-un interval specificat finit de timp. Evenimentele pot fi: Singular Multiple Sincrone: intreruperi, planificare procese, threaduri Asincrone: while(conditie) {…} Interactiunea unui system de timp real cu mediul:

description

programare

Transcript of 188319228 Programarea Aplicatiilor in Timp Real Curs

Programarea Aplicatiilor In Timp Real

Aplicatiile in timp real asigura un raspuns in timp util. Sistemele trebuie sa aiba costuri scazute. Dezavantajul consta in faptul ca avem resurse limitate. Avem:- sisteme concurete- sisteme current ( sistemele de operare )Sistemele cu raspuns in timp real, asigura un raspuns la stimuli/ evenimente externe. Ca intrari au stimuli, iar ca iesiri au raspunsul propriu zis. Sistemul trebuie sa fie in stare sa interpreteze stimuli( stimulul trebuie captat ). Aplicatiile cu raspuns in timp real sunt folosite in sisteme incorporate ( embedded system ). Printr-un system incorporate intelegem un system de calcul cu hardware si software strans integrat, conceput pentru a indeplinii o functie dedicate ( cu un anumit scop).Sistemele de timp real trebuie sa aiba: pret corespunzator, dimensiuni mici, consum scazut si un raspuns in timp util.

Un system este de timp real, daca asigura raspunsul la anumite evenimente externe intr-un timp garantat. Un system de timp real este un system care raspunde unor stimuli externi inclusiv curgerea unei perioade de timp intr-un interval specificat finit de timp.

Evenimentele pot fi:SingularMultipleSincrone: intreruperi, planificare procese, threaduriAsincrone: while(conditie) {}

Interactiunea unui system de timp real cu mediul:Periodica( comunicatia este initiate de catre systemul in timp real asupra sistemului care il controleaza. Actiunea este predictibila si are loc in interval predefinite de timp.)Aperiodica( comunicatia initiate de catre sistemul controlat, este impredictibila cu aparitii aleatoare).Mixta ( sistemul de timp real proceseaza si raspund in acelasi timp la evenimentele si stimuli generate de catre sistemul controlat, intr-un cadru de timp garantat ).

Interactiunea:1. Periodica2. Aperiodica

1/28/2013103. Mixta

Tipuri de arhitecturi RTS:Time line ( executie ciclica) fiecare subsistem executa o parte, fiecare se executa cyclicOrientata pe eveniment( event driven ) activitati periodice si aperiodicePipe lineClient server

Caracteristicile STR:Corectitudinea logica si functionalCorectitudineacronometrariicalculeletrebuieexecutateintr-o perioada de timp predefinitaDeterministice : timpul de raspuns la un anumit eveniment este marginitOperare autonomaTolerant la defecteInteroperabilitatePredictibilitatePosibilitatea de operare distribuita

Constrangeri de timp:TermeneTermene strice ( hard ) termene cu toleranta 0, constrangeri strice.Daca termenul a expirat, rezultatele prelucrarii datelor nu mai au nici o valoare.Termene soft sisteme care trebuie sa repsecte termenele cu un gradde flexibilitate. Dead line, diferite grade de tolerant. Realizate a.i. sa minimizeze numarul termenelor ratate. Un system soft poate fi transformat in sism hard prin constrangerea termenilor de timp, a.i. sa devina strice.Fara constrangeri

Taskurile trebuiesc planificate a.i. sa respecte termenele strice sau mai putin stricte.

SISTEME DE OPERARE IN TIMP REAL

Sistemul de operare are rolul de a realize gestiunea resurselor hardware si software ale sistemului de calcul.Sistemul de operare este o masina virtuala care abstractizeaza functiile hardware.Sarcinile de baza:-Control si alocare memorie

-Gestionarea apeluri catre functiile system-Controlul dispozitivelor de i/o-Gestionarea comunicatiilor-Manipularea fisiserelor-Platform pentru rularea programelor si aplicatiilor. Tipuri de sisteme de operare:- sisteme de uz general ( GPOS )- sisteme de timp real ( RTOS ), strans legate de platformFreeRTOS, RealTimeLinks.

Exista module care transforma sistemul de operare general in system de operare de timp real.Elemente commune prezente in ambele timpuri de SO:Ambele tipuri au un grad de multiprocesareGestioneaza resursele hardware si software existenteOfera servicii programelor de aplicatii( exp: i/o, comunicatii, intreruperi etc. )Abstractizeaza partea hardware care o folosesc

Diferente intre tipuri:Rtos au fiabilitate mai mareRtos au aplicatii facute stric pentru scopul pentru care lucreazaRtos au o adaptare mai buna la resursele puse la dispozitieRtos au viteza de lucru mai mare, termenul limita este mult mai bine respectatRtos au un necesar de memorie mai redusAlgoritmii de planificare sunt adaptati aplicatiilor de timp realRtos prezinta support pentru sisteme inglobate fara disc( incarcare dinROM, flash etc.)Gpos au o portabilitate mai buna a aplicatiilor

SISTEME DE OPERARE DE TIMP REAL Structura RTOS:Sarcina de planificare planificatorObiecte de timp realServiciiElementele unui RTOS:1. Planificatorul2. Obiecte de timp reali)Temporizatoare, timereii) Procese, fire, taskuriiii) Interrupt service routineiv) Asynchronous service routinev) Evenimente

vi) Mutexvii)Semafoare binare sau generalizateviii) Cozei de mesajeix) Cutii postalex) Canale de comunicatie ( pipes )3. Servicii- gestionare a timpului/ memorie/ dispozitivelor IO- tratare a intreruperiilor

Planificatorul RTIn central sistemului de operare se afla nucleul ( kernelul ), iar in central nucleului se afla planificatorul. Planificatorul stabileste pe baza un algoritmi ordinea de executie a taskurilor ( care va fi urmatorul task ). Planificatorul are un dispecer care salveaza informatii legate de starea taskuri-lor, asigura schimbarea de context si predarea controlului executie noului task.Flux de control al executiei taskurilor:- context task- context intrerupere- context kernel

ObiecteleObiectele sunt niste context specifice apelate de kernel. (parte statica )EvenimenteleParte dinamica operatii pe care le executa nucleul asupra obiectele sistemului de operare de timp real.ServiciiPlanificare, temporizarea, intreruperi, gestionare a resurselor, gestionare serviciilor periferice, gestionare comunicatiilor.Facilitati obiecte: apel functie de system.

NUCLEUL SISTEMELOR DE OPERARE IN TIMP REAL (KERNEL ) :Orice nucleu are 3 functii de baza: Planificare resurselor : regula dupa care taskurile sunt lansate in productie Dispecer: schimbarea starii taskurilor Comunicare intre procese ( taskuri )

Are acces la mai multe nivele :Nivelul aplicatieMediului de executieSistemului de operareMasinaHardware

Utilizator :System de operare - > interfata utilizatorExecutiv -> support fisiereNucleu -> sincronizare, comunicare intre proceseMicronucleu -> planificarea proceselorNanonucleu -> controlul proceselor, gestiunea de memorie

Procesele:Un process este un program aflat in executie ( GPOS ). Are posibilitatea de a lucre in propriul spatiu de memorie.Facilitate de protectiveEste controlat la nivel de client prin PIDPrezinta facilitate de comunicare si sincronizareFire de executie :Au un spatiu comun de memorieCod separatePrezinta facilitate de sincronizareFiindca ruleaza doar o singura aplicatiei, se poate renunta la protective, spatial de memorie propriu.

Task: imaginea unui program aflat in executie, in carcat din memorie. Are un IDpropriu si prezinta facilitate de comunicare si sincronizare.

TIPURI DE PROCESEIn functie de modalitatea de executie, avem:Periodice operatiuni care se repeat la interval egale de timp ( citirea unor date de la traductoare, reactualizarea unor variabile de stare, implementarea unor algoritmi de control, reglare ). Prezinta trei timpi: timpul de calcul Tc, perioada de executie a intregului task T si timpul limita Tl.Aperiodice frecventa minima la care trebuie sa se execute,frecventa in anumite situatii poate sa creasca. Procesele se implementeaza astfel incat frecventa de executie sa nu scada sub o anumita frecventa minima, cresterea sau scaderea frecventei este conditionate de incarcarea sau eliberarea procesului.Sporadice utilizate pentru a raspunde unor solicitari a caroraparitie nu este specifica celorlalte procese. In unele situatii pot fi assimilate proceselor aperiodice, dar caracterizate de o perioada de minima de aparitie a evenimentelor.Taskurile pot functiona in :- modul cooperativ- modul preemptive ( planificatorul are grija sa aloce o felie de timp, apar

prioritati, algoritmi de planificare, politici )

Procesele, taskurile, firele de executie, corutinele, semafoarele, toate sunt obiecte ale sistemului de operare, obiecte ce pot fi planificate si care concureaza pentru utilizarea timpului processor.In RTOS avem 2 tipuri de taskuri:Procese system sunt create de sistemul de operare, initializarea lor se face la pornirea sistemului, find utile initalizarilor so. Exemple de procese: procese de generare a mesajelor system, de tratare a exceptiilor, de generare a semnalului de tact, de depanare. Mai exista si taskul IDLE, un taske care este pornit automat si care se foloseste de obicei la eliberarea memoriei. **Procese utilizator,sunt create de utilizator si sunt dependente denatura aplicatiei.

** Procesul IDLE are cea mai mica prioritate din system, utilizeaza doar timpul liber al procesorului in mai multe situatii pentru a optimiza, elibera memoria, iar alteori este folosit doar in bucla infinita. Asigura validitatea contorului de instructiuni ( in unele SO ) sau poate fi inlocuit de un alt task definit de utilizator in vederea utilizarii unor actiuni (ex: economisire energie prin suspendarea acitivatii procesorului ).

Sistemele de operare permit taskuri cu acelasi nivel de prioritate, insa se pot implementa taskuri si cu nivele diferite. Nivele de prioritate existente sunt limitate.Limitarea nr. de nivele de prioritate si de procese care pot avea acelasi nivel de prioritate, limiteaza numarul de taskuri care pot fi create in cadrul unei aplicatii.Procesele sistemului cu mici execptii, ruleaza la nivele de prioritate ridicate.

Caracteristici commune:Succesiunea indepenta de instructiuni care are allocate resurse pentru executieProcesele concureaza intre ele pentru a fi executate de process si pentru a accesa anumite resurse ale sistemului.Implementarea la nivel de taskuri sau corutine permite descompunerea functional a unui system, prezentand avantajul optimizarii intrarilor si iesirilor.Complicatii serioase la gestionarea taskurilor, oblige programele sa aleaga un algoritm de planificare.

Orice task este caracterizate de 5 variabile :NumeIdentificator unic

PrioritateaStivaBloc de control al taskului.Creare taskurilor din punct de vedere al utilizatorului, prezinta urmatoarele sarcini:Atribuirea numelui, prioritateaDimensiunea stiveiSubrutina procesului/ taskului

Din punct de vedere al RTOS, unui task I se acorda: id-ul unic, I se creaza automat blocul de control asociat si I se aloca stiva de dim. Specificata de utilizator.

STARILE PROCESELOR/ TASKURILORIn decursul evolutiei unei aplicatii, taskurile component trec prin una sau mai multe stari posibile. Numarul de stari este dependent de fiecare SO in parte. In FreeRTOS exista 4 stari posibile:Running(ruleaza)taskulcurrentutilizeazaprocesorul ( are alocat timp processor )Ready ( pregatit ) taskul este gata de executie ( nu este in stare blocata sau suspendata )Suspended ( suspendat ) stare care caracterizeaza taskurile ce nu sunt disponibile pentru planificare.Delayed ( amanat, blocat ) task care a fost amanat, ex: trebuie sa iasa din executie pentru un anumit timp setat.Evolutia taskurilor si proceselor

La firele de executie se consuma prea mult timp cu crearea proceselor. In RTOS sunt resurse putin, iar timpul primit trebuie sa fie utilizat cat mai efficient. Task : cod propriu, stiva proprie, multiprocessor, rulare in parallel.Alocarea stivei pentru fiecare task este o pierdere de resurse, de aceea se utilizeaza o stiva comuna.In RTOS se implementeaza notiunea de automat finit, structura si regula de evolutie sunt specific fiecarui SO. Fiecare task este intr-o stare, iar de-a lungul timpul trece prin mai multe stari.Tipuri stari :Active ( in executie ) stare in care taskul este active ( prioritatea cea mai mare)Blocata semnificatia starii depinde de SO in cauza, poate ingloba:amanre si asteptareGata de executie ( ready ) procesul este gata de executie, dar nu au prioritatea necesara pentru a fi executateAmanitastareaincareprocesulasteaptatrecereaunei

temporizariSuspendata de obicei utilize pentru depanarea sistemuluiAsteptare specifica taskurilor care asteapta eliberarea unor resurse sau aparitia unor evenimenteTratare a intreruperilor se trece la aparitia unei intreruperiAdormita folosita in cazul proceselor aflat intr-o stare inainte de a fi disponibile sistemului de operare sau eliminate complet din aplicatie ( terminated )

Observatie:Modelul cel mai simplu: 2 stari -> ready + runModel cu 3 stari : gata de executie, blocat, rulat

la inceputplanificare

G Edeplanificare

utilizare

G

planifdeplanifS

creareGplanificareE

deplanificare

Dtermin ast. temporizare

G : gata de executieB : blocatE : executieS : suspendatA : asteptareD : adormitaI: tratarea intreruperiilorDin B in G se trece printr-o coada de astepare, pregatite de executie.

Observatie : cand un task este ready, el concureaza la resursele

procesorului impreuna cu celelalte taskuri in acea stare.

In marea majoritate pe platformele monoprocesor, cand un task este in executie poate trece in starea Ready daca nu si-a terminat executia ( interrupt de un task cu o prioritate mai mare ) sau Blocata ( a cerut o resursa indisponibila, a facut un apel ce necesita apariata unui eveniment, a facut un apel la o functie care introduce o intarziere a executiei ).Starea blocata a fost introdusa pentru a permite taskurilor cu prioritate mai mica sa fie executate. In aceasta stare se poate ajunge in urma unui apel de system blocant siu se ramane in aceasta stare atat timpcat este valabila conditia de blocare. La deblocarea taskului se poate trece in starea de executie, data are prioritatea mai mare si in starea ready in celelalte situatii.

Trecerea dintr-o stare in alta a unui task se face prin niste apeluri special de system:vTaskSuspendvTaskResumevTaskCreate ( taskul se creaza in starea ready )vTaskSchedulerTask ( disponibilitatea taskurilor )

Regula presupune pargurea unui numar de pasi:- creara de procese- intializarea RTOS- taskurile sunt facute disponibile sistemului de operare

Eliminarea taskurilor:scoaterea taskului din evidenta sistemului de operare( vTaskDelete, exit () )poate presupune sau nu eliberarea resurselor folosite de catre acestaintotdeauna terminarea unui process trebuie realizata dupa eliberarea tuturor resurselor, in caz contrar se ajunge la alocarea unor resurse sau a intregului system.Planificarea taskurilorIn planificarea preemptive se realizeaza automat prin intermediul algoritmului de planificare, astfel ca acest algoritm determina tranzitia taskurilor dintr-o stare in alta.RTOS: apeluri de system pentru schimbarea starii taskurilor (daca schimbam prioritatea este schimbat taskul cu prioritate mare ).Din punct de vedere al programatorului, exista un set de functii pentru controlul starii taskurilor:suspendarea vTaskSuspend()reluarea executie vTaskResume()intarzierea executiei vTaskDelay()/ vTaskDelayUntil()

repornirea proceselor vTaskResumeAll()modificarea prioritatiiblocarea/ deblocarea vEnterCritical()/ vPortExitCritical()

CONTROLUL CONCURENTEI IN SISTEME DE OPERARE IN TIMP REAL

O aplicatie de timp real poate fi implementata in 2 stiluri:Structurataplicatiasedesfasoarapeunsingurfir.Determinam fiecare secventa de cod ce timp dureaza si planificam astfel codul sa fie indeplinita conditia de timp limita. Anumite secvente pot aparea asincron: intrerupere( pseudo parallelism ). Resursele sunt mult mai evaluate( ARM ).Programarea paralela fire de executie, procese/ taskuri,corutine. Problema controlului concurrent: comunicare, sincronizare. Programatorul rezolva problemele de concurenta. Resursa critica se gaseste in regiune critica( zona de cod in care un task acceseaza resursa ). Excluziunea mutual a doua sau mai multe taskuri este o modalitate prin care un singur task se gaseste la un moment dat in regiunea critica. Exista obligativittea asigurarii sincronizarii la nivelul resursei.Activitatile taskurilor trebuie sa fie sincronizate din 2 puncte de vedere:Blocarea accesului la resursa cand este utilizata de mai multe taskuri simultanTaskurile trebuie coordonate a.i sa fie informate cand resursa este libera

Sincronizarea poate duce la problema: infometare( starvation ), impas( dead lock ).

Mecanisme de rezolvare a problemelor ( FreeRTOS ):- semafor binary- semafor generalizat ( numerator )- cozi de mesaje

Creare unui semafor binary: vSemaphoreCreateBinary, xSemaphoneCreateMutex, vSemaphoreCreateCounting, xSemaphoreTake, xSemaphoreGive.

Apeluri system de intreruperi: xSemaphoreGiveFromISR.

Coadademesaje:xQueueCreate,xQueueDelete,xQueueSend, xQueueReceive, xQueueSendToBack, xQueueSendToFront.