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
Vittnesmål (5)
My apologies, there is no markup structure provided. Please include the structured markup format.
Grzegorz - Comp S.A.
Kurs - BLoC Pattern
Maskintolkat
Edward är en fantastisk facilitator
Zibusiso Ncube - Agricatural Research Council
Kurs - Ionic 4 and Angular for Developers
Maskintolkat
Miguel's knowledge of the subject was extensive. He made the training easy to understand and the flow was balanced; adding on to each section with new features as needed. He covered everything that was asked and answered each and every question thoroughly. It was a very pleasant experience.
Paul Coaton - SEMPCheck Services
Kurs - Flutter Development Bootcamp with Dart
That the trainer adapts to our needs
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Kurs - The Yocto Project - An Overview - hands-on
The trainer was enthusiastic, kind, and loved the topic