Kursplan

Introduksjon

  • en rask historie over GNU/Linux
  • lisensiering
  • kernelversjoner
  • utgivelsesyklus
  • kernaltre
  • mainline
  • kernel vs. brukerrom
  • mekanisme vs. politikk
  • alternativer for enhetsdrivere i kernalen
  • RTOS vs. Linux

Hukommelsesstyring

  • virtuell hukommelse vs. fysisk hukommelse
  • hukommelsesallokering i kernalen
  • sider
  • zoner
  • API
  • slab

Kernel Patch

  • livssyklus
  • git
  • kernelkildekode
  • opprett patch
  • sjekk patch
  • fiks patch
  • send inn patch
  • gjennomsyn av kode

Kernelmoduler

  • hent kernelkilder
  • konfigurer/bygg/installer
  • enhetsdrivere (statisk linket, lastet på kjøringstid)
  • init/exit
  • lisensiering
  • EXPORT SYMBOL GPL
  • out of tree makefile
  • module-init-tools
  • modul i kerneltrær
  • Kconfig
  • parameteroverføring
  • sparse

Karakterdrivere

  • arkitektur
  • bruker/kernalgrensesnitt
  • I/O-undersystemet
  • VFS
  • sysfs (enheter, busser, drivere, klasser),
  • kobject/ktype/kset
  • Linux-kernalmodell for enhetsdrivere
  • enhetsfiler
  • karakterdriver
    • initialisering
    • registrering
    • åpne, slipp
    • cdev, cdev add, cdev del,...
    • major/minor-nummer
    • udev, udevmonitor, udevadm

Avanserte karakterdriveroperasjoner

  • ioctl
  • unlocked ioctl
  • compat ioctl
  • brukerrom-API
  • kernalrom-API
  • prosesslivssyklus
  • sove/blokker
  • sov/våk opp
  • ventekø
  • donnersherd
  • poll/select

Kernalfeilsøking

  • feilsøking
  • feilsøking av kernalen
    • binærsøk med git
    • feilsøkingsstøtte fra kernalen
    • printk syslogd, klogd, lognivåer, rategrense, debugnivåer, valgte subsystemer for debugging
    • feilsøking ved spørring til debugfs
    • oops debugging, oppgi oops
    • Magic SysRq Key
    • kgdb/kdb
    • JTAG

Sporing

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

Avbrytelser

  • avbrytelser vs. polling
  • avbrytelse
  • programseksjoner
  • nyttighet
  • hendelser
  • avbrytelseshåndtering
  • delt avbrytelseshåndtering
  • avbrytelsesflyt
  • avbrytelsekontroll

Utsettelse av arbeid

  • topp/bunnhalver
  • softirqs
  • tasklets
  • arbeidskøer
  • trådete avbrytelser

Konkurransedyktighet

  • kritisk region/avsnitt
  • atomar
  • race condition (konkurranseforhold)
  • synkronisering
  • låsing
  • løsningsforslag for låsing
  • deadlock (døden blokkering)
  • konkurransedyktighet
  • hva skal låses?
  • hva kan brukes?
    • atomare operasjoner
    • spin locks (spin-låser)
    • reader-writer spin locks (leser-skriver spin-låser)
    • semaphore (semafor)
    • binary semaphore (binær semafor)
    • mutex
    • reader-writer semaphore (leser-skriver semafor)
    • completion variables (fullføringselementer)
    • sequential locks (sekvensielle låser)
    • disable preemption (deaktiver preempt)
    • ordning og barriere

Tid

  • HZ
  • Jiffies
  • store/little forsinkelser
  • kernel timers (kernaltimere)

Hardvare I/O

  • I/O Ports
  • I/O Memory
  • Hvordan håndtere sideeffekter ved å tilgangsregistrere?

Bruker-kernal kommunikasjon

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

Portabilitet

  • ordstørrelse
  • opakke typer
  • signed/unsigned char (tegn med/maks uten tegn)
  • datavariantjustering
  • heltallsutvidelse
  • kodegjenbruk
  • endianness (byteorden)
  • system tick (systemtikk)
  • sides storrelse
  • instruksjonsrekkefølge
  • SMP/preempt/høy hukommelse

Med mindre annet er angitt, er innholdet og denne kursstrukturen lisensiert under Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).

Krav

  • Grunnleggende kjennskap til å bruke et GNU/Linux-system som sluttbruker
  • Grunnleggende kjennskap til kommandolinjeskjell
  • Grunnleggende kunnskap om brukerrom/applikasjonutvikling
  • Middels nivå C-programmeringskunnskap
  • Skal ha deltatt i Embedded GNU/Linux Systems Architecture (sterkt anbefalt!) og/eller ha en godt forståelse av emnene som dekkes der
 35 timer

Antall deltakere


Pris per deltaker

Referanser (5)

Kommende kurs

Relaterte kategorier