Kurzusleírás

Bevezetés

  • rövid történet a GNU/Linuxról
  • licencelés
  • kernel verziózás
  • kiadási ciklus
  • kernel fastruktúrák
  • fővonalak (mainline)
  • kernel vs. felhasználói tér
  • mechanizmus vs. szabályzat
  • alternatív kernelvezérlők
  • valós idejű operációs rendszer (RTOS) vs. Linux

Memóriakezelés

  • virtuális memória vs. fizikai memória
  • kernelbeli memóriallokáció
  • oldalak (pages)
  • zónák (zones)
  • API
  • slab

Kernel Patch

  • életciklus
  • git
  • kernel forráskód
  • patch létrehozása
  • patch ellenőrzése
  • patch javítása
  • patch elküldése
  • átvizsgált kód

Kernel Modulok

  • kernel forráskód beszerzése
  • konfigurálás / fordítás / telepítés
  • eszközvezérlők (statikusan linkezve, futásidejben betöltött)
  • inicializálás / kilépés
  • licencelés
  • EXPORT SYMBOL GPL
  • fákimeneteli Makefile
  • module-init-tools
  • modul a kernel fastruktúrában
  • Kconfig
  • paraméteradatok átadása
  • sparse

Karakteres Vezérlők

  • architektúra
  • felhasználói / kernel interfész
  • I/O alrendszer
  • VFS
  • sysfs (eszközök, busz, vezérlők, osztályok)
  • kobject / ktype / kset
  • Linux kernel vezérlő modellje
  • eszközfájlok
  • karakteres vezérlő
    • inicializálás
    • regisztráció
    • megnyitás, felszabadítás
    • cdev, cdev add, cdev del,...
    • nagy / kis számú eszközök
    • udev, udevmonitor, udevadm

Haladó Karakteres Vezérlő Műveletek

  • ioctl
  • unlocked ioctl
  • compat ioctl
  • felhasználói tér API
  • kernel területi API
  • folyamat életciklus
  • alvás / blokkolódás
  • alvás / felébresztés
  • váró sor (wait queue)
  • tundering herd
  • poll / select

Kernel Hibaállapotok Elerzékelése

  • hibaelhárítás
  • kernel hibaelhárítása
    • bináris keresés a git segítségével
    • hibakezelés támogatás a kernelből
    • printk syslogd, klogd, naplószintek, gyakorisági korlátozás, hibaszintek, szekvenciális részrendszer hibaelhárítása
    • hibaelhárítás a debugfs lekérdezésével
    • oops hibaelhárítás, oops felidézése
    • Magic SysRq Key
    • kgdb / kdb
    • JTAG

Nyomkövetés

  • gcov
  • lcov
  • oprofile
  • ftrace
    • nop nyomkövető
    • funkció nyomkövető
    • ütemezési váltási nyomkövető
    • függvénygráf nyomkövető
    • dinamikus nyomkövető
  • trace-cmd / kernelshark
  • perf
  • LTTng

Események

  • események vs. lekérdezéses ellenőrzés (polling)
  • esemény
  • program szakaszok
  • újrafuttathatóság (reentrancy)
  • események
  • eseménykezelő
  • megosztott eseménykezelő
  • esemény folyamat
  • esemény ellenőrzés

Késleltetett Munkavégzés

  • felső / alsó felek (top/bottom halves)
  • softirqs
  • tasklets
  • munkavégzési sorok (work queues)
  • szálatos események (threaded interrupts)

Konkurencia

  • kritikus régió / szakasz
  • atomi műveletek (atomic)
  • futásverseny (race condition)
  • szinkronizálás
  • zárolások (locking)
  • zárolási megoldások
  • blokkolódási kör (deadlock)
  • párhuzamos futtatás (contention)
  • mire kell zárni?
  • mit lehet használni?
    • atomi műveletek
    • spin lockok
    • olvasó-író spin lockok
    • szemafor
    • bináris szemafor
    • zár (mutex)
    • olvasó-író szemafor
    • befejezési változók (completion variables)
    • soros zárolások (sequential locks)
    • preemptív folyamatok kikapcsolása
    • sorba rendezés és akadályok (ordering and barriers)

Idő

  • HZ
  • Jiffies
  • nagy / kis késleltetések (big/small delays)
  • kernel időzítők (kernel timers)

Hardveres I/O

  • I/O Portok
  • I/O Memória
  • Hogyan kell a registerek hozzáférésének mellékhatásait kezelni?

Felhasználói / Kernel Kommunikáció

  • put(get)_user()
  • copy to(from)_user()
  • Kernel I/O
  • memóriameghatározás (memory mapping)
  • procfs
  • sysfs
  • debugfs
  • relayfs
  • netlink
  • ioctl

Portábilisítás

  • szó mérete (word size)
  • átláthatatlan típusok (opaque types)
  • signed / unsigned char
  • adattömbök igazítása (data alignment)
  • integrális felfogás (integral promotion)
  • kód újrafelhasználhatósága
  • bitrend (endianess)
  • rendszer ütemezési kattanás (system tick)
  • oldalméret (page size)
  • utasítások sorba rendezése
  • SMP / preemptív folyamatok / magas memória (SMP/preemption/high memory)

Kivéve, ha másképp szabályozzák, a tartalom és ezt a képzési ábrázolás a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0). licenc alatt van kiadva.

Követelmények

  • Alapvető ismeretek a GNU/Linux rendszer használatáról végfelhasználóként
  • Alapvető ismeretek parancssoros shell használatáról
  • Alapvető ismeretek felhasználói térbeli / alkalmazásfejlesztésről
  • Középhaladó C programozási tudás
  • Előbb részt kell vennie a Beágyazott GNU/Linux Rendszerarchitektúra képzésen (nagyon ajánlott!), és/ vagy jó ismerete kell legyen az ott kifejezett témákban
 35 órák

Résztvevők száma


Ár per résztvevő

Vélemények (5)

Közelgő kurzusok

Rokon kategóriák