Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    Belépés
    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

    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.