Cursusaanbod

Inleiding

  • korte geschiedenis van GNU/Linux
  • licensering
  • kernel versiebeheer
  • release cyclus
  • kernel bomen
  • mainline
  • kernel versus userspace
  • mechanisme versus beleid
  • alternatieven voor kernel drivers
  • RTOS versus Linux

Geheugenbeheer

  • virtueel geheugen versus fysiek geheugen
  • geheugentoewijzing in kernel
  • pagina's
  • zones
  • API
  • slab

Kernel Patch

  • levenscyclus
  • git
  • kernel broncode
  • maak patch
  • controleer patch
  • verbeter patch
  • stuur patch
  • gecontroleerde code

Kernel Modules

  • krijg kernel broncode
  • configureer/bouw/installeer
  • device drivers (statisch gekoppeld, geladen tijdens runtime)
  • init/exit
  • licensering
  • EXPORT SYMBOL GPL
  • out of tree makefile
  • module-init-tools
  • module in kernel boom
  • Kconfig
  • parameter passing
  • sparse

Char Drivers

  • architectuur
  • user/kernel interface
  • I/O substructuur
  • VFS
  • sysfs (apparaten, bus, drivers, klassen),
  • kobject/ktype/kset
  • Linux kernel driver model
  • apparaatbestanden
  • char driver
    • initialisatie
    • registratie
    • open, release
    • cdev, cdev add, cdev del,...
    • major/minor nummers
    • udev, udevmonitor, udevadm

Geavanceerde Char Driver Bewerkingen

  • ioctl
  • unlocked ioctl
  • compat ioctl
  • userspace API
  • kernelspace API
  • proceslevenscyclus
  • slapen/blokkeren
  • slapen/wakker maken
  • wachtrij
  • thundering herd
  • poll/select

Kernel Debugging

  • debugging
  • kernel debuggen
    • binair zoeken met git
    • debug ondersteuning van kernel
    • printk syslogd, klogd, loglevels, rate limit, debug levels, selectieve debug substructuren
    • debugging door debugfs te raadplegen
    • oops debugging, oops triggeren
    • Magic SysRq Key
    • kgdb/kdb
    • JTAG

Tracing

  • gcov
  • lcov
  • oprofile
  • ftrace
    • nop tracer
    • function tracer
    • sched switch tracer
    • function graph tracer
    • dynamische tracer
  • trace-cmd/kernelshark
  • perf
  • LTTng

Interrupts

  • interrupts versus polling
  • interrupt
  • programma secties
  • herhaalbaarheid
  • gebeurtenissen
  • interrupt handler
  • gedeelde interrupt handler
  • interrupt flow
  • interrupt controle

Werk uitstellen

  • top/bottom halves
  • softirqs
  • tasklets
  • work queues
  • geadverteerde interrupts

Concurrency

  • kritieke regio/sectie
  • atomair
  • race condition
  • synchronisatie
  • locking
  • locking oplossingen
  • deadlock
  • contention
  • wat moet gelocked worden?
  • wat kan gebruikt worden?
    • atomaire bewerkingen
    • spin locks
    • reader-writer spin locks
    • semaphore
    • binary semaphore
    • mutex
    • reader-writer semaphore
    • completion variables
    • sequentiële locks
    • preëmptie uitschakelen
    • ordening en barrières

Tijd

  • HZ
  • Jiffies
  • grote/kleine vertragingen
  • kernel timers

Hardware I/O

  • I/O Ports
  • I/O Memory
  • Hoe omgaan met neveneffecten bij het benaderen van registers?

User-Kernel Communicatie

  • put(get)_user()
  • copy to(from)_user()
  • Kernel I/O
  • geheugen koppeling
  • procfs
  • sysfs
  • debugfs
  • relayfs
  • netlink
  • ioctl

Portabiliteit

  • woordgrootte
  • opaque types
  • signed/unsigned char
  • gegevensuitlijning
  • integral promotion
  • code reuse
  • endianess
  • systeem tick
  • paginagrootte
  • instructievolgorde
  • SMP/preëmptie/high memory

Behalve in geval van andere aanduidingen, is de inhoud en deze cursusbeschrijving gelicenseerd onder Creative Commons Naamsvermelding-NietCommercieel-GelijkDelen 4.0 Internationaal (CC BY-NC-SA 4.0).

Vereisten

  • Basiskennis van het gebruik van een GNU/Linux systeem als eindgebruiker
  • Basiskennis van een opdrachtregel shell
  • Basiskennis van userspace-/application ontwikkeling
  • Gemiddeld niveau C-programmeerkenmerken
  • Moet de cursus Embedded GNU/Linux Systems Architecture hebben gevolgd (sterk aanbevolen!) en/of een goede begrip van de daar besproken onderwerpen hebben
 35 uren

Aantal deelnemers


Prijs per deelnemer

Getuigenissen (5)

Voorlopige Aankomende Cursussen

Gerelateerde categorieën