Neem contact met ons op

Cursusaanbod

Inleiding

  • korte geschiedenis van GNU/Linux
  • licenties
  • kernelversies
  • releasecyclus
  • kernel-branches
  • mainline
  • kernel vs. user space
  • mechanisme versus beleid
  • alternatieven voor kernel-stuurprogramma's
  • RTOS vs. Linux

Geheugenbeheer

  • virtueel geheugen vs. fysiek geheugen
  • geheugentoewijzing in de kernel
  • pagina's
  • zones
  • API
  • slab

Kernelpatch

  • levenscyclus
  • git
  • broncode van de kernel
  • patch maken
  • patch controleren
  • patch repareren
  • patch distribueren
  • gecontroleerde code

Kernelmodules

  • kernelbroncode verkrijgen
  • configureren/bouwen/installeren
  • apparaatstuurprogramma's (statisch gekoppeld, geladen tijdens runtime)
  • init/exit
  • licenties
  • EXPORT_SYMBOL GPL
  • makefile buiten de boom
  • module-init-tools
  • module in de kernelboom
  • Kconfig
  • parameters doorgeven
  • sparse

Char-stuurprogramma's

  • architectuur
  • user/kernel-interface
  • I/O-subssyteem
  • VFS
  • sysfs (apparaten, bus, stuurprogramma's, klassen),
  • kobject/ktype/kset
  • linux kernel driver model
  • apparaatbestanden
  • char-stuurprogramma

    • initialisatie
    • registratie
    • open, release
    • cdev, cdev add, cdev del,...
    • major/minor nummers
    • udev, udevmonitor, udevadm

Geavanceerde bewerkingen voor Char-stuurprogramma's

  • ioctl
  • unlocked ioctl
  • compat ioctl
  • user space API
  • kernel space API
  • proceslevenscyclus
  • slapen/blokken
  • slapen/wakker worden
  • wachtrij (wait queue)
  • 'thundering herd'-probleem
  • poll/select

Kernelfoutopsporing

  • foutopsporing
  • de kernel foutsuchen

    • binaire zoekopdracht met git
    • debugondersteuning vanuit de kernel
    • printk syslogd, klogd, logniveaus, rate limit, debugniveaus, debug selectieve subsystemen
    • foutopsporing door debugfs te bevragen
    • oops-foutopsporing, oops afdwingen
    • Magic SysRq-sleutel
    • kgdb/kdb
    • JTAG

Tracen

  • 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
  • programmacode-secties
  • herhaalintrijkheid
  • gebeurtenissen
  • interrupt-handler
  • gedeelde interrupt-handler
  • interrupt-flow
  • interrupt-beheer

Uitgestelde taken

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

Parallelle verwerking (Concurrency)

  • kritieke regio/sectie
  • atomair
  • race condition
  • synchronisatie
  • locken
  • oplossingen voor locken
  • deadlock
  • contention
  • wat te locken?
  • wat kan worden gebruikt?

    • atomaire bewerkingen
    • spinlocks
    • reader-writer spinlocks
    • semaphore
    • binary semaphore
    • mutex
    • reader-writer semaphore
    • completion variables
    • sequential locks
    • preemptie uitschakelen
    • volgorde en barriers

Tijd

  • HZ
  • Jiffies
  • lange/korte vertragingen
  • kerntimers

Hardware I/O

  • I/O-poorten
  • I/O-geheugen
  • Hoe omgaan met neveneffecten bij het toegang tot registers?

User-Kernel communicatie

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

draagbaarheid

  • woordgrootte
  • opaque types
  • signed/unsigned char
  • datauitlijning
  • integral promotion
  • codehergebruik
  • endianess
  • systeemtick
  • paginagrootte
  • instructievolgorde
  • SMP/preemptie/high memory

Tenzij anders vermeld zijn de inhoud en deze cursusoutline gelicentieerd onder 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 opdrachtregelshell
  • Basiskennis van user space-/applicatieontwikkeling
  • Midlevel C-programmeervaardigheden
  • U moet eerder Embedded GNU/Linux-systeemarchitectuur hebben gevolgd (sterk aanbevolen!) en/of een goed begrip hebben van de daar besproken onderwerpen
 35 Uren

Aantal deelnemers


Prijs per deelnemer

Getuigenissen (3)

Voorlopige Aankomende Cursussen

Gerelateerde categorieën