Mulțumim pentru trimiterea solicitării! Un membru al echipei noastre vă va contacta în curând.
Mulțumim pentru trimiterea rezervării! Un membru al echipei noastre vă va contacta în curând.
Schița de curs
Introducere
- istoric rapid al GNU/Linux
- licențiere
- versiuni ale nucleului
- ciclul de lansare
- arbori de nucleu
- linia principală
- nucleu vs. spațiul utilizatorului
- mecanism vs. politică
- alternative la driverele de nucleu
- RTOS vs. Linux
Gestionarea Memoriei
- Memorie virtuală vs. memorie fizică
- alocarea memoriei în nucleu
- pagini
- zone
- API
- slab
Patch-uri pentru Nucleu
- ciclul de viață
- git
- sursele nucleului
- crearea unui patch
- verificarea patch-ului
- corectarea patch-ului
- trimiterea patch-ului
- cod auditizat
Module de Nucleu
- obținerea surselor nucleului
- configurare/compilare/instalare
- drivere de dispozitive (legate static, încărcate la runtime)
- init/exit
- licențiere
- EXPORT SYMBOL GPL
- makefile în afara arborelui
- module-init-tools
- modul în arborele nucleului
- Kconfig
- transmiterea parametrilor
- sparse
Drivere de Caracter
- arhitectura
- interfața utilizator/nucleu
- subsistemul I/O
- VFS
- sysfs (dispozitive, bus, drivere, clase),
- kobject/ktype/kset
- modelul de driver al nucleului Linux
- fișiere de dispozitive
-
driver de caracter
- inițializare
- înregistrare
- open, release
- cdev, cdev add, cdev del,...
- numere major/minor
- udev, udevmonitor, udevadm
Operații Avansate cu Drivere de Caracter
- ioctl
- ioctl neblocat
- ioctl compatibil
- API spațiul utilizatorului
- API spațiul nucleului
- ciclul de viață al procesului
- somn/blocare
- somn/trezire
- coadă de așteptare
- efectul de turmă
- poll/select
Depanarea Nucleului
- depanare
-
depanarea nucleului
- căutare binară cu git
- suport de depanare din nucleu
- printk syslogd, klogd, niveluri de log, limită de rată, niveluri de depanare, subsisteme selective de depanare
- depanare prin interogarea debugfs
- depanare oops, generare oops
- Magic SysRq Key
- kgdb/kdb
- JTAG
Trasare
- gcov
- lcov
- oprofile
-
ftrace
- tracer nop
- tracer de funcții
- tracer de comutare de planificare
- tracer de grafic de funcții
- tracer dinamic
- trace-cmd/kernelshark
- perf
- LTTng
Interrupturi
- interrupturi vs. polling
- interrupt
- secțiuni de program
- reentranță
- evenimente
- handler de interrupt
- handler de interrupt partajat
- fluxul de interrupt
- controlul de interrupt
Amânarea Lucrării
- jumătăți superioare/inferioare
- softirqs
- tasklets
- cozi de lucru
- interrupturi cu fire
Concurrency
- regiune/secțiune critică
- atomic
- condiție de cursă
- sincronizare
- blocare
- soluții de blocare
- blocaj
- contenciune
- ce să blochezi?
-
ce poate fi folosit?
- operații atomice
- spin locks
- spin locks de tip reader-writer
- semafor
- semafor binar
- mutex
- semafor de tip reader-writer
- variabile de completare
- blocuri secvențiale
- dezactivarea preempției
- ordonare și bariere
Timp
- HZ
- Jiffies
- întârzieri mari/mici
- temporizatoare de nucleu
I/O Hardware
- Porturi I/O
- Memorie I/O
- Cum să gestionăm efectele laterale la accesarea registrelor?
Comunicare Utilizator-Nucleu
- put(get)_user()
- copy to(from)_user()
- I/O Nucleu
- maparea memoriei
- procfs
- sysfs
- debugfs
- relayfs
- netlink
- ioctl
Portabilitate
- dimensiunea cuvântului
- tipuri opace
- char semnat/nesemnat
- alinierea datelor
- promovarea integrală
- reutilizarea codului
- endianess
- tick-ul sistemului
- dimensiunea paginii
- ordonarea instrucțiunilor
- SMP/preempție/memorie mare
Exceptând cazurile în care se specifică altfel, conținutul și această descriere a cursului sunt licențiate sub Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).
Cerințe
- Cunoștințe de bază despre utilizarea unui sistem GNU/Linux ca utilizator final
- Cunoștințe de bază despre utilizarea unui shell de linie de comandă
- Cunoștințe de bază despre dezvoltarea în spațiul utilizatorului / aplicații
- Cunoștințe intermediare de programare în C
- Ar trebui să fi participat la Arhitectura Sistemelor Embedded GNU/Linux înainte (foarte recomandat!) și/sau să aveți o bună înțelegere a subiectelor prezentate acolo
35 Ore
Mărturii (3)
Totul este în regulă.
Adrian Rybka - SEOyon
Curs - Flutter Development Bootcamp with Dart
Tradus de catre o masina
Informații suplimentare foarte utile
Grzegorz - Comp S.A.
Curs - BLoC Pattern
Tradus de catre o masina
Cunoașterea și răbdarea sa.
Chrisna - Agricatural Research Council
Curs - Ionic 4 and Angular for Developers
Tradus de catre o masina