Takk for at du sendte din henvendelse! En av våre teammedlemmer vil kontakte deg straks.
Takk for at du sendte din bestilling! En av våre teammedlemmer vil kontakte deg straks.
Kursplan
Introduksjon
- Rask historie om Linux
- Lisensiering
- Versjonering av kjernen
- Utgivelsessyklus
- Kjernetrær
- Hovedgren (mainline)
- Kjernemodus kontra brukerspace
- Mekanisme kontra politikk
- Alternativer for kjerekjøreprogrammer
- RTOS vs. Linux
Minnehåndtering
- Virtuell minne kontra fysisk minne
- Minneallokering i kjernen
- Sider (pages)
- Soner (zones)
- API
- Slab-allocator
Kjernelapper (Kernel Patches)
- Livssyklus
- git
- Kjerekildekode
- Lage lapp (patch)
- Sjekk lapp
- Fiks lapp
- Lever lapp
- Kodesjekk og godkjenning
Kjernelmoduler
- Hente kjerekildekode
- Konfigurere / bygge / installere
- Enhetsdrivere (statisk sammenkoblet, lastes ved kjøretid)
- init / exit
- Lisensiering
- EXPORT_SYMBOL GPL
- Makefile for moduler utenfor trestrukturen (out of tree)
- module-init-tools
- Modul i kjernens trestruktur
- Kconfig
- Parameteroverføring
- sparse (statiske analyseverktøy)
Karakterdrivere (Char Drivers)
- Arkitektur
- Bruker/kjerne-grensesnitt
- I/O-underystemet
- VFS (Virtual File System)
- sysfs (enheter, busses, drivere, klasser),
- kobject/ktype/kset
- Linux-kjernens drivermodell
- Enhetsfiler
-
Karakterdriver
- Initialisering
- Registrering
- open, release
- cdev, cdev add, cdev del,…
- Hoved-– og undertall
- udev, udevmonitor, udevadm
Avanserte operasjoner for karakterdrivere
- ioctl
- unlocked ioctl
- compat ioctl
- Brukerspace-API
- Kjernespace-API
- Prosesslivssyklus
- Sperre/blokkere
- Sove/våkne
- Ventekø (wait queue)
- Thundering herd-problemet
- poll/select
Kjernedegging (Kernel Debugging)
- Feilsøking
-
Feilsøke kjernen
- Binærsøking med git
- Feilsøkestøtte fra kjernen
- printk syslogd, klogd, loggnivåer, hastighetsbegrensning, feilsøkningsnivåer, selektiv feilsøking av underystemer
- Feilsøking ved å hente data fra debugfs
- Oops-feilsøking, simulere Oops
- Magic SysRq-tasten
- kgdb/kdb
- JTAG
Sporingsverktøy (Tracing)
- gcov
- lcov
- oprofile
-
ftrace
- nop-tracer
- funksjonstracer
- sched switch-tracer
- function graph-tracer
- dynamisk tracer
- trace-cmd/kernelshark
- perf
- LTTng
Interrupper
- Interrupper kontra polling
- Interruppsprosessen
- Programseksjoner
- Reentrancy
- Hendelser
- Interruppsbehandler
- Delt interruppsbehandler
- Interruppsflyt
- Interruppskontroll
Utsatt arbeid (Deferring Work)
- top/bottom halves
- softirqs
- tasklets
- arbeidskøer (work queues)
- trådede interrupper
Konkurransesituasjoner (Concurrency)
- Kritisk område
- Atomiske operasjoner
- Konkurranseforhold (race condition)
- Synkronisering
- Låsing
- Låseløsninger
- Deadlock
- Contention
- Hva skal låses?
-
Hva kan brukes?
- atomiske operasjoner
- spin locks
- leser-skriver spin locks
- semafork
- binær semafork
- mutex
- leser-skriver semafork
- fullføringsvariabler (completion variables)
- sekvensielle låser
- deaktivere preempting
- rekkefølge og barriärer
Tid
- HZ
- Jiffies
- store/små forsinkelser
- kjernetimere
Maskinvare-I/O
- I/O-poter
- I/O-minne
- Hvordan håndtere bivirkninger ved tilgang til registre?
Kommunikasjon mellom bruker og kjerne
- put(get)_user()
- copy to(from)_user()
- Kjerne-I/O
- minnekartlegging
- procfs
- sysfs
- debugfs
- relayfs
- netlink
- ioctl
Bærekraft (Portability)
- Ordstørrelse (word size)
- Opaque typer
- signerte/usignerte char
- Datajustering (data alignment)
- Integral opprykking (integral promotion)
- Gjenbruk av kode
- Endianess
- Systemticking
- Sidestørrelse
- Instruksjonsrekkefølge
- SMP/preempting/høyt minne
Med mindre annet er oppgitt, er innholdet og dette kursoppsettet lisensiert under Creative Commons Erkjennelse-IkkeKommerSiell-DelPåLignendeVilkår 4.0 internasjonale (CC BY-NC-SA 4.0).
Krav
- Grunnleggende kjennskap til bruk av et Linux-system som sluttbruker
- Grunnleggende kjennskap til et kommandolinjeskall
- Grunnleggende kunnskap om utvikling i brukerspace / applikasjonsutvikling
- Mellomnivå kunnskap om C-programmering
- Bør ha deltatt på Arkitektur for innbygde Linux-systemer før (sterkt anbefalt!) og/eller ha god forståelse for de emnene som behandles der
35 Timer
Referanser (3)
Alt er i orden.
Adrian Rybka - SEOyon
Kurs - Flutter Development Bootcamp with Dart
Maskinoversatt
Veldig nyttige tilleggsinformasjoner
Grzegorz - Comp S.A.
Kurs - BLoC Pattern
Maskinoversatt
Hans kunnskaper og tålmodighet.
Chrisna - Agricatural Research Council
Kurs - Ionic 4 and Angular for Developers
Maskinoversatt