Plan Szkolenia
Wprowadzenie
- krótka historia GNU/Linux
- licencjonowanie
- wersjonowanie jądra
- cykl wydań
- drzewa jądra
- mainline
- jądro a przestrzeń użytkownika
- mechanizm vs. polityka
- alternatywy dla sterowników jądra
- RTOS vs. Linux
Pamięć Management
- Pamięć wirtualna vs. pamięć fizyczna
- alokacja pamięci w jądrze
- strony
- strefy
- API
- płyta
Patch jądra
- cykl życia
- git
- źródło jądra
- tworzenie poprawki
- sprawdź poprawkę
- popraw patch
- wysłać łatkę
- skontrolowany kod
Moduły jądra
- pobierz źródła jądra
- configure/build/install
- sterowniki urządzeń (połączone statycznie, ładowane w czasie wykonywania)
- init/exit
- licencjonowanie
- EXPORT SYMBOL GPL
- poza drzewem makefile
- module-init-tools
- moduł w drzewie jądra
- Kconfig
- przekazywanie parametrów
- rzadki
Sterowniki Char
- architektura
- interfejs użytkownika/jądra
- Podsystem wejścia/wyjścia
- VFS
- sysfs (urządzenia, magistrala, sterowniki, klasy),
- kobject/ktype/kset
- model sterownika jądra systemu Linux
- pliki urządzeń
- sterownik char
- inicjalizacja
- rejestracja
- open, release
- cdev, cdev add, cdev del,...
- numery major/minor
- udev, udevmonitor, udevadm
Zaawansowane operacje sterownika karty
- ioctl
- odblokowany ioctl
- compat ioctl
- API przestrzeni użytkownika
- API przestrzeni jądra
- cykl życia procesu
- spanie/blokowanie
- usypianie/budzenie
- kolejka oczekiwania
- grzmiące stado
- poll/select
Debugowanie jądra
- błąd
- debugowanie
- debugowanie jądra
- wyszukiwanie binarne z git
- wsparcie debugowania z jądra
- printk syslogd, klogd, loglevels, rate limit, debug levels, debug selective subsystems
- debugowanie przez zapytanie debugfs
- debugowanie oops, potwierdzanie oops
- Magiczny klucz SysRq
- kgdb/kdb
- JTAG
Śledzenie
- gcov
- lcov
- oprofile
- ftrace
- nop tracer
- function tracer
- sched switch tracer
- śledzenie wykresu funkcji
- dynamiczny tracer
- trace-cmd/kernelshark
- perf
- LTTng
Przerwania
- przerwania a odpytywanie
- przerwanie
- sekcje programu
- reentrancy
- zdarzenia
- program obsługi przerwań
- współdzielony program obsługi przerwań
- przepływ przerwań
- kontrola przerwań
Odraczanie pracy
- górna/dolna połowa
- softirqs
- tasklety
- kolejki robocze
- przerwania gwintowane
Współbieżność
- region/sekcja krytyczna
- atomowy
- warunek wyścigu
- synchronizacja
- blokowanie
- rozwiązania blokujące
- impas
- rywalizacja
- Co blokować?
- czego można użyć?
- operacje atomowe
- blokady spinowe
- blokady typu czytelnik-zapisujący
- semafor
- semafor binarny
- muteks
- semafor czytający-zapisujący
- zmienne uzupełniające
- blokady sekwencyjne
- wyłączanie wywłaszczania
- porządkowanie i bariery
Czas
- HZ
- Jiffies
- duże/małe opóźnienia
- timery jądra
Sprzętowe wejścia/wyjścia
- Porty wejścia/wyjścia
- Pamięć I/O
- Jak radzić sobie z efektami ubocznymi dostępu do rejestrów?
User-Kernel Communication
- put(get)_user()
- copy to(from)_user()
- I/O jądra
- mapowanie pamięci
- procfs
- sysfs
- debugfs
- relayfs
- netlink
- ioctl
Przenośność
- rozmiar słowa
- nieprzezroczyste typy
- znak podpisany/niepodpisany
- wyrównanie danych
- promocja całek
- ponowne użycie kodu
- endianess
- tik systemowy
- rozmiar strony
- porządkowanie instrukcji
- SMP/preemption/wysoka pamięć
O ile nie zaznaczono inaczej, treść i niniejszy zarys kursu są objęte licencją Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).
Wymagania
- Podstawowa znajomość korzystania z systemu GNU/Linux jako użytkownik końcowy
- Podstawowa znajomość powłoki wiersza poleceń
- Podstawowa znajomość przestrzeni użytkownika / tworzenia aplikacji
- Pośrednia znajomość programowania w języku C
- Powinien wcześniej uczestniczyć w Embedded GNU/Linux Systems Architecture (zdecydowanie zalecane!) i/lub dobrze rozumieć tematy tam przedstawione.
Opinie uczestników (5)
Edward jest niesamowitym facylitatorem
Zibusiso Ncube - Agricatural Research Council
Szkolenie - Ionic 4 and Angular for Developers
Przetłumaczone przez sztuczną inteligencję
Miguel's knowledge of the subject was extensive. He made the training easy to understand and the flow was balanced; adding on to each section with new features as needed. He covered everything that was asked and answered each and every question thoroughly. It was a very pleasant experience.
Paul Coaton - SEMPCheck Services
Szkolenie - Flutter Development Bootcamp with Dart
That the trainer adapts to our needs
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Szkolenie - The Yocto Project - An Overview - hands-on
Rzeczowe odpowiedzi trenera poparte doświadczeniem programistycznym.
Igor Firak
Szkolenie - Build Native iOS and Android Apps with Flutter
I really enjoy having a virtual PC online, I can do exercises whenever I want