Proiectarea aplicaţiilor în timp real. Introducere

Σχετικά έγγραφα
Metode iterative pentru probleme neliniare - contractii

5.4. MULTIPLEXOARE A 0 A 1 A 2

Curs 10 Funcţii reale de mai multe variabile reale. Limite şi continuitate.

(a) se numeşte derivata parţială a funcţiei f în raport cu variabila x i în punctul a.


Curs 14 Funcţii implicite. Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi"

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor X) functia f 1

III. Serii absolut convergente. Serii semiconvergente. ii) semiconvergentă dacă este convergentă iar seria modulelor divergentă.

riptografie şi Securitate

Curs 1 Şiruri de numere reale

Planul determinat de normală şi un punct Ecuaţia generală Plane paralele Unghi diedru Planul determinat de 3 puncte necoliniare

Aplicaţii ale principiului I al termodinamicii la gazul ideal

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor

V.7. Condiţii necesare de optimalitate cazul funcţiilor diferenţiabile

5. FUNCŢII IMPLICITE. EXTREME CONDIŢIONATE.

Metode de interpolare bazate pe diferenţe divizate

a. 11 % b. 12 % c. 13 % d. 14 %

Criptosisteme cu cheie publică III


Curs 4. RPA (2017) Curs 4 1 / 45

Analiza în curent continuu a schemelor electronice Eugenie Posdărăscu - DCE SEM 1 electronica.geniu.ro

MARCAREA REZISTOARELOR

1.7. AMPLIFICATOARE DE PUTERE ÎN CLASA A ŞI AB

Sisteme diferenţiale liniare de ordinul 1

Curs 4 Serii de numere reale

Integrala nedefinită (primitive)

V O. = v I v stabilizator

DISTANŢA DINTRE DOUĂ DREPTE NECOPLANARE

Valori limită privind SO2, NOx şi emisiile de praf rezultate din operarea LPC în funcţie de diferite tipuri de combustibili

Fig Impedanţa condensatoarelor electrolitice SMD cu Al cu electrolit semiuscat în funcţie de frecvenţă [36].

CIRCUITE INTEGRATE MONOLITICE DE MICROUNDE. MMIC Monolithic Microwave Integrated Circuit

Examen AG. Student:... Grupa:... ianuarie 2011

5.5. REZOLVAREA CIRCUITELOR CU TRANZISTOARE BIPOLARE

2. Circuite logice 2.4. Decodoare. Multiplexoare. Copyright Paul GASNER

Asupra unei inegalităţi date la barajul OBMJ 2006

Modelare şi simulare Seminar 4 SEMINAR NR. 4. Figura 4.1 Reprezentarea evoluţiei sistemului prin graful de tranziţii 1 A A =

RĂSPUNS Modulul de rezistenţă este o caracteristică geometrică a secţiunii transversale, scrisă faţă de una dintre axele de inerţie principale:,

Esalonul Redus pe Linii (ERL). Subspatii.

Subiecte Clasa a VIII-a

Seminar 5 Analiza stabilității sistemelor liniare

a n (ζ z 0 ) n. n=1 se numeste partea principala iar seria a n (z z 0 ) n se numeste partea

Laborator 11. Mulţimi Julia. Temă

Asist. Dr. Oana Captarencu. otto/pn.html.

Capitolul 14. Asamblari prin pene

riptografie şi Securitate

Subiecte Clasa a VII-a

Măsurări în Electronică şi Telecomunicaţii 3. Osciloscopul

Examen AG. Student:... Grupa: ianuarie 2016

2. Sisteme de forţe concurente...1 Cuprins...1 Introducere Aspecte teoretice Aplicaţii rezolvate...3


Capitolul ASAMBLAREA LAGĂRELOR LECŢIA 25

prin egalizarea histogramei

Laborator 1: INTRODUCERE ÎN ALGORITMI. Întocmit de: Claudia Pârloagă. Îndrumător: Asist. Drd. Gabriel Danciu

SIGURANŢE CILINDRICE

CIRCUITE LOGICE CU TB

Geometrie computationala 2. Preliminarii geometrice

Conice. Lect. dr. Constantin-Cosmin Todea. U.T. Cluj-Napoca

COLEGIUL NATIONAL CONSTANTIN CARABELLA TARGOVISTE. CONCURSUL JUDETEAN DE MATEMATICA CEZAR IVANESCU Editia a VI-a 26 februarie 2005.


4. Măsurarea tensiunilor şi a curenţilor electrici. Voltmetre electronice analogice

Componente şi Circuite Electronice Pasive. Laborator 3. Divizorul de tensiune. Divizorul de curent

SERII NUMERICE. Definiţia 3.1. Fie (a n ) n n0 (n 0 IN) un şir de numere reale şi (s n ) n n0

CURS 3. Modelare cu Retele Petri

Capitolul 4 PROPRIETĂŢI TOPOLOGICE ŞI DE NUMĂRARE ALE LUI R. 4.1 Proprietăţi topologice ale lui R Puncte de acumulare

Stabilizator cu diodă Zener

R R, f ( x) = x 7x+ 6. Determinați distanța dintre punctele de. B=, unde x și y sunt numere reale.

FLUXURI MAXIME ÎN REŢELE DE TRANSPORT. x 4

Seminariile Capitolul X. Integrale Curbilinii: Serii Laurent şi Teorema Reziduurilor

Curs 2 DIODE. CIRCUITE DR

SEMINAR 14. Funcţii de mai multe variabile (continuare) ( = 1 z(x,y) x = 0. x = f. x + f. y = f. = x. = 1 y. y = x ( y = = 0

2.1 Sfera. (EGS) ecuaţie care poartă denumirea de ecuaţia generală asferei. (EGS) reprezintă osferă cu centrul în punctul. 2 + p 2

Erori si incertitudini de măsurare. Modele matematice Instrument: proiectare, fabricaţie, Interacţiune măsurand instrument:

Lectia VI Structura de spatiu an E 3. Dreapta si planul ca subspatii ane

Problema a II - a (10 puncte) Diferite circuite electrice

Aparate de măsurat. Măsurări electronice Rezumatul cursului 2. MEE - prof. dr. ing. Ioan D. Oltean 1

Principiul incluziunii si excluziunii. Generarea şi ordonarea permutărilor. Principiul porumbeilor. Pri

TRANSFORMATOARE MONOFAZATE DE SIGURANŢĂ ŞI ÎN CARCASĂ

Εμπορική αλληλογραφία Ηλεκτρονική Αλληλογραφία

Laborator 6. Integrarea ecuaţiilor diferenţiale

2CP Electropompe centrifugale cu turbina dubla

Câmp de probabilitate II

LUCRARE DE LICENŢĂ. Algoritmi de planificare a resurselor in sisteme de operare de timp real

Exemple de probleme rezolvate pentru cursurile DEEA Tranzistoare bipolare cu joncţiuni

Componente şi Circuite Electronice Pasive. Laborator 4. Măsurarea parametrilor mărimilor electrice

Curs 2 Şiruri de numere reale

Sisteme liniare - metode directe

13. Grinzi cu zăbrele Metoda izolării nodurilor...1 Cuprins...1 Introducere Aspecte teoretice Aplicaţii rezolvate...

TEMA 9: FUNCȚII DE MAI MULTE VARIABILE. Obiective:

Definiţia generală Cazul 1. Elipsa şi hiperbola Cercul Cazul 2. Parabola Reprezentari parametrice ale conicelor Tangente la conice

VII.2. PROBLEME REZOLVATE

Activitatea A5. Introducerea unor module specifice de pregătire a studenţilor în vederea asigurării de şanse egale

Realizat de: Ing. mast. Pintilie Lucian Nicolae Pentru disciplina: Sisteme de calcul în timp real Adresă de

Analiza funcționării și proiectarea unui stabilizator de tensiune continuă realizat cu o diodă Zener

3. Momentul forţei în raport cu un punct...1 Cuprins...1 Introducere Aspecte teoretice Aplicaţii rezolvate...4

Sortare. 29 martie Utilizarea şi programarea calculatoarelor. Curs 16

TAD Stiva (STACK) Observaţii: 1. sunt aşezate ordonat unele peste altele. Un element nou se adaugă în stivă deasupra elementului cel mai recent

Capitolul 4. Integrale improprii Integrale cu limite de integrare infinite

Metode Runge-Kutta. 18 ianuarie Probleme scalare, pas constant. Dorim să aproximăm soluţia problemei Cauchy

* K. toate K. circuitului. portile. Considerând această sumă pentru toate rezistoarele 2. = sl I K I K. toate rez. Pentru o bobină: U * toate I K K 1

5.1. Noţiuni introductive

Transcript:

Proiectarea aplicaţiilor în timp real Introducere 1

Clasificare a sistemelor de calcul Sisteme transformaţionale Sisteme reactive Sisteme interactive Sisteme de timp real De obicei sistemele pot fi încadrate în mai multe categorii

Sistemele transformaţionale Durata operaţiilor este limitată Timpul de execuţie nu este critic Rezultatele sunt independente de momentul la care sunt produse Exemple: Programe de calcul matematic Compilatoare Programe contabile

Sisteme interactive Sunt în dialog permanent cu unul sau mai mulţi utilizatori Răspund doar dacă li se solicită în mod explicit Timpul de răspuns nu are influenţă mare asupra răspunsului Exemple: Sisteme de proiectare asistată de calculator Programe de navigare Internet Procesoare de text, editoare, tabele de calcul

Sisteme de timp real Sunt conectate cu un anumit proces (exterior sistemului) Trebuie să răspundă într-un interval de timp limitat solicitărilor externe Rezultatele obţinute depind de momentul la care au fost produse De obicei funcţionează în mod continuu Exemple: controlul roboţilor controlul sistemelor de acţionare electrică sisteme de comunicaţii

Sisteme de timp real Trebuie să satisfacă următoarele constrângeri: trebuie să ofere un rezultat/răspuns într-un timp dat acţiunile/răspunsurile nu mai sunt de obicei de nici un folos necesită predictibilitate şi desfăşurare în timp

Caracteristicile sistemelor RT Timpul de răspuns Procese multiple Sincronizarea componentelor Determinismul Flexibilitatea Adaptabilitatea Nereversibilitatea

Timp de răspuns Intervalul de timp dintre momentul în care se modifică una sau mai multe intrări ale sistemului şi momentul în care apare răspunsul la ieşirile acestuia În cazul sistemelor complexe timpul de răspuns trebuie corelat cu o anumită planificare a răspunsurilor

Procese multiple Sistemul poate executa aplicaţii care sunt organizate sub forma mai multor procese care interacţionează între ele şi cu exteriorul Procesele pot fi: periodice aperiodice cvasiperiodice Utilizarea proceselor necesită existenţa unor mecanisme specifice: planificare, comunicare între procese, tratarea excepţiilor

Sincronizarea componentelor cu timpul fizic Activitatea subsistemelor trebuie sincronizată cu dinamica proceselor din lumea reală Sistemul trebuie să prelucreze informaţii care sunt disponibile doar un anumit interval de timp (în afara intervalului datele respective nu mai sunt de folos)

Determinism Un sistem este determinist dacă pentru fiecare stare şi combinaţie de intrări va trece într-o stare următoare unică şi va furniza un set unic de valori de ieşire Anticipând comportamentul unui sistem permite planificarea resurselor şi rezervarea lor în avans.

Flexibilitatea şi adaptabilitatea Are în vedere posibilitatea de dezvoltare ulterioară a subsistemelor Permite utilizarea unui sistem pentru aplicaţii diferite prin realizarea unor modificări minime Permite adăugarea sau dezactivarea unor funcţionalităţi

Nereversibilitatea Datorită legăturii cu mediul exterior, succesiunea evenimentelor dictată de acesta nu poate fi prevăzută în avans Pentru sistemele complexe nu pot fi controlate toate relaţiile cauzale Anumite activităţi efectuate nu mai pot fi eliminate, sistemul nu mai poate reveni la starea anterioară

Clasificarea sistemelor RT Sisteme RT hard Sisteme RT soft Sisteme RT ferme

Sisteme RT hard Trebuie să răspundă la evenimente, obligatoriu, în intervalele de timp impuse prin constrângeri În cazul în care nu este respectată una dintre constrângeri, sistemul îşi pierde funcţionalitatea Costul în cazul în care nu se respectă constrângerea poate fi foarte mare şi poate implica vieţi omeneşti

Sisteme RT soft Trebuie să răspundă la evenimente, obligatoriu, timpul de răspuns mediu trebuind să se încadreze în intervalele de timp impuse prin constrângeri. Se acceptă o anumită toleranţă sau diferite nivele de toleranţă în cazul unor întârzieri În cazul unor întârzieri nu apare o cădere a sistemului (incapacitate de funcţionare). Pot să apară costuri, acestea fiind proporţionale cu mărimea întârzierilor

Sisteme RT ferme Timpul de răspuns poate fi uneori depăşit dar, după ce a fost depăşit, rezultatele obţinute nu mai sunt de folos

Aplicaţii ale sistemelor RT

Aplicaţiile sistemelor de timp real Telecomunicaţii Reţele de calculatoare Controlul proceselor industriale Sisteme de achiziţie şi măsurare Sisteme încapsulate Aparatură de uz casnic Echipamente militare Vehicule de transport terestru şi aerian Jocuri video

Concepte greşite legate de sistemele RT Sistemele RT = sisteme rapide Avansul tehnologic în hardware va rezolva problemele de timp real Nu există o ştiinţă a sistemelor RT Cercetarea în domeniul sistemelor RT se reduce la acordarea parametrilor de performanţă

Arhitecturi Sisteme centralizate Sisteme descentralizate Sisteme distribuite Sisteme descentralizate şi distribuite

Tehnici de realizare a sistemelor RT Specificare şi proiectare Metode prin care se verifică funcţionarea din punct de vedere logic şi se verifică constrângerile de timp Proiectare arhitecturală Folosirea modulelor gata realizate şi verificarea constrângerilor de timp Folosirea diferitelor arhitecturi Implementare Utilizarea limbajelor cu primitive adecvate Utilizarea sistemelor software cu suport pentru timp real (nucleu sau sistem de operare) pentru aceste primitive

Limbajele pentru sistemele RT Trebuie să aibă următoarele caracteristici: Să poată manipula intrările şi ieşirile sistemului Să aibă primitive pentru gestionarea proceselor Posibilitatea de tratare a întreruperilor Să permită definirea tipurilor de date Să permită introducerea de cod în limbaj de asamblare Să aibă primitive pentru manipularea timpului

Consideraţii la realizarea unui sistem RT Predictibilitatea trebuie să permită determinarea în avans a: Comportamentului când sunt nerespectate constrângerile de timp Comportamentul când ipotezele de lucru nu sunt respectate Timpul de acces şi de răspuns Comportamentul în cazul informaţiilor complete Cum va varia calitatea rezultatelor

Consideraţii la realizarea unui sistem RT Optimizarea sistemului Optimizarea utilizării procesorului Optimizarea utilizării memoriei Calculul celui mai defavorabil caz Accesul concurent

Bibliografie Tiberiu S. Letia, Sisteme de timp real, Editura Albastra, Cluj-Napoca, 2000 Qing Li, Carolyn Yao, Real-Time Concepts for Embedded Systems, CMP Books, 2003

Programarea sistemelor de timp real Implementarea sistemelor RT 1

Implementarea sistemelor RT cu nucleu RT sau fără sincrone sau asincrone cu declanşarea acţiunilor funcţie de timp sau funcţie de eveniment

Implementări sincrone cu interogare în buclă execuţie ciclică pe bază de corutine pe bază de stări bazate pe limbaje sincrone

Avantajele implementărilor sincrone momentul comutării de la un proces la altul este cunoscut dinainte acţiunile necesare comutării sunt reduse nu utilizează întreruperi deci nu este necesară salvarea contextului nu există probleme de acces concurent la resurse comportamentul este previzibil

Interogare în buclă cunoscută sub numele polling loop structura generală do { if (eveniment1) actiune1; if (eveniment2) actiune2;. if (evenimentn) actiunen; } while(1) //bucla infinita

Execuţie ciclică Poate fi considerată o formă generalizată a interogării în buclă Principiu se crează o planificare a proceselor presupunând că ele sunt independente se implementează această ordine ca apeluri succesive întro buclă infinită Caracteristici Ordinea de execuţie rămâne mereu aceeaşi Anumite restricţii de precedenţă pot fi implementate cu uşurinţă

Execuţie ciclică Macrociclu = perioada de timp a întregii secvenţe Pot exista secvenţe diferite pentru moduri de funcţionare diferite Macrociclul este împărţit în cadre temporale (pentru a lua în considerare restricţiile de timp) Dacă au aceeaşi durată, cadrele poartă denumirea de microcicluri

Probleme cu execuţiile ciclice Procesele îndelungate trebuie scindate ceea ce poate duce la: probleme legate de consistenţa datelor probleme legate de respectarea condiţiilor de precedenţă

Acţiuni şi riscuri la depăşirea cadrelor temporale Acţiune Nimic Oprirea procesului Oprirea procesului dar emisia unei excepţii Risc Posibilitatea efectului de avalanşă Un proces care nu a cauzat depăşirea poate rata termenul limită Structurile de date por rămâne într-o stare inconsistentă Utilizatorul poate implementa politica de tratare a excepţiei în modul dorit

Avantajele execuţiilor ciclice Secvenţă predefinită de procese constrângerile pot fi îndeplinite Nu necesită nucleu RT Nu este preemptiv nu există activitate suplimentară datorită comutării proceselor nu este necesară protecţia resurselor la accesul simultan Planificarea este flexibilă în funcţie de aplicaţie

Dezavantajele execuţiei ciclice Orice modificare a unui proces presupune: verificarea secvenţei proceselor scindarea proceselor trebuie revizuită Aceleaşi probleme pentru cazul în care este adăugat un nou proces Eficienţă scăzută datorită utilizării unor procese ciclice pentru tratarea evenimentelor sporadice

Cod bazat pe stări/tranziţii Se bazează pe instrucţiuni if-then şi automate finite Procesele sunt suspendate/reluate fără pierderea datelor critice Simple de înţeles Presupun că procesele pot fi concepute să aibă mai multe stări

Algoritmul principal (1) while (1) { } citeste_starea_intrarilor determina_tranzitia_valida executa_tranzitiile reactualizare_stare reactualizare_actiune

Algoritmul principal (2) while (1) { citeste_intrarile while (1) { for (fiecare_ramura) determina_stare_urmatoare; } while (1) for (fiecare_ramura) actualizeaza_stare_urmatoare; } while (1) { for (fiecare_ramura) activeaza_actiune; } }

Exemplu typedef enum {stare1,,staren} stari; // n este # de stari typedef enum {in1, inn, EOF} alfabet; typedef stari linie_tabel[n] ; int move_forward () { //implementeaza tranzitia intre stari stari stare; alfabet in; linie_tabel tabel[m]; // m este dimensiunea alfabetului do { get(in); //citeste un simbol din fluxul de intrare stare = tabel[ord(in)][stare]; // tranzitie executa_proces(stare); // executa procesul indicat } while (in == EOF); // ultimul simbol } int executa_process(stari stare) { switch (stare) { case stare1: proces1(); break; // executa proces 1 case stare2: proces2; break; // executa proces 2. case staren: procesn(); break; // executa proces n default: stare1; } }

Corutine Corutina este un program care comunică cu modulele adiacente ca şi cum acestea ar fi subrutine de intrare şi ieşire. Corutinele sunt la acelaşi nivel ierarhic fiecare executându-se ca şi cum ar fi programul principal fără ca să existe de fapt un program principal

Caracteristicile corutinelor Concept bazat pe relaţii simetrice între subrutine datele locale rămân nemodificate între momentul în care corutina pierde controlul şi momentul în care aceasta îl recapătă execuţia corutinei este suspendată când pierde controlul procesorului şi nu se reia până când nu îşi recapătă acest control Subrutinele se reiau de la locul în care au fost întrerupte

Caracteristicile corutinelor controlul este explicit transferat de la o corutină la alta mecanismul corutinelor este adesea numit cuasiparalelism

Implementarea corutinelor Implementările simple se bazează pe interschimbarea adresei numărătorului de instrucţiuni Implementările mai complexe utilizează un dispecer dispecerul menţine valorile numărătorului de instrucţiuni pentru o listă de procese execuţia este prin rotaţie (round-robin) comunicare între procese se face prin intermediul variabilelor globale

Exemplu int proces_a() { int proces_b() { do do switch (starea) { switch (stareb) { case 1: fazaa1; case 1: fazab1; case 2: fazaa2; case 2: fazab2; case 3: fazaa3; case 3: fazab3; case 4: fazaa4; } } } } unde : starea şi stareb sunt stări ale numărătoarelor de adresă gestionate de dispecer

Exemplu while(1){ costate{... } // task 1 } costate{ // task 2 waitfor( buttonpushed() ); turnondevice1(); waitfor( DelaySec(60L) ); turnondevice2(); waitfor( DelaySec(60L) ); turnoffdevice1(); turnoffdevice2(); } costate{... } // task n

Avantajele corutinelor simple şi eficiente secvenţă predeterminată constrângerile pot fi îndeplinite nu necesită nucleu RT nu foloseşte preemţiunea activitatea suplimentară pentru comutare este redusă nu necesită protejarea resurselor modul de stabilire a secvenţei este la dispoziţia utilizatorului

Dezavantajele corutinelor O corutină care îşi încheie execuţia determină terminarea execuţiei aplicaţiei nu există o modalitate de verificare a îndeplinirii restricţiilor în momentul execuţiei execuţia nu este strict periodică

Implementări asincrone evenimentele sunt detectate de sistemele periferice evenimentele sunt semnalizate prin întreruperi observabilitatea condiţiei poate fi programată nu necesită nucleu RT se bazează pe procese sporadice

Avantajele sistemelor asincrone nu necesită nucleu RT nu necesită scindarea proceselor uşor de implementat timp de răspuns mic

Dezavantajele sistemelor asincrone secvenţele se bazează pe o prioritate a proceselor fixată preemţiunea implică: activităţi suplimentare pentru salvarea şi restaurarea contextului necesitatea protejării resurselor comune

Sisteme bazate pe întreruperi Pot folosi întreruperi: Hardware şi software cele software implică un ceas Periodice numite sisteme cu timp de execuţie constant Aperiodice numite sisteme sporadice Mixte numite sisteme hibride Dispecerizarea realizată de subrutine de tratare a întreruperilor Contextul trebuie salvat

Sisteme hibride folosesc timpul mort al procesorului pentru a executa procese utile execută procese activate prin întreruperi în prim plan şi procese executate ciclic în fundal folosesc extensia conceptului de corutine pentru a lua în considerare comportamentul asincron

Sistem de operare Un sistem de operare (SO) este un program care realizează gestionarea resurselor hardware şi software ale unui calculator Un SO realizează sarcini de bază cum ar fi: controlul şi alocarea memoriei gestionarea apelurilor către funcţiile sistem controlul dispozitivelor de intrare şi ieşire gestionarea comunicaţiilor manipularea fişierelor

Sisteme de operare În unele cazuri pune la dispoziţia utilizatorului o interfaţă grafică (Windows OS, MacOS) Constituie o platformă pentru alte programe sistem sau pentru programele de aplicaţii

Clasificare SO după tehnologie tip Unix altele (DOS, Windows) după tipul de licenţă contra cost gratuită după stadiul de utilizare ieşite din uz (CP-M, DOS) în uz (Linux, Windows)

Clasificarea SO după tipul de utilizare uz general (GPOS) (Linux, Windows) numai pentru calculatoare tip desktop (MS-DOS, MacOS) numai pentru calculatoare de tip mainframe (VM) pentru sisteme de timp real (RTOS) pentru sisteme încapsulate (embedded) pentru PDA după scop profesionale pentru cercetare hobby

Elemente comune GPOS şi RTOS au un anumit grad de multiprocesare gestionează resursele hardware şi software oferă servicii programelor de aplicaţii abstractizează partea hardware

Diferenţe între RTOS şi GPOS fiabilitate mai mare a RTOS adaptarea mai bună la resursele aplicaţiei viteză de lucru mai mare reducerea necesarului de memorie algoritmii de planificare a proceselor adaptate aplicaţiilor RT suport pentru sisteme înglobate fără disc (încărcarea din memoria ROM sau RAM) portabilitate mai bună pentru alte platforme hardware

RTOS Un RTOS este un program care: realizează o planificare a execuţiei programului bazată pe constrângeri stricte de timp gestionează resursele sistemului oferă o bază consistentă pentru dezvoltarea aplicaţiilor

Caracteristicile RTOS RTOS pot fi de la foarte simple la foarte complicate sunt de obicei scalabile (permit adaptarea la resursele existente) poate conţine doar un nucleu sau poate fi o combinaţie de mai multe module

Structura unui RTOS Majoritatea RTOS conţin: Planificator Obiecte RT Servicii

Structura unui sistem cu RTOS Programul de aplicaţie Programul de aplicaţie RTOS Protocoale Protocoale reţea reţea Sistem de Sistem de fişiere fişiere Nucleu Nucleu Alte Alte componente componente Drivere Drivere dispozitive dispozitive Facilităţi de Facilităţi de depanare depanare Dispozitiv Dispozitiv e e I/O I/O BSP (board support package) BSP (board support package) Hardware-ul sistemului de implementare Hardware-ul sistemului de implementare

Elementele unui RTOS

Planificatorul Este elementul de bază al unui RTOS Pe baza unor algoritmi stabileşte care este următorul proces care se execută

Obiectele Construcţii specifice nucleului care permit programatorilor să creeze aplicaţii RT Obiecte uzuale procese semafoare cozi de mesaje cutii poştale evenimente etc

Servicii sunt operaţii pe care nucleul le execută asupra obiectelor Serviciile pot fi: temporizări tratarea întreruperilor gestionarea resurselor gestionarea dispozitivelor periferice gestionarea comunicaţiilor

Nuclee RT Furnizează trei funcţii: Planificarea proceselor Dispecerizarea proceselor Comunicarea între procese Prezintă mai multe nivele Nivelul aplicaţie Nivelul mediului de execuţie Nivelul sistemului de operare Nivelul maşină Nivelul hardware

Nucleul RT Utilizatori Interfaţa utilizator Suport pentru fişiere şi disc Comunicare între procese şi sincronizare Planificarea proceselor Controlul proceselor Gestionarea memoriei Sistemul de operare Executiv Nucleu Micronucleu Nanonucleu Hardware

Programarea sistemelor de timp real Planificare proceselor 1

Tipuri de procese periodice aperiodice hiperperiodice sporadice

Procese periodice Utilizate pentru execuţia unor operaţiuni care se repetă la intervale egale de timp: citirea datelor de la traductoare reactualizarea unor variabile de stare calcule ale unor algoritmi de control

Procese aperiodice Sunt utilizate pentru a răspunde la solicitările: operatorului sistemului de comunicaţie evenimente asincrone provenite din mediul în care funcţionează sistemul RT

Procese hiperperiodice Au specificată o anumită frecvenţă minimă, în anumite situaţii aceasta poate să crească Alte procese pot întrerupe aceste procese însă fără ca frecvenţa de execuţie să scadă sub valoarea minimă Creşterea sau scăderea frecvenţei de execuţie este dată de încărcarea procesorului Duc la o mai mare utilizare a procesorului

Procese sporadice Procesele sporadice sunt utilizate pentru a răspunde unor solicitări a căror apariţie nu se încadrează în una din categoriile de mai sus

Problema planificării Procesele trebuiesc planificate pentru execuţie astfel încât să se respecte constrângerile de timp În funcţie de tipul sistemului RT (hard sau soft) termenele pot fi ferme sau lejere Procesele intră în execuţie în funcţie de evenimentele la care trebuie să reacţioneze sistemul

Problema planificării Execuţia sistemului de procese trebuie să: respecte termenele ferme în cazul sistemelor hard minimizeze anumite expresii temporale cum ar fi întârzierile maxime în cazul sistemelor soft Dacă nu sunt respectate aceste condiţii se spune că sistemul: nu funcţionează corect (sisteme hard) funcţionează ineficient (sisteme soft)

Planificarea Constă în ordonarea în timp a execuţiei proceselor care intră în componenţa sistemelor RT Planificarea determină modul de alocare procesorului sau a altor resurse proceselor care se află în starea gata de execuţie Planificarea trebuie să asigure respectarea cerinţelor temporale şi de performanţă impuse sistemului RT

Planificator Planificatorul este o componentă a sistemului RT care realizează planificarea proceselor aflate în starea gata de execuţie Planificatorul poate să fie parte a programului de aplicaţie sau poate să fie o componentă a RTOS

Obiectivele planificării Sisteme RT hard: respectarea tuturor termenelor ferme Sisteme RT soft: încadrarea întârzierilor în limitele întârzierilor maxime sau minimizarea sumei întârzierilor Sisteme RT hibride (au atât termene ferme cât şi termene lejere): respectarea tuturor termenelor ferme şi încadrarea întârzierilor în limitele întârzierilor maxime sau minimizarea sumei întârzierilor

Activităţi de planificare Configurare Distribuire pornirea şi comutarea proceselor întreruperea proceselor (dacă sistemul RT este preemptiv) Analiză apriorică poate o mulţime de procese să fie planificate date fiind anumite constrângeri Planificarea poate fi statică sau dinamică

Realizarea planificatorului Un algoritm de planificare trebuie să ţină cont de: existenţa termenelor de timp real şi tipul lor parametrii (duratele de execuţie) proceselor sau a subrutinelor care elaborează răspunsul momentele de apariţie a evenimentelor sincrone estimarea momentelor de apariţie a evenimentelor asincrone resursele partajate existente în sistem urgenţa răspunsurilor importanţa răspunsurilor utilitatea răspunsurilor În funcţie de aplicaţie vor fi luaţi în considerare doar unii din parametrii amintiţi mai sus

Realizarea planificatorului Execuţia planificatorului consumă timp Planificatorul concurează la resursele sistemului (timpul procesorului, memorie etc) cu celelalte procese ale sistemului RT Execuţia planificatorului poate să conţină execuţii la anumite intervale de timp sau când au loc anumite evenimente Execuţia planificatorului va fi la rândul ei comutată similar cu execuţia celorlalte procese

Realizarea planificatorului În oricare moment pot exista mai multe procese care sunt gata de execuţie Planificatorul trebuie să stabilească o ordine totală sau parţială a execuţiei proceselor Exemplu ordine totală: vor fi executate procesele cu prioritate cea mai mare (se presupune că fiecare proces are un nivel de prioritate unic) ordine parţială: vor fi executate procesele având durata cea mai mică. La un moment dat pot exista două procese care să aibă aceeaşi durată. Stabilirea unei ordonări între aceste procese se poate baza pe momentul intrării starea gata de execuţie.

Realizarea planificatorului Unele sisteme RT permit alegerea algoritmului de planificare dând utilizatorului libertatea de a alege modul de planificare în funcţie de aplicaţie În unele sisteme algoritmul de planificare se poate modifica în timpul funcţionării sistemului. Realizarea unui sistem cu algoritm ce se modifică în timpul execuţiei ridică probleme tehnice. Sistemele RT realizează un compromis între costul planificatorului şi performanţele acestuia

Factori de influenţă a planificatorului interacţiunea dintre componente şi procese concurenţa dintre planificator şi procese tipul proceselor duratele pentru elaborarea răspunsurilor timpul consumat pentru planificare vitezele relative ale proceselor

Interacţiuni între procese Precedenţă Sincronizare mutuală Excludere Partajarea resurselor Combinaţie a celor anterioare

Arhitectura sistemului de planificare şi lansare în execuţie

Caracteristici temporale Procese periodice Tex(p) durata de execuţie a procesului Tpr(p) perioada de execuţie a procesului Condiţie: Tex<=Tpr Tdd(p) + durata de la activare până la termenul ferm sau termenul lejer Deseori se consideră Tdd=Tpr

Caracteristici temporale Procese hiperperiodice Tex(p) durata de execuţie a procesului Tpr(p) hiperperioada de execuţie a procesului Condiţie: Tex<=Tpr Deseori se consideră Tdd=Tpr

Caracteristici temporale Procese sporadice Tex(p) durata de execuţie a procesului Tms(p) durata minimă între două cereri de execuţie a procesului Condiţie: Tex<=Tms Tdd(p) durata până la termenul ferm sau până la termenul de efectuare a sarcinii din momentul activării lui

Caracteristici temporale Un proces aperiodic nu are o durată minimă între două reactivări succesive Cererea de execuţie a unui proces aperiodic poate fi emisă în orice moment

Caracteristici temporale Proces Durata dintre 2 cereri succesive Durata dintre 2 terminări succesive Rata de execuţie min max min max min max Periodic Tpr Tpr Tpr 2 Tpr-Tex Tex/Tpr Tex/Tpr Hiperperiodic Tex Tex Tex Tex Tex 1 Aperiodic 0 sau Tex Tex 0 1 Sporadic Tms Tex 0 Tex/Tms

Algoritmi de planificare pentru procese independente pentru procese comunicante pentru procese cu relaţii de precedenţă cu partiţionarea proceselor folosind algoritmi genetici

Algoritmi de planificare a proceselor independente după importanţa sarcinilor în sistem după termene prin ordonare după termene ferme prin ordonare după frecvenţă prin ordonare după termene lejere după ordinea de emitere a cererii FIFO (first in first out) LIFO (last in first out) după durata de execuţie prin ordonarea după timpul de execuţie prin ordonarea după timpul liber

Algoritmi de planificare a proceselor comunicante după importanţa sarcinilor prin alocarea statică a priorităţilor prin ordonarea după termenele ferme după frecvenţa proceselor comunicante prin ordonarea după termenele ferme parţial monotonă după frecvenţă parţial monotonă după importanţa sarcinilor

Algoritmi de planificare a proceselor cu relaţii de precedenţă folosind grafuri serie- paralel cu alocarea resurselor

Algoritmul de planificare prin ordonare după frecvenţă în engleză Rate Monotonic Scheduling (RMS) Ipoteze procese periodice termenele limită sunt la sfârşitul perioadei procesele sunt preemptive procesele sunt gata de execuţie la începutul fiecărei perioade procesele nu se pot bloca sau suspenda singure timpul de execuţie pentru fiecare proces este constant şi cunoscut

Algoritmul de planificare prin ordonare după frecvenţă procesele cu perioade mai mici vor avea prioritatea mai mare toate priorităţile vor fi diferite

Algoritmul de planificare prin ordonare după frecvenţă

Algoritmul de planificare prin ordonare după frecvenţă Condiţia necesară Suma(i=1,n)(Texi/Tpri)<=1 Condiţie suficientă Suma(i=1,n)(Texi/Tpri)<=n(2^(1/n)-1) n=1->100%, n=2->83%, n=3->78%, n mare- >69% Când numărul proceselor este mare se garantează succesul planificării dacă utilizarea procesorului este mai mică de 69% 31% din utilizarea procesorului este alocată îndeplinirii condiţiilor de timp real n Tex( pi ) 1 Tpr( pi ) i= 1 n 1 Tex( pi ) n(2 n Tpr( pi ) i= 1 1)

Avantajele algoritmului RMS Este simplu Se poate implementa pe sistemele de operare existente Poate fi folosit pentru a aloca nivele de întrerupere

Dezavantajele algoritmului RMS Ipotezele sunt restrictive Poate fi aplicat doar pentru procese preemptive Nu sunt indicate în cazul termenelor limită mai mici decât perioada Nu ia în considerare urgenţa răspunsurilor Nu ia în considerare importanţa proceselor

Algoritmul de planificare prin ordonare după termene în engleză Deadline Monotonic Scheduling (DMS) Ipoteze procese sporadice termenele limită sunt arbitrare Tddi< Tpri procesele sunt preemptive procesele nu se pot bloca sau suspenda singure timpul de execuţie maxim pentru fiecare proces este constant şi cunoscut

Algoritmul de planificare prin ordonare după termene

Algoritmul de planificare prin ordonare după termene Trcd este timpul de răspuns cel mai defavorabil Tin =interferenţa pentru cazul cel mai defavorabil: Tin=Suma(j=1,i- 1)Ceil(Tddi/Texj).Texj Testul care indică dacă procesele pot fi planificate este: Texi/Tddi+Tini/Tddi<=1 pentru orice proces pi. Tin( p i i ) = Tex( p Tdd( p 1 j= 1 i i ) ) Tdd( p Tex( p i j ) Tex( p ) Tin( p ) + i Tdd( p ) i j 1 ) 1

Algoritmul de planificare prin ordonare după termene Avantaje Este simplu şi se poate implementa pe SO existente Pot fi utilizate pentru a aloca nivelele de întrerupere Eficient pentru procese periodice cu termene limită reduse

Algoritmul de planificare prin ordonare după termene Dezavantaje Doar pentru procese preemptive Nu pot trata excluziunea

Programarea sistemelor de timp real Procese 1

Definiţie o succesiune independentă de instrucţiuni care are alocate anumite resurse pentru execuţie procesele concurează între ele pentru a fi executate de procesor şi pentru a accesa anumite resurse ale sistemului descompunerea funcţionalităţii unui sistem în mai multe procese are avantajul optimizării tratării intrărilor şi ieşirilor

Caracteristici Un proces este caracterizat de anumiţi parametri şi structuri de date nume identificator unic (ID) prioritate bloc de control al procesului (TCB - task control bloc) stivă subrutină a procesului Parametrii şi structurile de date formează obiectul proces

Parametrii şi structurile de date ale unui proces TCB Nume ID Prioritate Stiva int int Proces1() Proces1() { { while while (1) (1) { { actiune1; actiune1; : : actiunen; actiunen; } } } }

Tipuri de procese Procesele pot fi procese sistem: create de RTOS procese de iniţializare şi pornire a sistemului procesul inactiv (idle) procesul generare a mesajelor sistem procesul de tratare a excepţiilor procesul de depanare procesul de generare a semnalului de tact procese utilizator: create de utilizator depind de aplicaţie

Procesul Idle are prioritatea cea mai mică utilizează timpul liber al procesorului de obicei este o buclă infinită asigură validitatea contorului de instrucţiuni (PC) poate fi înlocuit cu un proces definit de utilizator care să realizeze anumite acţiuni ex. economisirea energiei prin suspendarea procesorului

Nivele de prioritate În funcţie de implementarea RTOS două procese pot avea acelaşi nivel de prioritate sau nivele de prioritate diferite. Numărul de nivele de prioritate este limitat Numărul de procese care pot avea acelaşi nivel de prioritate este limitat. Cele două de mai sus limitează numărul de procese care pot fi create în cadrul unei aplicaţii. Procesele sistem au de obicei rezervate anumite niveluri de prioritate, de cele mai multe ori acestea sunt din domeniul celor mai ridicate niveluri.

Crearea proceselor Sarcinile utilizatorului atribuirea unui nume atribuirea unei priorităţi stabilirea dimensiunii stivei scrierea subrutinei procesului Sarcinile RTOS atribuirea unui ID unic crearea blocului de control (TCB) asociat alocarea memoriei pentru stivă

Stările unui proces Fiecare proces se poate afla în una din mai multe stări posibile. Mulţimea de stări posibile în care se poate afla un proces depinde sistemul de operare de timp real.

Stările unui proces starea activă sau în execuţie este starea în care procesul este activ având prioritatea cea mai mare starea blocată semnificaţia acestei stări depinde de sistemul de operare. În cazul anumitor sisteme ea poate îngloba şi stările de amânare şi de aşteptare; starea gata de execuţie procesul este gata de execuţie însă nu are prioritatea necesară pentru a fi executat;

Stările unui proces starea amânată este starea în care procesul aşteaptă trecerea unei temporizări starea suspendată este o stare care este de obicei utilizată în scopul depanării sistemului starea de aşteptare este starea în care procesul aşteaptă eliberarea unei resurse sau aşteaptă apariţia unui eveniment

Stările unui proces starea de tratare a întreruperilor este starea în care trece procesul la apariţia unei întreruperi starea adormită este starea în care se poate afla un proces înainte de fi făcut disponibil sistemului de operare sau după ce a fost eliminat din cadrul aplicaţiei.

Evoluţia proceselor Trecerea de la o starea la alta este implementată cu ajutorul noţiunii de automat finit. Structura acestuia şi regulile de evoluţie (tranziţiile) sunt caracteristice fiecărui RTOS în parte.

Stările proceselor G gata de execuţie, E execuţie, B blocată.

Stările proceselor A aşteptare, G gata de execuţie, E execuţie, S suspendată sau blocată.

Stările proceselor A aşteptare, E execuţie, G gata de execuţie, D adormită, I tratarea întreruperilor

Starea gata de execuţie La unele RTOS este starea în care sunt trecute procesele când sunt create În această stare procesul concurează la resursele procesorului împreună cu celelalte procese gata de execuţie Din această stare procesul poate trece doar în starea de execuţie

Starea de execuţie În cazul sistemelor monoprocesor un singur proces poate fi executat la un moment dat Din această stare procesul poate trece în: starea gata de execuţie (nu şi-a terminat execuţia şi a fost întrerupt de un proces cu prioritate mai mare) starea blocată în situaţiile a cerut o resursă care nu este disponibilă a făcut un apel care necesită apariţia unui eveniment a făcut un apel la o funcţie de care introduce o întârziere a execuţiei

Starea blocată Permite proceselor cu prioritate mai mică să fie executate Procesul trece în starea blocată în urma unui apel blocant Procesul rămâne în această stare până este valabilă condiţia de blocare La deblocare procesul trece în starea de execuţie (dacă are prioritatea cea mai mare) starea gata de execuţie în rest

Acţiuni asociate proceselor crearea procesului eliminarea procesului planificarea procesului obţinerea de informaţii de la proces.

Crearea proceselor Crearea proceselor se poate realiza static - sunt create de către utilizator în momentul creării programului de aplicaţie necesarul de memorie se alocă în momentul compilării programului dinamic - sunt create în momentul execuţiei programului de aplicaţie. memoria se alocă dinamic, sunt utilizate în cadrul sistemelor care dispun de resurse de memorie importante.

Crearea proceselor Procesele sunt create prin apelul la funcţiile sistemului de timp real specifice Nu întotdeauna crearea unui proces înseamnă şi că acesta este făcut imediat disponibil sistemului de operare. Uneori este necesar apelul unei funcţii speciale care să facă procesul disponibil sistemului. Situaţia mai este întâlnită şi în partea de pornire a sistemului care se realizează conform etapelor: mai întâi este creat un set de procese, se iniţializează sistemul de operare de timp real, procesele sunt făcute disponibile sistemului.

Crearea proceselor Faptul că un proces este făcut disponibil sistemului de operare nu înseamnă neapărat că el este şi executat imediat. Procesul este executat imediat dacă are cel mai mare nivel de prioritate. În caz contrar, procesul este trecut în starea gata de execuţie.

Eliminarea proceselor Efectul acţiunii de eliminare a unui proces depinde de RTOS. Procese create static eliminarea unui proces = scoaterea acestuia din evidenţa sistemului de operare trece într-o stare numită de adormire, dar fără să fie şterse elementele componente procesului (zona de memorie, partea de cod aferentă) în funcţie de necesităţile aplicaţiei, procesul respectiv poate fi refolosit (se poate schimba numele, identificatorul unic şi nivelul de prioritate)

Eliminarea proceselor Procese create dinamic eliminarea unui proces = scoaterea acestuia din evidenţa sistemului de operare poate presupune şi eliberarea resurselor folosite, în special a zonei de memorie aferente

Eliminarea proceselor Operaţia de eliminare a proceselor trebuie să fie utilizată cu mare atenţie. În cadrul execuţiei unui proces acesta poate dobândi anumite resurse ale sistemului. Eliminarea unui astfel de proces, fără a se asigura eliberarea tuturor resurselor poate duce la blocarea unor resurse ale sistemului sau chiar blocarea întregului sistem.

Planificarea proceselor Planificare proceselor se face în mod normal automat prin intermediul algoritmului de planificare Pe baza algoritmului de planificare procesele trec dintr-o stare în alta din cele amintite RTOS pot oferi funcţii care să permită utilizatorului controlul trecerii proceselor dintr-o stare în alta

Planificare proceselor Funcţii utilizator de control al stărilor proceselor suspendare a unui proces reluarea execuţiei unui proces întârzierea unui proces repornirea unui proces modificarea priorităţii unui proces blocarea şi deblocarea posibilităţii de întrerupere a unui proces

Tipuri de subrutine ale proceselor Codul executat în cadrul unui proces poate fi: cu execuţie până la terminare utilizat în cazul proceselor de iniţializare şi de pornire se execută o singură dată resursele sunt eliberate la terminarea procesului buclă infinită majoritatea proceselor unei aplicaţii RT se execută de un număr mare de ori

Proces cu execuţie până la terminare ProcesExecutieTerminare() { Iniţializează aplicaţia Crează procesele de tip buclă infinită Crează obiectele nucleului Şterge sau suspendă acest proces }

Proces cu execuţie până la terminare Observaţii procesele de iniţializare au prioritate mai mare decât cele ale aplicaţiei propriu-zise sunt scrise astfel încât să fie suspendata sau şterse la terminare de obicei resursele sunt eliberate pentru a fi puse la dispoziţia altor procese

Procese tip buclă infinită ProcesBuclaInfinita () { Cod de iniţializare while (1) { Corpul buclei Unul sau mai multe apeluri blocante } }

Procese tip buclă infinită Observaţii Aceste procese pot conţine cod de iniţializare care este executat doar prima dată când este executat procesul În interiorul buclei infinite trebuie să existe apeluri blocante care să permită blocarea procesului şi execuţia proceselor cu prioritate mai mică

Programarea sistemelor de timp real Semafoare 1

Definiţie Este un obiect al unui nucleu/sistem de operare de timp real care poate fi achiziţionat de unul sau mai multe procese în vederea: sincronizării excluderii mutuale de la accesul simultan la o anumită resursă

Elemente caracteristice Semafoarele sunt caracterizate prin următoarele elemente: semafoarele au o anumită structură care poate diferi de la un RTOS la altul; sunt structuri globale astfel încât starea lor poate fi afectată de către orice proces.

Elementele asociate nume identificator unic valoare (număr binar sau natural) bloc de control al semaforului listă de procese asociate

Elementele asociate

Observaţii Lista proceselor asociate unui semafor poate fi implementată: ca o listă de tip FIFO astfel încât să ţină cont de nivelul de prioritate al proceselor asociate. Implementarea este specifică fiecărui sistem de operare de timp real. Se spune despre procese că iau în posesie un semafor sau îl eliberează

Clasificare semafor binar poate lua doar două valori; semafor numărător poate lua mai multe valori; semafor cu excludere mutuală (mutex - mutual exclusive) poate lua doar două valori dar are o serie de caracteristici specifice cu ar fi asigurarea accesului exclusiv la o resursă (de unde şi numele).

Semafoare binare pot lua două valori, 0 şi 1. semaforul are valoare 0 = indisponibil şi nu poate fi luat în posesie (acest lucru deoarece anterior a fost luat în posesie de un alt proces). semaforul are valoarea 1 = disponibil şi poate fi luat în posesie. Observaţie: Semafoarele binare pot fi eliberate şi de către alte procese decât cele care le-au luat în posesie.

Semafoare binare

Semafoare numărătoare poate lua mai multe valori. semaforul are valoarea 0 = semaforul indisponibil (nu poate fi luat în posesie) semaforul are valoarea >0 = semaforul disponibil (poate fi luat în posesie) În funcţie de implementare, numărul de câte ori poate fi luat în posesie poate să fie limitat sau nelimitat.

Semafoare numărătoare este utilizată interpretarea conform căreia un semafor numărător are un număr de elemente care pot fi luate în posesie. Semaforul numărător numără câte astfel de elemente mai sunt disponibile. Când nici un element nu mai este disponibil, valoarea numărătorului este 0 şi deci semaforul devine indisponibil. elementele semaforului pot să fie eliberate şi de către procese care nu au luat în posesie în prealabil un element al semaforului.

Semafoare numărătoare

Semafoare cu excludere mutuală asemănătoare semafoarelor binare în sensul pot lua tot două valori au faţă de cele din urmă o serie de proprietăţi care le individualizează În funcţie de implementarea RTOS proprietăţile suplimentare pot fi: proprietate exclusivă recursivitate control asupra eliminării proceselor evitarea apariţiei inversiunii de prioritate

Semafoare cu excludere mutuală Proprietatea asupra unui mutex este obţinută când un proces blochează mutex-ul luându-l în posesie Un proces pierde proprietatea asupra unui mutex când îl eliberează Când un mutex este în posesia unui proces el nu poate fi deblocat de către alt proces

Semafoare cu excludere mutuală

Acţiuni asociate semafoarelor Principalele acţiuni asociate semafoarelor sunt: crearea eliminarea luarea în posesie eliberarea ştergerea listei proceselor asociate obţinerea de informaţii

Crearea semafoarelor Crearea semafoarelor este diferită pentru tipuri diferite de semafoare. Apelurile pentru crearea acestora este specifică fiecărui tip de RTOS Diferenţe posibile: valoarea de iniţializare semafoare binare/mutuale: 0 sau 1 semafoare numărătoare: starea accesibiă/neaccesibilă valoarea de iniţializare valoarea de iniţializare= valoarea maximă sau nu

Eliminarea semafoarelor Constă în a şterge un anumit semafor din lista celor disponibile sistemului de operare. Stergerea poate să fie temporară sau definitivă. Ştergerea unui semafor poate să aibă efecte negative în cazul în care nu se asigură că resursa asociată acestuia nu a fost mai întâi eliberată. La eliminarea unui semafor, lista de procese asociate (aflate în starea de aşteptare) este desfiinţată. (toate procesele aflate în listă sunt deblocate)

Luarea în posesie a unui semafor Operaţia este specifică fiecărui tip de semafor în parte. Dacă semaforul nu este disponibil, procesul interesat de semafor poate să se comporte în mod diferit în funcţie de cerinţele aplicaţiei Variantele posibile: procesul intră în starea blocată în care aşteaptă eliberarea semaforului; procesul intră în starea blocată pentru o perioadă de timp. În această perioadă semaforul poate sau nu deveni disponibil. După luarea în posesie a semaforului sau după expirarea timpului, procesul este scos din lista proceselor asociate respectivului semafor, starea următoare a acestuia fiind stabilită de planificator în funcţie de starea celorlalte procese şi în funcţie de nivelul de prioritate al acestora. procesul îşi continuă execuţia indiferent dacă semaforul este accesibil sau nu.

Luarea în posesie a unui semafor În cazul semafoarelor de excludere mutuală recursivă, semaforul poate fi luat în posesie în mod repetat de către procesul care îl posedă. Această situaţie este necesară în cazul în care subprocese ale procesului ce deţine semaforul necesită accesul la aceeaşi resursă.

Eliberarea semafoarelor Semafoare binare/numărătoare eliberarea semafoarelor poate fi realizată de către oricare dintre procesele existente în sistem. Semafoarele de excludere mutuală pot fi eliberate doar de către procesele care le-au luat în posesie. semaforul poate fi eliberat în mod repetat de către procesul care l-a luat în posesie. Numărul de eliberări trebuie să fie egal cu numărul de luări în posesie

Golirea listei de procese în aşteptare Situaţii posibile Golirea listei de procese înainte de eliminarea unui semafor. Realizarea unei sincronizări între procese.

Obţinerea de informaţii de la semafoare Operaţia permite obţinerea de informaţii referitoare la următoarele elemente ale unui semafor: informaţii legate de elementele de identificare: nume, identificator unic; informaţii legate de tipul semaforului şi valoarea acestuia; informaţii legate de procesele aflate în lista de aşteptare

Utilizări tipice ale semafoarelor sincronizarea unui proces în aşteptare, sincronizarea mai multor procese în aşteptare, sincronizare cu urmărirea creditului sincronizarea accesului la o resursă cu acces unic, sincronizarea resurselor partajabile recursiv sincronizarea accesului la mai multe resurse partajabile

Sincronizare prin aşteptarea unui semnal

Sincronizare prin aşteptarea unui semnal ProcAstept ( ){ : Ia în posesie semafor binar : } ProcSemnal ( ){ : Eliberează semafor binar : }

Sincronizarea mai multor procese în aşteptare

Sincronizarea mai multor procese în aşteptare ProcAsteptn ( ){ : Operaţii specifice Ia în posesie semafor binar : } ProcSemnal ( ){ : Operaţii specifice Goleşte lista de aşteptare a semaforului : }

Sincronizare cu urmărirea creditului

Sincronizare cu urmărirea creditului ProcAstept ( ){ : Ia în posesie semafor numărător : } ProcSemnal ( ){ : Eliberează semafor numărător : }

Sincronizare cu urmărirea creditului Utilizat când viteza de execuţie a celor două procese este diferită (procesul semnalizator are viteză mai mare) Procesul semnalizator îşi poate continua execuţia numărând fiecare semnalizare efectuată Când este deblocat, procesul în aşteptare îşi execută instrucţiunile cu viteza proprie. Semaforul numărător va fi decrementat Metoda este aplicabilă dacă semnalizarea se face în pachete astfel încât procesul în aşteptare să poată răspunde tuturor semnalelor

Sincronizarea accesului la o resursă cu acces unic

Sincronizarea accesului la o resursă cu acces unic Metodă utilizată pentru accesarea exclusivă a unei resurse Resursa poate fi: locaţie sau zonă de memorie structură de date port de intrare/ieşire Semaforul este creat cu starea iniţială având valoarea 1 (disponibil/deblocat)

Sincronizarea accesului la o resursă cu acces unic Solicitant1 ( ){ : Ia în posesie semafor Scrie sau citeşte resursă Eliberează semafor : }

Sincronizarea resurselor cu acces recursiv

Sincronizarea resurselor cu acces recursiv Metodă utilizată când subrutine apelate dintrun proces trebuie să aibă acces la aceeaşi resursă ca şi procesul respectiv.

Sincronizarea resurselor cu acces recursiv Solicitant1 ( ){ : Ia în posesie mutex Scrie sau citeşte resursă SubrutinaA() Eliberează mutex : } SubrutinaA ( ){ : Ia în posesie mutex Scrie sau citeşte resursă SubrutinaB() Eliberează mutex : } SubrutinaB ( ){ : Ia în posesie mutex Scrie sau citeşte resursă Eliberează mutex : }

Sincronizarea accesului la mai multe resurse partajabile

Sincronizarea accesului la mai multe resurse partajabile Solicitantn ( ){ : Ia în posesie semafor numărător Scrie sau citeşte resursă Eliberează semafor numărător : }

Sincronizarea accesului la mai multe resurse partajabile Metoda este folosită când există mai multe resurse echivalente Semaforul numărător este iniţializat cu valoarea egală cu numărul de resurse echivalente

Programarea sistemelor de timp real Cozi de mesaje 1

Coadă de mesaje. Definiţie Este un obiect al unui nucleu/sistem de operare de timp real prin intermediul căreia procesele pot trimite sau recepţiona mesaje în vederea: sincronizării schimbării de informaţii uni sau bidirecţional

Elemente caracteristice Cozile de mesaje sunt caracterizate prin următoarele elemente: au o anumită structură care poate diferi de la un RTOS la altul; menţin temporar mesajele ceea ce permite decuplarea proceselor (transmisia/recepţia mesajelor nu trebuie să se facă sincron).

Elementele asociate nume identificator unic lungimea cozii lăţimea maximă a cozii bloc de control al cozii 2 liste de procese asociate lista proceselor ce aşteaptă să trimită mesaje lista proceselor ce aşteaptă să primească mesaje capul şi capătul cozii

Elementele asociate

Observaţii Memoria necesară este alocată de către RTOS în funcţie de parametrii furnizaţi de utilizator: lăţimea maximă a mesajului lungimea cozii (numărul de mesaje ce pot fi memorate în coadă). Alocarea memoriei se face din blocurile de memorie: disponibile întregului sistem rezervate special Procesele din listele de aşteptare sunt selectate pentru a trimite/primi un mesaj în funcţie de prioritate ordonare după un model FIFO

Stările unei cozi de mesaje

Conţinutul mesajelor poate lua mai multe valori. valoarea preluată de la un senzor, o imagine pentru a fi afişată pe ecran, un mesaj text ce trebuie afişat pe un LCD, codul obţinut la apăsarea unei taste de la o tastatură pachet de date de trimis prin intermediul reţelei

Transmiterea mesajelor dimensiunea maximă a mesajelor este stabilită la intiţializare pot apare două probleme dimensiunea mesajele poate fi fixă variabilă transmiterea mesajului presupune două operaţii de copiere a mesajului expeditor -> coadă de mesaje coadă de mesaje -> destinatar

Transmiterea mesajelor

Transmiterea mesajelor. Soluţii 1. în coada de mesaje se va înscrie un pointer la mesaj avantaje permite transmiterea de mesaje de lungimi diferite copierea va fi mai rapidă (se copie doar pointerul) dezavantaje necesită introducerea în mesaj a unor informaţii legate de lungimea mesajului necesită mecanisme de gestionare a mesajelor eterogene 2. utilizarea unor mesaje de dimensiuni mici

Acţiuni asociate cozilor de mesaje Principalele acţiuni asociate cozilor de mesaje sunt: crearea eliminarea golirea cozii de mesaje trimiterea de mesaje emisia mesajelor recepţionarea mesajelor obţinerea de informaţii legate de coada de mesaje

Crearea cozilor de mesaje Cozile sunt structuri globale, nu aparţin unui anumit proces Apelurile pentru crearea acestora este specifică fiecărui tip de RTOS Diferenţe posibile: valorile de iniţializare lungimea cozii lăţimea maximă a cozii modul de preluare a mesajelor de către procesele în aşteptare (bazat pe prioritate, FIFO etc)

Eliminarea cozilor de mesaje Constă în a şterge unei anumite cozi de mesaje din lista celor disponibile sistemului de operare Stergerea poate să fie temporară sau definitivă Ştergerea unei cozi de mesaje poate să aibă efecte negative având în vedere faptul că mesajele existente în listă sunt şterse La eliminarea unui cozi de mesaje, lista de procese asociate (aflate în starea de aşteptare) este desfiinţată (toate procesele aflate în listă sunt deblocate)

Golirea cozii de mesaje Situaţii posibile Golirea cozii înainte de eliminarea acesteia. Realizarea unei sincronizări între procese.

Trimiterea de mesaje Pot exista 2 modele: FIFO - fiecare mesaj nou este aşezat la sfârşitul cozii. LIFO fiecare mesaj nou este aşezat în capul cozii

Transmiterea mesajelor. Model FIFO

Transmiterea mesajelor. Model LIFO

Transmiterea mesajelor când coada de mesaje este plină procesul nu se blochează (apelul întoarce un cod de eroare) se blochează pe o durată limitată se blochează pe o durată nedefinită

Aşteptare pentru transmiterea mesajelor. Model FIFO

Aşteptare pentru transmiterea mesajelor. Model LIFO

Deblocarea proceselor din lista de aşteptare la transmisie blocare pe o durată limitată procesul se deblochează când devine disponibil o locaţie pentru un mesaj în coadă expiră timpul de aşteptare blocare pe o durată nedefinită devine disponibil o locaţie pentru un mesaj în coadă

Emisia mesajelor Emisia este operaţia de transmisie a unui mesaj către mai multe procese Nu toate RTOS au implementată operaţia de emisie

Recepţionarea mesajelor se face în funcţie de modelul de aşteptare LIFO FIFO prioritate

Recepţionarea mesajelor. Model FIFO

Recepţionarea mesajelor. Model FIFO

Recepţionarea mesajelor când coada de mesaje este goală procesul nu se blochează (apelul întoarce un cod de eroare) se blochează pe o durată limitată se blochează pe o durată nedefinită

Deblocarea proceselor din lista de aşteptare la recepţie blocare pe o durată limitată procesul se deblochează când apare un mesaj în coadă expiră timpul de aşteptare blocare pe o durată nedefinită apare un mesaj în coadă

Citirea mesajelor din coadă Citirea se poate realiza în două moduri: distructiv mesajul citit din coadă este şters din coadă nedistructiv mesajul citit rămâne în coadă

Obţinerea de informaţii de la coada de mesaje Operaţia permite obţinerea de informaţii referitoare la următoarele elemente ale unei cozi de mesaje: informaţii legate de elementele de identificare: nume, identificator unic; informaţii legate parametrii cozii (lungime, lăţime maximă; informaţii legate de procesele aflate în lista de aşteptare

Utilizări tipice ale cozilor de mesaje comunicare unidirecţională fără blocare, comunicare unidirecţională cu blocare, comunicare bidirecţională cu blocare emisie

Comunicare unidirecţională fără blocare

Comunicare unidirecţională fără blocare ProcEmitator () { : Trimite mesaj în coada de mesaje : } ProcDestinatar () { : Citeşte mesajul din coada de mesaje : }

Comunicare unidirecţională fără blocare p(procemitator)<p(procdestinatar) ProcDestinatar se execută, citeşte mesajele şi se blochează când coada e goală când ProcEmitator trimite un mesaj, ProcDestinatar este deblocat şi se execută din nou p(procemitator)>p(procdestinatar) ProcEmitator trimite mesaje până se umple coada de mesaje şi se blochează ProcDestinatar citeşte mesajele din coadă permiţând ProcEmitător să se execute şi să trimită noi mesaje

Comunicare unidirecţională cu blocare

Comunicare unidirecţională cu blocare ProcEmitator () { : Trimite mesaj în coada de mesaje Ia în posesie semafor : } ProcDestinatar () { : Citeşte mesajul din coada de mesaje Eliberează semafor : }

Comunicare unidirecţională cu blocare Permite confirmarea recepţiei fiecărui mesaj în parte Confirmarea se poate realiza cu ajutorul unui semafor binar

Comunicare bidirecţională cu blocare

Comunicare bidirecţională cu blocare tip client-server

Comunicare bidirecţională cu blocare tip client-server Clientul trimite cererile prin coada de mesaje de transmisie Serverul furnizează datele cerute prin intermediul cozii de recepţie Se pot realiza aplicaţii cu mai mulţi clienţi şi un server. coada de comenzi comună fiecare client va fi servit prin intermediul unei cozi separate Observaţii Cele două cozi pot avea lăţimi maxime diferite Serverul va avea prioritate mai mare pentru a putea servi clientul cât mai rapid

Comunicare bidirecţională cu blocare ProcEmitator () { : Trimite mesaj în coada de emisie mesaje Aşteaptă mesaj în coada de recepţie mesaje : } ProcDestinatar () { : Citeşte mesajul din coada de emisie mesaje Trimite mesaj în coada de recepţie mesaje : }

Emisie

Emisie ProcEmitator () { : Trimite mesaj în coada de mesaje : } ProcDestn () { // n=1,2,3 : Citeşte mesajul din coada de mesaje : }

Programarea sistemelor de timp real Cutii poştale 1

Cutie poştală. Definiţie Este un obiect al unui nucleu/sistem de operare de timp real prin intermediul căreia procesele pot trimite sau recepţiona un mesaj în vederea: sincronizării schimbării de informaţii uni sau bidirecţional

Elemente caracteristice Cutiile poştale sunt caracterizate prin următoarele elemente: au o anumită structură care poate diferi de la un RTOS la altul; o cutie poştală menţine temporar un mesajceea ce permite decuplarea proceselor (transmisia/recepţia mesajelor nu trebuie să se facă sincron).

Elementele asociate nume identificator unic dimensiunea mesajului bloc de control al cutiei poştale 2 liste de procese asociate lista proceselor ce aşteaptă să trimită mesaje lista proceselor ce aşteaptă să primească mesaje

Elementele asociate

Observaţii Memoria necesară mesajului poate fi alocată de către RTOS în funcţie de dimensiunea mesajului. Alocarea memoriei se face din blocurile de memorie: disponibile întregului sistem rezervate special Procesele din listele de aşteptare sunt selectate pentru a trimite/primi un mesaj în funcţie de prioritate ordonare după un model FIFO sau LIFO

Stările unei cutii poştale

Conţinutul mesajelor poate fi de diferite tipuri în funcţie de informaţia pe care o poartă: valoarea preluată de la un senzor, o imagine pentru a fi afişată pe ecran, un mesaj text ce trebuie afişat pe un LCD, codul obţinut la apăsarea unei taste de la o tastatură pachet de date de trimis prin intermediul reţelei

Transmiterea mesajelor dimensiunea şi formatul mesajelor trebuie să fie agreat de ambele procese (expeditor şi destinatar) şi sunt stabilite la iniţializare pot apare două probleme dimensiunea şi formatul mesajelor pentru cutii poştale diferite pot aceleaşi diferite transmiterea mesajului presupune două operaţii de copiere a mesajului expeditor -> cutie poştală cutie poştală -> destinatar

Transmiterea mesajelor

Transmiterea mesajelor. Soluţii 1. în cutia poştală se va înscrie un pointer la mesaj avantaje permite transmiterea de mesaje de lungimi diferite copierea va fi mai rapidă (se copie doar pointerul) dezavantaje necesită introducerea în mesaj a unor informaţii legate de lungimea mesajului necesită mecanisme de gestionare a mesajelor eterogene 2. utilizarea unui mesaj de dimensiuni mici

Acţiuni asociate cutiilor poştale Principalele acţiuni asociate cutiilor poştale sunt: crearea eliminarea cutiei poştale trimiterea de mesaje recepţionarea mesajelor obţinerea de informaţii legate de cutia poştală

Crearea cutiilor poştale Cutiile poştale sunt structuri globale, nu aparţin unui anumit proces Apelurile pentru crearea acestora este specifică fiecărui tip de RTOS Diferenţe posibile: valorile de iniţializare mărimea mesajului modul de transmitere a mesajului modul de preluare a mesajelor de către procesele în aşteptare (bazat pe prioritate, FIFO etc)

Eliminarea cutiilor poştale Constă în a şterge unei anumite cutii poştale din lista celor disponibile sistemului de operare Stergerea poate să fie temporară sau definitivă Ştergerea unei cutii poştale poate să aibă efecte negative având în vedere faptul că mesajul existent în cutia poştală este şters La eliminarea unui cutii poştale, lista de procese asociate (aflate în starea de aşteptare) este desfiinţată (toate procesele aflate în listă sunt deblocate)

Transmiterea mesajelor când cutia poştală conţine un mesaj procesul care vrea să trimită mesajul nu se blochează (apelul întoarce un cod de eroare) se blochează pe o durată limitată se blochează pe o durată nedefinită

Aşteptare pentru transmiterea mesajelor. Model FIFO

Aşteptare pentru transmiterea mesajelor. Model LIFO

Deblocarea proceselor din lista de aşteptare la transmisie blocare pe o durată limitată procesul se deblochează când cutia poştală devine goală expiră timpul de aşteptare blocare pe o durată nedefinită cutia poştală devine goală

Recepţionarea mesajelor se face în funcţie de modelul de aşteptare LIFO FIFO prioritate

Recepţionarea mesajelor. Model FIFO

Recepţionarea mesajelor. Model FIFO

Recepţionarea mesajelor când cutia poştală este goală procesul nu se blochează (apelul întoarce un cod de eroare) se blochează pe o durată limitată se blochează pe o durată nedefinită

Deblocarea proceselor din lista de aşteptare la recepţie blocare pe o durată limitată procesul se deblochează când apare un mesaj în cutia poştală expiră timpul de aşteptare blocare pe o durată nedefinită apare un mesaj în cutia poştală

Citirea mesajelor din cutia poştală Citirea se poate realiza în două moduri: distructiv mesajul citit din cutia poştală este şters nedistructiv mesajul citit rămâne în cutia poştală

Obţinerea de informaţii de la cutia poştală Operaţia permite obţinerea de informaţii referitoare la următoarele elemente ale unei cutii poştale: informaţii legate de elementele de identificare: nume, identificator unic; informaţii legate dimensiunea mesajului; informaţii legate de procesele aflate în lista de aşteptare

Utilizări tipice ale cutiilor poştale comunicare unidirecţională, comunicare unidirecţională cu confirmarea mesajului, comunicare bidirecţională cu blocare utilizarea cutiei poştale ca semafor binar

Comunicare unidirecţională

Comunicare unidirecţională ProcEmitator () { : Trimite mesaj în cutia poştală : } ProcDestinatar () { : Citeşte mesajul din cutia poştală : }

Comunicare unidirecţională cu confirmarea primirii mesajului

Comunicare unidirecţională cu confirmarea primirii mesajului ProcEmitator () { : Trimite mesaj în cutia poştală Ia în posesie semafor : } ProcDestinatar () { : Citeşte mesajul din cutia poştală Eliberează semafor : }

Comunicare bidirecţională

Comunicare bidirecţională Se utilizează două cutii poştale Procesul Proc1 trimite un mesaj prin cutia poştală CP1 Procesul Proc2 răspunde procesului Proc1 prin intermediul cutiei poştale CP2 Se pot realiza aplicaţii de tip client server dacă informaţiile transmise se pot încadra într-un mesaj Se pot realiza aplicaţii cu mai mulţi clienţi şi un server. o CP comună fiecare client va fi servit prin intermediul unei cutii poştale separate Observaţii Prin cele două cutii poştale se pot transmite mesaje de tipuri şi dimensiuni diferite

Comunicare bidirecţională Proc1 () { : Trimite mesaj în cutia poştală CP1 Aşteaptă mesaj în cutia poştală CP2 : } Proc2 () { : Aşteaptă mesaj din cutia poştală CP1 : } Trimite mesaj în cutia poştală CP2

Utilizarea cutiei poştale ca semafor binar Iniţializarea în starea disponibil: iniţializare cutie poştală cu mesaj Iniţializare în starea indisponibil: iniţializare cutie poştală fără mesaj

Utilizarea cutiei poştale ca semafor binar ProcAstept ( ){ : Aşteaptă mesaj în cutia poştală : } ProcAstept ( ){ : Ia în posesie semafor binar : } ProcSemnal ( ){ : Trimite mesaj în cutia poştală : } ProcSemnal ( ){ : Eliberează semafor binar : }

Programarea sistemelor de timp real Conducte 1

Conductă. Definiţie O conductă (pipe) este un obiect al unui nucleu/sistem de operare de timp real prin intermediul căreia procesele pot transmite sau recepţiona informaţii într-un format nestructurat: sincronizării schimbării de informaţii uni sau bidirecţional

Elemente caracteristice Conductele sunt caracterizate prin următoarele elemente: au o anumită structură care poate diferi de la un RTOS la altul; o conductă menţine temporar informaţia nestructurată ceea ce permite decuplarea proceselor (transmisia/recepţia informaţiei nu trebuie să se facă sincron).

Elementele asociate nume identificator unic dimensiunea memoriei alocate conductei bloc de control al conductei număr de octeţi tamponul mărimea tamponului poziţia de scriere poziţia de citire 2 liste de procese asociate lista proceselor ce aşteaptă să trimită informaţii lista proceselor ce aşteaptă să primească informaţii

Elementele asociate

Observaţii Memoria necesară conductei poate fi alocată de către RTOS. Alocarea memoriei se face din blocurile de memorie: disponibile întregului sistem rezervate special Procesele din listele de aşteptare sunt selectate pentru a trimite/primi informaţii în funcţie de prioritate ordonare după un model FIFO sau LIFO

Stările unei conducte

Caracteristicile informaţilor vehiculate informaţia vehiculată prin conductă este nestructurată schimbul de informaţii se face la nivel de octeţi informaţiei nu i se poate modifica prioritatea (anumiţi octeţi să fie scrişi/citiţi înaintea altora tipuri de informaţii vehiculate prin conducte: informaţii preluate de la un senzor, o imagine pentru a fi afişată pe ecran, octeţii corespunzători unui text ce trebuie afişat pe un LCD, date de trimis prin intermediul reţelei

Conducte cu sau fără nume conductele pot primi un nume la creare pot fi utilizate de mai multe procese care vor utiliza numele ca referinţă se pot crea conducte fără nume pot fi accesate doar de către procesele între care au fost create şi numai prin intermediul unor descriptori utilizaţi în cadrul RTOS

Acţiuni asociate conductelor Principalele acţiuni asociate conductelor sunt: crearea eliminarea conductei trimiterea de informaţii citirea informaţiilor golirea conductei selecţie a conductei (dintre mai multe) obţinerea de informaţii legate de conductă

Crearea conductelor Conductele sunt structuri globale, nu aparţin unui anumit proces Apelurile pentru crearea acestora este specifică fiecărui tip de RTOS Diferenţe posibile: valorile de iniţializare dimensiunea memoriei tampon cu nume sau fără nume La crearea conductei RTOS întoarce doi descriptori: punctul de scriere a informaţiei punctul de citire a informaţiei

Eliminarea conductelor Constă în a şterge unei anumite conducte din lista celor disponibile sistemului de operare Ştergerea poate să fie temporară sau definitivă Ştergerea unei conducte poate să aibă efecte negative având în vedere faptul că informaţia existentă în conductă este ştearsă La eliminarea unui conducte, lista de procese asociate (aflate în starea de aşteptare) este desfiinţată (toate procesele aflate în listă sunt deblocate)

Transmiterea informaţiei se poate face folosind descriptorul ce indică capătul de scriere al conductei conducta poate fi alimentată de mai multe procese când conducta este plină procesul care vrea să trimită informaţii prin conductă: nu se blochează (apelul întoarce un cod de eroare) se blochează pe o durată limitată se blochează pe o durată nedefinită

Deblocarea proceselor din lista de aşteptare la transmisie blocare pe o durată limitată procesul se deblochează când există spaţiu pentru a scrie informaţi în conductă expiră timpul de aşteptare blocare pe o durată nedefinită există spaţiu pentru a scrie informaţi în conductă

Citirea informaţiei din conductă se poate face folosind descriptorul ce indică capătul de citire al conductei un proces poate să citească într-o singură operaţie de citire informaţia dintr-o conductă scrisă de mai multe procese cantitatea de informaţie citită este dată de blocul de control al conductei

Citirea informaţiei din conductă când conducta este goală procesul: nu se blochează (apelul întoarce un cod de eroare) se blochează pe o durată limitată se blochează pe o durată nedefinită

Deblocarea proceselor din lista de aşteptare la recepţie blocare pe o durată limitată procesul se deblochează când apare informaţie în conductă expiră timpul de aşteptare blocare pe o durată nedefinită apare informaţie în conductă

Citirea informaţiei din conductă în cazul conductelor citirea este distructivă (nu se pot realiza operaţii de emisie) toţi octeţii de informaţie din conductă au aceeaşi prioritate nu poate fi identificată sursa informaţiei (în cazul surselor multiple)

Golirea conductei Situaţii posibile Golirea conductei înainte de eliminarea acesteia. Realizarea unei sincronizări între procese.

Selecţia este acţiunea ce permite selectarea unei conducte în funcţie de apariţia unei anumite condiţii operaţia de selecţie poate fi utilizată atât la scriere cât şi la citire

Selecţie

Obţinerea de informaţii despre conductă Operaţia permite obţinerea de informaţii referitoare la următoarele elemente ale unei conducte: informaţii legate de elementele de identificare: nume, identificator unic; informaţii legate de lungimea conductei; informaţii legate de procesele aflate în listele de aşteptare

Utilizări tipice ale conductelor comunicare unidirecţională, comunicare bidirecţională comunicare multi sursă la intrare şi ieşire sincronizarea proceselor

Comunicare unidirecţională

Comunicare unidirecţională ProcEmitator () { : Trimite informaţie prin conductă : } ProcDestinatar () { : Citeşte informaţie din conductă : }

Comunicare bidirecţională

Comunicare bidirecţională Proces1 () { : Trimite informaţie în conducta C1 Aşteaptă informaţie în conducta C2 : } Proces2 () { : Aşteaptă informaţie în conducta C1 Trimite informaţie în conducta C2 : }

Comunicare multi sursă la intrare şi ieşire

Sincronizarea proceselor Se utilizează două conducte o conductă pentru transmiterea informaţiilor o conductă pentru confirmarea recepţiei informaţiilor

Sincronizarea proceselor

Programarea sistemelor de timp real Semnale, evenimente, variabile condiţionale 1

Semnale. Definiţie Un semnal este o întrerupere software care este generată atunci când apare un eveniment. Semnalul face ca execuţia procesului curent să fie întreruptă şi lansează în execuţie procesul ce tratează întreruperea

Semnale şi întreruperi întreruperile sunt generate de apariţia unui semnal la una din intrările sistemului semnalele sunt generate de către anumite porţiuni de cod ale aplicaţiei (procese)

Elemente caracteristice Semnalele sunt caracterizate prin următoarele elemente: au o anumită structură care poate diferi de la un RTOS la altul numărul şi tipurile de semnale depind de implementarea RTOS sunt asincrone (nu sosesc la momente determinate de timp) pot fi generate de subrutine de tratare a întreruperilor sau de către alte procese sunt asociate unor evenimente

Particularităţi privind implementarea semnalelor Implementările semnalelor pot sau nu beneficia de: aşezarea în coadă a semnalelor (semnalul nou de acelaşi tip suprascrie vechiul semnal) numărarea semnalelor (semnale multiple de acelaşi tip au acelaşi efect cu trimiterea unui singur semnal) transmiterea de informaţii prin intermediul semnalelor ordonarea transmiterii semnalelor (semnale diferite au aceeaşi prioritate) garantarea momentului transmisiei semnalelor când se realizează o deblocare a unor semnale blocate în prealabil

Elemente caracteristice evenimentele generatoare pot fi: intenţionale un proces semnalizează un eveniment unui alt proces neintenţionale semnalul apare datorită apariţiei unei instrucţiuni ilegale

Elemente asociate Blocul de control al semnalelor lista semnalelor acceptate lista semnalelor în aşteptare lista semnalelor ignorate lista semnalelor blocate

Elemente asociate

Elemente asociate

Acţiuni asociate semnalelor instalarea subrutinei de tratare a unui semnal dezinstalarea subrutinei de tratare a unui semnal trimiterea unui semnal ignorarea unui semnal blocarea unui semnal deblocarea unui semnal

Utilizările tipice ale semnalelor post prelucrarea unei întreruperi tratată de o subrutină de tratarea a întreruperilor sincronizare între procese

Post prelucrarea unei întreruperi

Sincronizarea proceselor

Evenimente

Evenimente. Definiţie Evenimentele sunt semnale având ca sursă apariţia anumitor condiţii la intrările sistemului sau în funcţionarea internă a acestuia

Elemente caracteristice evenimentelor Implementarea evenimentelor este dependentă de sistemul de operare sunt grupate de obicei într-un registru de evenimente având lungimea de 8, 16 sau 32 biţi mai sunt denumite şi indicatori (flags) indicatorii asociaţi evenimentelor pot fi modificaţi de către alte procese sau subrutine de tratarea întreruperilor

Elemente caracteristice evenimentelor pot fi părţi componente ale structurii de date ale unui proces sau pot fi structuri separate aplicaţiile definesc evenimentele asociate unui anumit indicator (bit dintr-un registru de evenimente)

Elemente asociate evenimentelor registrul de control al evenimentelor conţine: evenimente acceptate evenimente primite valoarea datei de expirare condiţiile de notificare registrul de evenimente

Elemente asociate evenimentelor

Elemente asociate evenimentelor

Acţiuni asociate evenimentelor Trimiterea/Semnalarea unui eveniment Recepţionarea/Luarea la cunoştinţă de apariţia unui eveniment

Semnalarea unui eveniment Operaţia permite unei surse externe să trimită un semnal unui proces Sursă externă proces subrutină de tratare a întreruperilor Printr-o singură operaţie pot fi semnalate mai multe evenimente

Recepţionarea unui eveniment permite unui proces recepţionarea unor evenimente provenite din surse exterioare permite stabilirea timpului de aşteptare pentru un anumit eveniment se pot specifica anumite condiţii care să ia în considerare mai multe evenimente (chiar dacă nu sunt simultane).

Recepţionarea unui eveniment condiţiile pot fi construite folosind operatorii binari SI/SAU condiţie SAU reluarea execuţiei are loc dacă oricare din indicatori este 1 condiţie SI reluarea execuţiei are loc dacă fiecare indicator din setul asociat condiţiei este 1

Utilizări tipice ale evenimentelor sincronizare unidirecţională a proceselor

Observaţii unui eveniment nu i se poate ataşa o anumită informaţie nu există mecanisme de acumulare a evenimentelor (efectul semnalării unui eveniment este acelaşi cu cel al semnalării mai multor evenimente de acelaşi fel). nu are un mecanism prin care să fie identificată sursa evenimentului

Programarea sistemelor de timp real Întreruperi şi excepţii 1

Excepţii. Definiţie Un eveniment care întrerupe funcţionarea normală a procesorului şi îl forţează să execute un set de instrucţiuni într-o stare specială

Excepţii. Clasificare Sincrone generate de obicei de evenimente interne procesorului împărţire prin zero erori de scriere/citire a memoriei indicator de gardă Asincrone generate de evenimente externe procesorului, de obicei generate de dispozitive hardware buton de reset convertor A/N controler comunicaţie

Întrerupere. Definiţie Întreruperea este un caz particular de excepţie corespunzătoare unui eveniment având o cauză externă procesorului, de obicei un dispozitiv hardware.

Caracteristici ale excepţiilor Sunt elemente necesare în cadrul RTOS Implementarea excepţiilor este specifică RTOS (în general dictată de modalitatea de implementare în cadrul procesorului) Implică reguli stricte de scriere a codului care utilizează întreruperile

Utilitatea excepţiilor Tratarea erorilor şi a condiţiilor speciale de gestionare a resurselor Gestionarea dispozitivelor concurente Gestionarea cererilor de servicii

Tratarea erorilor şi a condiţiilor speciale Sunt tratate o serie întreagă de erori şi se permite sistemului revenirea din această stare fără oprirea şi resetarea sistemului Erori: împărţire prin 0 depăşirea capacităţii de numărare eroare matematică eroare de citire/scriere a memoriei invocarea unor dispozitive inexistente sau neiniţializate Condiţii speciale încercarea execuţiei unor instrucţiuni care pot fi executate numai în anumite moduri de lucru al procesorului utilizarea modului ICD (in circuit debugger)

Tratarea erorilor şi a condiţiilor speciale Execuţia procesului este oprită Se lansează în execuţie o subrutină de tratare a excepţiei Se evaluează şi se tratează corespunzător eroarea

Gestionarea dispozitivelor concurente Sistemele RTOS pot conţine dispozitive care pot funcţiona simultan Dispozitivele pot necesita minim de intervenţie din partea procesorului Dispozitivele trebuie să semnaleze procesorului anumite evenimente încheierea unei acţiuni depăşirea sau coborârea sub un prag limită îndeplinirea unei condiţii Exemple: încheierea unei conversii A/N încheierea unei temporizări coborârea tensiunii de alimentare sub pragul limită umplerea unei zone tampon (buffer) de date

Gestionarea cererilor de servicii Dispozitivele periferice pot fi considerate ca dispozitive care cer anumite servicii procesorului central preluarea unei valori din zona aferentă rezultatului conversiei preluarea unor date dintr-o zonă tampon de recepţie a datelor permiterea accesului pentru citirea/scrierea unor date din/în memoria sistemului

Clasificarea excepţiilor Asincrone nemascabile Asincrone mascabile Sincrone precise Sincrone imprecise Ordinea uzuală a priorităţilor este Cea mai mare Asincronă nemascabilă Mare Sincronă precisă Medie Sincronă imprecisă Mică Asincronă mascabilă

Excepţii asincrone nemascabile Sunt excepţiile care nu pot fi mascate Ele sunt tratate imediat ce sunt recepţionate Unele procesoare au linii dedicate excepţiilor nemascabile

Excepţii asincrone mascabile Sunt excepţiile care pot fi mascate Excepţiile mascate nu sunt luate în considerare de către procesor Mascarea se realizează prin instrucţiuni dedicate ale procesorului

Excepţii sincrone precise Sunt excepţii generate de evenimente interne ale procesorului Instrucţiunea care a generat excepţia este pe deplin identificată prin conţinutul numărătorului de program Revenirea din subrutina de tratarea excepţiei este cunoscută

Excepţii sincrone imprecise Instrucţiunea care a generat evenimentul nu este cunoscută Sunt caracteristice procesoarelor de tip pipeline

Sistemul de priorităţi ale sistemului

Tratarea excepţiilor Pentru a putea fi tratate, pentru fiecare excepţie trebuie prevăzută o subrutină care să ia în considerare excepţia respectivă Alocarea unei subrutine pentru o excepţie se realizează prin intermediul unei tabele vectori Vectorii reprezintă locaţii de memorie care conţin adresele de început a codului subrutinei de tratare a excepţiei Localizarea, dimensiunea şi caracteristicile tabelei de vectori este specifică fiecărui procesor sau sistem de operare

Instalarea subrutinelor de tratare a excepţiilor În general procesoarele au instalate subrutine standard de tratare a excepţiilor care realizează: sesizarea apariţiei întreruperii tratarea minimă a excepţiei întoarcerea din subrutina de tratare a excepţiei Utilizatorii pot să creeze subrutine de tratare a excepţiilor şi să le instaleze modificând vectorul corespunzător excepţiei Instalare noii subrutine = in tabela de vectori se înlocuieşte vectorul (adresa) subrutinei standard cu vectorul (adresa) noii subrutine

Instalarea subrutinelor de tratare a excepţiilor

Tratarea excepţiilor La apariţia unei excepţii trebuie parcurşi următorii paşi: salvarea stării curente a procesorului încărcarea adresei codului funcţiei de tratarea a excepţiei în numărătorul de program execuţia funcţiei de tratare a excepţiei restaurarea stării procesorului reluarea execuţiei programului ce se executa înaintea apariţiei excepţiei

Tratarea excepţiilor Dezactivează intreruperile Salvează starea Determină sursa excepţiei Selectează subrutina de tratare a excepţiei ESR 1 ESR i ESR n Restaurează starea Activează excepţiile

Funcţia de tratare a excepţiei O funcţie de tratare a unei excepţii realizează de obicei următoarele operaţiuni comută execuţia într-o zonă de memorie dedicată salvează informaţii suplimentare despre starea procesorului se dezactivează sistemul de întreruperi (unele procesoare îşi dezactivează sistemul de întreruperi la acceptarea unei întreruperi), sau se maschează anumite niveluri de întrerupere, (de obicei cele cu prioritate mai mică); execută o serie minimă de instrucţiuni de tratare a excepţiei se reactivează sistemul de întreruperi, sau se elimină măştile anumitor niveluri; se dă din nou controlul procesorului procesului întrerupt, după ce în prealabil s-a încărcat starea lui.

Tratarea excepţiilor

Nivele de imbricare a excepţiilor Este o situaţie curentă ca în timpul tratării unei excepţii să apară o altă excepţie Cazul 1 dacă noua excepţie este de prioritate mai mică ea va fi ignorată (mascare) Cazul 2 dacă noua excepţie este de prioritate mai mare ea trebuie să poată întrerupe subrutina de tratare curentă Modul de imbricare a excepţiilor şi numărul maxim de imbricări este specific fiecărui RTOS/procesor Numărul maxim de imbricări depinde de obicei de dimensiunea memoriei stivă

Imbricarea excepţiilor

Imbricarea excepţiilor Memoria stivă trebuie să fie destul de mare ca în ea să poată fi salvate toate informaţiile necesare la apariţia fiecărei excepţii Trebuie luat în calcul şi necesarul din memoria stivă cerut de apelurile de funcţiile/procesele aplicaţiei În cazul în care nu se foloseşte un controler de memorie se poate depăşi stiva alocată aplicaţiei

Depăşirea memoriei alocate stivei

Depăşirea memoriei alocate stivei. Soluţii Creşterea dimensiunii stivei fiind luat în calcul cazul cel mai defavorabil avantaje: metodă simplă dezavantaj: alocare neeconomică a memoriei Alocarea unor zone de stivă speciale pentru întreruperi şi excepţii avantaje: utilizare unei cantităţi mai mici de memorie dezavantaj: mecanism suplimentar de gestionare a stivei suplimentare

Subrutinele de tratare a excepţiilor Rutinele pentru tratarea excepţiilor pot să cuprindă ele însele toate activităţile implicate de cauzele care au generat excepţiile. Trebuie rezolvată situaţia în care soseşte o cerere de excepţie pe un nivel prioritar celui servit la un moment dat. Rutina care tratează o nouă excepţie nu "ştie" dacă întrerupe un proces, sau o subrutină pentru tratarea unei excepţii.

Subrutinele de tratare a excepţiilor void subrutină_întrerupere() { Dezactivează sistemul de excepţii, dacă nu este dezactivat automat; Salvează registrele procesorului; Reactivează sistemul de excepţii; Executa secvenţa de instrucţiuni implicată de evenimentul care a întrerupt: Reintroduce secvenţa întreruptă în execuţie prin încărcarea registrelor salvate; }

Subrutinele de tratare a excepţiilor Activitatea subrutinei pentru tratarea unei excepţii se poate rezuma la activarea unui proces Procesul activat efectuează activităţile implicate de tratarea întreruperii. Procesul care trebuie activat se află în aşteptare, iar rutina pentru tratarea întreruperii îl trece în starea "gata de execuţie" folosind un apel de sistem.

Subrutinele de tratare a excepţiilor void subrutină_întrerupere() { Salvează starea procesului curent; Introduce procesul curent în lista "gata de execuţie ; Semnalizează procesul implicat de evenimentul care a întrerupt; /* aceasta va reactiva procesul corespunzător */ Execută funcţia planificatorului; Execută funcţia distribuitorului lansând în execuţie primul proces din lista "gata de execuţie"; }

Programarea sistemelor de timp real Gestionarea memoriei 1

Probleme legate de fragmentarea memoriei Fragmentarea memoriei Activitate suplimentară legată de gestionarea memoriei Timp de alocare a memoriei nedeterminist

Alocarea dinamică a memoriei Memoria unei aplicaţii RTOS este împărţită în mai multe zone memoria de program memoria de date memoria stivă memorie liberă Memoria liberă poate fi alocată dinamic de către aplicaţia RTOS

Alocarea memoriei Caracteristici Memoria este împărţită în blocuri de dimensiuni egale. Dimensiunea blocurilor depinde de sistemul de operare Alocarea memoriei se face la nivel de bloc Informaţia legată de blocurile alocate este păstrată într-o tabelă de alocare a memoriei

Blocul de control al memoriei Informaţia stocată în BCM adresa de bază a blocului fizic de memorie folosit pentru alocare dinamică dimensiunea totală a memoriei tabela de alocare ce indică zonele de memorie alocate şi zonele libere

Alocarea memoriei Alocarea şi eliberarea memoriei se realizează folosind funcţii speciale malloc alocarea memoriei. Parametrul funcţiei este dimensiunea memoriei (in octeţi sau kiloocteţi free eliberarea memoriei. Parametrul funcţiei este obiectul sau un pointer către obiectul pentru care este alocată memoria Alocarea se face în funcţie de dimensiunea precizată şi de dimensiune blocurilor de alocare

Alocarea memoriei. Exemplu Dimensiunea blocului de alocare: 32 octeţi Dimensiunea memoriei cerute: 60 octeţi Instrucţiunea de alocare: malloc(60); Memoria alocată: 2 blocuri de 32 octeţi = 64 octeţi Memoria nefolosită din cea alocată: 64+60=2 octeţi Acest tip de fragmentare se numeşte fragmentare internă

Alocarea memoriei. Exemplu

Fragmentarea memoriei În urma unor operaţii repetate de alocare şi eliberare a memoriei rezultă zone de memorie având caracteristicile: izolate de dimensiune mică Aceste zone nu pot fi folosite în cazul unor instrucţiuni care cer alocarea unei zone mai mari de memorie Acest tip de fragmentare se numeşte fragmentare externă

Alocarea memoriei. Exemplu

Defragmentarea memoriei Blocurile de memorie izolate sunt mutate astfel încât să alcătuiască o zonă contiguă Eficienţa operaţiei de defragmentare depinde de: viteza de mutare a blocurilor încărcarea sistemului (numărul de procese ale aplicaţiei) dimensiunea blocurilor de memorie

Alocarea memoriei. Exemplu. După defragmentare

Defragmentarea memoriei Operaţia de defragmentare se realizează în mai mulţi paşi După mutarea a două blocuri, blocul rezultat poate fi de asemeni prea mic pentru un apel de alocare Pe timpul fragmentării procesele nu pot accesa zonele de memorie alocate lor (acestea se pot afla în operaţia de mutare) Procesul de defragmentare concurează şi el la resursele sistemului ca şi orice alt proces Prioritatea procesului de defragmentare este de obicei mai mică decât a proceselor aplicaţiei

Defragmentarea memoriei Restricţii impuse defragmentării: blocurile care sunt accesate prin intermediul adreselor fizice nu pot fi mutate trebuie să fie respectate condiţiile de aliniere a adreselor de memorie

Gestionarea memoriei Un gestionar de memorie trebuie să realizeze cu rapiditate operaţiile determinarea un bloc liber de memorie de dimensiunea cerută sau mai mare (parte a funcţiei malloc) actualizarea informaţiei legate de memorie (parte a funcţiilor malloc şi free) determinarea posibilităţii de a combina blocul eliberat cu altele pentru a obţine o zonă contiguă de dimensiune mai mare să minimizeze activitatea suplimentară legată de gestioarea memoriei Eficienţa gestionarului de memorie este determinată de structura tabelei de alocare a memoriei

Utilizarea blocurilor de memorie de dimensiune fixă Zona de memorie este împărţită în grupuri (pools) de blocuri de memorie fiecare bloc de memorie dintr-un grup are aceeaşi dimensiune grupurile conţin blocuri de dimensiuni diferite Fiecare grup este controlat de un bloc de control care deţine informaţiile: dimensiunea unui bloc numărul total de blocuri disponibile numărul de blocuri libere

Blocuri de memorie

Structura memoriei Fiecare grup este constituit dintr-o număr de blocuri de memorie organizate într-o listă La o operaţie de alocare reuşită, blocul de memorie este eliminat din listă La eliberarea unui bloc de memorie acesta este adăugat în lista grupului corespunzător dimensiunii lui O operaţie de alocare sau de eliberare poate elimina sau adăuga mai multe blocuri în listele grupurilor

Alocarea blocurilor de memorie Alocarea blocurilor de memorie grupurile sunt ordonate în funcţie de dimensiunea blocurilor la cererea unei zone de memorie de o anumită dimensiune se caută blocul de dimensiunea cea mai mică dar mai mare sau egală cu dimensiunea cerută Acţiuni: se caută grupul cu dimensiunea cea mai mică se caută primul bloc liber din listă

Alocarea blocurilor de memorie Avantaje: reduce fragmentarea internă a memoriei îmbunătăţeşte performanţele aplicaţiilor cu caracteristici statice: lucrează în medii predictibile număr cunoscut de procese create cunoaşterea de la început dimensiunii blocurilor de memorie are un comportament determinist (timpul de alocare este constant) nu necesită restructurare (defragmentare)

Sisteme RTOS cu memorie redusă Dimensiunea memoriei impusă de restricţii de preţ dispozitivelor de memorie gabarit consum de energie cost suplimentar dat de gestionarul de memorie Memoria este partajată între procesele sistemului Pot apare momente când nu există memorie disponibilă (disponibilitate temporară) Unele procese vor aştepta eliberarea unor blocuri de memorie ca să poată continua execuţia

Sisteme RTOS cu memorie redusă Acţiunea executată de un proces când cererea de memorie nu poate fi alocată depinde de implementarea RTOS Acţiuni procesul se blochează pe o durată limitată procesul se blochează pe un timp nedefinit procesul îşi continuă execuţia

Implementarea alocării memoriei cu blocare Implementarea foloseşte obiecte RTOS semafor numărător mutex Obiectele permit sincronizarea operaţiei de alocare a memoriei În cazul alocării cu blocuri de dimensiune fixă, se utilizează câte un semafor numărător şi câte un mutex pentru fiecare grup de blocuri de memorie

Implementarea alocării memoriei cu blocare Semaforul numărător este iniţializat cu valoarea numărului de blocuri de memorie existente în grup valoarea lui va indica numărul de blocuri de memorie disponibile în grupul respectiv blocurile de memorie sunt alocate şi eliberate de la/la începutul listei Blocurile de control sunt actualizate după fiecare operaţie de alocare sau eliberare de memorie

Implementarea alocării memoriei cu blocare