Informacje o szkoleniu
Programowanie systemowe - Userland
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 | Userland |
| 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 Userland
- Filozofia aplikacji unixowych
- Anatomia programu
- opakowanie
- struktura
- aspekt statyczny i dynamiczny - plik/storage vs. obraz w pamięci
- proces wątek - struktury z headera
- przestrzeń adresowa - mapa pamięci
- stos, sterta
- Fazy życia procesu
- utworzenie, zakończenie
- context switch
- szeregowanie procesów i wątków
- Przebieg uruchomienia programu
- crt0
- podprogramy/funkcje
- prolog
- epilog funkcji
- Biblioteki
- dynamiczny linker vs link editor
- ldd
- C++ (trochę inaczej tam jest, jak powstaje konstruktor)
- Współbieżność
- wątki - userland
- mechanizmy synchronizacji
- pthreads
- dla bibliotek dzielonych - libc_r/libpthreads
- debugowanie aplikacji wielowątkowych
- Komunikacja międzyprocesowa
- mechanizmy
- jak używać
- API
- fork, exec - co się dzieje po sforkowaniu wielowątkowego procesu
- Demon - specjalny przypadek programu
- analiza wybranego demona
- Podstawy bezpiecznego kodowania
- analiza sudo i zagadnień związanych
- audyt przykładowy
- Programowanie sieciowe
- bsd sockets
- debugging -> część praktyczna
Terminy zajęć
- Osoby zainteresowane proszone są o kontakt z biurem Fundacji.



