Kursplan
Introduksjon
- en rask historie over GNU/Linux
- lisensiering
- kernelversjoner
- utgivelsesyklus
- kernaltre
- mainline
- kernel vs. brukerrom
- mekanisme vs. politikk
- alternativer for enhetsdrivere i kernalen
- RTOS vs. Linux
Hukommelsesstyring
- virtuell hukommelse vs. fysisk hukommelse
- hukommelsesallokering i kernalen
- sider
- zoner
- API
- slab
Kernel Patch
- livssyklus
- git
- kernelkildekode
- opprett patch
- sjekk patch
- fiks patch
- send inn patch
- gjennomsyn av kode
Kernelmoduler
- hent kernelkilder
- konfigurer/bygg/installer
- enhetsdrivere (statisk linket, lastet på kjøringstid)
- init/exit
- lisensiering
- EXPORT SYMBOL GPL
- out of tree makefile
- module-init-tools
- modul i kerneltrær
- Kconfig
- parameteroverføring
- sparse
Karakterdrivere
- arkitektur
- bruker/kernalgrensesnitt
- I/O-undersystemet
- VFS
- sysfs (enheter, busser, drivere, klasser),
- kobject/ktype/kset
- Linux-kernalmodell for enhetsdrivere
- enhetsfiler
-
karakterdriver
- initialisering
- registrering
- åpne, slipp
- cdev, cdev add, cdev del,...
- major/minor-nummer
- udev, udevmonitor, udevadm
Avanserte karakterdriveroperasjoner
- ioctl
- unlocked ioctl
- compat ioctl
- brukerrom-API
- kernalrom-API
- prosesslivssyklus
- sove/blokker
- sov/våk opp
- ventekø
- donnersherd
- poll/select
Kernalfeilsøking
- feilsøking
-
feilsøking av kernalen
- binærsøk med git
- feilsøkingsstøtte fra kernalen
- printk syslogd, klogd, lognivåer, rategrense, debugnivåer, valgte subsystemer for debugging
- feilsøking ved spørring til debugfs
- oops debugging, oppgi oops
- Magic SysRq Key
- kgdb/kdb
- JTAG
Sporing
- gcov
- lcov
- oprofile
-
ftrace
- nop-tracer
- function tracer
- sched switch tracer
- function graph tracer
- dynamisk tracer
- trace-cmd/kernelshark
- perf
- LTTng
Avbrytelser
- avbrytelser vs. polling
- avbrytelse
- programseksjoner
- nyttighet
- hendelser
- avbrytelseshåndtering
- delt avbrytelseshåndtering
- avbrytelsesflyt
- avbrytelsekontroll
Utsettelse av arbeid
- topp/bunnhalver
- softirqs
- tasklets
- arbeidskøer
- trådete avbrytelser
Konkurransedyktighet
- kritisk region/avsnitt
- atomar
- race condition (konkurranseforhold)
- synkronisering
- låsing
- løsningsforslag for låsing
- deadlock (døden blokkering)
- konkurransedyktighet
- hva skal låses?
-
hva kan brukes?
- atomare operasjoner
- spin locks (spin-låser)
- reader-writer spin locks (leser-skriver spin-låser)
- semaphore (semafor)
- binary semaphore (binær semafor)
- mutex
- reader-writer semaphore (leser-skriver semafor)
- completion variables (fullføringselementer)
- sequential locks (sekvensielle låser)
- disable preemption (deaktiver preempt)
- ordning og barriere
Tid
- HZ
- Jiffies
- store/little forsinkelser
- kernel timers (kernaltimere)
Hardvare I/O
- I/O Ports
- I/O Memory
- Hvordan håndtere sideeffekter ved å tilgangsregistrere?
Bruker-kernal kommunikasjon
- put(get)_user()
- copy to(from)_user()
- Kernal I/O
- hukommelsesmapping
- procfs
- sysfs
- debugfs
- relayfs
- netlink
- ioctl
Portabilitet
- ordstørrelse
- opakke typer
- signed/unsigned char (tegn med/maks uten tegn)
- datavariantjustering
- heltallsutvidelse
- kodegjenbruk
- endianness (byteorden)
- system tick (systemtikk)
- sides storrelse
- instruksjonsrekkefølge
- SMP/preempt/høy hukommelse
Med mindre annet er angitt, er innholdet og denne kursstrukturen lisensiert under Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).
Krav
- Grunnleggende kjennskap til å bruke et GNU/Linux-system som sluttbruker
- Grunnleggende kjennskap til kommandolinjeskjell
- Grunnleggende kunnskap om brukerrom/applikasjonutvikling
- Middels nivå C-programmeringskunnskap
- Skal ha deltatt i Embedded GNU/Linux Systems Architecture (sterkt anbefalt!) og/eller ha en godt forståelse av emnene som dekkes der
Referanser (5)
Veldig nyttige tilleggsinformasjoner
Grzegorz - Comp S.A.
Kurs - BLoC Pattern
Maskinoversatt
Edward er en flott faglærer
Zibusiso Ncube - Agricatural Research Council
Kurs - Ionic 4 and Angular for Developers
Maskinoversatt
Miguels kunnskap om emnet var utdypet. Han gjorde opplæringen lett forståelig, og presentasjonen var vel balansert; han bygde videre på hvert avsnitt med nye funksjoner når det var relevant. Han dekket alt som ble forespurt og besvarte hver eneste spørsmål grundig. Det var en veldig agradable opplevelse.
Paul Coaton - SEMPCheck Services
Kurs - Flutter Development Bootcamp with Dart
Maskinoversatt
At treneren tilpasser seg våre behov
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Kurs - The Yocto Project - An Overview - hands-on
Maskinoversatt
Instruktøren var entusiastisk, vennlig og elsket emnet.
Isaac Murphy - Royal New Zealand Airforce
Kurs - Build Native iOS and Android Apps with Flutter
Maskinoversatt