Párhuzamos és eseményvezérelt programozás beágyazott rendszereken

A tantárgy angol neve: Parallel and Event Driven Programming in Embedded Systems

Adatlap utolsó módosítása: 2017. június 22.

Budapesti Műszaki és Gazdaságtudományi Egyetem
Villamosmérnöki és Informatikai Kar

Villamosmérnöki alapszak

Beágyazott és irányító rendszerek specializáció

Beágyazott információs rendszerek ágazat

Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIMIAC08 6 2/1/0/v 4  
3. A tantárgyfelelős személy és tanszék Dr. Kovácsházy Tamás,
A tantárgy tanszéki weboldala http://www.mit.bme.hu/oktatas/targyak/vimiac08/
4. A tantárgy előadója

Név:

Beosztás:

Tanszék, Int.:

Dr. Kovácsházy Tamás

egyetemi docens

MIT

Scherer Balázs

mestertanár

MIT

Wacha Gábor

tanársegéd

MIT

Naszály Gábor

tanszéki mérnök

MIT

5. A tantárgy az alábbi témakörök ismeretére épít

Mikroprocesszorok működésének alapjai, számítógép-architektúrák alapjai, operációs rendszerek alapjai, C/C++ programozás, beágyazott rendszerek alapjai.

6. Előtanulmányi rend
Kötelező:
Szakirany("AVINbeagy", _)
VAGY Training.code=("5NAA7")

A fenti forma a Neptun sajátja, ezen technikai okokból nem változtattunk.

A kötelező előtanulmányi rend az adott szak honlapján és képzési programjában található.

Ajánlott:

Ajánlott:

Programozás alapjai 1. (C programozás)

Programozás alapjai 2. (C++ programozás) tárgyak.

Informatika 1 (Operációs rendszerek és Számítógép architektúrák)

Informatika 2 (Számítógép-hálózatok)

7. A tantárgy célkitűzése

A tárgy elsődleges célja, hogy megismertesse a hallgatókat a párhuzamos és eseményvezérelt programozás elméleti alapjaival és gyakorlatával, mivel a beágyazott rendszerek egyre nagyobb szoftver-komplexitása, valamint a sokprocesszoros, elosztott és heterogén rendszerarchitektúrák elterjedése ezen a területen szinte kizárólagossá teszi ennek a programozási megközelítésnek az alkalmazását. Ennek megfelelően a tárgy kitér a beágyazott operációs rendszerek belső működésére, az alkalmazások megvalósításához nyújtott szolgáltatásokra és azok használatára kernel és felhasználói szinten is. A tárgy oktatása során bemutatott megoldások demonstrációja FreeRTOS (egységes címtér, fizikai memóriakezelés) és UNIX/Linux (virtuális memória) beágyazott operációs rendszerekkel történik, kitérve a valósidejűség, memóriakezelés, megbízhatóság és az erőforrás-virtualizáció összefüggéseire.

8. A tantárgy részletes tematikája

1. hét   A párhuzamos és eseményvezérelt programozás architekturális háttere, processzor- és memóriavirtualizáció, védelmi szintek és MMU, cache-koherencia, sokprocesszoros, elosztott és heterogén rendszerek.

2. hét   Operációs rendszerek felépítése, fajtái, belső működésük, kapcsolatuk az alkalmazásokkal. Konkurens és kooperatív ütemezés, prioritás, az ütemezés és a hardver kapcsolata. Rendszerhívás és megvalósítása. Valós-idejűséggel, biztonságkritikus környezettel kapcsolatos kérdések az operációs rendszerekben.

Gyakorlat: Tesztrendszer telepítése virtuális gépbe és ismerkedés a használatával, fejlesztőeszközökkel, make, Eclipse fejlesztőkörnyezet stb.

3. hét   Feladatok és részfeladatok megvalósítási eszközei, folyamatok (process) és szálak (thread), tulajdonságaik, összehasonlításuk, implementációs hátterük. Amdalh- törvénye és következményei. Párhuzamosíthatóság lehetőségei. Co-routine és rost (fiber), mint a kooperatív ütemezés megvalósításai, implementációs kérdések. Tervezési minták a folyamatok, szálak, kooperatív ütemezés felhasználására.

4. hét   Folyamatok, szálak alkalmazása beágyazott környezetben, gyakorlati megoldások ismertetése, elemzése és összehasonlítása ebből a szempontból tervezési mintákon keresztül. A folyamatok és szálak futásának megfigyelésére alkalmas szoftvermegoldások és eszközök.

Gyakorlat: Folyamatok és szálak létrehozása Linux példákkal. Eszközök a folyamatok és szálak futásának megfigyelésére. FreeRTOS szálak használata a gyakorlatban, és működésük megfigyelése.

5. hét   A kölcsönös kizárás, szinkronizáció, kommunikáció eszközei közös memória alapú kommunikáció esetén. A párhuzamos futtatás feltételei (Bernstein feltétele). Lock-bit, szemaforok, mutexek, multiple-reader single writer mutex stb. működése és alkalmazása tervezési mintákon keresztül. Spinlock és sleeplock működése és hatása a beágyazott rendszer teljesítményére (beleértve a valós-idejűséget) és energiafogyasztására.

6. hét   A gyakorlatban alkalmazott megoldások elemzése és összehasonlítása kölcsönös kizárás, szinkronizáció, kommunikáció közös memóriában történő megvalósítására esettanulmány jelleggel.

Gyakorlat: Kölcsönös kizárás, szinkronizáció, kommunikáció megvalósítása 1.

7. hét   A kölcsönös kizárás, szinkronizáció, kommunikáció eszközeinek elemzése (folytatás). A felhasználói alkalmazások és a kernel lehetőségeinek összehasonlítása.

8. hét   Időkezelés beágyazott rendszerekben, az idő, mint fizikai mennyiség, és annak megjelenése a számítógépekben, beágyazott rendszerekben. Órák felépítése, valós idejű óra, rendszeróra, feladatok végrehajtásának késleltetése és feladatok ébresztése idő alapján.

Gyakorlat: Kölcsönös kizárás, szinkronizáció, kommunikáció megvalósítása 2.

9. hét   A kölcsönös kizárás, szinkronizáció, kommunikáció eszközei üzenetalapú kommunikáció esetén. Üzenetalapú rendszerek tulajdonságai, összehasonlítás a közös memóriát alkalmazó rendszerekkel. Postaláda és üzenetsor alkalmazása, jelzések, csővezetékek és elnevezett csővezetékek, TCP/IP, távoli eljárás- és metódushívás. Az üzenetalapú kommunikáció tervezési mintái.

10. hét A kölcsönös kizárás, szinkronizáció, kommunikáció eszközei üzenetalapú kommunikáció esetén Linux rendszerekben. POSIX kompatibilis és System V megoldások és alkalmazásuk. TCP/IP és Unix domain socket ismertetése.

Gyakorlat: Kölcsönös kizárás, szinkronizáció, kommunikáció megvalósítása folyamatok között felmerülő kölcsönös kizárási, szinkronizáció és kommunikációs alkalmazási példákkal.

11. hét A kölcsönös kizárás, szinkronizáció, kommunikáció megvalósítása során elkövetett tipikus hibák és azok elkerülésének módszerei. Holtpont (deadlock), livelock, prioritás-inverzió, egyéb hibák. Monitor-koncepció és alkalmazása.

12. hét Memóriakezelés. A FreeRTOS memóriamodellje, memóriafoglalás és a memória felszabadítása, következmények, heap és stack szerepe, linker scriptek. Memóriakezelés Linuxban, a virtuális memória konfigurálása és használata, a virtuálismemória-kezelés következményei.

Gyakorlat: Megoldások feladatok végrehajtásának adott idejű felfüggesztésére, a végrehajtás adott időpontban történő megkezdésére. Spinlock, HW timer alapú késleltetés és az OS virtuális timer alkalmazása. Timeout fontossága beágyazott rendszerekben a hibakezelés szempontjából.

13. hét A párhuzamos és eseményvezérelt programozást segítő eszközök, azok működése és alkalmazástechnikája. Nyomkövetés (trace) hardver- és szoftvereszközei és kapcsolatuk a fejlesztőeszközökkel. Profiling. Memóriahasználat ellenőrzése, memóriaszivárgás azonosítására alkalmas eszközök. Hibakeresés, teljesítményanalízis és optimalizáció eszközei.

14. hét Alternatív és hardvermegoldások. Hardver szemafor, multiport memória, szoftver vagy hardver tranzakciós memória (software transactional memory, hardware transactional memory), zárolásmentes programozás (lockless programming). Rendszer-virtualizáció alkalmazása, hardver és szoftver követelmények. Hypervisor szerepe és alkalmazása beágyazott rendszerekben. Periféria-virtualizáció különös tekintettel a szenzor-virtualizációra.

A gyakorlatok páros héten szerepelnek, de azok az órarendi beosztásnak megfelelően egy héttel később, páratlan héten is megszervezhetők.

9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)

Előadás elméleti anyaggal és az anyagrészek gyakorlatban történő demonstrációjával és gyakorlat.

10. Követelmények

a. A szorgalmi időszakban: Részvétel a gyakorlatokon, a félév során 6 számítógépes gyakorlatot tartunk (minden második héten 2 óra, figyelembe véve az ünnepek miatti szünetek lehetőségét), amelyeken a részvételt ellenőrizzük, a félév során minimum 4 gyakorlaton részt kell venni a félévvégi aláírás megszerzésére, a gyakorlatok pótlására nincs lehetőség.
A házi feladat elfogadható szintű teljesítése szükséges az aláíráshoz és a vizsgára bocsájthatósághoz. A házi feladat egy összetett rendszer, amelynek egyes komponensei egy FreeRTOS futtatására képes mikrokontrolleres fejlesztőkártyán, míg más részei PC vagy beágyazott Linux-on futnak. 
A házi feladata témája legkésőbb a 2. hét végére véglegesítésre kerül.
A házi feladat részletes specifikációját rögzítő dokumentum beadási határideje a 4. hét vége.      
A házi feladat terveinek (dokumentáció) és kulcstechnológiáit bemutató prototípusok bemutatási határideje a 8. hét vége.      
A házi feladat beadási határideje a szorgalmi időszak utolsó napja (14. hét vége).

b. A vizsgaidőszakban: Szóbeli vizsga.

c. Elővizsga: Nincs

11. Pótlási lehetőségek

A gyakorlatok nem pótolhatók (6-ból 4-en a megjelenés kötelező).

A specifikációt a 8. hétig, a házi feladat terveit és kulcskoncepcióit bemutató prototípusokat a 14. hétig lehet pótolni (következő ütemezett feladatrész leadási határidejéig). A végleges házi feladat leadása a pótlási héten pótolható, ha ez előzetes dokumentációk leadásra kerültek az azokra megadott pótlási feltételekkel.

A házi feladat zárthelyivel nem helyettesíthető.

12. Konzultációs lehetőségek Igény szerint, előzetesen egyeztetett konzultációs időpontokban.
13. Jegyzet, tankönyv, felhasználható irodalom Bruce Powel Douglass, „Real-Time Design Patterns: Robust Scalable Architecture for Real-Time Systems”, Addison-Wesley Professional Computing Series, 2002.
Bruce Powel Douglass, „Design Patterns for Embedded Systems in C: An Embedded Software Engineering Toolkit”, Newnes, 2010.
Richard Barry, „Using the FreeRTOS Real Time Kernel - Standard Edition”, 2010.
Richard Barry, „Using the FreeRTOS Real Time Kernel - a Practical Guide - Cortex M3 Edition”, 2010.
W. Richard Stevens (Author), Stephen A. Rago, „Advanced Programming in the UNIX Environment (3rd Edition) (Addison-Wesley Professional Computing Series, 2013.
Asztalos Márk, Bányász Gábor, Levendovszky Tihamér, „Linux programozás, Második, átdolgozott kiadás”, 2013.
14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
Kontakt óra42
Félévközi készülés előadásra8
Félévközi készülés gyakorlatra
8
Házi feladat elkészítése30
Vizsgafelkészülés32
Összesen120
15. A tantárgy tematikáját kidolgozta
Név:Beosztás:Tanszék, Int.:
Dr. Kovácsházy Tamásegyetemi docensMIT
Scherer BalázsmestertanárMIT
Naszály Gábortanszéki mérnök
MIT
Wacha GábortanársegédMIT
IMSc tematika és módszer

Az IMSc program hallgatói számára emelt szintű házi feladatokat kínálunk. Alapvető célunk az, hogy a hallgatókat a tananyag mélyebb megismerésére ösztönözzük, és nagyobb választási lehetőségeket is kínáljunk számukra. Ezen kívül az előadásokon rendszeresen rámutatunk a tárgy tematikáját kiegészítő, emelt szintű, önállóan elsajátítható, kiegészítő ismeretekre, amelyek bemutatását a szóbeli vizsgán figyelembe vesszük az értékelés során.

IMSc pontozás

A tantárgyból maximum 20 IMSc pont szerezhető.

  • Ebből 10 IMSc pont szerezhető az emelt szintű házi feladatok vállalásával és kiemelkedő műszaki szinten történő elkészítésével. Az emelt szintű házi feladatok értékelését a tárgyfelelős és a házi feladat konzulense együtt végzi.
  • A szóbeli vizsgán 10 IMSc pont szerezhető a vizsgán érintett tématerületekből megadott kiegészítő anyagrészek ismeretéért.

Az IMSc pontok gyűjtése teljesen független a házi feladat és vizsga értékelésétől. Ezen pontok megszerzése nélkül is jeles szinten teljesíthetők a tantárgy követelményei. Az IMSc pontok megszerzése az IMSc programban nem résztvevő hallgatók számára is biztosított.