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
- scurt istoric al GNU/Linux
- licențiere
- versionarea nucleului
- ciclul de lansare
- arbori de nucleu
- linia principală
- nucleu vs. spațiu utilizator
- 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 de Nucleu
- ciclul de viață
- git
- sursele nucleului
- crearea unui patch
- verificarea patch-ului
- corectarea patch-ului
- livrarea patch-ului
- cod auditat
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 out of tree
- 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 Linux
- fișiere de dispozitiv
-
driver de caracter
- inițializare
- înregistrare
- deschidere, eliberare
- cdev, cdev add, cdev del,...
- numere major/minor
- udev, udevmonitor, udevadm
Operații Avansate cu Drivere de Caracter
- ioctl
- ioctl deblocat
- ioctl compatibil
- API spațiu utilizator
- API spațiu nucleu
- 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, provocare oops
- Tasta Magic SysRq
- kgdb/kdb
- JTAG
Trasare
- gcov
- lcov
- oprofile
-
ftrace
- tracer nop
- tracer de funcții
- tracer de comutare sched
- 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
- flux de interrupt
- control de interrupt
Amânarea Muncii
- jumătăți superioare/inferioare
- softirqs
- tasklets
- cozi de muncă
- interrupturi cu fir de execuție
Concurrency
- regiune/secțiune critică
- atomic
- condiție de cursă
- sincronizare
- blocare
- soluții de blocare
- blocaj
- contingență
- 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
- blocaje secvențiale
- dezactivarea preemț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ă gestionați efectele secundare la accesarea registrelor?
Comunicare Utilizator-Nucleu
- put(get)_user()
- copy to(from)_user()
- I/O Nucleu
- mapare de memorie
- procfs
- sysfs
- debugfs
- relayfs
- netlink
- ioctl
Portabilitate
- dimensiunea cuvântului
- tipuri opace
- char semnat/nesemnat
- alinierea datelor
- promovare integrală
- reutilizarea codului
- endianess
- tichetul sistemului
- dimensiunea paginii
- ordonarea instrucțiunilor
- SMP/preemție/memorie mare
Exceptând cazurile în care se specifică altfel, conținutul și acest plan de curs sunt licențiate sub Atribuire-Necomercial-Partajare în Condiții Identice 4.0 Internațional (CC BY-NC-SA 4.0).
Cerințe
- Familiaritate de bază cu utilizarea unui sistem GNU/Linux ca utilizator final
- Familiaritate de bază cu un shell de linie de comandă
- Cunoștințe de bază despre dezvoltarea în spațiul utilizator / aplicații
- Cunoștințe intermediare de programare în C
- Ar trebui să fi participat la Arhitectura Sistemelor Embedded GNU/Linux (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