IQSOFT - John Brice Oktatóközpont
IT Leadership Development Program - ITLDP

Linux Kernel Programozás

Tanfolyam célja

Linux Kernel programozás - különös tekintettel az eszközvezérlők programozására.

Tematika
  1. Rövid bevezető a Linuxról
  2. Linux fejlesztői eszközök - gcc - Fejlesztői könyvtárak és kezelésük - Makefile - Hibakeresés
  3. Alkalmazás fejlesztés - Állomány és I/O kezelés
  4. Linux kernel ismertető - A Linux elindulásának folyamata - Folyamatok kezelése - Ütemezés - Megszakítás kezelés - Valósidejűség kérdésköre - Memória kezelés - Eszközök
  5. Kernel modulok készítése - Egyszerű kernel modul, a modul fejlesztés alapjai - Paraméter átadás - Egyszerű karakteres eszközvezérlő, egyszeres megnyitás kérdése - A /proc állományrendszer használata - Más eszközmeghajtók elérése
  6. A hibakeresés módszerei - Egyszerű módszerek (printk, proc, kernel fordítási opciók) - Az Oops üzenet feldolgozása - Magic SysRq - gdb - kgdb elméletben
  7. Memória allokáció
  8. Konkurencia kezelés - spinlock - semaphore - Egyéb eszközök 9. Az ioctl() implementációja
  9. I/O műveletek blokkolása
  10. poll() és select() támogatása
  11. Összetett eszközvezérlő példa
  12. USB eszközvezérlők ismertetése
  13. Megszakítás kezelés - Megszakítások lekezelése - BH mechanizmus (tasklet, workqueue)  Kernel szálak - Szálak létrehozása, leállítása - Várakozás (rövid, hosszú, időzítés)
  14. I/O portok kezelése
  15. Memória menedzsment
  16. mmap() implementáció

Course Topics:

  • Short introduction of Linux
  • Linux development tools (gcc, development libraries, Makefile, troubleshooting)
  • Application development, File and I/O handling
  • Linux kernel
    • the boot process of Linux
    • process handling
    • scheduler
    • interrupt handling
    • questions of real-time
    • Memory management
    • devices
  • Writing kernel modules
    • a simpe kernel module, basics
    • parameter transfer
    • simpe, character-based device driver, 1x opening
    • usage of /proc file system
    • accessing device drivers
  • Troubleshooting methods
    • simple methods (printk, proc, kernel compile options)
    • processing Oops message
    • Magic SysRq
    • gdb
    • kgdb in theory
  • Memory allocation
  • Objects of synchronization/Concurrent programming (spinlock, semaphore, etc.)
  • Implementation of ioctl()
  • Blocking I/O
  • Support of poll() and select()
  • Complex device driver example
  • USB device drivers
  • Interrupt handling
    • interrupt handling
    • BH-mechanizm (tasklet, workqueue)
  • Kernel threads
    • creating, scheduling, stopping kernel threads
    • Waiting (short, long, timers)
  • I/O port handling
  • Memory management
  • impementation of mmap()
Kinek ajánljuk