Párhuzamos és eseményvezérelt programozás beágyazott rendszereken
A tantárgyleírás hatályossága
| 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) |
|
||||||||||||
| 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
elérhetőség:
kovacshazy.tamas@vik.bme.hu
|
||||||||||||
| 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
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.
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
Tanulástámogató anyagok
Online források
A tantárgy teljesítéséhez ajánlott előzetes ismeretek
Általános szabályok
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
Ajánlott tantárgyak
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
Tantervi elhelyezés
Nincsenek rögzített tantervi elhelyezések ehhez a tárgyverzióhoz.