Aktualne promocje

20/01/2017
29/09/2020
31/10/2020

Barcampy, konferencje, wydarzenia

29/11/2016 - 18:00
08/11/2016 - 08:30
04/11/2016 (Caly dzien)

RHD361 Red Hat Linux Kernel Internals I

Kod szkolenia: 
RHD361
Opis szkolenia: 

Ten intensywny kurs obejmuje zagadnienia programowania niskopoziomowego, w systemie operacyjnym Linux. Włączając w to szeregowanie zadań i procesów, zarządzanie pamięcią i wejściem/wyjściem.

Znajomość tych zagadnień będzie niezbędna do świadomego i wydajnego strojenia systemu operacyjnego (strojenie poruszane w ramach RH442 Red Hat Enterprise System Monitoring and Performance Tunning). W ramach zajęć, dowiedzieć się można także jak sterowniki urządzeń współpracują z mechanizmami jądra systemowego.

Cel szkolenia: 
  • Zapoznanie się z wewnętrznymi mechanizmami jądra systemu Red Hat Linux dostępnymi dla programisty
  • Szybsze indentyfikowanie błędów oprogramowania oraz problemów wydajności aplikacji
  • Odpluskwianie jądra systemowego i monitorowanie działania jego mechanizmów
Grupa docelowa: 

Doświadczeni programiści którzy chcą zapoznać się z bieżącą architekturą najnowszych wydań jądra systemowego.

Wymagania wobec słuchaczy: 
  • Znajomości zagadnień pracy z prostymi narzędziami takimi jak: vi, emacs oraz text/fileutils.

  • Znajomość środowiska systemu operacyjnego Linux i Unix (poziom wiedzy zbliżony do struktur rejestrów i sprzętu będzie bardzo pomocny ale nie niezbędny)

  • Doświadczenie w tworzeniu oprogramowania w systemie operacyjnym Linux, kompilacji i instalacji jądra itp.

  • Podstawowe doświadczenie w tworzeniu sterowników urządzeń i modułów jądra

Cena netto PLN: 
9715
Cena brutto PLN: 
11949.45
Cena EURO: 
2253
Czas trwania: 
5 dni
Uwagi: 

Cena w PLN jest kosztem sugerowanym. Koszt zajęć 2253 euro, przeliczenie wg kursu sprzedaży w NBP z dnia wystawienia faktury, pierwszy dzień zajęć. Kurs euro=4,3120 PLN wg kursu z dnia 7 czerwca 2013r.

 

Oferujemy również szkolenia w naszych ośrodkach w Krakowie i Gdyni, jak i w lokalizacjach wskazanych przez klienta.

W celu ustalenia szczegółów prosimy o kontakt na osec@osec.pl

Konspekt: 
  1. Praca we wspólnocie programistów
    • Tworzenie jądra systemu w ramach wspólnoty
    • Dlaczego warto wnosić wkład do głównej gałęzi jądra?
    • Licencjonowanie
    • Prawa autorskie
    • Przesłanie własnej pracy
    • Proces tworzenia oprogramowania jądra systemu
    • Tworzenie łat w oknie konsolidacji
    • Drzewo wydań
  2. Poziomy działania oprogramowania (ang. User Mode and Kernel Mode)
    • Jądro systemu Linux – ogólnie
    • Zadania spełniane przez jądro systemu
    • Kontekst działania jądra
    • Kilka milisekund w ciągu działania jądra systemu
    • Pierścień uprawnień systemu
    • Poziom działania jądra systemowego
    • Poziom działania programów użytkownika
    • Przykład przełączania pomiędzy poziomami: wywołania systemowe
    • Interfejs wywołań systemowych w architekturze x86
    • Przykład przełączenia pomiędzy poziomami: obsługa przerwania
    • Podsystem Kernel Mode Linux
  3. Kompilacja jądra i narzędzi
    • Pakiety ze źródłami jądra
    • Wersje jądra systemowego
    • Dokumentacja jądra systemowego
    • Struktura źródeł jądra
    • Rekompilacja jądra Red Hat
    • Instalacja narzędzi deweloperskich jądra systemowego
    • Pakiet ze źródłami jądra
    • Przygotowanie źródeł jądra do kompilacji
    • Zmiana nazwy jądra (opcjonalnie)
    • Opcje kompilacji
    • Kompilacja jądra i modułów
    • Instalacja modułów jądra
    • Instalacja skompilowanego jądra i plików zależnych
    • ABI jądra (ang. Kernel Application Binary Interface – kABI)
    • Narzędzie cscope
    • Narzędzie LXR
    • Narzędzie git
    • Dokumentacja narzędzia git
  4. Moduły jądra systemu Linux
    • Moduły jądra
    • Narzędzia zarządzania modułami jądra
    • Skojarzenie modułów z podłączonymi urządzeniami
    • Wiadomości podstawowe o modułach jądra systemu
    • Makra modinfo
    • Wywołanie printk()
    • /proc/kmsg i klogd
    • Wywołanie printk() i poziomy logowania
    • Limitowanie aktywności wywołania printk()
    • Tworzenie prostego modułu
    • Kompilacja modułu
    • Integrowanie modułu w ramach jądra systemowego
    • Plik Makefile i Kconfig
    • Parametry modułów
    • Przykład obsługi modułu z parametrami
  5. Przegląd API jądra systemowego
    • Wielozadaniowość, stos i deskryptory zadań
    • Zawartość przestrzeni procesu i stos procesu
    • KMS (ang. Kernel Mode Switch) i stos
    • Struktura zadania
    • Czym jest proces
    • Struktura thread_info
    • Identyfikator procesu w task_struct
    • Identyfikator stanu w task_struct
    • Informacje dotyczące szeregowania w task_struct
    • Podwójnie wiązana lista
    • Podwójnie wiązana lista: działania podstawowe
    • Podwójnie wiązana lista: iteracja
    • Podwójnie wiązana lista: procesy
    • Powiązane procesy w task_struct
    • Statystyki działania w task_struct
    • Alokowanie pamięci jądra z użyciem wywołania kmalloc()
    • Optymalizacja poprzez cache pamięci: przewidywanie rozgałęzień
    • Optymalizacja poprzez cache pamięci: struktura złączania
    • Generowanie błędu jądra
  6. Synchronizacja
    • Sekcje krytyczne
    • Blokady wyłączające urządzeń
    • Linux Mutex Toolbox
    • Operacje atomowe
    • Atomowy typ liczb całkowitych
    • Blokady wirujące (ang. spinlocks)
    • Blokady wirujące i lokalne przerwania
    • Wirujące blokady czytania/pisania
    • Blokady wyłączne (ang. mutexes)
    • Semafory
    • Przykłady blokad wirujących i blokad wyłącznych
    • Alternatywy dla blokowania
    • Blokady sekwencyjne
    • Operacje w ramach RCU (ang. Read-Copy-Update)
    • Implementacja operacji RCU w systemie Linux
    • Zmienne prywatne procesora
    • Wiadomości uzupełniające
    • Globalna blokada jądra (ang. Big Kernel Lock)
  7. Debugowanie jądra systemu – narzędzia i techniki
    • Przygotowanie do debugowania jądra
    • Ostrzeżenia kernel-debuginfo
    • Różnice w debugowaniu w przestrzeni jądra i użytkownika
    • Debugowanie w trakcie działania systemu i postmortem
    • Różnica pomiędzy załamaniem a zawieszeniem (ang. crash versus hangs)
    • Debugowanie sterowników urządzeń
    • Narzędzia debugowania w przestrzeni użytkownika
    • Informacje jadra w systemie plików proc
    • Parametry kernel.panic i ich wpływ na obsługę załamania systemu
    • System plików sys
    • System plików debugfs
    • Komunikaty z poziomu jądra systemowego
    • Komunikaty typu Kernel Oops
    • Mechanizm SysRq
    • Narzędzie sysreport
    • Narzędzie crash
    • Wymagania narzędzia crash
    • Instalacja narzędzia crash
    • Wywołanie crash
    • Informacje wyjściowe narzędzia crash
    • Pomoc narzędzia crash
    • Parametry wejściowe narzędzia crash
    • Raport narzędzia crash
    • Narzędzie crash ogólnie
    • Domyślny kontekst wykonania narzędzia crash
  8. Przerwania
    • Przerwania – ogólnie
    • Zastosowanie przerwań
    • Typy przerwań
    • Przerwania sprzętowe
    • Tablica przerwań IDT (ang. Interrupt Descriptor Table)
    • Inicjalizacja IDT
    • Funkcje inicjujące tablicę IDT
    • Przechwytywanie wyjątków
    • Asynchroniczne przechwytywanie wyjątków
    • Uwagi do przechwytywania wyjątków
    • Struktura irq_desc
    • Struktura irqaction
    • Rejestrowanie nowej obsługi wyjątku
    • Wykonywanie odroczonych działań
    • Przerwania programowe (ang. softirq)
    • Użycie przerwań programowych
    • „Tasklety”
    • Użycie „taskletów”
    • Kolejki zadań
    • Struktury danych w kolejkach zadań
    • Użycie kolejek zadań
  9. Sterowniki urządzeń – ogólnie
    • Sterowniki urządzeń
    • Typy urządzeń
    • Węzły urządzeń
    • Tworzenie węzła urządzenia
    • Dynamiczne ładowanie modułu jądra
    • Numery starsze i młodsze
    • Dynamiczna alokacja numerów starszych i młodszych
    • Dynamiczne kreowanie węzłów urządzeń
    • Ułatwienia w dynamicznym kreowaniu węzłów urządzeń
    • Podstawy tworzenia sterowników urządzeń
    • Rejestrowanie urządzeń
    • Operacje na sterownikach urządzeń
    • Funkcje i wywołania sterowników urządzeń
    • Struktura file
    • Struktura inode
    • Wywołania open i release
    • Wywołania read i write
    • Licznik użycia modułu
    • Przykład prostego sterownika urządzenia znakowego
  10. Zarządzanie pamięcią
    • Wymagania stawiane mechanizmom zarządzania pamięcią
    • Pamięć wirtualna i stronicowanie
    • Architektura pamięci w x86
    • Segmentacja pamięci w systemie Linux
    • Stronicowanie pamięci
    • Tablica stron
    • Mapowanie adresów wirtualnych w x86
    • Mapowanie adresów wirtualnych w x86-64
    • Strefy pamięci
    • Struktura pamięci wirtualnej
    • Strefa ZONE_NORMAL
    • Strefa ZONE_HIGHMEM
    • Strefa ZONE_DMA
    • Algorytm alokacji pamięci jądra systemu
    • Zarządzanie pamięcią
    • Algorytm Buddy Allocator
    • Żądania i zwalnianie stron ramek pamięci
    • Algorytm Slab Allocator
    • Zarządzanie nieciągłymi przestrzeniami pamięci
    • Flagi pamięci: gfp_mask
    • Wywołanie __get_free_pages()
    • Wywołanie kmalloc()
    • Wywołanie vmalloc()
  11. Procesy
    • Proces ogólnie
    • Tworzenie procesów
    • Współdzielenie zasobów
    • Wywołanie do_fork()
    • Mapa pamięci procesu
    • Przestrzenie pamięci
    • Flagi vm_flags
    • pmap
    • Wątki jądra systemu
    • Proces 0
    • Kończenie działania procesu
    • Przełączenia kontekstu
    • Kiedy niezbędne jest przełączenie kontekstu?
    • Kiedy niezbędne jest przeszeregowanie (ang. need_resched)?
    • Kiedy wywoływane jest schedule()?
    • Pojęcie wywłaszczenia na poziomie jądra systemu
  12. Zarządca procesów
    • Priorytety
    • Priorytety zwykłych procesów
    • Priorytety procesów czasu rzeczywistego
    • Kwant czasu
    • Zarządca O(1): kolejka oczekiwania do uruchomienia
    • Zarządca O(1): tablica priorytetów
    • Zarządca O(1): jak pracuje?
    • Kolejka oczekowania
    • Zarządca O(1): równoważenie obciążenia
    • Zarządca O(1): wywołanie load_balance()
    • Problemy związane z zarządcą O(1)
    • Zarządca O(1) kontra CFS
    • Zarządca CFS ogólnie
    • Szczegóły CFS
    • Przełączanie zadań w CFS
    • Polityki szeregowania w CFS
    • Klasy szeregowania CFS
    • Klasy fair_sched_class w CFS
    • Strojenie CFS
    • Grupy szeregowania w CFS
    • CONFIG_FAIR_GROUP_SCHED
    • CONFIG_FAIR_CGROUP_SCHED
  13. Pojęcie czasu w jądrze systemu Linux
    • Zagadnienia związane z pojęciem czasu w jądrze systemu
    • Wymagania związane z czasem w systemie Linux
    • Zależności czasowe na poziomie sprzętu
    • Zależności czasowe wyboru źródła
    • Czas rzeczywisty i systemowe: xtime
    • Wywołania związane z czasem
    • Takt zegara jądra systemu: jiffies
    • Zegary programowe
    • Zegary POSIX
    • Interwały czasowe i wywołanie alarm()
    • Zegary wysokiej rozdzielczości
    • Przerwania związane z obsługą czasu
    • TIMER_SOFTIRQ
    • Funkcje opóźnień
  14. Infrastruktura SystemTap
    • Wstęp do SystemTap
    • Główne komponenty SystemTap
    • Monitorowanie działania jądra systemu poprzez SystemTap
    • Narzędzie stap
    • Przepływ danych w podystemie SystemTap
    • Punkty kontroli
    • Skrypty SystemTap
  15. Inicjalizacja jądra i systemu
    • Sekwencja startu systemu
    • Inicjalizacja na poziomie BIOS
    • Zarządca startu (ang. bootloader)
    • Proces startu w GRUB
    • Komponenty zarządcy startu
    • Problem „jajko czy kura” i RAM dysk
    • GRUB i grub.conf
    • Inicjalizacja jądra systemu
    • __init i __initdata
    • Podsekcje inicjalizacji i kolejność
    • Inicjalizacja jądra
    • init/main.c: start_kernel()
    • init/main.c: rest_init()
    • init/main.c: init()
    • init/main.c: do_basic_setup()
    • init/main.c: init_post()
    • Inicjalizacja a program init
    • Poziomy uruchomienia systemu
  16. Debugowanie jądra systemu: zrzuty pamięci
    • Wstęp do mechanizmów Crash Dump
    • Działanie i wymagania netdump/diskdump
    • Kdump
    • Kexec
    • Realokowalne jądro systemu
    • Dekompresja jądra „w miejscu”
    • Start Kdump
    • Obraz initrd dla kdump
    • Konfiguracja kdump
    • Zrzut kdump w lokalnym systemie plików
    • Zrzut kdump na system plików NFS
    • Zrzut kdump na serwer poprzez SSH
    • Wielkość pliku zrzutu
    • Konfigurowanie metody zrzutu: makedumpfile
    • Filtrowanie zrzutu
    • Kompresja zrzutu
    • Dodatkowe właściwości
  17. Jądro czasu rzeczywistego Red Hat
    • Realtime (RT) Linux
    • Zalety jądra czasu rzeczywistego
    • Porównanie czasu odpowiedzi
    • Przykład czasu odpowiedzi od uruchomienia
    • Zmiany w jądrze systemu
    • Zmiany w bibliotece języka C
    • Narzędzia pomiarowe związane z czasem rzeczywistym
    • RT Tuning Tools
    • Strojenie podsystemu RT
    • Ładowanie jądra systemu RT
Najbliższe terminy szkolenia

Warszawa: 
Pon, 10/03/2014

Logowanie

O osec.pl

Nasz serwis działa dzieki następującym projektom:

Drupal CMS - http://www.drupal.org
Apache HTTPD - http://www.apache.org
PHP - http://www.php.net
MySQL - http://www.mysql.com

ipv6 ready