Beágyazott rendszerek alapkomponensei II. : Software

Hasonló dokumentumok
Szenzorhálózatok programfejlesztési kérdései. Orosz György

Ütemezés (Scheduling),

Feladatok (task) kezelése multiprogramozott operációs rendszerekben

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Az interrupt Benesóczky Zoltán 2004

Ütemezés (Scheduling),

Operációs rendszerek II. Folyamatok ütemezése

OPERÁCIÓS RENDSZEREK. Elmélet

Bevezetés a számítástechnikába

Concurrency in Swing

Ütemezési problémák. Kis Tamás 1. ELTE Problémamegoldó Szeminárium, ősz 1 MTA SZTAKI. valamint ELTE, Operációkutatási Tanszék

PWM elve, mikroszervó motor vezérlése MiniRISC processzoron

Előadás_#02. Előadás_02-1 -

Windows ütemezési példa

Dr. Schuster György október 3.

Operációs rendszerek. Folyamatok ütemezése

Szárazföldi autonóm mobil robotok vezérlőrendszerének kialakítási lehetőségei. Kucsera Péter ZMNE Doktorandusz

Feladatok (task) kezelése multiprogramozott operációs rendszerekben

Az operációs rendszer szerkezete, szolgáltatásai

Operációs rendszerek előadás Multiprogramozott operációs rendszerek

COMET webalkalmazás fejlesztés. Tóth Ádám Jasmin Media Group

OPERÁCIÓS RENDSZEREK 1. PROCESSZKEZELÉS

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

(kernel3d vizualizáció: kernel245_graph.mpg)

Tartalom. Operációs rendszerek Bevezetés CPU ütemezés. Középtávú ütemezés. Hosszútávú ütemezés

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék

Megkülönböztetett kiszolgáló routerek az

Uniprogramozás. várakozás. várakozás. Program A. Idő. A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Digitális technika (VIMIAA01) Laboratórium 9

Előadás_#03. Előadás_03-1 -

Digitális technika (VIMIAA01) Laboratórium 11

Elosztott rendszerek

Bokor Péter. DECOS Nemzeti Nap október 15. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

A mintavételezéses mérések alapjai

Pénzügyi algoritmusok

Digitális technika (VIMIAA01) Laboratórium 11

BASH script programozás II. Vezérlési szerkezetek

Digitális technika (VIMIAA01) Laboratórium 9

Architektúra, megszakítási rendszerek

Léteznek nagyon jó integrált szoftver termékek a feladatra. Ezek többnyire drágák, és az üzemeltetésük sem túl egyszerű.

Firmware fejlesztés. Mártonfalvi Zsolt Hardware programozó

Mikrorendszerek tervezése

Tuesday, March 6, 12. Hasító táblázatok

Beágyazott rendszerek alapkomponensei III. : RTOS

Előadás_#06. Előadás_06-1 -

ÉRZÉKELŐK ÉS BEAVATKOZÓK I. GY1.1 SENSACT0 PÉLDAPROGRAM

Tesztelési feladatok és kihívások a FALCON projektben

Az AVR programozás alapjai. Előadja: Both Tamás

Grafikus folyamatmonitorizálás

Függvények növekedési korlátainak jellemzése

Informatika tagozat osztályozóvizsga követelményei

Vegyes témakörök. 11. Robotvezérlés WiFi kapcsolaton keresztül 2. rész. Hobbielektronika csoport 2018/2019. Debreceni Megtestesülés Plébánia

Internet programozása. 3. előadás

Balogh Ádám Lőrentey Károly

Szimuláció RICHARD M. KARP és AVI WIGDERSON. (Készítette: Domoszlai László)

Programozási módszertan. Mohó algoritmusok

Tartalomjegyzék. Előszó... 10

Operációs rendszerek Folyamatok 1.1

Rekurzió. Dr. Iványi Péter

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Operációs rendszerek. Bemutatkozás

Rendszermodernizációs lehetőségek a HANA-val Poszeidon. Groma István PhD SDA DMS Zrt.

Operációs Rendszerek II.

Az INTEL D-2920 analóg mikroprocesszor alkalmazása

2. Folyamatok. Operációs rendszerek. Folyamatok. Bevezetés Folyamatkezelés multiprogramozott rendszerekben. Folyamatok modellezése

Az optimális megoldást adó algoritmusok

Operációs rendszerek MINB240

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Operációs rendszerek. Folyamatok kezelése a UNIX-ban

Informatika Rendszerek Alapjai

Operációs rendszerek. Az NT folyamatok kezelése

Dr. Illés Zoltán

OOP. #6 (VMT és DMT) v :33:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

OPERÁCIÓS RENDSZEREK I. BEVEZETÉS Koczka Ferenc -

MPLAB IDE - SIM - - Rövid ismertető a használathoz - Kincses Levente 3E22 89/ November 14. Szabadka

evosoft Hungary Kft.

Inczédy György Középiskola, Szakiskola és Kollégium Nyíregyháza, Árok u. 53. TANMENET. Informatika szakmacsoport

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Szkriptnyelvek. 1. UNIX shell

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Informatikai Rendszerek Alapjai

24 V DC áramkörök biztosítása

Programozás és Digitális technika I. Pógár István eng.unideb.hu/pogari

Mechatronika és mikroszámítógépek. 2018/2019 I. félév. Külső megszakítások

Az MSP430 mikrovezérlők digitális I/O programozása

A projekt idő-, erőforrás és költségterve 1. rész

Webprogramozás szakkör

Új kompakt X20 vezérlő integrált I/O pontokkal

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

angolul: greedy algorithms, románul: algoritmi greedy

1. számú ábra. Kísérleti kályha járattal

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

Csoportos üzenetszórás optimalizálása klaszter rendszerekben

Gráfszínezési problémák és ütemezési alkalmazásaik

Autóipari beágyazott rendszerek. Integrált és szétcsatolt rendszerek

ARM Cortex magú mikrovezérlők 10. RTOS alapok

Elektronika 2. TFBE1302

A programozás alapjai 1 Rekurzió

Átírás:

Beágyazott információs rendszerek VIMM3244 - Tervezés 1 Beágyazott információs rendszerek Szepessy Zsolt (zszepes@mit.bme.hu) Beágyazott rendszerek alapkomponensei II. : Software Beágyazott rendszerek alapkomponensei I. : Software...1 Beágyazott rendszerek SW architektúrái...2 Egyszerű ciklikus programszervezés...2 Megszakításokkal kiegészített ciklikus programszervezés...5 Ütemezett függvényekkel szervezett program...6 RTOS...7

Beágyazott információs rendszerek VIMM3244 - Tervezés 2 Beágyazott rendszerek SW architektúrái A korábbi ütemezési algoritmusok megvalósítását a processzor rendszerint szekvenciális műveletvégrehajtási tulajdonságához kell igazítani. A processzoridőt hatékonyan ki kell használni. A valós-idejű előírások a rendszerrel szemben támasztott legfontosabb követelmények közé tartoznak. Elemzés szempontjai: Események legrosszabb esetben számítható kiszolgálási ideje. Kiszámítható működés. Hatékonyság. Fejleszthetőség. Alkalmazási kör. A beágyazott rendszerek alapvető gyakorlati ütemezési módszereit az alábbi csoportokba sorolhatjuk: 1. Periódikus ütemezés: körforgó ütemezés, súlyozott körforgó ütemezés, idővezérelt ciklikus ütemezés 2. Prioritásos ütemezés Az alábbiakban ismertetett alapvető SW szervezési módszerek ezen ütemezési technikák megvalósítását adják. Gyakori vezérlési szerkezetek: 1. Egyszerű ciklikus programszervezés(round robin) 2. Megszakításokkal kiegészített ciklikus programszervezés (Round robin with interrupts) 3. Ütemezett függvényekkel szervezett program ( Function queue scheduling) 4. Valós-idejű operációs rendszerre épülő programszervezés (Preemptive multitasking, microkernel, RTOS) Egyszerű ciklikus programszervezés void main() while (TRUE) if (DeviceANeedsService()) ServiceA(); if (DeviceBNeedsService()) ServiceB(); ciklushatár A végtelen ciklus jellegzetes megoldás: egyszerű periódikus ütemezést valósít meg. Egyszerűbb esetben a hurokban levő feladatok nem struktúráltak, tehát nincsenek egységbe zárva, nem tekinthetők task-oknak. Ez a végtelen ciklus. Összetettebb esetben a hurokban levő lépések önálló összetett feladatok (taskok). Utóbbi esetben a taskok közötti információcsere minimális. A hardware kezelése: lekérdezéses. Worst Case kiszolgálás idő: Az összes task futási idejének összege. (a példában: t A +t B )

Beágyazott információs rendszerek VIMM3244 - Tervezés 3 A ciklusok hossza változik a hardware olvasások miatt. Így ugyanazon egység olvasásának gyakorisága is változik. A task-ok végrehajtása a lehető leggyakrabban történik. A processzor kihasználtsága maximális. A task-ok közötti kommunikáció gond nélkül történhet megosztott változókkal, hiszen mindig csak az egyik fut a feladat befejezéséig. Továbbfejlesztések: a.) Különböző gyakorsággal futtatott task-ok. TimerIT T1 T2 T3 T1 T4 T5 T1 T6 Módosított formájában a ciklust időzítőáramkör kezdeményezi. Ekkor is minden task futási idejének maximális összege kisebb kell legyen a timer periódusidejénél. b.) Periódikus idővezérelt ütemezés Ennek az ütemezésnek a lényege az, hogy az aktuálisan elvégzendő feladatról előre ismert időpontokban születik döntés. (ütemezési pontok). Azon rendszerekben használható, ahol a hard realtime követelmények a-priori ismertek és rögzítettek, a taskok periódikusak, paramétereik ismertek. A döntéseket célszerű rendszeres időközönként meghozni, így a döntési pillanatok időzítőáramkör segítségével kijelölhetők. Modell: állandó számú periodikus task a taskok paraméterei a-priori ismertek a taskok futásra kész állapota ismert időpontokban történik (ez gyakorlatilag azt jelenti, hogy ismerjük a task-végrehajtás szükséges gyakoriságát. Például egy 1 khz mintavételező rendszernél a mérési eredményt 1 ms-onként kapjuk, a feldolgozást ilyen gyakran kell végezni.) Példa: T1: periódusidő: 4, futási idő (worst case): 1; T2: 5, 1.8; T3: 20, 1; T4: 20, 2. Minden task határideje megegyezik a periódusidejével, fázisa 0. Ezt a rendszert célszerű egy 20 időtartamú ciklusba szervezni (hypeperiod, major cycle) T1 T3 T2 T1 T4 T2 T1 T2 T1 T1 T2 0 4 8 12 16 20 0 1 2 4 6 8 9.8 12 13.8 16 18 A szabad területeket lehetőség szerint "periódikusan" kell meghagyni. A nem periodikus eseményekre indítandó feladatok megoldhatók ezekben az időszeletekben (ha befejezhető az adott időben). Az ütemezést egy táblázatban tároljuk: Időpont Task (time) függvény referenci a (t_func) 0 func_t1 1 func_t3 2 func_t2 4 func_t1 6 func_t4 8 func_t2 9.8 func_t1 12 func_t2 13.8 func_t1 16 func_t1 18 func_t2 main() /*H: hyperperiod, N: nr of tasks*/ k=0;i=0; SetTimer(table(k,time)); while(1) while (!TIMER_FLAG); TIMER_FLAG=0; act_function_poi=table(k,t_func); i++; k=modulo(i,n); SetTimer(H*lower(i/N)+table(k,time)); act_function_poi(); void interrupt TimerIT() TIMER_FLAG=1;

Beágyazott információs rendszerek VIMM3244 - Tervezés 4 A Timer megszakítás futási idejét és az ütemező rutin futási idejét hozzá kell adni a task futási idejéhez. Szisztematikus tervezés Az aktuálisan futtatandó task-ok kiválasztását célszerű periódikus időpontokhoz kötni. Ezek a periódusok a keretek (frame-f). Egy ilyen rendszerben két ciklus fut: az egyik a hyperperiodus, a másik a hyperperioduson belül elhelyezett egész számú keret (frame). Nyilván a keretek hosszának megválasztása a task-októl függ. A kereten belül nincs kiürítés, a taskok fázisa a keret hosszának egész számú többszöröse. hyperperiod keret Minden keret elején célszerű az alábbi vizsgálatokat megtenni: A futtatandó task aktívvá (futásra kész) vált-e? Történt-e túlfutás? Ahhoz, hogy ezeket a vizsgálatokat a keretek elején el tudjuk végezni, továbbá, hogy a task-ok worst case határidejükön belül biztosan befejezzék futásukat a keretek megválasztására megkötéseket kell bevezetni: 1. A keret hossza (f) elég hosszú legyen ahhoz, hogy a taskok mindegyike be tudja fejezni a munkáját f ( ) max C i 1< i< n 2. A hiperciklus hosszát a lehető legkisebbre kell választani úgy, az a keret egész számú többszöröse legyen. Ezért legalább egy task periódusidjére (T i ) igaz kell legyen a következő összefüggés: Ti Ti f f = 0 3. Annak eldöntéséhez, hogy minden feladatot elvégeztünk az előző frame-ben, azaz minden task teljesíti a worst-case határidejét szükséges, hogy a keret olyan kicsi legyen, hogy minden task aktívvá válása és a határideje között legalább egy keret legyen: k-1. keret k. keret k+1. keret Aktívvá válik határidő A feltételek együttes teljesítéséhez sokszor egy task-ot apróbb feladatokra kell vágni és azokat különböző keretekbe elhelyezni. A tervezés feladata tehát: 1. A keret méret meghatározása 2. Minden task felbontása függvényekre 3. A függvények elhelyezése a keretekbe

Beágyazott információs rendszerek VIMM3244 - Tervezés 5 Módosított algoritmus (Cyclic executive): Táblázat: Frame sorszám Adott frame-ben végrehajtandó feladatleírók láncolt listája 0 Frame0_taskdesc_block 1 Frame1_taskdesc_block 2 Frame2_taskdesc_block 3 Frame3_taskdesc_block 4 Frame4_taskdesc_block 5 Frame5_taskdesc_block 6 Frame6_taskdesc_block Framei_taskdesc_block Testfunction_poi Task_function_poi next main() /*F frame hossz; t time; k frames*/ t=0; k=0; while (1) while (! TIMER_FLAG); TIMER_FLAG=0; CurrentBlock=table(k); t++; k=modulo (t,f); /*végignézni a blokk összes elemét a tesztfüggvényeket meghívni és esetleg hibakezelés*/ /*végigjárni a blokkot és az össze task függvényt meghívni egymás után*/ Testfunction_poi Task_function_poi next NIL A rendszer inkrementális továbbfejlesztése problematikus: a valós-idejű követelményeknek megfelelő rendszer egy új feladat integrálásával gyakran már nem teljesíti az előírásokat. Mindig újra kell tervezni. Csak nagyon egyszerű esetben használható. Jól kiszámítható működés, könnyen tesztelhető. Ahol a ciklus elég gyors az események kiszolgálásához ott megfelelő. Megszakításokkal kiegészített ciklikus programszervezés FLAG FLAG_A, FLAG_B; void interrupt A_Handler() void interrupt B_Handler() FLAG_A=TRUE; FLAG_B=TRUE; A rendszer válaszideje az adott eseményre void main() while (TRUE) if FLAG_A FLAG_A=FALSE; ServiceA(); if FLAG_B FLAG_B=FALSE; ServiceB(); A hardware kezelése megszakítással történhet, így ez gyorsabb eszközkezelést ad. Az IT rutinban elvégezhetőek azok a feladatok, amelyek a megszakítást küldő periféria gyors kezelését adják. Az előző megoldások csak a timer megszakítást kezelték, az egyéb perifériák elérése lekérdezéssel történt.

Beágyazott információs rendszerek VIMM3244 - Tervezés 6 Worst-case válaszidő minden egyéb task idejének összege (itt A jelzésre tb). A taskok prioritása azonos, csak a jelzés gyorsul, a kiszolgálás nem. Fő ciklusban ellenőrzés: A,B,A,C,A Ezzel a válaszidő csökkenthető. Megszakításokhoz prioritás rendelhető. Sokszor a hardware megoldja a prioritást, így a megszakítások egymásba is ágyazhatók, ezzel nem vesztünk el fontos jelzést. A kódfejlesztésre mutatott érzékenység: IT- jó, task - rossz Megosztott változók problémája jelentkezik task-és IT rutin között. Módosított formában az alapciklust ismét időzítő indíthatja. Minden timer ciklus elején azonban van egy rövid task, amely alatt a megszakítások tiltva vannak és a task az IT változókat a task változókba másolja. A task-ok futásukat be kell fejezzék a következő timer megszakításig. Task-ok közötti kommunikáció könnyen megoldható megosztott változókkal. A rendszer kiszámíthatóságát a külső események rontják. Ahol az események gyakorisága tervezhető (pl. állandó mintavételi frekvencia, állandó sebességű kommunikációs csatorna) és a taskokra előírt válaszidő nem túl kritikus ott megfelelő megoldás. Ehhez azonban az kell hogy a taskok végrehajtási ideje ne térjen el egymástól jelentősen. (nyomtatás - mérésfeldolgozás) Ütemezett függvényekkel szervezett program void interrupt A_Handler() HandleHW_A(); Put_Function(ServiceA); void interrupt B_Handler() HandleHW_B(); Put_Function(ServiceB); válaszidő void ServiceA(); void ServiceB(); void main() while (TRUE) while (IsFunctionQueueEmpty()); CallFirstFromQueue(); Kiszolgáló task Működés: Az egyes megszakítás-kezelő rutinok függvényreferenciákat helyeznek egy közös queue-ba. A főciklus pedig mindig a queue legfelső elemét hívja meg. A legfelső azt jelenti, hogy adott prioritási rendszerben a legfontosabbat. A megszakítás-kezelő rutinok bizonyos HW feltételek vizsgálatával különböző helyzetekben más-más függvényeket is helyezhetnek a queue-ba. A módszer előnye az előzőhöz képest, hogy az aktuális task befejezését követően mindig a legmagasabb prioritású következik. Ezzel a válaszidő a leghosszabb task válaszidejére csökken. A megszakításokhoz és a függvényekhez is lehet prioritást rendelni, de ezek többnyire összhangban vannak. A megszakításokhoz prioritás rendelhető Tetszőleges task prioritás beállítható kiemelési algoritmussal. A kiemelési algoritmus bonyolult is lehet, így a például dinamikus prioritási rendszer is megvalósítható. Worst Case válaszidő a leghosszabb task ideje. A módszer maradó hátránya az, hogy mivel nem preemptív, így az éppen futó alacsony prioritású task késlelteti az eseménykiszolgálást. Ez a késleltetés pedig meglehetősen nagy is lehet (pl. nyomtatás). Érzékenység: kódfejlesztésre viszonylag érzéketlen: újabb események kezelése, újabb megszakításkezelő rutinok felvételével és a task a prioritási rendszerbe való beillesztésével könnyen végezhető. A rendszer válaszideje az új task végrehajtási idejétől függ. Megosztott változók problémája: itt is jelentkezik a megosztott változók problémája task-megszakítás viszonylatban. A taskok közötti kommunikáció biztonságos.

Beágyazott információs rendszerek VIMM3244 - Tervezés 7 RTOS (mikrokernel architectúra, valós-idejű operációs rendszerre épített architektúra) void interrupt A_Handler() HandleHW_A(); SignalX()); void interrupt B_Handler() HandleHW_B(); SignalY()); ISR void TaskA(void) while (TRUE) WaitForSignalX(); ServiceA(); void TaskB(void) while (TRUE) WaitForSignalY(); ServiceB(); TaskB TaskA Működés: A megszakítás-kezelő rutinok a sürgős hardware feladatok elvégzése után az operációs rendszer segítségével üzennek a megfelelő task-oknak. Az üzenet sokféle lehet, a példában jelzést küldenek. Az egyes task-okhoz prioritások tartoznak. Amennyiben a megszakítás az éppen futó task-nál magasabb prioritású task-nak küldött üzenetet, akkor az ütemező az éppen futó task-ot felfüggeszti és a magasabb prioritású kezd futni. A jelzés megvalósítása és a task-váltás az operációs rendszer feladata. A módszer preemptív, ezért a nagyon sürgős események kiszolgálása a megszakítás-kezelő rutin után azonnal elkezdődik. A worst-case válaszidő az operációs rendszer jellemző adata: ~ 10 us Érzékenység: a rendszer nem érzékeny új események bevitelére, jól fejleszthető és karbantartható. Jelentősen eltérő kiszolgálási idejű feladatok is jól tervezhetők. Felhasználható minden rendszerben. Az operációs rendszer programjának processzorigénye csökkenti a processzoridőt. A kódméret az operációs rendszer kódjával megnő. Az operációs rendszer által biztosított válaszidő hosszabb, mint a közvetlen hardware-kezelő kód válaszideje. Ezen szempontok, és a módszerrel kínált jó tervezhetőség kompromisszuma dönti el az alkalmazását.