K-INFO
HU
EN
Belépés

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

Parallel and Event Driven Programming in Embedded Systems
A tantárgyleírás hatályossága
Hatályosság kezdete:
2026. March 21.
Hatályosság vége:
Tantárgy neve (magyarul, angolul)
Párhuzamos és eseményvezérelt programozás beágyazott rendszereken
Parallel and Event Driven Programming in Embedded Systems
Tantárgykód BMEVIMIAC08
Tantárgyjelleg
Képzési szint
Kurzustípusok és óraszámok (heti/féléves)
Kurzustípus elmélet gyakorlat laboratóriumi gyakorlat
óraszám (heti) 2 1 0
jelleg (kapcsolt/önálló) kapcsolt
Tanulmányi teljesítmény/értékelés típusa vizsga
Tantárgy kreditértéke 4
Tantárgyfelelős
DR. Kovácsházy Tamás
beosztás: egyetemi docens
Tantárgyat gondozó oktatási szervezeti egység
Mesterséges Intelligencia és Rendszertervezés Tanszék
Kar Villamosmérnöki és Informatikai Kar
Tantárgy weboldala http://www.mit.bme.hu/oktatas/targyak/vimiac08/
Tantárgy elsődleges mintatantervi jellege
Közvetlen előkövetelmények – Erős előkövetelmény nincs
Közvetlen előkövetelmények – Gyenge előkövetelmény nincs
Közvetlen előkövetelmények – Párhuzamos előkövetelmény nincs
Közvetlen előkövetelmények – Mérföldkő előkövetelmény nincs
Közvetlen előkövetelmények – Kizáró feltétel nincs

Célkitűzés

Tantárgyprogram

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.

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.

Tanulmányi eredmények

Ez a tantárgy a KKK rendeletben meghatározott, következő kompetenciák fejlesztését szolgálja:

Tudás

Nincsenek rögzített tanulási eredmények.

Képességek

Nincsenek rögzített tanulási eredmények.

Attitűd

Nincsenek rögzített tanulási eredmények.

Autonómia és felelősség

Nincsenek rögzített tanulási eredmények.

Oktatási módszertan

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

Tanulástámogató anyagok

Online források
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.

A tantárgy teljesítéséhez ajánlott előzetes ismeretek

Tudás típusú kompetenciák
(azon előzetes ismeretek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
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.
Képesség típusú kompetenciák
(azon előzetes képességek és készségek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
nincs
Ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák
(azon ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák összessége, amelyek jelentősen hozzájárulnak a tantárgy eredményes teljesítéséhez)
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.
Általános szabályok
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 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ő.
Teljesítményértékelési módszerek
Szorgalmi időszakban végzett teljesítményértékelések részletes leírása

Nincs megadva részletes értékelés.

Szorgalmi időszakban végzett teljesítményértékelések részaránya

Nincs megadva részarány.

Vizsgaidőszakban végzett teljesítményértékelések részletes leírása

Nincs megadva részletes értékelés.

Vizsgarészek részaránya

Nincs megadva részarány.

Érdemjegy megállapítása

Nincs megadva érdemjegy határ.

Jelenléti és részvételi követelmények

Nincs megadva jelenléti követelmény.

Javítás, ismétlés és pótlás különös szabályai

Nincs megadva.

Rövid leírás

Nincs megadva.

Részletes leírás
IMSc program: 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 pontok: 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.
Ajánlott tantárgyak
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 tantárgy elvégzéséhez szükséges tanulmányi munka

Nincs megadva munkaidő bontás.

Tantárgykövetelmények hatályossága
Tantárgykövetelmények hatályosságának kezdete:
Tantárgykövetelmények hatályosságának vége:
Tantervi elhelyezés

Nincsenek rögzített tantervi elhelyezések ehhez a tárgyverzióhoz.