Kursplan

Introduksjon

    rask historie med GNU/Linux lisensiering kjerneversjonsutgivelsessyklus kjernetrær hovedlinjekjerne vs. brukerplassmekanisme vs. policykjernedriveralternativer RTOS vs. Linux

Minne Management

    Virtuelt minne vs fysisk minne minnetildeling i kjernesider soner API-plate

Kjernelapp

    livssyklus git kjernekilde opprette patch check patch fix patch skip patch revidert kode

Kjernemoduler

    få kjernekilder konfigurere/bygge/installere enhetsdrivere (statisk koblet, lastet ved kjøretid) init/exit lisensiering EKSPORTER SYMBOL GPL ut av treet makefile modul-init-tools-modul i kjernetreet Kconfig-parameteren passerer sparsomt

Char-drivere

    arkitektur bruker/kjernegrensesnitt I/O-undersystem VFS sysfs (enheter, buss, drivere, klasser), kobject/ktype/kset linux kjerne driver modell enhetsfiler char driver initialisering registrering åpen, release cdev, cdev add, cdev del,... dur/moll tall udev, udevmonitor, udevadm

Avanserte Charachter-driveroperasjoner

    ioctl ulåst ioctl compat ioctl brukerplass API kjerneplass API prosess livssyklus sove/blokkering sove/våkne opp vente kø dundrende flokk poll/velg

Kjernefeilsøking

    feilsøking feilsøking av kjernen binært søk med git debug-støtte fra kjerne printk syslogd, klogd, loglevels, rate limit, feilsøkingsnivåer, feilsøking av selektive undersystemer feilsøking ved å spørre debugfs oops feilsøking, påstå oops Magic SysRq Key kgdb/kdb JTAG

Sporing

    gcov lcov oprofile ftrace nop tracer funksjon tracer sched switch tracer funksjon graf tracer dynamisk tracer
trace-cmd/kernelshark
  • perf
  • LTTng
  • Avbryter
  • avbrudd vs. polling avbrudd programseksjoner reentrancy hendelser avbrudd behandler delt avbrudd behandler avbrudd flyt avbrudd kontroll

      Utsettelse av arbeid

    topp/bunn halvdeler softirqs tasklets arbeidskøer gjenget avbrudd

      Samtidighet

    kritisk region/seksjon atomkappløp tilstand synkronisering låsing låseløsninger vranglås konflikt hva skal låses? hva kan brukes? atomoperasjoner spinnlåser leser-skriver spinnlåser semafor binær semafor mutex leser-skriver semafor fullføringsvariabler sekvensielle låser deaktiverer preemption orderig 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() copy to(from)_user() Kjerne I/O-minnekartlegging procfs sysfs debugfs relayfs netlink ioctl

      Bærbarhet

    ordstørrelse ugjennomsiktig typer signert/usignert char datajustering integral kampanjekode gjenbruk endianess system tick sidestørrelse instruksjon bestilling SMP/preemption/high memory

      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)

    Related Categories