Dziękujemy za wysłanie zapytania! Jeden z członków naszego zespołu skontaktuje się z Państwem wkrótce.
Dziękujemy za wysłanie rezerwacji! Jeden z członków naszego zespołu skontaktuje się z Państwem wkrótce.
Plan Szkolenia
Wprowadzenie
- krótka historia GNU/Linux
- licencjonowanie
- wersjonowanie jądra
- cykl wydań
- drzewa jądra
- główna linia
- jądro vs. przestrzeń użytkownika
- mechanizm vs. polityka
- alternatywy dla sterowników jądra
- RTOS vs. Linux
Zarządzanie pamięcią
- Pamięć wirtualna vs. pamięć fizyczna
- alokacja pamięci w jądrze
- strony
- strefy
- API
- slab
Łatki jądra
- cykl życia
- git
- źródła jądra
- tworzenie łatki
- sprawdzanie łatki
- naprawa łatki
- wysyłanie łatki
- audytowany kod
Moduły jądra
- pobieranie źródeł jądra
- konfiguracja/kompilacja/instalacja
- sterowniki urządzeń (statycznie linkowane, ładowane w czasie wykonywania)
- init/exit
- licencjonowanie
- EXPORT SYMBOL GPL
- makefile poza drzewem
- module-init-tools
- moduł w drzewie jądra
- Kconfig
- przekazywanie parametrów
- sparse
Sterowniki znakowe
- architektura
- interfejs użytkownik/jądro
- podsystem I/O
- VFS
- sysfs (urządzenia, magistrala, sterowniki, klasy),
- kobject/ktype/kset
- model sterowników jądra Linux
- pliki urządzeń
-
sterownik znakowy
- inicjalizacja
- rejestracja
- otwarcie, zamknięcie
- cdev, cdev add, cdev del,...
- numery major/minor
- udev, udevmonitor, udevadm
Zaawansowane operacje na sterownikach znakowych
- ioctl
- unlocked ioctl
- compat ioctl
- interfejs użytkownika
- interfejs jądra
- cykl życia procesu
- uśpienie/blokowanie
- uśpienie/budzenie
- kolejka oczekiwania
- efekt stada
- poll/select
Debugowanie jądra
- debugowanie
-
debugowanie jądra
- wyszukiwanie binarne z git
- wsparcie debugowania w jądrze
- printk syslogd, klogd, poziomy logowania, limit szybkości, poziomy debugowania, selektywne podsystemy debugowania
- debugowanie poprzez zapytania do debugfs
- debugowanie oops, zgłaszanie oops
- Magic SysRq Key
- kgdb/kdb
- JTAG
Śledzenie
- gcov
- lcov
- oprofile
-
ftrace
- nop tracer
- function tracer
- sched switch tracer
- function graph tracer
- dynamic tracer
- trace-cmd/kernelshark
- perf
- LTTng
Przerwania
- przerwania vs. polling
- przerwanie
- sekcje programu
- powtarzalność
- zdarzenia
- obsługa przerwań
- wspólna obsługa przerwań
- przepływ przerwań
- kontrola przerwań
Odraczanie pracy
- górne/dolne połowy
- softirqs
- tasklety
- kolejki zadań
- przerwania wątkowe
Współbieżność
- sekcja krytyczna
- atomowość
- warunek wyścigu
- synchronizacja
- blokowanie
- rozwiązania blokujące
- zakleszczenie
- rywalizacja
- co blokować?
-
co można użyć?
- operacje atomowe
- spin locks
- czytelnik-pisarz spin locks
- semafor
- semafor binarny
- mutex
- czytelnik-pisarz semafor
- zmienne ukończenia
- sekwencyjne blokady
- wyłączenie wywłaszczenia
- kolejność i bariery
Czas
- HZ
- Jiffies
- duże/małe opóźnienia
- timery jądra
Wejście/Wyjście sprzętowe
- Porty I/O
- Pamięć I/O
- Jak radzić sobie z efektami ubocznymi dostępu do rejestrów?
Komunikacja użytkownik-jądro
- put(get)_user()
- copy to(from)_user()
- Wejście/Wyjście jądra
- mapowanie pamięci
- procfs
- sysfs
- debugfs
- relayfs
- netlink
- ioctl
Przenośność
- rozmiar słowa
- typy nieprzezroczyste
- znakowe ze znakiem/bez znaku
- wyrównanie danych
- promocja całkowita
- ponowne wykorzystanie kodu
- kolejność bajtów
- zegar systemowy
- rozmiar strony
- kolejność instrukcji
- SMP/wywłaszczenie/wysoka pamięć
O ile nie zaznaczono inaczej, treść i ten program kursu są objęte licencją Uznanie autorstwa-Użycie niekomercyjne-Na tych samych warunkach 4.0 Międzynarodowe (CC BY-NC-SA 4.0).
Wymagania
- Podstawowa znajomość korzystania z systemu GNU/Linux jako użytkownik końcowy
- Podstawowa znajomość pracy w powłoce wiersza poleceń
- Podstawowa wiedza na temat programowania w przestrzeni użytkownika / rozwoju aplikacji
- Średniozaawansowana znajomość programowania w języku C
- Zaleca się wcześniejsze uczestnictwo w kursie Architektura systemów GNU/Linux w systemach wbudowanych (mocno zalecane!) i/lub dobre zrozumienie tematów tam omówionych
35 godzin
Opinie uczestników (3)
Wszystko jest w porządku.
Adrian Rybka - SEOyon
Szkolenie - Flutter Development Bootcamp with Dart
Przetłumaczone przez sztuczną inteligencję
Bardzo przydatne dodatkowe informacje
Grzegorz - Comp S.A.
Szkolenie - BLoC Pattern
Przetłumaczone przez sztuczną inteligencję
Jego wiedza i cierpliwość.
Chrisna - Agricatural Research Council
Szkolenie - Ionic 4 and Angular for Developers
Przetłumaczone przez sztuczną inteligencję