You are on page 1of 10

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. <<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:  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. Periodica 2. Aperiodica

1/28/2013 1

Mixta Tipuri de arhitecturi RTS:  Time – line ( executie ciclica) – fiecare subsistem executa o parte. Dead – line. fiecare se executa cyclic  Orientata pe eveniment( event driven ) – activitati periodice si aperiodice  Pipe – line  Client – server Caracteristicile STR:  Corectitudinea logica si functional  Corectitudinea cronometrarii – calculele trebuie executate intr-o perioada de timp predefinita  Deterministice : timpul de raspuns la un anumit eveniment este marginit  Operare autonoma  Tolerant la defecte  Interoperabilitate  Predictibilitate  Posibilitatea de operare distribuita Constrangeri de timp:  Termene  Termene strice ( hard ) – termene cu toleranta 0.i.Control si alocare memorie 1/28/2013 2 . sa minimizeze numarul termenelor ratate. Sarcinile de baza: . Sistemul de operare este o masina virtuala care abstractizeaza functiile hardware. rezultatele prelucrarii datelor nu mai au nici o valoare. Realizate a. diferite grade de tolerant. Un system soft poate fi transformat in sism hard prin constrangerea termenilor de timp.  Fara constrangeri Taskurile trebuiesc planificate a.i. SISTEME DE OPERARE IN TIMP REAL Sistemul de operare are rolul de a realize gestiunea resurselor hardware si software ale sistemului de calcul. sa devina strice. Daca termenul a expirat. sa respecte termenele strice sau mai putin stricte.i.3. constrangeri strice. a.  Termene soft – sisteme care trebuie sa repsecte termenele cu un grad de flexibilitate.

Gestionarea apeluri catre functiile system .Gestionarea comunicatiilor .sisteme de uz general ( GPOS ) . Tipuri de sisteme de operare: . ) – Abstractizeaza partea hardware care o folosesc Diferente intre tipuri: – Rtos au fiabilitate mai mare – Rtos au aplicatii facute stric pentru scopul pentru care lucreaza – Rtos au o adaptare mai buna la resursele puse la dispozitie – Rtos au viteza de lucru mai mare. Planificatorul 2. intreruperi etc. fire.Platform pentru rularea programelor si aplicatiilor. timere ii) Procese..sisteme de timp real ( RTOS ). flash etc. Exista module care transforma sistemul de operare general in system de operare de timp real.Controlul dispozitivelor de i/o . Obiecte de timp real i) Temporizatoare. RealTimeLinks. taskuri iii) Interrupt service routine iv) Asynchronous service routine v) Evenimente 1/28/2013 3 . Elemente commune prezente in ambele timpuri de SO: – Ambele tipuri au un grad de multiprocesare – Gestioneaza resursele hardware si software existente – Ofera servicii programelor de aplicatii( exp: i/o. strans legate de platform FreeRTOS.) – Gpos au o portabilitate mai buna a aplicatiilor SISTEME DE OPERARE DE TIMP REAL Structura RTOS:  Sarcina de planificare – planificator  Obiecte de timp real  Servicii Elementele unui RTOS: 1. termenul limita este mult mai bine respectat – Rtos au un necesar de memorie mai redus – Algoritmii de planificare sunt adaptati aplicatiilor de timp real – Rtos prezinta support pentru sisteme inglobate fara disc( incarcare din ROM. comunicatii.Manipularea fisiserelor .

gestionare a timpului/ memorie/ dispozitivelor IO . temporizarea. Facilitati obiecte: apel functie de system. iar in central nucleului se afla planificatorul. gestionare comunicatiilor. Planificatorul are un dispecer care salveaza informatii legate de starea taskuri-lor. (parte statica ) Evenimentele Parte dinamica – operatii pe care le executa nucleul asupra obiectele sistemului de operare de timp real. intreruperi. 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 aplicatie  Mediului de executie  Sistemului de operare  Masina  Hardware 1/28/2013 4 . asigura schimbarea de context si predarea controlului executie noului task. Flux de control al executiei taskurilor: .context task .context kernel Obiectele Obiectele sunt niste context specifice apelate de kernel.tratare a intreruperiilor  Planificatorul RT In central sistemului de operare se afla nucleul ( kernelul ). Servicii .vi) Mutex vii) Semafoare binare sau generalizate viii) Cozei de mesaje ix) Cutii postale x) Canale de comunicatie ( pipes ) 3. gestionare a resurselor. Planificatorul stabileste pe baza un algoritmi ordinea de executie a taskurilor ( care va fi urmatorul task ). gestionare serviciilor periferice.context intrerupere . Servicii Planificare.

reglare ). se poate renunta la protective.  Sporadice – utilizate pentru a raspunde unor solicitari a caror aparitie nu este specifica celorlalte procese. perioada de executie a intregului task T si timpul limita Tl. Task: imaginea unui program aflat in executie. Prezinta trei timpi: timpul de calcul Tc. Are posibilitatea de a lucre in propriul spatiu de memorie. In unele situatii pot fi assimilate proceselor aperiodice.modul preemptive ( planificatorul are grija sa aloce o felie de timp. comunicare intre procese Micronucleu -> planificarea proceselor Nanonucleu -> controlul proceselor. gestiunea de memorie Procesele: Un process este un program aflat in executie ( GPOS ). cresterea sau scaderea frecventei este conditionate de incarcarea sau eliberarea procesului. frecventa in anumite situatii poate sa creasca.Utilizator : System de operare . Are un ID propriu si prezinta facilitate de comunicare si sincronizare. spatial de memorie propriu. reactualizarea unor variabile de stare. implementarea unor algoritmi de control. Procesele se implementeaza astfel incat frecventa de executie sa nu scada sub o anumita frecventa minima. in carcat din memorie.  Aperiodice – frecventa minima la care trebuie sa se execute.  Facilitate de protective  Este controlat la nivel de client prin PID  Prezinta facilitate de comunicare si sincronizare Fire de executie :  Au un spatiu comun de memorie  Cod separate  Prezinta facilitate de sincronizare  Fiindca ruleaza doar o singura aplicatiei. Taskurile pot functiona in : . avem:  Periodice – operatiuni care se repeat la interval egale de timp ( citirea unor date de la traductoare. apar 1/28/2013 5 . TIPURI DE PROCESE In functie de modalitatea de executie. dar caracterizate de o perioada de minima de aparitie a evenimentelor.> interfata utilizator Executiv -> support fisiere Nucleu -> sincronizare.modul cooperativ .

insa se pot implementa taskuri si cu nivele diferite. limiteaza numarul de taskuri care pot fi create in cadrul unei aplicatii. semafoarele. prezentand avantajul optimizarii intrarilor si iesirilor. iar alteori este folosit doar in bucla infinita. ruleaza la nivele de prioritate ridicate. 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 ). oblige programele sa aleaga un algoritm de planificare.  Implementarea la nivel de taskuri sau corutine permite descompunerea functional a unui system. toate sunt obiecte ale sistemului de operare.prioritati. elibera memoria. obiecte ce pot fi planificate si care concureaza pentru utilizarea timpului processor. algoritmi de planificare. Nivele de prioritate existente sunt limitate. de tratare a exceptiilor. de nivele de prioritate si de procese care pot avea acelasi nivel de prioritate. find utile initalizarilor so. Caracteristici commune:  Succesiunea indepenta de instructiuni care are allocate resurse pentru executie  Procesele concureaza intre ele pentru a fi executate de process si pentru a accesa anumite resurse ale sistemului. corutinele. Procesele sistemului cu mici execptii. firele de executie. de generare a semnalului de tact. Orice task este caracterizate de 5 variabile :  Nume  Identificator unic 1/28/2013 6 . ** Procesul IDLE are cea mai mica prioritate din system. Limitarea nr. In RTOS avem 2 tipuri de taskuri:  Procese system – sunt create de sistemul de operare. un taske care este pornit automat si care se foloseste de obicei la eliberarea memoriei.  Complicatii serioase la gestionarea taskurilor. politici ) Procesele. utilizeaza doar timpul liber al procesorului in mai multe situatii pentru a optimiza. Exemple de procese: procese de generare a mesajelor system. Sistemele de operare permit taskuri cu acelasi nivel de prioritate. sunt create de utilizator si sunt dependente de natura aplicatiei. taskurile. initializarea lor se face la pornirea sistemului. **  Procese utilizator. Mai exista si taskul IDLE. de depanare.

de aceea se utilizeaza o stiva comuna. prezinta urmatoarele sarcini:  Atribuirea numelui.  Delayed ( amanat. taskurile component trec prin una sau mai multe stari posibile. STARILE PROCESELOR/ TASKURILOR In decursul evolutiei unei aplicatii. rulare in parallel. Creare taskurilor din punct de vedere al utilizatorului. structura si regula de evolutie sunt specific fiecarui SO. In RTOS sunt resurse putin. Alocarea stivei pentru fiecare task este o pierdere de resurse. stiva proprie. unui task I se acorda: id-ul unic. Tipuri stari :  Active ( in executie ) – stare in care taskul este active ( prioritatea cea mai mare)  Blocata – semnificatia starii depinde de SO in cauza. Specificata de utilizator. multiprocessor. prioritatea  Dimensiunea stivei  Subrutina procesului/ taskului Din punct de vedere al RTOS. Fiecare task este intr-o stare. blocat ) – task care a fost amanat. poate ingloba: amanre si asteptare  Gata de executie ( ready ) – procesul este gata de executie. iar de-a lungul timpul trece prin mai multe stari. Numarul de stari este dependent de fiecare SO in parte. dar nu au prioritatea necesara pentru a fi executate  Amanita – starea in care procesul asteapta trecerea unei 1/28/2013 7 . Task : cod propriu. Evolutia taskurilor si proceselor La firele de executie se consuma prea mult timp cu crearea proceselor. iar timpul primit trebuie sa fie utilizat cat mai efficient. I se creaza automat blocul de control asociat si I se aloca stiva de dim. In RTOS se implementeaza notiunea de automat finit. Prioritatea  Stiva  Bloc de control al taskului. In FreeRTOS exista 4 stari posibile:  Running ( ruleaza ) – taskul current utilizeaza procesorul ( 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. ex: trebuie sa iasa din executie pentru un anumit timp setat.

G A E  G : gata de executie  A B : blocat I  E : executie  S : suspendat  A : asteptare  D : adormita  I : tratarea intreruperiilor Din B in G se trece printr-o coada de astepare. blocat. pregatite de executie. el concureaza la resursele 1/28/2013 8 . rulat la inceput G E planificare G planif S deplanif deplanificare utilizare B resursa creare nedisponibila planificare E deplanificare D temporizare termin ast. Observatie : cand un task este ready.    temporizari Suspendata – de obicei utilize pentru depanarea sistemului Asteptare – specifica taskurilor care asteapta eliberarea unor resurse sau aparitia unor evenimente Tratare a intreruperilor – se trece la aparitia unei intreruperi Adormita – 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 + run Model cu 3 stari : gata de executie.

procesorului impreuna cu celelalte taskuri in acea stare. La “deblocarea” taskului se poate trece in starea de executie. 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. astfel ca acest algoritm determina tranzitia taskurilor dintr-o stare in alta. Din punct de vedere al programatorului. Planificarea taskurilor In planificarea preemptive se realizeaza automat prin intermediul algoritmului de planificare. RTOS: apeluri de system pentru schimbarea starii taskurilor (daca schimbam prioritatea este schimbat taskul cu prioritate mare ). In marea majoritate pe platformele monoprocesor. in caz contrar se ajunge la alocarea unor resurse sau a intregului system. exista un set de functii pentru controlul starii taskurilor:  suspendarea – vTaskSuspend()  reluarea executie – vTaskResume()  intarzierea executiei – vTaskDelay()/ vTaskDelayUntil() 1/28/2013 9 . exit () )  poate presupune sau nu eliberarea resurselor folosite de catre acesta  intotdeauna terminarea unui process trebuie realizata dupa eliberarea tuturor resurselor. Trecerea dintr-o stare in alta a unui task se face prin niste apeluri special de system:  vTaskSuspend  vTaskResume  vTaskCreate ( taskul se creaza in starea ready )  vTaskSchedulerTask ( disponibilitatea taskurilor ) Regula presupune pargurea unui numar de pasi: .creara de procese . a facut un apel la o functie care introduce o intarziere a executiei ). 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.taskurile sunt facute disponibile sistemului de operare Eliminarea taskurilor:  scoaterea taskului din evidenta sistemului de operare( vTaskDelete. a facut un apel ce necesita apariata unui eveniment. data are prioritatea mai mare si in starea ready in celelalte situatii. Starea blocata a fost introdusa pentru a permite taskurilor cu prioritate mai mica sa fie executate.intializarea RTOS .

1/28/2013 10 .semafor generalizat ( numerator ) . Apeluri system de intreruperi: xSemaphoreGiveFromISR. xQueueDelete. Mecanisme de rezolvare a problemelor ( FreeRTOS ): . vSemaphoreCreateCounting. Coada de mesaje: xQueueCreate. Determinam fiecare secventa de cod ce timp dureaza si planificam astfel codul sa fie indeplinita conditia de timp limita. Resursa critica se gaseste in regiune critica( zona de cod in care un task acceseaza resursa ).cozi de mesaje Creare unui semafor binary: vSemaphoreCreateBinary. Resursele sunt mult mai evaluate( ARM ).semafor binary . Exista obligativittea asigurarii sincronizarii la nivelul resursei. xQueueSendToBack. Anumite secvente pot aparea asincron: intrerupere( pseudo parallelism ). xSemaphoneCreateMutex. corutine. procese/ taskuri. xQueueReceive.i sa fie informate cand resursa este libera Sincronizarea poate duce la problema: infometare( starvation ). xQueueSend. sincronizare. impas ( dead – lock ). Activitatile taskurilor trebuie sa fie sincronizate din 2 puncte de vedere:  Blocarea accesului la resursa cand este utilizata de mai multe taskuri simultan  Taskurile trebuie coordonate a. Problema controlului concurrent: comunicare.   repornirea proceselor – vTaskResumeAll() modificarea prioritatii blocarea/ deblocarea – vEnterCritical()/ vPortExitCritical() CONTROLUL CONCURENTEI IN SISTEME DE OPERARE IN TIMP REAL O aplicatie de timp real poate fi implementata in 2 stiluri:  Structurat – aplicatia se desfasoara pe un singur fir. xQueueSendToFront. xSemaphoreTake. 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. Programatorul rezolva problemele de concurenta. xSemaphoreGive.  Programarea paralela – fire de executie.