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.
 35 godzin

Liczba uczestników


cena netto za uczestnika

Opinie uczestników (5)

Propozycje terminów

Powiązane Kategorie