Kursplan

Introduktion

  • snabb historia om GNU/Linux
  • licensiering
  • kärnversioner
  • utgivningscykel
  • kärnträd
  • mainline
  • kärnvs. användarutrymme
  • mekanism vs. princip
  • alternativ för kärnenhetstillägg
  • RTOS vs. Linux

Minneshantering

  • Virtuellt minne vs. fysiskt minne
  • minnesallokering i kärnan
  • sidor
  • zoner
  • API
  • slab

Kärnpatchar

  • livscykel
  • git
  • källkod för kärnan
  • skapa patchar
  • kontrollera patchar
  • åtgärda patchar
  • skicka patchar
  • granskad kod

Kärnmoduler

  • få källkod för kärnan
  • konfigurera/bygga/installera
  • enhetstillägg (statiskt länkade, laddade vid körning)
  • init/exit
  • licensiering
  • EXPORT SYMBOL GPL
  • extern makefile
  • module-init-verktyg
  • modul i kärnträd
  • Kconfig
  • parameteröverföring
  • sparse

Karaktärens enhetstillägg

  • arkitektur
  • gränssnitt mellan användare och kärna
  • I/O-del
  • VFS
  • sysfs (enheter, busar, enhetstillägg, klasser)
  • kobject/ktype/kset
  • linux-kärnenhetstilläggsmodell
  • enhetsfiler
  • karaktärens enhetstillägg
    • initialisering
    • registrering
    • öppna, släpp
    • cdev, cdev add, cdev del,...
    • major/minor nummer
    • udev, udevmonitor, udevadm

Avancerade karaktärens enhetstilläggsoperationer

  • ioctl
  • unlocked ioctl
  • compat ioctl
  • användarutrymmes-API
  • kärnutrymmes-API
  • processlifecycle
  • sömn/blockering
  • sömn/väckning
  • vänteköer
  • "thundering herd"
  • poll/select

Felsökning av kärna

  • felsökning
  • felsökning av kärnan
    • binärsökning med git
    • felsökningsstöd från kärnan
    • printk syslogd, klogd, lognivåer, frekvensbegränsning, felsökningsnivåer, valbara underavdelningar för felsökning
    • felsökning genom frågor till debugfs
    • oops-felsökning, påstående om oops
    • Magic SysRq Key
    • kgdb/kdb
    • JTAG

Spårning

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

Avbrott

  • avbrott vs. avsökning
  • avbrott
  • programsektioner
  • återanropsbarhet
  • händelser
  • avbrottsbehandlare
  • delade avbrottsbehandlare
  • avbrottsflöde
  • avbrottskontroll

Att skjuta upp arbete

  • topp/nederst delar
  • softirqs
  • tasklets
  • arbetsköer
  • trådad avbrottsbehandlare

Samtidighet

  • kritisk region/sektion
  • atomär
  • race condition
  • synkronisering
  • låsning
  • lösningar för låsning
  • deadlock
  • tävlan
  • vad ska låsas?
  • vad kan användas?
    • atomära operationer
    • spin locks
    • läsarskriver-spin-lås
    • semaphore
    • binärt semaphore
    • mutex
    • läsarskriver-semaphore
    • completion variables
    • sekvenslås
    • inaktivera fördrivning
    • ordning och barriärer

Tid

  • HZ
  • Jiffies
  • stora/små fördröjningar
  • kärntidmätare

Hårdvaru-I/O

  • I/O-portar
  • I/O-minne
  • Hur hanteras biverkningar vid åtkomst till register?

Kommunikation mellan användare och kärna

  • put(get)_user()
  • copy to(from)_user()
  • Kärn-I/O
  • minnesmappning
  • procfs
  • sysfs
  • debugfs
  • relayfs
  • netlink
  • ioctl

Portabilitet

  • ordlängd
  • opakiska typer
  • signed/unsigned char
  • datalagring
  • heltalspromotion
  • kodåteranvändning
  • endianess
  • systemtick
  • sidstorlek
  • instruktionsordning
  • SMP/fördrivning/hög minne

Förutom annat anges innehåll och denna kursöversikt är licensierade under Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).

Krav

  • Grundläggande bekantskap med att använda ett GNU/Linux-system som slutanvändare
  • Grundläggande bekantskap med kommandoradsskal
  • Grundläggande kunskap om utrymme/applikationsutveckling
  • Middelhög kunskap i C-programmering
  • Bör ha deltagit i Inbyggda GNU/Linux-systemarkitektur (högt rekommenderat!) och/eller ha en bra förståelse för ämnena som beskrivs där
 35 timmar

Antal deltagare


Pris per deltagare

Vittnesmål (5)

Kommande Kurser

Relaterade Kategorier