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 is an awesome facilitator
Zibusiso Ncube - Agricatural Research Council
Kurs - Ionic 4 and Angular for Developers
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