Belépés címtáras azonosítással
magyar nyelvű adatlap
angol nyelvű adatlap
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.
Villamosmérnöki alapszak
Beágyazott és irányító rendszerek specializáció
Beágyazott információs rendszerek ágazat
Név:
Beosztás:
Tanszék, Int.:
Dr. Kovácsházy Tamás
egyetemi docens
MIT
Scherer Balázs
mestertanár
Wacha Gábor
tanársegéd
Naszály Gábor
tanszéki mérnök
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.
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:
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)
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.
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.
Előadás elméleti anyaggal és az anyagrészek gyakorlatban történő demonstrációjával és gyakorlat.
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
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ő.
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.
A tantárgyból maximum 20 IMSc pont szerezhető.
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.