Kursplan

Introduksjon

  • rask historie om GNU/Linux
  • lisensiering
  • kjerneversjon
  • frigjøringssyklus
  • kjernetrær
  • hovedlinje
  • kjerne kontra brukerplass
  • mekanisme kontra policy
  • alternativer for kjernedriver
  • RTOS vs. Linux

Minne Management

  • Virtuelt minne vs fysisk minne
  • minnetildeling i kjernen
  • sider
  • soner
  • API
  • plate

Kjernelapp

  • livssyklus
  • git
  • kjernekilde
  • lage oppdatering
  • sjekk patch
  • fikse oppdatering
  • skipslapp
  • revidert kode

Kjernemoduler

  • få kjernekilder
  • konfigurere/bygge/installere
  • enhetsdrivere (statisk koblet, lastet under kjøretid)
  • init/exit
  • lisensiering
  • EKSPORTSYMBOL GPL
  • ut av tremakefilen
  • modul-init-verktøy
  • modul i kjernetreet
  • Kconfig
  • parameteroverføring
  • sparsom

Char-drivere

  • arkitektur
  • bruker-/kjernegrensesnitt
  • I/O-delsystem
  • VFS
  • sysfs (enheter, buss, sjåfører, klasser),
  • kobject/ktype/kset
  • Linux kjerne-drivermodell
  • enhetsfiler
  • røye driver
    • initialisering
    • registrering
    • åpne, slipp
    • cdev, cdev add, cdev del,...
    • dur/moll tall
    • udev, udevmonitor, udevadm

Avanserte Charachter-driveroperasjoner

  • ioctl
  • ulåst ioctl
  • compat ioctl
  • brukerplass API
  • kjerneplass API
  • prosessens livssyklus
  • sover/blokkerer
  • sover/våkner
  • ventekø
  • tordnende flokk
  • avstemning/velg

Kjernefeilsøking

  • feil
  • feilsøking
  • feilsøking av kjernen
    • binært søk med git
    • feilsøkingsstøtte fra kjernen
    • printk syslogd, klogd, loglevels, rate limit, debug levels, debug selektive subsystemer
    • feilsøking ved å søke etter debugfs
    • ups feilsøking, hevder ups
    • Magic SysRq Key
    • kgdb/kdb
    • JTAG

Sporing

  • gcov
  • lcov
  • oprofil
  • ftrace
    • nei sporer
    • funksjonssporer
    • skjemabrytersporer
    • funksjonsgrafsporer
    • dynamisk sporer
  • trace-cmd/kernelshark
  • perf
  • LTTng

Avbryter

  • avbryter vs. polling
  • avbryte
  • programseksjoner
  • gjeninntreden
  • hendelser
  • avbryte behandler
  • delt avbruddsbehandler
  • avbryte flyten
  • avbryte kontrollen

Utsettelse av arbeid

  • øvre/nedre halvdeler
  • softirqs
  • oppgaver
  • arbeidskøer
  • gjenget avbryter

Samtidighet

  • kritisk region/seksjon
  • atomisk
  • løpstilstand
  • synkronisering
  • låsing
  • låseløsninger
  • vranglås
  • påstand
  • hva skal man låse?
  • hva kan brukes?
    • atomoperasjoner
    • spinnlåser
    • leser-skribent spinnlåser
    • semafor
    • binær semafor
    • mutex
    • leser-skribent semafor
    • kompletteringsvariabler
    • sekvensielle låser
    • deaktiver forkjøpet
    • orden og barrierer

Tid

  • HZ
  • Jiffies
  • store/små forsinkelser
  • kjernetidtakere

Maskinvare I/O

  • I/O-porter
  • I/O-minne
  • Hvordan håndtere bivirkninger ved å få tilgang til registre?

Brukerkjerne Communication

  • put(get)_user()
  • kopier til(fra)_bruker()
  • Kjerne I/O
  • minnekartlegging
  • procfs
  • sysfs
  • debugfs
  • stafetter
  • nettkobling
  • ioctl

Bærbarhet

  • ordstørrelse
  • ugjennomsiktige typer
  • signert/usignert char
  • datajustering
  • integrert promotering
  • gjenbruk av kode
  • endiness
  • systemhake
  • sidestørrelse
  • instruksjonsbestilling
  • SMP/preemption/høyt minne

Med mindre annet er angitt innhold og denne kursoversikten er 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 et kommandolinjeskall
  • Grunnleggende kunnskap om brukerrom / applikasjonsutvikling
  • Middels C-programmeringskunnskap
  • Burde ha deltatt på Embedded GNU/Linux Systems Architecture før (anbefales på det sterkeste!) og/eller ha en god forståelse av emnene som er skissert der
 35 timer

Antall deltakere


Price per participant

Testimonials (5)

Upcoming Courses

Related Categories