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ó    

    LINUX programozás

    A tantárgy angol neve: Programming of Linux

    Adatlap utolsó módosítása: 2015. április 2.

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar
    Villamosmérnöki szak
    Mérnökinformatikus szak
    Szabadon választható tantárgy
    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIAUJV57   2/2/0/v 4  
    3. A tantárgyfelelős személy és tanszék Dr. Szegletes Luca, Automatizálási és Alkalmazott Informatikai Tanszék
    4. A tantárgy előadója
    Név

     

    Beosztás

     

    Tanszék, Intézet

     

    Bányász Gábor

     

    tanársegéd

     

    Automatizálási és Alkalmazott Informatikai Tanszék

     

    5. A tantárgy az alábbi témakörök ismeretére épít

    Linux/Unix felhasználói alapismeretek

    C/C++ Programozás

     

    6. Előtanulmányi rend
    Kötelező:
    NEM ( TárgyTeljesítve("BMEVIAU9157") )

    A fenti forma a Neptun sajátja, ezen technikai okokból nem változtattunk.

    A kötelező előtanulmányi rendek grafikus formában itt láthatók.

    Ajánlott:
    A tantárgyat nem vehetik fel azok, akik már előzőleg teljesítették a VIAU9157 (LINUX programozás) tantárgyat.
    7. A tantárgy célkitűzése

    A tantárgy célja a Linux platform, mint fejlesztési környezet megismertetése a hallgatókkal. Bemutatja a Linux környezet sajátosságait, a fejlesztés, hibakeresés lehetőségeit. A hallgatók az órák során elsajátíthatják a programok közötti kommunikáció megvalósítását, a többszálú programozást, az I/O vezérlést, kernel modulok készítését, és a Qt programok fejlesztését. A tantárgyban alapvető fontosságú az ismeretek gyakorlati úton történő elsajátítása.

    8. A tantárgy részletes tematikája
    • Bevezetés: A Linux operációs rendszer, a Linux kernel, információforrások fejlesztői szemszögből.

       

    • Fejlesztői eszközök: Általános szövegszerkesztők, fordítók (gcc, g++), make, grafikus fejlesztői környezet (Eclipse).

       

    • Nyomkövetés, hibakeresés: A hibakeresés, nyomkövetés eszközei (gdb, és frontendek). A programhibák utólagos visszakeresése, a core állomány használata. Memória kezelési hibák keresése: Electric Fence, valgrind, stb. Rendszerhívások követése: strace

       

    • Állomány és I/O kezelés: Állomány jogok, állomány típusok, egyszerű állomány kezelés, inode információk kezelése, könyvtárak kezelése, I/O eszközök kezelése, csővezetékek, I/O multiplexálás, zárolás.

       

    • Folyamatok és szálak: Folyamatok és többszálú programok létrehozásának lehetősége Linux alatt, ütemezés. Folyamatok közötti kommunikáció (signal, pipe, System V mechanizmusok). Többszálú programok fejlesztése Posix threads könyvtárral. Szálak létrehozása, szinkronizálás.

       

    • Könyvtárak fejlesztése: Statikus, megosztott és dinamikusan betöltött programkönyvtárak fejlesztése, használata.

       

    • Hálózati kommunikáció: Socketek létrehozása és használata. Az egyszerű socketek létrehozásától, a Unix Domain scoketeken keresztül, a TCP/IP kommunikációig. A távoli eljáráshívás (RPC) használata.

       

    • Kernel modulok fejlesztése: A modulok fejlesztésének jellemzői, eltérései a programok fejlesztéséhez képest. Karakteres típusú eszközvezérlő modul készítése. A proc állomány rendszer használata. Betöltési paraméterek kezelése.

       

    • XWindow, KDE fejlesztés: Az X grafikus felhasználói felület architektúrájának ismertetése. Eseményvezérelt programozás. A Qt programok felépítése. Qt Creator fejlesztői környezet részletes ismertetése. A Qt Toolkit egyes elemei: szignál-szlot metódus, moc compiler, alaposztályok. Származtatott ablakelemek, dialógusablakok, erőforrások, konfigurációs állományok. A Dokumentum-Nézet architektúra alapkoncepciói, alkalmazása SDI és MDI programokban.

       

    Tervezett órai bontás a tantárgy oktatása során

     

    Hét

     

    Előadás

     

    Gyakorlat

     

    1

    Bevezetés
    Tárgykövetelmények ismertetése
    Az előadások és gyakorlatok vázlatos ütemezése
    A Linux történelme

     

    Alapvető  információk a Linux rendszerről és a Linux alatti szoftver fejlesztésről

     

    Eszközök
    Információ források
    Szövegszerkesztők: nano, joe, gwrite, kwrite

     

    „Hello World!” alkalmazás

     

    IDE: Qt Creator, Eclipse

     

    2

    Belső felépítés I.
    Linux kernel bevezetés (felépítés betöltés)
    Processzek ütemezése

     

    Eszközök
    gcc
    make

     

    3

    Belső felépítés II.
    Virtuálismemória-kezelés a kernelben
    Egyszerű állománykezelés

     

    Hibák felderítése
    Hibakeresők
    Memóriakezelési hibák és felderítő eszközök
    További eszközök

     

    4

    Állománykezelés, Zárolás
    Inode információk lekérdezése
    Inode információk módosítása
    Csővezetékek
    Könyvtárműveletek
    Zárolás

     

    Könyvtárak fejlesztése
    Statikus könyvtárak
    Dinamikus könyvtárak
    Dinamikus betöltés

     

    5

    Felhasználók, Processzek, IPC
    Felhasználói nevek, csoportnevek
    Processzek létrehozása és megszüntetése
    Jelzések
    System V IPC (szemaforok)

     

     Állománykezelés
    Részleges írás, olvasás a bemenetről
    Állományok információinak lekérdezése
    Csővezetékek
    Könyvtárműveletek

     

    6

    System V IPC, Szálak
    System V IPC (üzenetlista, megosztott memória)
    Szálak

     

    Multiplexelés
    Párhuzamos olvasás blokkolva és blokkolás nélkül.
    Multiplexelés a select() függvénnyel
    Multiplexelés poll()-al
    Aszinkron olvasás

     

    7

    Szálak
    Szálak szinkronizációja

     

    Fork, IPC
    Fork
    Szemafor

     

    8

    Socket kezelés
    Egyszerű socket kezelés
    Unix domain socketek

     

    Fork, IPC
    Üzenetsor
    Megosztott memória

     

    9

    Socket kezelés
    IP címzés, TCP portok

     

    Összeköttetés alapú kommunikáció

     

    Szálak szinkronizációja
    Szemafor
    Mutex
    Feltételes változók

     

    10

    Socket kezelés
    Összeköttetés nélküli kommunikáció
    Többesküldés
    IPv6

     

    Socket
    Egyszerű socket kezelés példa
    Unix domain socket példa
    TCP/IP szerver
    UDP kliens és szerver

     

    11

    Qt alapok
    X Window bevezetés
    Qt bevezetés, eseményvezérelt programozás
    Szignál-szlot mechanizmus
    moc

     

    Qt UI alapok
    Származtatott widget készítése
    A Qt Creator használata
    Qt Dialógus ablakok készítése (ez esetleg házi feladat)

     

    12

    Qt UI fejlesztés
    Dialógus alapú alkalmazás
    Konfigurációs állományok
    A Dokumentum/Nézet architektúra

     

    Qt UI alkalmazás
    SDI alkalmazás
    MDI alkalmazás

     

    13

    Qt hálózatkezelés
    Qt hálózatkezelés

     

    RPC
    Architektúra
    Adatátviteli formátumok
    Paraméterek átvitele oda/vissza

     

    14

    Kernel modulok
    Üzemmódok
    Fordítás
    Belépési és kilépési pontok, indítási paraméterek
    A /proc állományrendszer

     

    Konzultáció és házi feladatok beszedése

     

     

    9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)

    Előadás és számítógépes gyakorlat. A számítógépes gyakorlat során a hallgatók az előadáson hallottak gyakorlati alkalmazását láthatják és gyakorolhatják.

    10. Követelmények a. A szorgalmi időszakban:

     

     

    A hallgatók a szorgalmi időszak során egyedül vagy párban 1 nagy házi feladatot készítenek, amelyen gyakorolhatják a szoftver fejlesztés menetét és az órán tanult eszközök használatát. Az elkészített alkalmazást/rendszert dokumentációkkal együtt a félév végén kell bemutatniuk.

     

    A hallgató a félév elismerését jelentő félév végi aláírást csak akkor kaphat, ha a házi feladata teljesíti a minimális követelményeket.

     

     

    Elővizsga tehető a szorgalmi időszak utolsó hetében.

     

     

     

    b. A vizsgaidőszakban:

     

     

    A tantárgy anyagából a hallgatók vizsgát tesznek. A félév végi osztályzatot a házi feladat (75%) és a vizsgajegy (25%) alapján kapják. A vizsgán a hallgatóknak el kell érniük a meghatározott minimum szintet. 
    11. Pótlási lehetőségek

    A házi feladat leadása a pótlási héten megadott időpontban pótolható. 

    Elégtelen vizsga a TVSZ szabályai szerint pótolható.

     

    12. Konzultációs lehetőségek

    Igény szerint az előadóval egyeztetve.

    13. Jegyzet, tankönyv, felhasználható irodalom Bányász Gábor - Levendovszky Tihamér, Linux programozás, Szak Kiadó, 2003.

     

    14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
    Kontakt óra56
    Félévközi készülés órákra 
    Felkészülés zárthelyire0
    Házi feladat elkészítése16
    Kijelölt írásos tananyag elsajátítása0
    Vizsgafelkészülés48
    Összesen120
    15. A tantárgy tematikáját kidolgozta

    Név:

    Beosztás:

    Tanszék, Int.:

    Bányász Gábor

    tanársegéd

    Automatizálási és Alkalmazott Informatikai Tanszék

    Dr. Lengyel László

    egyetemi docens

    Automatizálási és Alkalmazott Informatikai Tanszék