Cursusaanbod
Inleiding
- korte geschiedenis van GNU/Linux
- licensering
- kernel versiebeheer
- release cyclus
- kernel bomen
- mainline
- kernel versus userspace
- mechanisme versus beleid
- alternatieven voor kernel drivers
- RTOS versus Linux
Geheugenbeheer
- virtueel geheugen versus fysiek geheugen
- geheugentoewijzing in kernel
- pagina's
- zones
- API
- slab
Kernel Patch
- levenscyclus
- git
- kernel broncode
- maak patch
- controleer patch
- verbeter patch
- stuur patch
- gecontroleerde code
Kernel Modules
- krijg kernel broncode
- configureer/bouw/installeer
- device drivers (statisch gekoppeld, geladen tijdens runtime)
- init/exit
- licensering
- EXPORT SYMBOL GPL
- out of tree makefile
- module-init-tools
- module in kernel boom
- Kconfig
- parameter passing
- sparse
Char Drivers
- architectuur
- user/kernel interface
- I/O substructuur
- VFS
- sysfs (apparaten, bus, drivers, klassen),
- kobject/ktype/kset
- Linux kernel driver model
- apparaatbestanden
-
char driver
- initialisatie
- registratie
- open, release
- cdev, cdev add, cdev del,...
- major/minor nummers
- udev, udevmonitor, udevadm
Geavanceerde Char Driver Bewerkingen
- ioctl
- unlocked ioctl
- compat ioctl
- userspace API
- kernelspace API
- proceslevenscyclus
- slapen/blokkeren
- slapen/wakker maken
- wachtrij
- thundering herd
- poll/select
Kernel Debugging
- debugging
-
kernel debuggen
- binair zoeken met git
- debug ondersteuning van kernel
- printk syslogd, klogd, loglevels, rate limit, debug levels, selectieve debug substructuren
- debugging door debugfs te raadplegen
- oops debugging, oops triggeren
- Magic SysRq Key
- kgdb/kdb
- JTAG
Tracing
- gcov
- lcov
- oprofile
-
ftrace
- nop tracer
- function tracer
- sched switch tracer
- function graph tracer
- dynamische tracer
- trace-cmd/kernelshark
- perf
- LTTng
Interrupts
- interrupts versus polling
- interrupt
- programma secties
- herhaalbaarheid
- gebeurtenissen
- interrupt handler
- gedeelde interrupt handler
- interrupt flow
- interrupt controle
Werk uitstellen
- top/bottom halves
- softirqs
- tasklets
- work queues
- geadverteerde interrupts
Concurrency
- kritieke regio/sectie
- atomair
- race condition
- synchronisatie
- locking
- locking oplossingen
- deadlock
- contention
- wat moet gelocked worden?
-
wat kan gebruikt worden?
- atomaire bewerkingen
- spin locks
- reader-writer spin locks
- semaphore
- binary semaphore
- mutex
- reader-writer semaphore
- completion variables
- sequentiële locks
- preëmptie uitschakelen
- ordening en barrières
Tijd
- HZ
- Jiffies
- grote/kleine vertragingen
- kernel timers
Hardware I/O
- I/O Ports
- I/O Memory
- Hoe omgaan met neveneffecten bij het benaderen van registers?
User-Kernel Communicatie
- put(get)_user()
- copy to(from)_user()
- Kernel I/O
- geheugen koppeling
- procfs
- sysfs
- debugfs
- relayfs
- netlink
- ioctl
Portabiliteit
- woordgrootte
- opaque types
- signed/unsigned char
- gegevensuitlijning
- integral promotion
- code reuse
- endianess
- systeem tick
- paginagrootte
- instructievolgorde
- SMP/preëmptie/high memory
Behalve in geval van andere aanduidingen, is de inhoud en deze cursusbeschrijving gelicenseerd onder Creative Commons Naamsvermelding-NietCommercieel-GelijkDelen 4.0 Internationaal (CC BY-NC-SA 4.0).
Vereisten
- Basiskennis van het gebruik van een GNU/Linux systeem als eindgebruiker
- Basiskennis van een opdrachtregel shell
- Basiskennis van userspace-/application ontwikkeling
- Gemiddeld niveau C-programmeerkenmerken
- Moet de cursus Embedded GNU/Linux Systems Architecture hebben gevolgd (sterk aanbevolen!) en/of een goede begrip van de daar besproken onderwerpen hebben
Getuigenissen (5)
Zeer nuttige aanvullende informatie
Grzegorz - Comp S.A.
Cursus - BLoC Pattern
Automatisch vertaald
Edward is een geweldige faciliteitsmedewerker
Zibusiso Ncube - Agricatural Research Council
Cursus - Ionic 4 and Angular for Developers
Automatisch vertaald
Miguels kennis van het onderwerp was uitgebreid. Hij maakte de training gemakkelijk te begrijpen en de structuur was gebalanceerd; hij voegde aan elk gedeelte nieuwe functies toe waar nodig. Hij behandelde alles wat werd gevraagd en beantwoordde elke vraag grondig. Het was een zeer aangename ervaring.
Paul Coaton - SEMPCheck Services
Cursus - Flutter Development Bootcamp with Dart
Automatisch vertaald
Dat de instructeur zich aanpast aan onze behoeften
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Cursus - The Yocto Project - An Overview - hands-on
Automatisch vertaald
De trainer was enthousiast, vriendelijk en hield van het onderwerp
Isaac Murphy - Royal New Zealand Airforce
Cursus - Build Native iOS and Android Apps with Flutter
Automatisch vertaald