Vizsga és záróvizsga
A tárgy vizsgája szóbeli. A tételsor első és második feléből kell 1-1 tételt húzni, azt 2x15 perc alatt vázlatosan leírni, majd a vázlat alapján kérdéseket tesz fel a vizsgáztató, a kérdések arra is vonatkozhatnak, hogy az adott téma más tanult témákhoz hogyan kapcsolódik. Az API-ra vonatkozó tételeknél nem kell tudni a függvények pontos deklarációját, implementációját (feltalálták a könyveket meg az Internetet), de le kell tudni írni azok használatát, a fotnosabb dolgokat, amire figyelni kell, stb.
2020-as változások távoktatás miatt:
- A vizsgázókat a Neptun névsor szerinti sorrenben hívom fel én Teams-en. Az @edu.bme.hu azonosítóját mindenkinek tudom a tárgyhoz rendelt MS Teams csoport alapján (legalábbis nagyon remélem). Ha valaki nem volt ott a híváskor, akkor privát üzenetben jelezze, hogy ismét elérhető (ne hívjon vissza, 2-3 perc után belefogok a következő hallgató vizsgáztatásába).
- A vizsga szóbeli, én adok 1-1 tételt, és arról felkészülési idő nélkül kell beszélni. A felet során nem hosszú részletes ismertetést várok, hanem a tétellel kapcsolatos fontos fogalmak felsorolását, és azoknak a kapcsolódásának a bemutatását (rövid és kompakt válasz). Ez után rákérdezek kisebb részletekre, és azokat kell mélyebben bemutatni, de szintén a fenteknek megfelelően, vázlatosan.
- A vizsga előtt teszteljétek a WEB kamerátokat és a hangrendszert. Lehetőség szerint használjatok fejhallgatót, fülhallgatót.
- Az első tapasztalatok alapján az elektronikus szóbeli kicsit tovább tart, ezért egy vizsgázóra 20 percet, de akár 25 percet is számítani kell, ennek megfelelően becsülhető kb. az az időpont, amikor a névsor alapján sorra kerültök.
A tárgyból lehet majd záróvizsgázni is (még nem biztos, de valószínű). A záróvizsgán egy tételre vagy annak egy nagyobb részére kérdezünk rá, és arra azonnal, szóban kell válaszolni .A felet során nem hosszú részletes ismertetést várok, hanem a tétellel kapcsolatos fontos fogalmak felsorolását, és azoknak a kapcsolódásának a bemutatását (rövid és kompakt válasz). Ez után rákérdezek kisebb részletekre, és azokat kell mélyebben bemutatni.
Tételek 2017-ben (inkább az egyes tételeknél fontos kulcs koncepciók felsorolása, amelyeknek az összefüggéseit is ismerni kell):
- Az operációs rendszer és a HW kapcsolata. OS alkalmazásának előnyei és hátrányai. HW hatása a párhuzamos végrehajtásra, HW architektúrák, cache koherencia, spekulatív végrehajtás, megszakítás és fajtái. Valós-idejű végrehajtás és az OS kapcsolata.
- Védelmi szintek és rendszerhívás, kontextus fogalma. Operációs rendszerek és azok felépítése és OS választás szempontjai. Linux és FreeRTOS főbb eltérései és hasonlóságai.
- Szekvenciális és párhuzamos programozás. Párhuzamos programozás történe. Tipikus párhuzamos feladatok. Amdahl és Gustafson törvényei és következményeik. Eseményvezéreltség.
- Feladat fogalma. Feladat egyszerűsített memóriaképe, user és kernel területen lévő információk, egyszerűsített állapot-átmeneti ábra. Linux és FreeRTOS állapot-átmeneti ábrájának ismertetése.
- Feladatok ütemezése. Ütemezés időskálái. Nem preemptív és preemptív ütemezés és összehasonlításuk. Ütemező választás. FIFO, RR ütemezők és azok összehasonlítása. Prioritásos ütemezők, egyszerű és többszintű sorok ütemezők és tulajdonságaik. FreeRTOS ütemezője.
- Feladatok ütemezése általában. Többprocesszoros ütemezés és annak kapcsolata az egyprocesszoros esettel, processzor affinitás, terhelés elosztás. Linux ütemezője.
- Feladatok leírása. Alacsony szintű vezérlési szerkezetek, coroutine és fiber. Folyamatok és szálak részletes bemutatása. Folyamatok és szálak megvalósításának HW feltételei.
- Folyamatok és szálak FreeRTOS-ban és Linux-ban. Linux folyamat és szál létrehozása, FreeRTOS task (szál) és használata.
- Feladatok együttműködése általában, erőforrás, közös erőforrás, kritikus szakasz, atomi művelet, újrahívhatóság és kölcsönös kizárás definíciója és azok kapcsolata. RAM és PRAM modell, memória mint közös erőforrás. HTM alapötlete és összehasonlítása a kölcsönös kizárással.
- Közös erőforrásra várakozás (lock) lehetőségei és annak illeszkedése a feladatok egyszerűsített állapot-átmeneti ábrájához. Lockolás részletessége. Aktív és passzív várakozás, összehasonlításuk. Megadott időre történő várakozás (timeout) lehetőségei és időkezelés.
- Kölcsönös kizárás lehetőségei közös memória esetén (PRAM modell). Lockbit-től az RCU-ig, a megoldások és azok összehasonlítása. FreeRTOS és Linux példák. Randevú és kommunikáció PRAM modell esetén.
- Párhuzamos programozás során elkövetett tipikus hibák és azok elleni védekezés. Holtpont, szükséges feltételek, holtpont kezelése. Priorítás inverzió és elkerülése. Monitor és megvalósítása.
- FreeRTOS és Linux megoldások kölcsönös kizárásra, szinkronizációra közös memória esetén. A megoldások felsorolása, főbb jellemzőik, összehasonlításuk.
- Folyamatok közötti kommunikáció (IPC) és s közös memória alapú kommunikáció összehasonlítása. Üzenet fogalom és címzés, nyugtázás. Direkt és indirekt, szinkron és asszinkron kommunikáció. IPC megoldások általánosan és FreeRTOS és Linux példák rájuk (részletesen nem kell őket ismertetni).
- Linux IPC megoldások a jelzésektől a POSIX IPC főbb eleméig (socket-et kivéve).
- FreeRTOS IPC jellegű megoldásai.
- Távoli eljárás hivás és annak implementációja Linux alatt.
- Elosztott rendszer architektúrák. Publish-subscribe, virtuális adatbusz, proxy és bróker részletes ismertetése.
- TCP/IP protokoll készlet architektúrája és implementációja, tesztprogramjai Linux alatt. Tűzfal alapok. Protokoll analizátorok és működésük alapjai, Wireshark és tcpdump alapok. TCP és UDP alapok, összehasonlításuk.
- Socket programozás. Socket-ek típusai. Socket használata, tipikus munkamenet TCP és UDP socket esetén.
- Hibakeresés eszközei és azok használata Linux alatt. (2020-tól ilyen részletességgel nem ment le, nem kérdezzük)
- Rendszer virtualizáció alkalmazása, hardver és szoftver követelmények. Hypervisor szerepe és alkalmazása beágyazott rendszerekben. Periféria virtualizációs, különös tekintettel a szenzor virtualizációra. (2020-tól ilyen részletességgel nem ment le, nem kérdezzük)