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,
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 rend az adott szak honlapján és képzési programjában található.

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