LUCRARE DE LICENŢĂ. Algoritmi de planificare a resurselor in sisteme de operare de timp real
|
|
- Ἥλιος Δασκαλόπουλος
- 6 χρόνια πριν
- Προβολές:
Transcript
1 Universitatea Politehnica Bucureşti Facultatea de Automatică şi Calculatoare Departamentul de Automatică şi Ingineria Sistemelor LUCRARE DE LICENŢĂ Algoritmi de planificare a resurselor in sisteme de operare de timp real Coordonator: Prof. dr. Ing. Daniela Saru Absolvent: Levent Menadil Bucureşti, 2013
2 CUPRINS 1 Introducere Aspecte teoretice Algoritmi de planificare Criterii de performanţă Algoritmul FCFS Algoritmul SJF Algoritmi bazaţi pe priorităţi Algoritmi de tip Round-robin Algoritmi de tip coada multinivel Compararea algoritmilor Condiţiile de timp real Implementarea Microkernelului De ce un microkernel? Componenta Hardware Arhitectura Cortex-M Componenta Software Schimbarea contextului Iniţializarea task-urilor Mecanisme de sincronizare Modul de utilizare Comparaţie cu alte soluţii existente Studiu de caz: algoritm PID Obţinerea ecuaţiei cu diferenţe Structura task-ului Interpretarea rezultatelor Concluzii si dezvoltări ulterioare Anexe Bibliografie:
3 Listă de figuri si tabele: Figură 2.1. Regimul de funcţionare al procesorului... 9 Figură 2.2. Diagrama de stări a task-urilor...10 Figură 2.3.Diagrama simplificată de stări...12 Figură 2.4. Ordinea de execuţie cu algoritmul FCFS...13 Figură 2.5. Simularea algoritmului FCFS...14 Figură 2.6. Ordinea de execuţie cu algoritmul SJF...15 Figură 2.7. Simularea algoritmului SJF...15 Figură 2.8. Ordinea de execuţie cu algoritmul bazat pe priorităţi...16 Figură 2.9. Simularea algoritmului bazat pe priorităţi...17 Figură Simularea algoritmului Round-robin...18 Figură Simularea algoritmului Lottery Round-robin...19 Figură Algoritmul de tip coadă multinivel...20 Figură Algoritmul de tip coadă multinivel cu feedback...20 Figură Funcţia de probabilitate a tt pentru cei trei algoritmi...23 Figură Funcţia de probabilitate a tr pentru cei trei algoritmi...24 Figură Funcţia de probabilitate a tt pentru RR, respectiv Lottery RR...25 Figură Funcţia de probabilitate a tr pentru RR si pentru Lottery RR...25 Figură Constrângerile de timp real...26 Figură 3.1. Sistem de operare monolitic...29 Figură 3.2. Sistem de operare de tip microkernel...29 Figură 3.3. Sistem de operare de tip hibrid...30 Figură 3.4. Plăcuţa de dezvoltare STM32-H Figură 3.5. Programatorul/Depanatorul ST/Link v Figură 3.6. Stagiile pipeline pentru instrucţiunile ARMv Figură 3.7. Regiştrii procesorului Cortex-M Figură 3.8. Schimbarea contextului in procesorul Cortex-M Figură 5.1. Schema de reglare automată pentru un regulator discret...52 Figură 5.2. Execuţia task-urilor in sistemul proiectat...54 Tabel 2.1. Timpurile medii de terminare pentru algoritmii de planificare...21 Tabel 2.2. Timpurile medii de răspuns pentru algoritmii de planificare...21 Tabel 2.3. Media si abaterea medie pătratică a măsurătorilor...22 Tabel 2.4. Măsurătorile algoritmilor FCFS, SJF si RR...22 Tabel 3.1. Modurile de pornire pentru microcontrolerul STM32-F Tabel 4.1. Evaluarea criteriilor de performanţă a soluţiei propuse...47 Tabel 4.2. Evaluarea criteriilor de performanţă pentru microkernelul ThreadX...47 Tabel 4.3. Evaluarea criteriilor de performanţă pentru microkernelul FreeRTOS...48 Tabel 4.4. Evaluarea criteriilor de performanţă pentru microkernelul Neutrino
4 1 Introducere În ultimele decade am fost martori ai unei explozii a sistemelor informatice. Progresul lor s-a datorat în mare măsură utilităţii în viaţa de zi cu zi, începând de la ajutorul cotidian de la locul de muncă, ajungând la sistemul medical şi terminând cu vastele sisteme informatice care sunt folosite pentru asigurarea securităţii. Un al exemplu îl reprezintă sistemele integrate ce sunt prezente acum în aproape toate aparatele electronice. Modelul clasic al unui sistem informatic este clădit pe interacţiunea dintre componenta hardware; partea fizică (procesor, memorie şi restul circuitelor auxiliare) şi componenta software; definită ca partea logică. Pentru a permite utilizatorului să interacţioneze eficient cu resursele hardware, sistemele de calcul implementează un nivel separat de software, numit nivelul sistemului de operare. Acesta este, din punct de vedere structural, un program care gestionează resursele hardware, iar din punct de vedere funcţional, duce la o abstractizare a resurselor hardware pentru utilizatori. Sistemele de operare prezintă utilizatorului o interfaţă mai plăcută comparativ cu interfaţa directă cu hardware-ul, ducând la performanţe sporite. Realizând această cerinţă, dificultatea utilizării elementelor de bază ale sistemului de calcul (sau simpla cunoaştere a acestora) se transferă proiectantului sistemului de operare. Printre cerinţele sistemelor de operare putem aminti: asigurarea accesului mai multor utilizatori la un sistem de calcul, rularea mai multor programe în paralel, asigurarea protecţiei programelor din memorie, precum şi nemodificarea majoră a performanţelor sistemului de calcul prin implementarea sistemului de operare, iar sistemele specializate pot avea cerinţe mai variate. Spre exemplu, în aplicaţii ce implică stocarea de date pe un sistem distribuit, un accent mai mare este pus pe asigurarea siguranţei sistemului iar în aplicaţii industriale sau ştiinţifice apar constrângeri de timp real. De aici apare nevoia dezvoltării unor sisteme de operare ce pot satisface aceste cerinţe. Una din cele mai frecvente cerinţe este execuţia în paralel a mai multor aplicaţii. Fie că este vorba de execuţia a de aplicaţii pe un PC sau de achiziţia, prelucrarea şi 4
5 trimiterea prin o reţea a unor măsurători într-o aplicaţie industrială, multitasking-ul este esenţial. Întrucât sistemele de calcul au un număr redus de nuclee de execuţie (cel mai adesea unul singur), şi prin urmare, un număr redus de fire de execuţie fizice, apar probleme în realizarea, sau mai degrabă, simularea paralelismului. Obţinerea paralelismului prin maparea fiecărui proces logic pe un proces fizic este realizat de sistemul de operare, mai precis de o componentă a sa, numită planificator de thread-uri sau, mai simplu, planificator (engl: scheduler). Aceasta componentă trebuie să ţină cont de numeroşi parametrii şi constrângeri ducând la dificultăţi majore în proiectarea sa. Din cauza dificultăţii proiectării unui algoritm de planificare care să satisfacă toate cerinţele date şi să minimizeze toate criteriile de performanţă se recomandă utilizarea algoritmilor în funcţie de cerinţele sistemului. În sisteme interactive, o importanţă sporită o are timpul de răspuns, adică timpul de la crearea task-ului până la lansarea sa în execuţie iar în sistemele de timp real, timpul de terminare, definit ca timpul de la crearea task-ului până la execuţia sa în întregime, este vital. Lucrarea de faţă îşi propune studierea algoritmilor de planificare şi a criteriilor acestora de performanţă în Capitolul 2, ţinându-se cont de constrângerile de timp real. În Capitolul 3 am proiectat şi am implementat nucleul unui Sistem de Operare în Timp Real (SOTR) cu scopul de a testa şi a evalua aceşti algoritmi. Nucleul, de tip microkernel, este implementat pe un microcontroler STM32-F107, dar va putea fi portat cu uşurinţă către alte microcontrolere cu acelaşi procesor, Cortex-M3, sau cu versiuni mai noi de procesoare Cortex-M. Acesta va avea un grad ridicat de scalabilitate, având implementate semafoare binare şi mutexi că mecanisme de sincronizare şi putând să i se adauge la revizii ulterioare un sistem de fişiere, drivere pentru periferice, şi un sistem de protecţie a memoriei, toate utile în aplicaţiile uzuale. În Capitolul 4, am relizat o comparaţie a microkernelului cu alte soluţii existente de pe piaţă, iar în Capitolul 5, am implementat pe acesta un algoritm de reglare, de tip PID, sub forma unui task pentru a putea studia criteriile de performanţă definite în Capitolul 2 şi a evidenţia funcţionalitatea acestui task în timp real. Scopul urmărit a fost aprofundarea domeniului sistemelor de operare şi a proiectării lor precum şi a domeniului programării microcontrolerelor. Conexiunea dintre aceste domenii, aparent neintuitivă, este vitală în sectoarele bazate pe sisteme integrate. Însăşi proiectarea sistemelor de operare este deseori considerată de mulţi ca fiind un domeniu 5
6 periculos, destinat unui număr restrâns de oameni, preferându-se utilizarea acestora din perspectiva de utilizatori, iar lucrarea de faţă încearcă, oferind un exemplu relativ simplu şi intuitiv, să arate contrariul. 6
7 2 Aspecte teoretice Pentru a înţelege conceptul de execuţie în paralel a firelor de execuţie trebuie să fie definim clar termenul de fir de execuţie (engl. thread). Acesta este cea mai mică unitate de procesare ce poate fi programată spre execuţie de către sistemul de operare. Nu trebuie făcută confuzia între program şi fir de execuţie, cel din urmă fiind o instanţiere a unui program în execuţie şi prezentând parametrii de stare. În cadrul sistemelor de operare, mai există conceptul de proces pentru a defini o zonă clară de memorie care poate conţine unul sau mai multe fire de execuţie. Acest concept ne permite evitarea efectelor nefaste ale utilizării aceluiaşi spaţiu de către mai multe fire de execuţie şi a alterării codului sau a datelor unui fir de execuţie de către alt fir de execuţie. Diferenţa dintre proces şi fir de execuţie constă, aşadar în utilizarea unei zone comune de memorie de către mai multe thread-uri şi utilizarea unor zone separate în cazul proceselor. Din perspectiva sistemului de operare, schimbarea de la un proces la altul implică saltul la o zonă de memorie îndepărtată, trecerea la altă stivă, la alt "heap", precum şi schimbarea completă a parametrilor de stare. Însă trecerea de la un fir de execuţie la altul implica cel mai adesea încărcarea altui set de regiştrii ai procesorului şi trecerea la altă stivă. Din această cauză, schimbarea de la un proces la altul se realizează mai lent, iar schimbarea între fire de execuţie mai rapid, ducând la denumirea de "light-weight process" pentru fire de execuţie. În mod ideal, firele de execuţie sunt folosite pentru programe ce au nevoie de un paralelism perfect controlabil. De exemplu, dacă o problemă poate fi împărţită în mai multe probleme, cu sarcini aproape identice, firele de execuţie ar putea fi o alegere bună, iar dacă nu este nevoie de un paralelism atât de controlabil, ar trebui utilizate procese [1]. Pentru a obţine performanţe maxime în sisteme în care se doreşte o paralelizare semnificativă (ex. Serverele WEB sau sistemele de tip PC) se folosesc procesele iar în cadrul acestora, firele de execuţie. Pentru a realiza o abstractizare a ambilor termeni când ne referim la îndeplinirea unui scop, se foloseşte termenul de task. Acest termen, împreună cu cel de fir de execuţie şi de proces va fi utilizat în continuare în această lucrare, deşi există o distincţie clară între ultimele două. 7
8 Sistemele de operare cu suport pentru multitasking au de îndeplinit mai multe cerinţe. Cele mai elementare sunt alocarea unui spaţiu în memorie pentru variabilele de stare şi pentru codul programului precum şi asigurarea schimbării între task-uri fără pierderi de informaţii (doar în cod reentrant) şi relativ rapid [1] iar printre cerinţele opţionale putem enumera comunicarea şi sincronizarea între task-uri. Tot sistemului de operare îi revine sarcina asigurării că programele nu se suprascriu şi că nu se ajunge la pierderi de date. Ideal, într-un astfel de sistem, fiecare task creat de utilizator ar trebui privit ca având monopol asupra procesorului, a regiştrilor săi de uz general şi a contorului de program, precum şi a unei zone de memorie. Alegerea programului ce se va executa în continuare este realizată de o componentă a sistemului de operare, din cadrul kernelului, numit planificator de task-uri (engl: task scheduler) iar schimbarea efectivă a regiştrilor procesorului şi sărirea la altă linie de program este datoria dispacherului, tot din cadrul kernelului [2]. Acesta poate rula ca task separat pentru a decide task-ul care va urma, sau poate fi apelat de către o întrerupere pentru a aplica pe moment algoritmul de planificare. Ultima variantă, prezintă avantaje clare de flexibilitate, kernelul fiind apelat mai des şi ducând la o eficienţă mai bună a algoritmului folosit, însă are ca dezavantaj schimbarea mai greoaie între task-uri în cazul algoritmilor complecşi şi cu o durată nedeterministă Algoritmi de planificare Descrierea algoritmilor de planificare se va face, în continuare cu următoarele premize: procesorul are un singur nucleu de execuţie, aşadar în orice moment de timp se poate executa fizic un singur task, şi nu se face distincţia între fire de execuţie şi procese, sistemul considerându-se că are un singur tip de task implementat. Pentru a înţelege condiţiile în care se poate schimba contextul şi, implicit task-urile, trebuie să fie făcute clare condiţiile în care funcţionează majoritatea sistemelor de calcul. În prezent, date fiind creşterea frecvenţei procesorului şi îmbunătăţirea microarhitecturii acestora, puterea de calcul este rareori o problemă. În schimb, acestea sunt cel mai adesea 8
9 limitate de puterea utilizatorului (prin care o să ne referim la orice instanţă situată în afara calculatorului) de a introduce date. Spre exemplu, motoraşul dintr-un hard disk rulează de câteva ordine de mărime mai încet decât viteza procesorului. În cazuri concrete, şi luând în considerare un singur task, acesta din urmă va alterna deseori între perioade lungi în care va rula pe procesor şi perioade lungi în care va aştepta să primească date din exterior. Acest lucru reprezintă un avantaj pentru proiectantul sistemului de operare permiţându-i acestuia să folosească timpul în care task-ul aşteaptă să primească date, pentru a rula alt task. În figura de mai jos, este reprezentată grafic alternanţa perioadelor în care procesorul rulează cu programul task-ului (numite aici CPU burst-uri) şi a perioadelor în care acesta aşteaptă date din exterior (numite I/O burst-uri). Figură 2.1. Regimul de funcţionare al procesorului Sursa imaginii este [15] De aici rezultă o primă categorie de algoritmi de planificare care duc la schimbarea task-ului curent, şi anume algoritmii non-preemptivi sau cooperativi, (Silberschantz, et al., 2005) aceştia invocând kernelul doar în situaţia în care task-ul curent trece în starea de aşteptare pentru a întâmpina un semnal din exterior şi, evident, în situaţia în care task-ul 9
10 curent se termină de executat. Termenul de cooperativi mai este folosit deoarece, în lipsa unei întreruperi din exterior pentru a schimba task-ului curent, ei îşi pot ceda între ei, voluntar, accesul la procesor. A doua categorie a algoritmilor de planificare o reprezintă algoritmii preemptivi care pot fi schimbaţi din execuţie de către o întrerupere sau la terminarea unui I/O burst. Deşi algoritmii non-preemptivi pot fi folosiţi şi pe sisteme ce nu au anumite componente hardware (de exemplu, un timer) se pot vedea clar beneficiile algoritmilor de tip preemptiv, aceştia permiţând o flexibilitate sporită, nebazându-se pe evenimente semistocastice cum ar fi cererea unor date de I/O. În sistemele de operare actuale, sunt în folosinţă algoritmi preemptivi încăpând cu Windows 95 şi cu Mac OS X. În figura 2.2 este prezentată diagrama corespunzătoare task-urilor organizate de un algoritm de planificare. În cazul algoritmilor non-preemptivi, dispatcherul nu poate trimite spre rulare un alt task decât după blocarea task-ului actual. Figură 2.2. Diagrama de stări a task-urilor Criterii de performanţă Alegerea unui algoritm de planificare în defavoarea altuia se face raportat la nişte criterii de performanţă. Aceştia, la rândul lor, pot fi sau nu semnificativi, în funcţie de context şi sunt [2]: 10
11 1. Utilizarea CPU-ului. Reprezintă procentual raportul dintre timpul folosit pentru a executa cod util şi timpul total care trece. Ideal se doreşte utilizarea procesorului într-o proporţie de 100%, dar în sistemele reale, utilizarea variază între 40% şi 90%. 2. Rata de terminare a task-urilor. Pentru a măsura eficienţa algoritmului raportat la cantitatea de muncă efectuată se mai poate lua drept criteriu de performanţa rata în care se termină task-urile. Pentru task-uri lungi, poate fi de un task / oră iar în cazul task-urilor scurte, poate fi de 10 task-uri / secundă. 3. Timpul de terminare. Din punctul de vedere al unui task, acesta este caracterizat prin timpul total scurs de la creare până la terminare. Acest timp este alcătuit din suma timpilor în care task-ul aşteaptă în lista de aşteptare, execută pe CPU şi realizează transferuri I/O. 4. Timpul de aşteptare. Acesta reprezintă timpul total pe care task-ul îl petrece în lista de aşteptare şi este direct afectat de acţiunile luate de planificator 5. Timpul de răspuns. În sistemele interactive se pune accent pe timpul mediu de la crearea task-ului până când acesta începe să ofere rezultate. Acest timp este în general limitat de viteza echipamentului periferic de I/O, dar pentru simplificare putem considera acest timp ca fiind timpul de aşteptare de la crearea task-ului până la lansarea sa în execuţie pentru prima dată. Pentru optimizarea algoritmilor de planificare ar trebui să se urmărească mărirea utilizării CPU-ului şi a ratei de terminare a task-urilor şi să se micşoreze timpul de terminare, timpul de aşteptare şi timpul de răspuns. Cel mai adesea se doreşte optimizarea valorii medii, dar în multe situaţii se doreşte obţinerea unui minim sau unui maxim garantat pentru cel puţin un criteriu de performanţă. În unele situaţii se poate dori obţinerea unei variante mici între valoarea medie şi valorile de minim sau de maxim. În continuare vor fi prezentaţi şi exemplificaţi mai mulţi algoritmi de planificare. Aceştia au fost simulaţi în C++ sub mediul de dezvoltare Devcpp 5.3 cu compilatorul TDM- GCC pe 64 de biţi. Pentru realizarea diagramelor am folosit programul Gnuplot 4.6. şi un program realizat în Python 3.3, pentru a translata datele dintr-un format.txt într-un format.gpl, util programului de plotare. 11
12 Ca ipoteza se consideră 5 task-uri cu momentul de pornire un timp aleator cuprins între 0 şi 399 unităţi de timp, cu o durată (care se consideră cunoscută) cuprinsă între 150 şi 500 u.t. şi cu prioritatea între 0 şi 16, din 4 în 4, 16 considerându-se prioritatea minimă, iar 0 prioritatea maximă. De asemenea, cuanta de timp se consideră de 50 u.t. şi se neglijează, pentru moment, timpul utilizat de planificator şi de dispatcher pentru a schimba între task-uri. În alegerea acestor mărimi s-a ţinut cont, în defavoarea unor studii şi referinţe pentru sisteme de operare de pe piaţă (acestea fiind deseori valabile doar în situaţii specifice), doar de respectarea condiţiilor tipice ce apar în execuţia task-urilor. Ca exemple în acest sens sunt numărul relativ mic de priorităţi diferite, durata task-urilor comparabilă cu momentul creării acestora şi mărimea cuantei de timp considerabil mai mică decât durata task-ului. O altă notă importantă este faptul că nu se în calcul mărimea CPU burst-ului, ci mai degrabă mărimea task-ului. Aşadar, sistemului simplificat îi lipseşte starea de blocat pentru I/O rezultând diagrama de stări prezentată în figura 2.3. Figură 2.3.Diagrama simplificată de stări Criteriile de performanţă luate în considerare au fost timpul mediu de terminare şi timpul mediu de răspuns. Procesorul se consideră ocupat în proporţie de 100%, neputându-se lua nivelul de ocupare a CPU-ului drept criteriu iar, deoarece unitatea de timp aleasa este pur conceptuală, nu se poate lua în calcul nici criteriul ratei de terminare a task-urilor Algoritmul FCFS Unul dintre cei mai simplii algoritmi de planificare este algoritmul Primul Venit Primul Servit, (engl: First Come, First Served - FCFS). Acesta este de tip non-preemptiv şi implică executarea task-urilor în ordinea în care acestea sunt create. Kernelul ţine o coadă de 12
13 tip FIFO în care sunt trecute task-urile pe măsură ce sunt create, pe o parte, şi din care sunt şterse task-uri, pe măsură ce intră în execuţie, pe cealaltă parte. Luăm exemplul a patru task-uri: A, B, C, D, de lungime 5, 1, 3, 2 ms care sunt create în această ordine la momentul 0. În acest caz, procesele se vor executa precum se vede în figura 2.4: Figură 2.4. Ordinea de execuţie cu algoritmul FCFS În acest caz, timpul de terminare pentru procesul A este de 5 ms, pentru procesul B, 6 ms, pentru procesul C, 9 ms iar pentru procesul D, 11 ms. Aşadar, timpul mediu de terminare este ( ) / 4 = 7.75 ms, iar timpul mediu de răspuns este ( ) / 4 = 5 ms. Simularea acestui algoritm a rezultat, conform aşteptărilor, într-un timp mediu de terminare şi un timp mediu de răspuns relativ mari, 1047 u.t. respectiv, 650 u.t. Rezultatele acestui algoritm depind foarte mult de ordinea în care sunt create task-urile şi durata lor, iar optimizarea lui este practic imposibilă, considerându-i caracterul non-preemptiv. Simularea acestui algoritm apare în figura
14 Figură 2.5. Simularea algoritmului FCFS Algoritmul SJF Pentru a încerca scăderea timpului mediu de terminare şi a timpului mediu de răspuns, s-a încercat prioritizarea task-urilor scurte, punându-le pe acestea înaintea task-urilor create anterior, dar mai lungi. Acesta este principiul din spatele algoritmului Shortest Job First (SJF) de tip preemptiv. Algoritmul verifică la fiecare creare de task, dacă acesta are cea mai scurtă durată, comparându-i durata cu cea a task-ului curent, iar dacă are durata mai mică, se trece la task-ului nou creat (de unde rezultă caracterul lui preemptiv). Deoarece, deseori, nu cunoaştem durata task-ului, problema la acest algoritm e dată de estimarea acestui timp. Aşadar se poate ajunge la pierderea unei părţi semnificative din puterea de procesare al algoritmului de planificare, care este în sine greu de proiectat. De asemenea, acest algoritm nu se recomandă aplicaţiilor de timp real, care impun constrângeri dure din cauza neglijării taskurilor cu durată mare. Pentru a funcţiona corespunzător, algoritmul mai necesită din partea kernelului un vector în care sunt ţinute task-urile cu un câmp adiţional în care sunt trecute durata lor estimată (sau dată). 14
15 Considerând acelaşi exemplu teoretic de mai devreme cu 4 task-uri, luate în ordinea sosirii, A, B, C, D de durata 5, 1, 3, 2 şi utilizând algoritmul SJF, ele se vor executa în ordinea B, D, C, A, cum se vede şi în figura 2.6. Figură 2.6. Ordinea de execuţie cu algoritmul SJF Timpul de terminare devine de 1 ms pentru procesul B, de 3 ms pentru D, respectiv 6 şi 11 ms pentru procesele C şi A. Prin urmare, timpul mediu de terminare devine ( ) / 4 = 5.25 ms iar timpul mediu de aşteptare este ( ) / 4 = 2.5 ms. Implementarea acestui algoritm a rezultat într-un timp mediu de terminare de 940 u.t. şi într-un timp mediu de aşteptare de 515 u.t., ambele fiind mai mici decât echivalentele lor în algoritmul FCFS. Optimizarea acestui algoritm se realizează aproape exclusiv părţii responsabile de predicţia duratei task-ului sau a duratei CPU burst-ului în cazul proceselor dependente de I/O. Ordinea de execuţie se poate vedea în simularea din figura 2.7. Figură 2.7. Simularea algoritmului SJF 15
16 Cum se vede şi din diagramă, sunt executate prioritar task-urile cu o durată mică. Ce nu se poate observa, însă, este apelarea planificatorului la fiecare iniţializare de task, acesta fiind chemat şi la momentul 334 odată cu iniţializarea task-ului 4 precum şi la momentul 369, cu crearea task-ului 5. Asta duce la un număr dublu de apeluri ale planificatorului faţă de algoritmul FCFS Algoritmi bazaţi pe priorităţi Problema planificării se poate complica dacă este să luăm în calcul prioritatea explicită a task-urilor. Algoritmii trataţi anterior aveau prioritatea egală, în cazul algoritmului FCFS şi o prioritate implicită, dată de durată task-ului, în cazul algoritmului SJF. Planificarea bazată pe priorităţi poate fi atât de tip non-preemptivă cât şi de tip preemptivă, în prima situaţie, schimbarea cu task-ul cel mai prioritar din coadă de aşteptare având loc doar la încheierea task-ului curent. În cazul preemptiv, schimbarea poate avea loc la o întrerupere dată de expirarea unui timer sau, mai simplu, la crearea noului task (dacă acesta este mai prioritar decât task-ul curent). La algoritmii bazaţi pe priorităţi poate apărea problema "înfometării" task-urilor cu o prioritate scăzută, aceştia ajungând să nu se execute decât după toate task-urile cu o prioritate crescută. Această problemă poate fi rezolvată modificând dinamic prioritatea taskului, crescându-i prioritatea pe parcurs, când acesta nu se execută (procedeu cunoscut drept îmbătrânire ) sau modificând algoritmul prin introducerea conceptul de cuanta de timp. Considerând aceleaşi task-uri, cu durata de 5, 1, 3 şi 2 ms, le vom asigna priorităţile 2, 3, 1, 4 şi vom verifica priorităţiile doar la momentul creării task-urilor. Aşadar, ele se vor executa în ordinea C, A, B, D potrivit priorităţii, cum reiese şi din figura 2.8. Figură 2.8. Ordinea de execuţie cu algoritmul bazat pe priorităţi 16
17 Simulând algoritmul cu priorităţi, obţinem timpul mediu de aşteptare de 1167 u.t. şi timpul mediu de răspuns de 770 u.t., lucru ilustrat şi în figura 2.9. Figură 2.9. Simularea algoritmului bazat pe priorităţi În acest exemplu priorităţile task-urilor de la 1 la 5 au fost 12, 8, 4, 4, 12. Deşi se remarcă un timp mediu de aşteptare şi un timp mediu de răspuns mai mare decât în ultimii algoritmi studiaţi, acest algoritm are printre cele mai bune performanţe în sistemele de timp real, garantând un timp minim de răspuns pentru anumite task-uri critice Algoritmi de tip Round-robin O clasă de algoritmi foarte des utilizaţi în prezent este cea de tip Round-robin. Aceştia sunt algoritmi preemptivi ce implică schimbul între task-uri la un interval de timp stabilit. Astfel, procesorul executa cuante din fiecare task din coadă, aflat în starea ready, pe rând. Fiind folosiţi preferenţiabil în sisteme interactive, aceşti algoritmi au mai multe variaţiuni care ţin sau nu cont de prioritatea task-urilor. 17
18 timp de 50 u.t. În figura 2.10 se poate observa succesiunea task-urilor executate pentru o cuantă de Figură Simularea algoritmului Round-robin Timpul de aşteptare în acest caz este mult mai mare, fiind proporţional cu numărul de task-uri înmulţit cu durata medie a unui task, însă timpul de răspuns este mult mai mic, fiind limitat la numarul de task-uri înmulţit cu mărimea unei cuante de timp. Algoritmii de tip Round-robin pot fi optimizaţi pentru a corespunde cerinţelor sistemului variând mărimea cuantei de timp pentru a obţine rezultate mai bune. Aceşti algoritmi pot avea caracteristici de timp real, introducând conceptul de prioritate. Aşadar se poate ajunge la creşterea dimensiunii cuantei de timp sau a numărului acestora pentru task-uri cu o prioritate ridicată. Un astfel de algoritm bazat pe priorităţi şi pe cuante de timp este cel de Lottery scheduling, care oferă un număr mai mare de cuante de timp task-urilor prioritare. Acest algoritm nu duce decât la performanţe sporite în medie pentru task-urile cu prioritate mare, nefiind recomandat sistemelor de timp real. Totuşi, avem garanţia executării cel puţin timp de o cuantă a tuturor proceselor într-un ciclu complet, rezolvând problema "înfometării". 18
19 În simularea acestui algoritm am ales acordarea unei cuante de timp task-urilor cu prioritate 12, a doua cuante pentru prioritatea 8, şi a 4 şi 8 cuante pentru task-uri cu priorităţile 4 şi 0. Ordinea de execuţie este vizibilă în figura Figură Simularea algoritmului Lottery Round-robin Algoritmi de tip coada multinivel Algoritmii studiaţi până acum au constant în menţinerea de către sistemul de operare a unei singure cozi sau a unui vector care să conţină informaţii despre toate procesele din memorie. O altă abordare implica împărţirea task-urilor în mai multe cozi şi executarea lor într-o manieră ierarhică. Acest lucru este facilitat de separarea relativ facilă a task-urilor în mai multe categorii. Cea mai simplă categorisire ar fi împărţirea în task-uri interactive ce rulează în foreground şi în task-uri ne-interactive ce rulează în background. Modalitatea de execuţie este simplă, existând un algoritm de planificare între cozi. Cel mai adesea acesta este bazat pe priorităţi fixe, aşadar se execută procese din coadă cea mai prioritară, abia la finalizarea tuturor acestora putând rula procese din coadă imediat 19
20 următoare, s.a.m.d. O altă variantă este executarea după o manieră de tip Round-Robin cu priorităţi între cozi, spre exemplu acordarea primei cozi a 80% din timpul pe procesor, iar celei de-a două cozi, a restului de 20% într-o structură cu două cozi. În cadrul fiecărei cozi se poate implementa câte un alt algoritm de planificare, rezultate bune fiind obţinute cu algoritmi de tip Round-Robin pentru primele cozi şi cu algoritmul FCFS pentru ultimele cozi. În figura 2.12 apar reprezentate grafic cele 3 cozi ale kernelului în care se vor păstra date despre procese. Figură Algoritmul de tip coadă multinivel Pentru a acorda o flexibilitate mai mare algoritmului coada multinivel, se permite schimbarea dinamică a task-urilor între cozi. Acest lucru poate avea loc după o perioadă de timp, când unui task îi creşte prioritatea datorită îmbătrânirii sau explicit, printr-un apel de sistem din interiorul task-ului. Algoritmul rezultat poartă denumirea de algoritm coada multinivel cu reacţie (engl: multilevel feedback-queue scheduling algoritm). Figură Algoritmul de tip coadă multinivel cu feedback 20
21 2.2. Compararea algoritmilor Deoarece avem un singur set de valori simulat pe algoritmi cu intrări aleatoare, alegem să formulăm o concluzie pe o analiză statistică. Aşadar, pentru a obţine un set de măsurători cu nivel ridicat de încredere, formulam problema cu 10 task-uri şi efectuăm măsurătorile de 10 de ori pentru fiecare din cei 5 algoritmi. Măsurând timpul mediu de terminare, t t, obţinem setul de date din tabelul 2.1 Algoritm Test 1 Test 2 Test 3 Test 4 Test 5 Test 6 Test 7 Test 8 Test 9 Test 10 FCFS SJF Priority Based Round-Robin Lottery RR t t Tabel 2.1. Timpurile medii de terminare pentru algoritmii de planificare Iar pentru timpul mediu de răspuns, t r, avem valorile: Algoritm Test 1 Test 2 Test 3 Test 4 Test 5 Test 6 Test 7 Test 8 Test 9 Test 10 FCFS SJF Priority Based Round-Robin Lottery RR t r Tabel 2.2. Timpurile medii de răspuns pentru algoritmii de planificare 21
22 Efectuând media tuturor testelor şi calculând abaterea medie pătratica pentru fiecare set de 10 teste cu ecuaţia 2.1 obţinem datele din tabelul 2.3. Abaterea medie pătratică, în acest context, are rolul de a stabili nivelul de dispersie a valorilor, permiţându-ne să facem afirmaţii clare pe baza unor seturi de valori. σ(x) = 1 ( n (X X ) 2 n i=1 (2.1) În ecuaţia 2.1, σ(x) este abaterea medie pătratică a variabilei X, acesta fiind, pe rând, t t si t r, iar X reprezintă media celor n măsurători. Algoritm t t σ(t t ) t r σ(t r ) FCFS 1656, , SJF 1322, ,8 134,4 Priority Based 1641, ,8 Round-Robin 2518, , Lottery RR 2292, ,4 98 Tabel 2.3. Media si abaterea medie pătratică a măsurătorilor Pentru a formula concluzii din acest tabel alegem sa luăm in calcul doar algoritmii care nu ţin cont de prioritatea explicită a task-urilor. Deoarece aceasta nu apare în formulele pentru a calcula cei doi indici de performanţă, raportat la timpul mediu de terminare şi la timpul mediu de răspuns, vom avea rezultate mai slabe. Algoritm t t σ(t t ) t r σ(t r ) FCFS 1656, , SJF 1322, ,8 134,4 Round-robin 2518, , Tabel 2.4. Măsurătorile algoritmilor FCFS, SJF si RR Din acest ultim tabel, se poate observa că algoritmul FCFS are atât timpul mediu de terminare cât şi timpul mediu de răspuns mai mari decât în cazul algoritmul SJF. De asemenea, algoritmul Round-robin duce la un timp mediu de aşteptare mai mare decât ceilalţi 22
23 doi algoritmi, dar la un timp mediu de răspuns mult mai mic. Aceste concluzii ţin cont de media ± abaterea medie pătratică pentru cele trei seturi de valori. Pentru a ilustra ordonarea timpului mediu de aşteptare pentru cei trei algoritmi am plasat pe acelaşi grafic funcţia densitate de probabilitate pentru cele trei seturi de valori. Figură Funcţia de probabilitate a t t pentru cei trei algoritmi 23
24 Figură Funcţia de probabilitate a t r pentru cei trei algoritmi Graficele au fost realizate folosind metoda neparametrică kernel density estimation (KDE) pentru a obţine densitatea de probabilitate pentru o serie de variabile aleatoare. O altă observaţie este că algoritmul bazat pe cuante de timp fără priorităţi (Roundrobin) are timpul mediu de răspuns mult mai mic decât primii doi algoritmi. Acest lucru este datorat limitării timpului de răspuns la numărul de taskuri înmulţit cu mărimea cuantei de timp, cel din urmă fiind mic relativ la durata unui task. Tot despre algoritmul Round-robin se poate spune că are cel mai mare timp de terminare dintre cei cinci algoritmi studiaţi. Realizând o comparative între cei doi algoritmi bazaţi pe cuante de timp, anume Round-robin şi Lottery Round-robin, observăm că media timpilor de terminare este puţin mai mare în cazul algoritmului Round-robin, cea ce era de aşteptat, având în vedere preferinţa algoritmului Lotterry RR pentru anumite task-uri. 24
25 Figură Funcţia de probabilitate a t t pentru RR, respectiv Lottery RR În cazul timpului mediu de răspuns, pentru algoritmii Lottery RR respectiv RR, se obţin rezultate mai bune pentru cel din urmă. Figură Funcţia de probabilitate a t r pentru RR si pentru Lottery RR 25
26 2.3. Condiţiile de timp real Sistemele de timp real se caracterizează prin necesitatea obţinerii unui rezultat într-un interval stabilit. Pentru ele, respectarea acestui timp minim impus este la fel de importantă ca şi corectitudinea rezultatelor [3]. Ele se împart în sisteme cu constrângeri dure si sisteme cu constrângeri lejere. În sistemele cu constrângeri dure (engl: Hard Real-time) ratarea termenului de predare a rezultatelor poate duce la situaţii catastrofale iar prin proiectarea lor trebuie să se prevină astfel de situaţii. Exemple în acest sens sunt sistemul de control al unei centrale nucleare sau sistemul de deschidere a airbag-urilor într-o maşină. În sistemele cu constrângeri lejere (engl: Soft Real-time) pe de altă parte, se permite depăşirea termenului, ocazional. Acest lucru ducând doar la scăderea calităţii serviciului oferit. Printre exemplele de sisteme de timp real cu restricţii lejere putem enumera monitoarele de supraveghere video sau telecomunicaţiile. În figura 2.18 apare executarea unui task periodic având constrângeri de timp real. S-a notat cu t a timpul de aşteptare pentru apariţia evenimentului, cu C timpul de execuţie sau timpul de calcul iar cu D timpul limită maxim (engl: deadline). Condiţia pentru respectarea cerinţei de timp real este ca t a + C < D. În figura 2.18 apare executarea unui task periodic având constrângeri de timp real. S-a notat cu t a timpul de aşteptare pentru apariţia evenimentului, cu C timpul de execuţie sau timpul de calcul iar cu D timpul limită maxim (engl: deadline). Condiţia pentru respectarea cerinţei de timp real este ca t a + C < D. Figură Constrângerile de timp real 26
27 În sisteme cu astfel de constrângeri, sistemul de operare, numit şi RTOS (Real Time Operating System) trebuie să ne asigure facilităţi pentru garantarea nevoilor de timp real. Mai precis ele trebuie să aibă un sistem de priorităţi care să asigure un timp minim de execuţie task-urilor prioritare. În majoritatea microcontrolerelor este prevăzut un astfel de sistem, numit sistem de întreruperi, care permite întreruperea asincronă a programului principal şi schimbarea fluxului de control către un alt program. Aceste întreruperi funcţionează după o regulă absolută de priorităţi: orice întrerupere cu o prioritate mai mare se poate executa peste o întrerupere cu o prioritate mai mică. Luând în calcul proiectarea pe un microcontroler cu un sistem de întreruperi, proiectantul sistemului de operare trebuie să implementeze un sistem echitabil de planificare pentru task-uri cu aceeaşi gamă de priorităţi (de regulă scăzută). Dintre algoritmii studiaţi, FCFS şi SJF pot duce la executarea întârziată a unor taskuri prioritare, iar Lottery Round-robin este nedetermist. Totuşi se poate implementa cu succes algoritmul bazat pe priorităţi pentru task-uri cu priorităţi diferite şi algoritmul Round-robin pentru task-uri cu aceeaşi prioritate. 27
28 3 Implementarea Microkernelului În ciclul de viaţă al unui proiect trebuie urmărite o serie de etape bine stabilite pentru a asigura îndeplinirea obiectivelor cu succes. Aceste etape sunt de regulă de analiză, proiectare, implementare şi de testare. Însă ciclu de viaţă nu se termină odată cu implementarea efectivă a soluţiei, ci se continua cu etapa de mentenanţă post-implementare. Aceasta constă în îmbunătăţirea facilitaţilor deja existente, corectarea unor erori imposibil de prevăzut în momentul proiectării sau dezvoltarea ulterioară a proiectului. În cadrul implementării microkernelului am folosit tehnica proiectării în spirală. Aceasta a constat în realizarea mai multor prototipuri unul după altul, fiecare fiind realizat prin cei patru paşi definiţi anterior De ce un microkernel? Actualmente, datorită abundenţei sistemelor de operare şi a utilizării lor într-un mod generalizat pe sisteme cu microprocesoare, producătorii de chipuri au implementat suport direct pe procesor pentru funcţiile acestora. Un exemplu concret este capacitatea de a scrie cod protejat sau neprotejat prin modificarea unui bit dintr-un registru intern. Pentru a coordona resursele unui calculator, sistemele de operare trebuie să aibă acces de scriere/citire asupra programelor utilizator, dar pentru a fi protejate de erori umane, trebuie să nu poată fi modificate de acestea. Acest lucru duce la o primă clasificare a sistemelor de operare între sisteme de operare scrise în întregime în cod privilegiat, aşa numitele kernele monolitice (dintr-o singură bucată) şi sisteme de operare scrise parţial în cod protejat. Pentru ultima categorie, se face distincţia clară între kernel (numit microkernel datorită dimensiunii reduse) şi restul sistemului de operare, scris în cod neprotejat. A treia categorie reprezintă o combinaţie a celor două abordări, având componentele esenţiale, dar şi o parte a elementelor neesenţiale ale sistemului scrise în cod protejat. 28
29 În figurile 3.1, 3.2 şi 3.3 sunt reprezentate grafic cele trei mari categorii de sisteme de operare, sursa bibliografică utilizată fiind [19]. În zona colorată cu roşu apar componentele sistemului de operare scrise în cod protejat iar în zona colorată cu galben sunt trecute elementele scrise în cod utilizator sau neprotejat. Figură 3.1. Sistem de operare monolitic Figură 3.2. Sistem de operare de tip microkernel 29
30 Figură 3.3. Sistem de operare de tip hibrid Datorită dimensiunilor reduse şi a modularităţii microkernelelor, acest tip de sistem de operare este cel mai adesea folosit în sistemele integrate. Printre versiunile cunoscute de microkernele putem enumera QNX, MINIX, Symbian, ThreadX şi FreeRTOS. Pentru o arhitectură dată, acestea pot varia ca mărime între câteva zeci de KB până la câteva sute KB. Din cauza cerinţelor diferite ce pot să apară în proiectarea sistemele integrate, o practică des întâlnită este conceperea separată a sistemului de operare, în defavoarea utilizării unei versiuni existente de pe piaţă. Proiectantul sistemului de operare, poate alege, aşadar, metoda de implementare a task-urilor, de alocare a memoriei, algoritmul de planificare a taskurilor precum şi eventuale componente din afara microkernelului (spre exemplu un sistem de fişiere) Componenta Hardware Microcontrolerul ales pentru a implementa sistemul de operare este STM32-F107 şi este integrat pe o plăcuţă de dezvoltare STM32-H107, amândouă produse de Olimex. Acest microcontroler utilizează un procesor de tip Cortex-M3 interfaţat cu o memorie de program de 256 KB de tip Flash şi cu 64 KB de memorie de date de tip SRAM. Sursele primare de ceas constau dintr-un oscilator de cuarţ extern cu frecvenţa de 25MHz si din un 30
31 oscilator intern RC cu frecvenţa de 8 Mhz. Printre alte periferice putem enumera 10 timere din care 4 sunt de uz general, 2 CAN-uri pe 12 biţi ce pot analiza până la 16 canale externe, 2 DAC-uri pe 12 biţi şi un senzor de temperatură. Comunicarea cu exteriorul se poate realiza prin trei porturi SPI, două porturi I²C, şi printr-un port MII ce ne permite accesul pe Ethernet. Pinii de I/O sunt configuraţi pe 5 porturi numerotate de la A la E cu 8 biţi fiecare. Pentru a vedea uşor parametrii de stare ai microcontrolerului, plăcuţa mai are 2 LED-uri de culori diferite. Tensiunea de utilizare este de 2-3.6V (3.3V in mod nominal) pentru alimentare şi nivelul logic "1". Aceasta tensiune este asigurată printr-un transformator alimentat prin USB. În starea nealimentata, microcontrolerul poate asigura tensiune unui număr de 41 de regiştrii pe 16 biţi şi unui oscilator Khz utilizând o baterie internă. Frecvenţa utilizată în cadrul proiectului a fost de 37.5 Mhz, obţinută folosind un multiplicator de frecvenţă, de la oscilatorul extern de 25 Mhz. Figură 3.4. Plăcuţa de dezvoltare STM32-H107. Sursa pozei este [20] 31
32 O altă componentă hardware folosită a fost debugger-ul pe JTAG ST-Link/v2 produs tot de Olimex. Acesta se conectează la portul JTAG al microcontrolerului pentru a avea control şi acces nemijlocit asupra resurselor microcontrolerului utilizând magistrala internă a procesorului. Prezentată în figura 3.5, aceasta componentă e folosită pentru programarea microcontrolerului şi mai asigură depanarea programului prin funcţiile de executare pas cu pas şi prin introducerea breakpoint-urilor. Figură 3.5. Programatorul/Depanatorul ST/Link v2. Sursa imaginii este [21] Pentru a facilita programarea sa, microcontrolerul mai este prevăzut cu un bootloader în ultimii 2 KB (numită şi zona de memorie de sistem) ai memoriei Flash. Acesta iniţializează regiştrii interni ai procesorului precum şi regiştrii interfeţei seriale de comunicaţie USART pentru a permite comunicare cu PC-ul. Tabelul 3.1, luat din [12] ne prezintă zone de memorie la care putem sării la alimentarea microcontrolerului, setând pinii B0 şi B1 prin intermediul unor jumperi. Boot mode selection pins BOOT1 (B1) BOOT0 (B0) Boot mode X 0 User Flash memory 0 1 System memory 1 1 Embedded SRAM Tabel 3.1. Modurile de pornire pentru microcontrolerul STM32-F107 32
33 Deoarece nu vom folosi interfaţa serială USART pentru programare şi dorim executarea programului din memoria Flash pinul B0 va fi setat pe Arhitectura Cortex-M3 Cel mai important element al microcontrolerului este procesorul Cortex-M3. Acesta implementează arhitectura ARMv7 de tip RISC pe 32 de biţi. Spaţiul de adrese este tot pe 32 de biţi, ducând la o zonă adresabilă de 4GB de la 0x la 0xFFFFFFFF pentru cele două memorii. Acestea sunt adresate prin magistrale diferite datorită arhitecturii ARMv7 de tip Harvard. În cazul microcontrolerului STM32-F107, memoria Flash ocupă zona de la 0x până la 0x0803FFFF iar memoria SRAM de la 0x până la 0x2000FFFF. Printre elementele strâns legate de procesor, putem enumera NVIC-ul (Nested Vectored Interrupt Controller) tabela ROM precum şi mai multe componente cu scopul de a ajuta in depanarea programului. Dintre acestea, NVIC-ul reprezintă elementul însărcinat cu prioritizarea şi trimiterea întreruperilor către procesor, acesta putând configura intre 1 si 240 de întreruperi externe. Trecând scurt în revistă setul de instrucţiuni ARMv7-M, acesta suporta atât instrucţiuni pe 16 biţi (Thumb şi Thumb2) utile pentru a mării densitatea codului cât şi pe 32 de biţi. Cât despre microarhitectură, elementele semnificative ale acesteia sunt: specularea branch-urilor şi pipeline-ul cu 3 stagii: Instruction Fetch, Instruction Decode şi Instruction Execute. Cunoaşterea acesteia din urmă este importantă pentru măsurarea corectă a duratei unor instrucţiuni cu restricţii legate de pipeline. Etapele pipeline sunt reprezentate în figura
34 Figură 3.6. Stagiile pipeline pentru instrucţiunile ARMv7. Sursa pentru imagine este [11] Microcontrolerele cu procesoare ce implementează setul de instrucţiuni ARMv7-M prezintă o serie de avantaje faţă de alte microcontrolere de pe piaţă, cum ar fi un raport putere de calcul/energie consumată foarte bun precum şi documentaţie şi suport amplu în compilatoare. În cazul de faţă, a fost ales un microcontroler cu un procesor Cortex-M3 din cauza suportului nativ al acestuia pentru sistemele de operare. În mod concret acesta prezintă, asemenea arhitecturilor ARM anterioare, două niveluri de protecţie a codului. Nivelul protejat aparţine exclusiv funcţiilor de întrerupere şi a altor tipuri de excepţii, el fiind propice scrierii codului sistemului de operare, iar nivelul neprotejat aparţine restului aplicaţiilor, el putând fi executat şi de funcţiile de întrerupere. Alt aspect important sunt întreruperile SysTick şi PendsSV implementate. Ele fac parte din grupul predefinit de întreruperi, care ocupa primele 15 priorităţi din totalul celor 255 de întreruperi posibile. Întreruperea Systick este generată când timer-ul pe 24 de biţi numit tot SysTick ajunge la 0. Acestui timer îi se poate configura durata precum şi sursa de ceas. Pentru 34
35 a ţine microcontrolerul funcţional într-o stare latentă în lipsa alimentării sau pentru a avea o cuantă de timp bazată pe multiplii/submultiplii de o secundă, putem utiliza RTC-ul (Real Time Clock-ul) integrat pe cip ca sursă de ceas pentru SysTick. Cealaltă întrerupere, numită PendSV poate fi utilizată de programator pentru a apela "manual" scheduler-ul. Aceste două întreruperi au priorităţile -1 respectiv -2, fiind executate înaintea tuturor întreruperilor configurabile de utilizator. Procesorul Cortex-M3 mai prezintă suport pentru sistemele de operare sub forma a doi pointeri pentru stivă: Main Stack Pointer (MSP) şi Process Stack Pointer (PSP). Aceştia sunt amândoi adresabili în zona registrului Stack Pointer (SP), cum se vede şi în figura 3.7, luată din documentul [14] Figură 3.7. Regiştrii procesorului Cortex-M3 După un restart, procesorul trece automat la utilizarea MSP-ului, acesta putând fi folosit atât din cod privilegiat, cât şi din cod neprotejat. PSP-ul, în schimb, poate fi utilizat doar din cod neprotejat, acesta fiind recomandat în executarea proceselor. Deoarece nu am utilizat în mod separat un thread pentru sistemul de operare, acesta fiind scris în zona funcţiilor de excepţie, se va folosi în toate cazurile, stiva principală (MSP). 35
36 3.3. Componenta Software În proiectarea microkernelului, se va folosi întreruperea SysTick pentru implementarea unui algoritm de tip Round-robin, urmând ca la reviziile ulterioare să se poată implementa alţi algoritmi preemptivi, utilizând întreruperea PendSV. Algoritmul Round-robin a fost ales datorită caracterului său determinist, al timpului mic de schimbare între task-uri precum şi datorită caracteristicilor sale de timp-real. Proiectul a fost scris în C++ şi în limbaj de asamblare şi compilat în mediul de dezvoltare CooCox. Acesta a mai ajutat şi la programarea respectiv depanarea pas cu pas a programului, împreună cu programatorul ST-Link/v2. Limbajul predominant folosit a fost C++, iar pentru salvarea şi încărcarea regiştrilor s-a folosit limbajul de asamblare specific arhitecturii ARMv7. O notă importantă aici este necesitatea dezactivării opţiunii de optimizare a codului produs de compilator pentru a evita situaţii neprevăzute Schimbarea contextului Într-un microkernel, planificatorul de thread-uri este componenta ce aloca pe procesor task-urile după un algoritm dat. Pentru realizarea acestui ţel, el se foloseşte de o altă componentă, numită dispatcher pentru a salva starea task-ului curent şi a încărca starea taskului următor. Contextul, sau starea procesului, e păstrat în cei regiştrii ai procesorului. Dispatcherul trebuie să asigure, aşadar, salvarea conţinutului regiştrilor R1-R13 precum şi a regiştrilor LR (Link Register), PC (Program Counter), LR (Link Register) PSR (Program Status Register), şi să încarce aceiaşi regiştri ai următorului thread în procesor. Pe de altă parte, planificatorul, trebuie să asigure alegerea corectă a următorului task pentru execuţie precum şi actualizarea tabelei de procese cu noua stare a task-urilor. Aceste operaţii trebuie realizate utilizând cât mai puţine instrucţiuni pentru a asigura fluenţa rulării programelor şi dimensiunea redusă a microkernelului. Sistemul de operare va implementa un tabel central pentru a ajuta cunoaşterea numărului şi stărilor task-urilor. Acesta este definit ca o structură având câmpurile 36
37 stack_pointer şi flag. Rolul câmpului stack_pointer este intuitiv, acesta păstrând un pointer către stiva unui task, iar câmpul de flag-uri ne spune dacă task-ul respectiv este gata sau nu de execuţie, în funcţie de ultimul bit. Trecerea la următorul thread se concretizează prin următorii paşi: a. Salvarea regiştrilor pe stivă principală b. Trecerea în tabela de procese a nivelului stivei procesului curent c. Căutarea următorului proces liber de execuţie în tabela de procese d. Trecerea în registrul de stivă al procesorului a nivelului noii stive e. Încărcarea restului regiştrilor în procesor În prima etapă, precum şi în ultima, trebuie să fie încărcaţi explicit doar regiştrii de la R5 la R11 inclusiv. De restul regiştrilor se ocupă automat procesorul la executarea întreruperii SysTick. Acest lucru este reprezentat în figura 3.8, luată şi modificată din [22]. Figură 3.8. Schimbarea contextului in procesorul Cortex-M3 37
Metode iterative pentru probleme neliniare - contractii
Metode iterative pentru probleme neliniare - contractii Problemele neliniare sunt in general rezolvate prin metode iterative si analiza convergentei acestor metode este o problema importanta. 1 Contractii
Curs 4 Serii de numere reale
Curs 4 Serii de numere reale Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi" Iaşi 2014 Criteriul rădăcinii sau Criteriul lui Cauchy Teoremă (Criteriul rădăcinii) Fie x n o serie cu termeni
5. FUNCŢII IMPLICITE. EXTREME CONDIŢIONATE.
5 Eerciţii reolvate 5 UNCŢII IMPLICITE EXTREME CONDIŢIONATE Eerciţiul 5 Să se determine şi dacă () este o funcţie definită implicit de ecuaţia ( + ) ( + ) + Soluţie ie ( ) ( + ) ( + ) + ( )R Evident este
Curs 10 Funcţii reale de mai multe variabile reale. Limite şi continuitate.
Curs 10 Funcţii reale de mai multe variabile reale. Limite şi continuitate. Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi" Iaşi 2014 Fie p, q N. Fie funcţia f : D R p R q. Avem următoarele
Curs 14 Funcţii implicite. Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi"
Curs 14 Funcţii implicite Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi" Iaşi 2014 Fie F : D R 2 R o funcţie de două variabile şi fie ecuaţia F (x, y) = 0. (1) Problemă În ce condiţii ecuaţia
Analiza în curent continuu a schemelor electronice Eugenie Posdărăscu - DCE SEM 1 electronica.geniu.ro
Analiza în curent continuu a schemelor electronice Eugenie Posdărăscu - DCE SEM Seminar S ANALA ÎN CUENT CONTNUU A SCHEMELO ELECTONCE S. ntroducere Pentru a analiza în curent continuu o schemă electronică,
(a) se numeşte derivata parţială a funcţiei f în raport cu variabila x i în punctul a.
Definiţie Spunem că: i) funcţia f are derivată parţială în punctul a în raport cu variabila i dacă funcţia de o variabilă ( ) are derivată în punctul a în sens obişnuit (ca funcţie reală de o variabilă
5.4. MULTIPLEXOARE A 0 A 1 A 2
5.4. MULTIPLEXOARE Multiplexoarele (MUX) sunt circuite logice combinaţionale cu m intrări şi o singură ieşire, care permit transferul datelor de la una din intrări spre ieşirea unică. Selecţia intrării
Metode de interpolare bazate pe diferenţe divizate
Metode de interpolare bazate pe diferenţe divizate Radu Trîmbiţaş 4 octombrie 2005 1 Forma Newton a polinomului de interpolare Lagrange Algoritmul nostru se bazează pe forma Newton a polinomului de interpolare
4. CIRCUITE LOGICE ELEMENTRE 4.. CIRCUITE LOGICE CU COMPONENTE DISCRETE 4.. PORŢI LOGICE ELEMENTRE CU COMPONENTE PSIVE Componente electronice pasive sunt componente care nu au capacitatea de a amplifica
a. 11 % b. 12 % c. 13 % d. 14 %
1. Un motor termic funcţionează după ciclul termodinamic reprezentat în sistemul de coordonate V-T în figura alăturată. Motorul termic utilizează ca substanţă de lucru un mol de gaz ideal având exponentul
V.7. Condiţii necesare de optimalitate cazul funcţiilor diferenţiabile
Metode de Optimizare Curs V.7. Condiţii necesare de optimalitate cazul funcţiilor diferenţiabile Propoziţie 7. (Fritz-John). Fie X o submulţime deschisă a lui R n, f:x R o funcţie de clasă C şi ϕ = (ϕ,ϕ
MARCAREA REZISTOARELOR
1.2. MARCAREA REZISTOARELOR 1.2.1 MARCARE DIRECTĂ PRIN COD ALFANUMERIC. Acest cod este format din una sau mai multe cifre şi o literă. Litera poate fi plasată după grupul de cifre (situaţie în care valoarea
Seminar 5 Analiza stabilității sistemelor liniare
Seminar 5 Analiza stabilității sistemelor liniare Noțiuni teoretice Criteriul Hurwitz de analiză a stabilității sistemelor liniare În cazul sistemelor liniare, stabilitatea este o condiție de localizare
riptografie şi Securitate
riptografie şi Securitate - Prelegerea 12 - Scheme de criptare CCA sigure Adela Georgescu, Ruxandra F. Olimid Facultatea de Matematică şi Informatică Universitatea din Bucureşti Cuprins 1. Schemă de criptare
DISTANŢA DINTRE DOUĂ DREPTE NECOPLANARE
DISTANŢA DINTRE DOUĂ DREPTE NECOPLANARE ABSTRACT. Materialul prezintă o modalitate de a afla distanţa dintre două drepte necoplanare folosind volumul tetraedrului. Lecţia se adresează clasei a VIII-a Data:
Curs 1 Şiruri de numere reale
Bibliografie G. Chiorescu, Analiză matematică. Teorie şi probleme. Calcul diferenţial, Editura PIM, Iaşi, 2006. R. Luca-Tudorache, Analiză matematică, Editura Tehnopress, Iaşi, 2005. M. Nicolescu, N. Roşculeţ,
Seminariile Capitolul X. Integrale Curbilinii: Serii Laurent şi Teorema Reziduurilor
Facultatea de Matematică Calcul Integral şi Elemente de Analiă Complexă, Semestrul I Lector dr. Lucian MATICIUC Seminariile 9 20 Capitolul X. Integrale Curbilinii: Serii Laurent şi Teorema Reiduurilor.
Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor X) functia f 1
Functii definitie proprietati grafic functii elementare A. Definitii proprietatile functiilor. Fiind date doua multimi X si Y spunem ca am definit o functie (aplicatie) pe X cu valori in Y daca fiecarui
Fig Impedanţa condensatoarelor electrolitice SMD cu Al cu electrolit semiuscat în funcţie de frecvenţă [36].
Componente şi circuite pasive Fig.3.85. Impedanţa condensatoarelor electrolitice SMD cu Al cu electrolit semiuscat în funcţie de frecvenţă [36]. Fig.3.86. Rezistenţa serie echivalentă pierderilor în funcţie
Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor
Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor. Fiind date doua multimi si spunem ca am definit o functie (aplicatie) pe cu valori in daca fiecarui element
Esalonul Redus pe Linii (ERL). Subspatii.
Seminarul 1 Esalonul Redus pe Linii (ERL). Subspatii. 1.1 Breviar teoretic 1.1.1 Esalonul Redus pe Linii (ERL) Definitia 1. O matrice A L R mxn este in forma de Esalon Redus pe Linii (ERL), daca indeplineste
Asupra unei inegalităţi date la barajul OBMJ 2006
Asupra unei inegalităţi date la barajul OBMJ 006 Mircea Lascu şi Cezar Lupu La cel de-al cincilea baraj de Juniori din data de 0 mai 006 a fost dată următoarea inegalitate: Fie x, y, z trei numere reale
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
Facultatea de Hidrotehnică, Geodezie şi Ingineria Mediului Matematici Superioare, Semestrul I, Lector dr. Lucian MATICIUC SEMINAR 4 Funcţii de mai multe variabile continuare). Să se arate că funcţia z,
5.5. REZOLVAREA CIRCUITELOR CU TRANZISTOARE BIPOLARE
5.5. A CIRCUITELOR CU TRANZISTOARE BIPOLARE PROBLEMA 1. În circuitul din figura 5.54 se cunosc valorile: μa a. Valoarea intensității curentului de colector I C. b. Valoarea tensiunii bază-emitor U BE.
Aplicaţii ale principiului I al termodinamicii la gazul ideal
Aplicaţii ale principiului I al termodinamicii la gazul ideal Principiul I al termodinamicii exprimă legea conservării şi energiei dintr-o formă în alta şi se exprimă prin relaţia: ΔUQ-L, unde: ΔU-variaţia
prin egalizarea histogramei
Lucrarea 4 Îmbunătăţirea imaginilor prin egalizarea histogramei BREVIAR TEORETIC Tehnicile de îmbunătăţire a imaginilor bazate pe calculul histogramei modifică histograma astfel încât aceasta să aibă o
1.7. AMPLIFICATOARE DE PUTERE ÎN CLASA A ŞI AB
1.7. AMLFCATOARE DE UTERE ÎN CLASA A Ş AB 1.7.1 Amplificatoare în clasa A La amplificatoarele din clasa A, forma de undă a tensiunii de ieşire este aceeaşi ca a tensiunii de intrare, deci întreg semnalul
Planul determinat de normală şi un punct Ecuaţia generală Plane paralele Unghi diedru Planul determinat de 3 puncte necoliniare
1 Planul în spaţiu Ecuaţia generală Plane paralele Unghi diedru 2 Ecuaţia generală Plane paralele Unghi diedru Fie reperul R(O, i, j, k ) în spaţiu. Numim normala a unui plan, un vector perpendicular pe
2. Sisteme de forţe concurente...1 Cuprins...1 Introducere Aspecte teoretice Aplicaţii rezolvate...3
SEMINAR 2 SISTEME DE FRŢE CNCURENTE CUPRINS 2. Sisteme de forţe concurente...1 Cuprins...1 Introducere...1 2.1. Aspecte teoretice...2 2.2. Aplicaţii rezolvate...3 2. Sisteme de forţe concurente În acest
RĂSPUNS Modulul de rezistenţă este o caracteristică geometrică a secţiunii transversale, scrisă faţă de una dintre axele de inerţie principale:,
REZISTENTA MATERIALELOR 1. Ce este modulul de rezistenţă? Exemplificaţi pentru o secţiune dreptunghiulară, respectiv dublu T. RĂSPUNS Modulul de rezistenţă este o caracteristică geometrică a secţiunii
Valori limită privind SO2, NOx şi emisiile de praf rezultate din operarea LPC în funcţie de diferite tipuri de combustibili
Anexa 2.6.2-1 SO2, NOx şi de praf rezultate din operarea LPC în funcţie de diferite tipuri de combustibili de bioxid de sulf combustibil solid (mg/nm 3 ), conţinut de O 2 de 6% în gazele de ardere, pentru
a n (ζ z 0 ) n. n=1 se numeste partea principala iar seria a n (z z 0 ) n se numeste partea
Serii Laurent Definitie. Se numeste serie Laurent o serie de forma Seria n= (z z 0 ) n regulata (tayloriana) = (z z n= 0 ) + n se numeste partea principala iar seria se numeste partea Sa presupunem ca,
Criptosisteme cu cheie publică III
Criptosisteme cu cheie publică III Anul II Aprilie 2017 Problema rucsacului ( knapsack problem ) Considerăm un număr natural V > 0 şi o mulţime finită de numere naturale pozitive {v 0, v 1,..., v k 1 }.
Sisteme diferenţiale liniare de ordinul 1
1 Metoda eliminării 2 Cazul valorilor proprii reale Cazul valorilor proprii nereale 3 Catedra de Matematică 2011 Forma generală a unui sistem liniar Considerăm sistemul y 1 (x) = a 11y 1 (x) + a 12 y 2
Problema a II - a (10 puncte) Diferite circuite electrice
Olimpiada de Fizică - Etapa pe judeţ 15 ianuarie 211 XI Problema a II - a (1 puncte) Diferite circuite electrice A. Un elev utilizează o sursă de tensiune (1), o cutie cu rezistenţe (2), un întrerupător
10. STABILIZATOAE DE TENSIUNE 10.1 STABILIZATOAE DE TENSIUNE CU TANZISTOAE BIPOLAE Stabilizatorul de tensiune cu tranzistor compară în permanenţă valoare tensiunii de ieşire (stabilizate) cu tensiunea
III. Serii absolut convergente. Serii semiconvergente. ii) semiconvergentă dacă este convergentă iar seria modulelor divergentă.
III. Serii absolut convergente. Serii semiconvergente. Definiţie. O serie a n se numeşte: i) absolut convergentă dacă seria modulelor a n este convergentă; ii) semiconvergentă dacă este convergentă iar
V O. = v I v stabilizator
Stabilizatoare de tensiune continuă Un stabilizator de tensiune este un circuit electronic care păstrează (aproape) constantă tensiunea de ieșire la variaţia între anumite limite a tensiunii de intrare,
Integrala nedefinită (primitive)
nedefinita nedefinită (primitive) nedefinita 2 nedefinita februarie 20 nedefinita.tabelul primitivelor Definiţia Fie f : J R, J R un interval. Funcţia F : J R se numeşte primitivă sau antiderivată a funcţiei
4. Măsurarea tensiunilor şi a curenţilor electrici. Voltmetre electronice analogice
4. Măsurarea tensiunilor şi a curenţilor electrici oltmetre electronice analogice oltmetre de curent continuu Ampl.c.c. x FTJ Protectie Atenuator calibrat Atenuatorul calibrat divizor rezistiv R in const.
Examen AG. Student:... Grupa:... ianuarie 2011
Problema 1. Pentru ce valori ale lui n,m N (n,m 1) graful K n,m este eulerian? Problema 2. Să se construiască o funcţie care să recunoască un graf P 3 -free. La intrare aceasta va primi un graf G = ({1,...,n},E)
Capitolul 14. Asamblari prin pene
Capitolul 14 Asamblari prin pene T.14.1. Momentul de torsiune este transmis de la arbore la butuc prin intermediul unei pene paralele (figura 14.1). De care din cotele indicate depinde tensiunea superficiala
Subiecte Clasa a VIII-a
Subiecte lasa a VIII-a (40 de intrebari) Puteti folosi spatiile goale ca ciorna. Nu este de ajuns sa alegeti raspunsul corect pe brosura de subiecte, ele trebuie completate pe foaia de raspuns in dreptul
a. Caracteristicile mecanice a motorului de c.c. cu excitaţie independentă (sau derivaţie)
Caracteristica mecanică defineşte dependenţa n=f(m) în condiţiile I e =ct., U=ct. Pentru determinarea ei vom defini, mai întâi caracteristicile: 1. de sarcină, numită şi caracteristica externă a motorului
Capitolul 4. Integrale improprii Integrale cu limite de integrare infinite
Capitolul 4 Integrale improprii 7-8 În cadrul studiului integrabilităţii iemann a unei funcţii s-au evidenţiat douăcondiţii esenţiale:. funcţia :[ ] este definită peintervalînchis şi mărginit (interval
Componente şi Circuite Electronice Pasive. Laborator 3. Divizorul de tensiune. Divizorul de curent
Laborator 3 Divizorul de tensiune. Divizorul de curent Obiective: o Conexiuni serie şi paralel, o Legea lui Ohm, o Divizorul de tensiune, o Divizorul de curent, o Implementarea experimentală a divizorului
Conice. Lect. dr. Constantin-Cosmin Todea. U.T. Cluj-Napoca
Conice Lect. dr. Constantin-Cosmin Todea U.T. Cluj-Napoca Definiţie: Se numeşte curbă algebrică plană mulţimea punctelor din plan de ecuaţie implicită de forma (C) : F (x, y) = 0 în care funcţia F este
Subiecte Clasa a VII-a
lasa a VII Lumina Math Intrebari Subiecte lasa a VII-a (40 de intrebari) Puteti folosi spatiile goale ca ciorna. Nu este de ajuns sa alegeti raspunsul corect pe brosura de subiecte, ele trebuie completate
COLEGIUL NATIONAL CONSTANTIN CARABELLA TARGOVISTE. CONCURSUL JUDETEAN DE MATEMATICA CEZAR IVANESCU Editia a VI-a 26 februarie 2005.
SUBIECTUL Editia a VI-a 6 februarie 005 CLASA a V-a Fie A = x N 005 x 007 si B = y N y 003 005 3 3 a) Specificati cel mai mic element al multimii A si cel mai mare element al multimii B. b)stabiliti care
VII.2. PROBLEME REZOLVATE
Teoria Circuitelor Electrice Aplicaţii V PROBEME REOVATE R7 În circuitul din fiura 7R se cunosc: R e t 0 sint [V] C C t 0 sint [A] Se cer: a rezolvarea circuitului cu metoda teoremelor Kirchhoff; rezolvarea
EDITURA PARALELA 45 MATEMATICĂ DE EXCELENŢĂ. Clasa a X-a Ediţia a II-a, revizuită. pentru concursuri, olimpiade şi centre de excelenţă
Coordonatori DANA HEUBERGER NICOLAE MUŞUROIA Nicolae Muşuroia Gheorghe Boroica Vasile Pop Dana Heuberger Florin Bojor MATEMATICĂ DE EXCELENŢĂ pentru concursuri, olimpiade şi centre de excelenţă Clasa a
Componente şi Circuite Electronice Pasive. Laborator 4. Măsurarea parametrilor mărimilor electrice
Laborator 4 Măsurarea parametrilor mărimilor electrice Obiective: o Semnalul sinusoidal, o Semnalul dreptunghiular, o Semnalul triunghiular, o Generarea diferitelor semnale folosind placa multifuncţională
Laborator 11. Mulţimi Julia. Temă
Laborator 11 Mulţimi Julia. Temă 1. Clasa JuliaGreen. Să considerăm clasa JuliaGreen dată de exemplu la curs pentru metoda locului final şi să schimbăm numărul de iteraţii nriter = 100 în nriter = 101.
2.1 Sfera. (EGS) ecuaţie care poartă denumirea de ecuaţia generală asferei. (EGS) reprezintă osferă cu centrul în punctul. 2 + p 2
.1 Sfera Definitia 1.1 Se numeşte sferă mulţimea tuturor punctelor din spaţiu pentru care distanţa la u punct fi numit centrul sferei este egalăcuunnumăr numit raza sferei. Fie centrul sferei C (a, b,
REDRESOARE MONOFAZATE CU FILTRU CAPACITIV
REDRESOARE MONOFAZATE CU FILTRU CAPACITIV I. OBIECTIVE a) Stabilirea dependenţei dintre tipul redresorului (monoalternanţă, bialternanţă) şi forma tensiunii redresate. b) Determinarea efectelor modificării
2. Circuite logice 2.4. Decodoare. Multiplexoare. Copyright Paul GASNER
2. Circuite logice 2.4. Decodoare. Multiplexoare Copyright Paul GASNER Definiţii Un decodor pe n bits are n intrări şi 2 n ieşiri; cele n intrări reprezintă un număr binar care determină în mod unic care
LUCRAREA NR. 1 STUDIUL SURSELOR DE CURENT
LUCAEA N STUDUL SUSELO DE CUENT Scopul lucrării În această lucrare se studiază prin simulare o serie de surse de curent utilizate în cadrul circuitelor integrate analogice: sursa de curent standard, sursa
Curs 2 Şiruri de numere reale
Curs 2 Şiruri de numere reale Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi" Iaşi 2014 Convergenţă şi mărginire Teoremă Orice şir convergent este mărginit. Demonstraţie Fie (x n ) n 0 un
Laborator 1: INTRODUCERE ÎN ALGORITMI. Întocmit de: Claudia Pârloagă. Îndrumător: Asist. Drd. Gabriel Danciu
INTRODUCERE Laborator 1: ÎN ALGORITMI Întocmit de: Claudia Pârloagă Îndrumător: Asist. Drd. Gabriel Danciu I. NOŢIUNI TEORETICE A. Sortarea prin selecţie Date de intrare: un şir A, de date Date de ieşire:
CIRCUITE INTEGRATE MONOLITICE DE MICROUNDE. MMIC Monolithic Microwave Integrated Circuit
CIRCUITE INTEGRATE MONOLITICE DE MICROUNDE MMIC Monolithic Microwave Integrated Circuit CUPRINS 1. Avantajele si limitarile MMIC 2. Modelarea dispozitivelor active 3. Calculul timpului de viata al MMIC
Modelare şi simulare Seminar 4 SEMINAR NR. 4. Figura 4.1 Reprezentarea evoluţiei sistemului prin graful de tranziţii 1 A A =
SEMIR R. 4. Sistemul M/M// Caracteristici: = - intensitatea traficului - + unde Figura 4. Rerezentarea evoluţiei sistemului rin graful de tranziţii = rata medie de sosire a clienţilor în sistem (clienţi
Capitolul ASAMBLAREA LAGĂRELOR LECŢIA 25
Capitolul ASAMBLAREA LAGĂRELOR LECŢIA 25 LAGĂRELE CU ALUNECARE!" 25.1.Caracteristici.Părţi componente.materiale.!" 25.2.Funcţionarea lagărelor cu alunecare.! 25.1.Caracteristici.Părţi componente.materiale.
Tranzistoare bipolare şi cu efect de câmp
apitolul 3 apitolul 3 26. Pentru circuitul de polarizare din fig. 26 se cunosc: = 5, = 5, = 2KΩ, = 5KΩ, iar pentru tranzistor se cunosc următorii parametrii: β = 200, 0 = 0, μa, = 0,6. a) ă se determine
SERII NUMERICE. Definiţia 3.1. Fie (a n ) n n0 (n 0 IN) un şir de numere reale şi (s n ) n n0
SERII NUMERICE Definiţia 3.1. Fie ( ) n n0 (n 0 IN) un şir de numere reale şi (s n ) n n0 şirul definit prin: s n0 = 0, s n0 +1 = 0 + 0 +1, s n0 +2 = 0 + 0 +1 + 0 +2,.......................................
TRANSFORMATOARE MONOFAZATE DE SIGURANŢĂ ŞI ÎN CARCASĂ
TRANSFORMATOARE MONOFAZATE DE SIGURANŢĂ ŞI ÎN CARCASĂ Transformatoare de siguranţă Este un transformator destinat să alimenteze un circuit la maximum 50V (asigură siguranţă de funcţionare la tensiune foarte
11.3 CIRCUITE PENTRU GENERAREA IMPULSURILOR CIRCUITE BASCULANTE Circuitele basculante sunt circuite electronice prevăzute cu o buclă de reacţie pozitivă, folosite la generarea impulsurilor. Aceste circuite
Ovidiu Gabriel Avădănei, Florin Mihai Tufescu,
vidiu Gabriel Avădănei, Florin Mihai Tufescu, Capitolul 6 Amplificatoare operaţionale 58. Să se calculeze coeficientul de amplificare în tensiune pentru amplficatorul inversor din fig.58, pentru care se
Stabilizator cu diodă Zener
LABAT 3 Stabilizator cu diodă Zener Se studiază stabilizatorul parametric cu diodă Zener si apoi cel cu diodă Zener şi tranzistor. Se determină întâi tensiunea Zener a diodei şi se calculează apoi un stabilizator
Aparate de măsurat. Măsurări electronice Rezumatul cursului 2. MEE - prof. dr. ing. Ioan D. Oltean 1
Aparate de măsurat Măsurări electronice Rezumatul cursului 2 MEE - prof. dr. ing. Ioan D. Oltean 1 1. Aparate cu instrument magnetoelectric 2. Ampermetre şi voltmetre 3. Ohmetre cu instrument magnetoelectric
R R, f ( x) = x 7x+ 6. Determinați distanța dintre punctele de. B=, unde x și y sunt numere reale.
5p Determinați primul termen al progresiei geometrice ( b n ) n, știind că b 5 = 48 și b 8 = 84 5p Se consideră funcția f : intersecție a graficului funcției f cu aa O R R, f ( ) = 7+ 6 Determinați distanța
SIGURANŢE CILINDRICE
SIGURANŢE CILINDRICE SIGURANŢE CILINDRICE CH Curent nominal Caracteristici de declanşare 1-100A gg, am Aplicaţie: Siguranţele cilindrice reprezintă cea mai sigură protecţie a circuitelor electrice de control
Curs 2 DIODE. CIRCUITE DR
Curs 2 OE. CRCUTE R E CUPRN tructură. imbol Relația curent-tensiune Regimuri de funcționare Punct static de funcționare Parametrii diodei Modelul cu cădere de tensiune constantă Analiza circuitelor cu
2. Circuite logice 2.2. Diagrame Karnaugh. Copyright Paul GASNER 1
2. Circuite logice 2.2. Diagrame Karnaugh Copyright Paul GASNER Diagrame Karnaugh Tehnică de simplificare a unei expresii în sumă minimă de produse (minimal sum of products MSP): Există un număr minim
Proiectarea filtrelor prin metoda pierderilor de inserţie
FITRE DE MIROUNDE Proiectarea filtrelor prin metoda pierderilor de inserţie P R Puterea disponibila de la sursa Puterea livrata sarcinii P inc P Γ ( ) Γ I lo P R ( ) ( ) M ( ) ( ) M N P R M N ( ) ( ) Tipuri
Definiţia generală Cazul 1. Elipsa şi hiperbola Cercul Cazul 2. Parabola Reprezentari parametrice ale conicelor Tangente la conice
1 Conice pe ecuaţii reduse 2 Conice pe ecuaţii reduse Definiţie Numim conica locul geometric al punctelor din plan pentru care raportul distantelor la un punct fix F şi la o dreaptă fixă (D) este o constantă
1. PROPRIETĂȚILE FLUIDELOR
1. PROPRIETĂȚILE FLUIDELOR a) Să se exprime densitatea apei ρ = 1000 kg/m 3 în g/cm 3. g/cm 3. b) tiind că densitatea glicerinei la 20 C este 1258 kg/m 3 să se exprime în c) Să se exprime în kg/m 3 densitatea
CIRCUITE LOGICE CU TB
CIRCUITE LOGICE CU T I. OIECTIVE a) Determinarea experimentală a unor funcţii logice pentru circuite din familiile RTL, DTL. b) Determinarea dependenţei caracteristicilor statice de transfer în tensiune
riptografie şi Securitate
riptografie şi Securitate - Prelegerea 21.2 - Sistemul de criptare ElGamal Adela Georgescu, Ruxandra F. Olimid Facultatea de Matematică şi Informatică Universitatea din Bucureşti Cuprins 1. Scurt istoric
Laborator 6. Integrarea ecuaţiilor diferenţiale
Laborator 6 Integrarea ecuaţiilor diferenţiale Responsabili: 1. Surdu Cristina(anacristinasurdu@gmail.com) 2. Ştirbăţ Bogdan(bogdanstirbat@yahoo.com) Obiective În urma parcurgerii acestui laborator elevul
11.2 CIRCUITE PENTRU FORMAREA IMPULSURILOR Metoda formării impulsurilor se bazează pe obţinerea unei succesiuni periodice de impulsuri, plecând de la semnale periodice de altă formă, de obicei sinusoidale.
Erori si incertitudini de măsurare. Modele matematice Instrument: proiectare, fabricaţie, Interacţiune măsurand instrument:
Erori i incertitudini de măurare Sure: Modele matematice Intrument: proiectare, fabricaţie, Interacţiune măurandintrument: (tranfer informaţie tranfer energie) Influente externe: temperatura, preiune,
TEMA 9: FUNCȚII DE MAI MULTE VARIABILE. Obiective:
TEMA 9: FUNCȚII DE MAI MULTE VARIABILE 77 TEMA 9: FUNCȚII DE MAI MULTE VARIABILE Obiective: Deiirea pricipalelor proprietăţi matematice ale ucţiilor de mai multe variabile Aalia ucţiilor de utilitate şi
8 Intervale de încredere
8 Intervale de încredere În cursul anterior am determinat diverse estimări ˆ ale parametrului necunoscut al densităţii unei populaţii, folosind o selecţie 1 a acestei populaţii. În practică, valoarea calculată
Statisticǎ - curs 3. 1 Seria de distribuţie a statisticilor de eşantioane 2. 2 Teorema limitǎ centralǎ 5. 3 O aplicaţie a teoremei limitǎ centralǎ 7
Statisticǎ - curs 3 Cuprins 1 Seria de distribuţie a statisticilor de eşantioane 2 2 Teorema limitǎ centralǎ 5 3 O aplicaţie a teoremei limitǎ centralǎ 7 4 Estimarea punctualǎ a unui parametru; intervalul
Circuite cu tranzistoare. 1. Inversorul CMOS
Circuite cu tranzistoare 1. Inversorul CMOS MOSFET-urile cu canal indus N si P sunt folosite la familia CMOS de circuite integrate numerice datorită următoarelor avantaje: asigură o creştere a densităţii
Activitatea A5. Introducerea unor module specifice de pregătire a studenţilor în vederea asigurării de şanse egale
POSDRU/156/1.2/G/138821 Investeşte în oameni! FONDUL SOCIAL EUROPEAN Programul Operaţional Sectorial pentru Dezvoltarea Resurselor Umane 2007 2013 Axa prioritară nr. 1 Educaţiaşiformareaprofesionalăînsprijinulcreşteriieconomiceşidezvoltăriisocietăţiibazatepecunoaştere
Analiza funcționării și proiectarea unui stabilizator de tensiune continuă realizat cu o diodă Zener
Analiza funcționării și proiectarea unui stabilizator de tensiune continuă realizat cu o diodă Zener 1 Caracteristica statică a unei diode Zener În cadranul, dioda Zener (DZ) se comportă ca o diodă redresoare
SEMINARUL 3. Cap. II Serii de numere reale. asociat seriei. (3n 5)(3n 2) + 1. (3n 2)(3n+1) (3n 2) (3n + 1) = a
Capitolul II: Serii de umere reale. Lect. dr. Lucia Maticiuc Facultatea de Hidrotehică, Geodezie şi Igieria Mediului Matematici Superioare, Semestrul I, Lector dr. Lucia MATICIUC SEMINARUL 3. Cap. II Serii
Functii Breviar teoretic 8 ianuarie ianuarie 2011
Functii Breviar teoretic 8 ianuarie 011 15 ianuarie 011 I Fie I, interval si f : I 1) a) functia f este (strict) crescatoare pe I daca x, y I, x< y ( f( x) < f( y)), f( x) f( y) b) functia f este (strict)
Teme de implementare in Matlab pentru Laboratorul de Metode Numerice
Teme de implementare in Matlab pentru Laboratorul de Metode Numerice As. Ruxandra Barbulescu Septembrie 2017 Orice nelamurire asupra enunturilor/implementarilor se rezolva in cadrul laboratorului de MN,
Codificatorul SN74148 este un codificator zecimal-bcd de trei biţi (fig ). Figura Codificatorul integrat SN74148
5.2. CODIFICATOAE Codificatoarele (CD) sunt circuite logice combinaţionale cu n intrări şi m ieşiri care furnizează la ieşire un cod de m biţi atunci când numai una din cele n intrări este activă. De regulă
Realizat de: Ing. mast. Pintilie Lucian Nicolae Pentru disciplina: Sisteme de calcul în timp real Adresă de
Teorema lui Nyquist Shannon - Demonstrație Evidențierea conceptului de timp de eșantionare sau frecvență de eșantionare (eng. sample time or sample frequency) IPOTEZĂ: DE CE TIMPUL DE EȘANTIONARE (SAU
Zgomotul se poate suprapune informaţiei utile în două moduri: g(x, y) = f(x, y) n(x, y) (6.2)
Lucrarea 6 Zgomotul în imagini BREVIAR TEORETIC Zgomotul este un semnal aleator, care afectează informaţia utilă conţinută într-o imagine. El poate apare de-alungul unui lanţ de transmisiune, sau prin
Examen AG. Student:... Grupa: ianuarie 2016
16-17 ianuarie 2016 Problema 1. Se consideră graful G = pk n (p, n N, p 2, n 3). Unul din vârfurile lui G se uneşte cu câte un vârf din fiecare graf complet care nu-l conţine, obţinându-se un graf conex
Ecuatii trigonometrice
Ecuatii trigonometrice Ecuatiile ce contin necunoscute sub semnul functiilor trigonometrice se numesc ecuatii trigonometrice. Cele mai simple ecuatii trigonometrice sunt ecuatiile de tipul sin x = a, cos
Capitolul 4 PROPRIETĂŢI TOPOLOGICE ŞI DE NUMĂRARE ALE LUI R. 4.1 Proprietăţi topologice ale lui R Puncte de acumulare
Capitolul 4 PROPRIETĂŢI TOPOLOGICE ŞI DE NUMĂRARE ALE LUI R În cele ce urmează, vom studia unele proprietăţi ale mulţimilor din R. Astfel, vom caracteriza locul" unui punct în cadrul unei mulţimi (în limba
Metode Runge-Kutta. 18 ianuarie Probleme scalare, pas constant. Dorim să aproximăm soluţia problemei Cauchy
Metode Runge-Kutta Radu T. Trîmbiţaş 8 ianuarie 7 Probleme scalare, pas constant Dorim să aproximăm soluţia problemei Cauchy y (t) = f(t, y), a t b, y(a) = α. pe o grilă uniformă de (N + )-puncte din [a,
Cursul Măsuri reale. D.Rusu, Teoria măsurii şi integrala Lebesgue 15
MĂSURI RELE Cursul 13 15 Măsuri reale Fie (,, µ) un spaţiu cu măsură completă şi f : R o funcţie -măsurabilă. Cum am văzut în Teorema 11.29, dacă f are integrală pe, atunci funcţia de mulţime ν : R, ν()
BARAJ DE JUNIORI,,Euclid Cipru, 28 mai 2012 (barajul 3)
BARAJ DE JUNIORI,,Euclid Cipru, 8 mi 0 (brjul ) Problem Arătţi că dcă, b, c sunt numere rele cre verifică + b + c =, tunci re loc ineglitte xy + yz + zx Problem Fie şi b numere nturle nenule Dcă numărul