Informacje o szkoleniu
Programowanie systemowe - Kernel
Założenia dot. aspektów praktycznych tzn. w szczególności tych części kernela, które typowo programista rozwija czyli drivery itp, pomijana jest więc np. szczegółowa analiza VM itp.
Czas trwania kursu: 40 godzin
| Nazwa kursu | Kernel |
| Cena | 5500,00 PLN |
|---|
Prowadzący
Rafał Jaworowski - autor licznych projektów systemów typu embedded, których większość jest skierowana na rynek międzynarodowy. Założyciel firmy Semihalf.
Profil słuchaczy
Programiści, projektanci zaawansowanych aplikacji, systemów wbudowanych i podobnych, absolwenci kierunków informatycznych (i pochodnych).
Wymagana wiedza
Znajomość C, asembler, architektury komputerów, RISC, CISC, modele pamięci, cache, podstawy teorii systemów operacyjnych - pamięć wirtualna, proces, wątek, scheduling, filesystem, podstawowa znajomość budowy komputera PC, praktyczna umiejętność programowania i znajdowania błędów w przynajmniej w jednym języku programowania, obsługa UNIX'a na poziomie administracji, podstawowa wiedza nt. UNIX'a, podsystemy, nazewnictwo, urządzenia, podstawowa wiedza nt. działania urządzeń zewnętrznych, rejestrów, sposobu komunikacji, konfiguracji, roli driver'a.
Cel kursu
Uzyskanie praktycznej wiedzy z dziedziny programowania systemowego, w szczególności rozszerzania istniejącej infrastruktury systemu operacyjnego oraz rozwijania zaawansowanych aplikacji w pełni wykorzystujących zasoby i udogodnienia systemu, jego interfejsy itd.
Program
Programowanie systemowe Kernel
- Przegląd źródeł
- hierarchia
- co gdzie
- Bootstrap systemu
- boot, loader
- start jądra
- init
- w jakim stanie jest CPU po uruchomieniu systemu
- single/multi user
- securelevels
- Jądro
- opakowanie
- podsystemy - struktura
- wątki jądra
- przestrzeń adresowa
- przebieg uruchomienia
- mapa pamięci
- stos
- Serwisy jądra
- API
- tam i z powrotem - wejście/wyjście
- Moduły ładowane dynamicznie
- modularność != mikrokernel
- tylko formalny zabieg
- konstrukcja modułu - przykład
- nie wszystko może być modułem np. driver do root fs device...
- Driver-y
- hierarchia, newbus
- typy urządzeń
- devfs
- analiza wybranego sterownika
- jak napisać driver
- debugging drivera
- Przerwania
- zewnętrzne przerwania vs. wyjątki
- syscall - pułapka
- SMP - ipi
- szczególny przykład - przerwanie zegarowe
- w jakim kontekście wykonują się handlery
- klasy handlerów/przerwań
- analiza wybranego handlera
- Współbieżność
- wątki - kernel
- mechanizmy synchronizacji
- klasyczne problemy synch
- locking
- SMPng, historia BKL
- operacje atomowe
- reentrancy
- TLS
- Szeregowanie procesów/wątków
- wywłaszczanie
- ULE
- 4BSD
- Szczegółowe zagadnienia zegarowe
- jak się mierzy
- rozdzielczość
- precyzja
- Filesystemy
- VFS
- kernel debugging -> cześć praktyczna
Terminy zajęć
- Osoby zainteresowane proszone są o kontakt z biurem Fundacji.



