Cursusaanbod
Introductie
- snelle geschiedenis van GNU/Linux
- Licentieverlening
- Versiebeheer van de kernel
- Release-cyclus
- pit bomen
- Mainline
- Kernel vs. gebruikersruimte
- Mechanisme vs. beleid
- Alternatieven voor kernelstuurprogramma's
- RTOS tegen Linux
Geheugen Management
- Virtueel geheugen vs. fysiek geheugen
- Geheugentoewijzing in de kernel
- bladzijden
- Zones
- API
- plak
Kernel Patch
- levenscyclus
- Git
- Bron van de kernel
- Patch maken
- Patch controleren
- Patch repareren
- Schip patch
- Gecontroleerde code
Kernel Modules
- Kernel bronnen ophalen
- configureren/bouwen/installeren
- Apparaatstuurprogramma's (statisch gekoppeld, geladen tijdens runtime)
- init/afsluiten
- Licentieverlening
- EXPORTEREN SYMBOOL GPL
- uit boom makefile
- module-init-hulpmiddelen
- module in kernel boom
- Kconfig
- Parameter doorgeven
- schaars
Char-stuurprogramma's
- architectuur
- Gebruikers-/kernelinterface
- I/O-subsysteem
- VFS
- sysfs (apparaten, bus, stuurprogramma's, klassen),
- kobject/ktype/kset
- Linux kernel driver model
- Apparaat bestanden
- char bestuurder
- Initialisatie
- registratie
- openen, loslaten
- cdev, cdev toevoegen, cdev del,...
- majeur/kleine getallen
- udev, udevmonitor, udevadm
Geavanceerde Charachter Driver Operations
- ioctl
- Ontgrendelde ioctl
- compat ioctl
- API voor gebruikersruimte
- API voor kernelruimte
- Levenscyclus van het proces
- Slapen/blokkeren
- Slapen/wakker worden
- Wachtrij
- Donderende kudde
- Poll/Selecteer
Kernel foutopsporing
- insect
- Debugging
- Fouten opsporen in de kernel
- Binair zoeken met Git
- Ondersteuning voor foutopsporing vanuit de kernel
- printk syslogd, klogd, loglevels, snelheidslimiet, debug levels, debug selectieve subsystemen
- Foutopsporing door query's op te voeren
- oeps debuggen, beweren oeps
- Magische SysRq-sleutel
- kgdb/kdb
- JTAG
Tracering
- gcov
- LCOV
- oprofiel
- ftrace
- NOP tracer
- functie tracer
- Sched schakelaar tracer
- functie grafiek tracer
- Dynamische tracer
- trace-cmd/kernelshark
- prestaties
- LTTng
Interrupts
- Interrupts vs. polling
- onderbreken
- Programma secties
- Herintreding
- Gebeurtenissen
- Handler onderbreken
- Gedeelde interrupt handler
- Stroom onderbreken
- Controle onderbreken
Werk uitstellen
- Bovenste/onderste helften
- Softirqs
- Taakjes
- Wachtrijen voor werk
- interrupties met schroefdraad
Concurrency
- kritieke regio/sectie
- atomair
- Race conditie
- synchronisatie
- Vergrendeling
- Sluitoplossingen
- patstelling
- bewering
- Wat te vergrendelen?
- Wat kan worden gebruikt?
- Atomaire operaties
- Draai sloten
- lezer-schrijver spin-sloten
- semafoor
- binaire semafoor
- mutex
- Lezer-schrijver semafoor
- voltooiing variabelen
- Sequentiële sloten
- Voorrang uitschakelen
- Ordening en barrières
Tijd
- HZ
- Jonge jiffers
- grote/kleine vertragingen
- Kernel Timers
Hardware I/O
- I/O-poorten
- I/O-geheugen
- Hoe om te gaan met bijwerkingen bij toegang tot registers?
Gebruiker-kernel Communication
- put(get)_user()
- Kopieer naar(van)_user()
- Kernel I/O
- Geheugen in kaart brengen
- Procfs
- sysfs
- Foutopsporing
- Relais
- netlink
- ioctl
Draagbaarheid
- Woordgrootte
- Ondoorzichtige typen
- Ondertekende/niet-ondertekende char
- Afstemming van gegevens
- Integrale promotie
- hergebruik van codes
- Endianess
- Systeem aanvinken
- Pagina grootte
- instructie bestellen
- SMP/preëmptief/hoog geheugen
Tenzij anders vermeld, zijn de inhoud en dit cursusoverzicht gelicentieerd onder Naamsvermelding-NietCommercieel-GelijkDelen 4.0 International (CC BY-NC-SA 4.0).
Vereisten
- Basiskennis van het gebruik van een GNU/Linux systeem als eindgebruiker
- Basiskennis van een command line shell
- Basiskennis van gebruikersruimte / applicatieontwikkeling
- Gemiddelde C-programmeerkennis
- Moet Embedded GNU/Linux Systems Architecture eerder hebben bijgewoond (sterk aanbevolen!) en/of een goed begrip hebben van de onderwerpen die daar worden beschreven
Testimonials (5)
Edward is een geweldige facilitator
Zibusiso Ncube - Agricatural Research Council
Cursus - Ionic 4 and Angular for Developers
Automatisch vertaald
Misschien zou meer oefening beter kunnen zijn voor lerning, maar de tijd was te weinig
Gianpiero Arico' - Urmet Spa
Cursus - Embedded Linux Systems Architecture
Automatisch vertaald
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
Cursus - Flutter Development Bootcamp with Dart
That the trainer adapts to our needs
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Cursus - The Yocto Project - An Overview - hands-on
The trainer was enthusiastic, kind, and loved the topic