Kom i kontakt

Kursplan

Introduktion

  • snabb historia om GNU/Linux
  • licensiering
  • kärnversionshantering
  • utgivningscykel
  • kärnträd
  • mainline
  • kärna mot användarutrymme
  • mekanism kontra policy
  • alternativ för kärndrivrutin
  • RTOS mot Linux

Minneshantering

  • virtuellt minne mot fysiskt minne
  • minnesallokering i kärna
  • sidor
  • zoner
  • API
  • slab

Kärnpatch

  • livscykel
  • git
  • kärnarkiv
  • skapa patch
  • kontrollera patch
  • korrigera patch
  • leverera patch
  • granskad kod

Kärnmoduler

  • hämta kärnarkiv
  • konfigurera/bygg/installera
  • enhetsdrivrutiner (statiskt länkade, laddade vid körning)
  • init/exit
  • licensiering
  • EXPORT SYMBOL GPL
  • out-of-tree makefil
  • module-init-tools
  • modul i kärnträd
  • Kconfig
  • parameteröverföring
  • sparse

Char-drivrutiner

  • arkitektur
  • användar/kärnagränssnitt
  • I/O-subsystem
  • VFS
  • sysfs (enheter, bussar, drivrutiner, klasser),
  • kobject/ktype/kset
  • linux-kärnans drivrutinsmodell
  • enhetsfiler
  • char-drivrutin

    • initiering
    • registrering
    • öppna, stäng
    • cdev, cdev add, cdev del,...
    • huvud/under-nummer
    • udev, udevmonitor, udevadm

Avancerade char-drivrutinsoperationer

  • ioctl
  • unlocked ioctl
  • compat ioctl
  • användarutrymmes-API
  • kärnutrymmes-API
  • processlivscykel
  • sova/blockera
  • sova/vakna
  • väntekö
  • thundering herd
  • poll/select

Kärnfelsökning

  • felsökning
  • felsöka kärnan

    • binär sökning med git
    • felsökningsstöd från kärna
    • printk syslogd, klogd, loggningsnivåer, hastighetsbegränsning, felsökningsnivåer, valfri felsökning av delsystem
    • felsökning genom att fråga debugfs
    • oops-felsökning, påstå oops
    • Magic SysRq-nyckel
    • kgdb/kdb
    • JTAG

Spårning

  • gcov
  • lcov
  • oprofile
  • ftrace

    • nop-spårare
    • funktionsspårare
    • schemalägningsväxlingsspårare
    • funktionsgraf-spårare
    • dynamisk spårare
  • trace-cmd/kernelshark
  • perf
  • LTTng

Avbrott

  • avbrott kontra polling
  • avbrott
  • programsektioner
  • reentrancy
  • händelser
  • avbrottsbehandlare
  • delad avbrottsbehandlare
  • avbrottsflöde
  • avbrottskontroll

Uppsättning av arbete

  • top/bottom-halvor
  • softirqs
  • tasklets
  • arbetsköer
  • trådad avbrott

Samtidig exekvering

  • kritiskt område/sektion
  • atomärt
  • racetillstånd
  • synkronisering
  • låsning
  • låsningslösningar
  • dödslås
  • konkurrens
  • vad ska låsas?
  • vad kan användas?

    • atomära operationer
    • spin-lås
    • läsare-skrivare spin-lås
    • semafor
    • binär semafor
    • mutex
    • läsare-skrivare semafor
    • fullföljandevärdet
    • sekventiella lås
    • inaktivera preemption
    • ordning och barriärer

Tid

  • HZ
  • Jiffies
  • stora/små förseningar
  • kärntimrar

Hårdvara I/O

  • I/O-portar
  • I/O-minne
  • Hur hantera sidoeffekter vid åtkomst till register?

Användar-Kärn-kommunikation

  • put(get)_user()
  • kopiera till(från)_user()
  • Kärn-I/O
  • minnesspanning
  • procfs
  • sysfs
  • debugfs
  • relayfs
  • netlink
  • ioctl

Portabilitet

  • ordstorlek
  • opak typer
  • signerade/osignerade char
  • datajustering
  • integralpromotion
  • kodåteranvändning
  • endianess
  • systemtick
  • sidstorlek
  • instruktionordning
  • SMP/preemption/högt minne

Med undantag för vad som annars anges är innehållet och denna kursplan licensierade under Namngivning-IckeKommersiell-DelaLika 4.0 Internationell (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 ett kommandotolk-gränssnitt
  • Grundläggande kunskap om användarutrymme / applikationsutveckling
  • Mellanliggande C-programmeringskunskap
  • Bör ha deltagit i Inbyggd GNU/Linux-systemarkitektur tidigare (starkt rekommenderat!) och/eller ha god förståelse för de ämnen som presenteras där
 35 Timmar

Antal deltagare


Pris per deltagare

Vittnesmål (3)

Kommande Kurser

Relaterade Kategorier