Kod: ADM-008
Czas trwania: 20 godzin
Czas trwania: 20 godzin
Opis szkolenia
Szkolenie przygotowuje programistów do pracy z aplikacjami komunikacyjnymi, wbudowanymi dla GNU/Linux lub innych środowisk POSIX (BSD, QNX, itd.). Kurs obejmie funkcjonalności typowe dla rodziny systemów operacyjnych Unix, przede wszystkim interfejsy programistyczne ze standardów POSIX (Portable Operating System Interface = IEEE Std 1003.*).Plan szkolenia
- User-kernel interfejs (system calls, errno, libc)
- Procesy, sygnały
- Uniwersalny model I/O: wszystko stara się być plikiem, albo przynajmniej streamem bajtów - urządzenia, gniazda etc
- System plików
- Kilka narzędzi do eksploracji Unix I/O i badania zachowania programu: strace, dd, netcat/socat
- Komunikacja międzyprocesowa (IPC) - w tym pamięć dzielona, mappingi (mmap)
- Narzut: źródła (system call, memory copy, scanning, memory allocation, etc.); minimizacja narzutu
- Interfejs programistyczny POSIX Threads ("pthread") i jego interakcja z powyżej opisanymi cechami
- Zaawansowane I/O: non-blocking, Async, polling
- Sync kontra Async, adaptowanie pomiędzy tymi podejściami
- Procesy Daemon
- Start systemu
Cele
Po ukończeniu kursu uczestnicy będą mogli:- Znajdować specyficzne informacje potrzebne do zadań na stronach pomocy Man albo dokumentach standardowych;
- Rozpoznawać łatwe błędy i problemy/ryzyka w kodzie, używającym interfejsów programistycznych POSIX;
- Rozpoznać, nad jakimi szczegółami trzeba się zastanowić przy projektowaniu albo modyfikowaniu wbudowanej aplikacji.
Grupa docelowa
- Programiści
Wymagania
Ważne:- Dobra znajomość języka programowania C;
- Umiejętność używania interfejsu wiersza poleceń (shell) na GNU/Linux albo innym systemie Unix - co najmniej podstawowe zadania jak zarządzanie plikami, wyszukiwanie;
- Podstawowe pojęcia w obszarze programowania współbieżnego.
Aby czerpać korzyść z niektórych dyskusji, przydatnym będzie:
- Faktyczne doświadczenie w programowaniu-co najmniej debugowaniu większych C-programów, najlepiej production code;
- Podstawowa wiedza w obszarze networkingu (wprowadzenie TCP/IP, co najmniej na poziomie CCNA 1).