Cursusaanbod

Introductie

  • snelle geschiedenis van GNU/Linux
  • Licentieverlening
  • Versiebeheer van de kernel
  • Release-cyclus
  • pit bomen
  • Mainline
  • Kernel vs. gebruikersruimte
  • Mechanisme vs. beleid
  • Alternatieven voor kernelstuurprogramma's
  • RTOS tegen Linux

Geheugen Management

  • Virtueel geheugen vs. fysiek geheugen
  • Geheugentoewijzing in de kernel
  • bladzijden
  • Zones
  • API
  • plak

Kernel Patch

  • levenscyclus
  • Git
  • Bron van de kernel
  • Patch maken
  • Patch controleren
  • Patch repareren
  • Schip patch
  • Gecontroleerde code

Kernel Modules

  • Kernel bronnen ophalen
  • configureren/bouwen/installeren
  • Apparaatstuurprogramma's (statisch gekoppeld, geladen tijdens runtime)
  • init/afsluiten
  • Licentieverlening
  • EXPORTEREN SYMBOOL GPL
  • uit boom makefile
  • module-init-hulpmiddelen
  • module in kernel boom
  • Kconfig
  • Parameter doorgeven
  • schaars

Char-stuurprogramma's

  • architectuur
  • Gebruikers-/kernelinterface
  • I/O-subsysteem
  • VFS
  • sysfs (apparaten, bus, stuurprogramma's, klassen),
  • kobject/ktype/kset
  • Linux kernel driver model
  • Apparaat bestanden
  • char bestuurder
    • Initialisatie
    • registratie
    • openen, loslaten
    • cdev, cdev toevoegen, cdev del,...
    • majeur/kleine getallen
    • udev, udevmonitor, udevadm

Geavanceerde Charachter Driver Operations

  • ioctl
  • Ontgrendelde ioctl
  • compat ioctl
  • API voor gebruikersruimte
  • API voor kernelruimte
  • Levenscyclus van het proces
  • Slapen/blokkeren
  • Slapen/wakker worden
  • Wachtrij
  • Donderende kudde
  • Poll/Selecteer

Kernel foutopsporing

  • insect
  • Debugging
  • Fouten opsporen in de kernel
    • Binair zoeken met Git
    • Ondersteuning voor foutopsporing vanuit de kernel
    • printk syslogd, klogd, loglevels, snelheidslimiet, debug levels, debug selectieve subsystemen
    • Foutopsporing door query's op te voeren
    • oeps debuggen, beweren oeps
    • Magische SysRq-sleutel
    • kgdb/kdb
    • JTAG

Tracering

  • gcov
  • LCOV
  • oprofiel
  • ftrace
    • NOP tracer
    • functie tracer
    • Sched schakelaar tracer
    • functie grafiek tracer
    • Dynamische tracer
  • trace-cmd/kernelshark
  • prestaties
  • LTTng

Interrupts

  • Interrupts vs. polling
  • onderbreken
  • Programma secties
  • Herintreding
  • Gebeurtenissen
  • Handler onderbreken
  • Gedeelde interrupt handler
  • Stroom onderbreken
  • Controle onderbreken

Werk uitstellen

  • Bovenste/onderste helften
  • Softirqs
  • Taakjes
  • Wachtrijen voor werk
  • interrupties met schroefdraad

Concurrency

  • kritieke regio/sectie
  • atomair
  • Race conditie
  • synchronisatie
  • Vergrendeling
  • Sluitoplossingen
  • patstelling
  • bewering
  • Wat te vergrendelen?
  • Wat kan worden gebruikt?
    • Atomaire operaties
    • Draai sloten
    • lezer-schrijver spin-sloten
    • semafoor
    • binaire semafoor
    • mutex
    • Lezer-schrijver semafoor
    • voltooiing variabelen
    • Sequentiële sloten
    • Voorrang uitschakelen
    • Ordening en barrières

Tijd

  • HZ
  • Jonge jiffers
  • grote/kleine vertragingen
  • Kernel Timers

Hardware I/O

  • I/O-poorten
  • I/O-geheugen
  • Hoe om te gaan met bijwerkingen bij toegang tot registers?

Gebruiker-kernel Communication

  • put(get)_user()
  • Kopieer naar(van)_user()
  • Kernel I/O
  • Geheugen in kaart brengen
  • Procfs
  • sysfs
  • Foutopsporing
  • Relais
  • netlink
  • ioctl

Draagbaarheid

  • Woordgrootte
  • Ondoorzichtige typen
  • Ondertekende/niet-ondertekende char
  • Afstemming van gegevens
  • Integrale promotie
  • hergebruik van codes
  • Endianess
  • Systeem aanvinken
  • Pagina grootte
  • instructie bestellen
  • SMP/preëmptief/hoog geheugen

Tenzij anders vermeld, zijn de inhoud en dit cursusoverzicht gelicentieerd onder Naamsvermelding-NietCommercieel-GelijkDelen 4.0 International (CC BY-NC-SA 4.0).

Vereisten

  • Basiskennis van het gebruik van een GNU/Linux systeem als eindgebruiker
  • Basiskennis van een command line shell
  • Basiskennis van gebruikersruimte / applicatieontwikkeling
  • Gemiddelde C-programmeerkennis
  • Moet Embedded GNU/Linux Systems Architecture eerder hebben bijgewoond (sterk aanbevolen!) en/of een goed begrip hebben van de onderwerpen die daar worden beschreven
 35 Uren

Aantal deelnemers


Prijs Per Deelnemer

Testimonials (5)

Voorlopige Aankomende Cursussen

Gerelateerde categorieën