Grupa docelowa
Adresatami szkolenia są programiści pragnący poznać mechanizmy systemu UNIX (i pochodnych,
np. Linux) służące do realizacji wieloprocesowości i wielowątkowości.
Szkolenie polecamy przede wszystkim programistom przygotowującym się do pracy w projektach
wymagających skorzystania z technologii będących przedmiotem szkolenia. Może ono być także
kolejnym krokiem w naturalnym rozwoju programisty języka C platformy UNIX, który pozwoli
lepiej rozumieć i w większym stopniu wykorzystywać możliwości systemu (polecamy w tym
miejscu cykl szkoleń C-PD → C-IPC → C-TCP).
Technologie prezentowane na szkoleniu można potraktować dosłownie i korzystać z nich
bezpośrednio w pracy pod systemem UNIX/Linux lub tylko jako przykładową realizację
mechanizmów IPC, które w innych systemach (np. Windows, Android) są podobne w idei, ale
różne jeśli chodzi o szczegóły i API.
Wymagania wstępne:
- programowanie w języku C (np. dzięki szkoleniu C-PD) lub ewentualnie w C++.
Wiedza i umiejętności, które mogą podnieść efektywność tego szkolenia:
- znajomość podstawowych pojęć i zasad programowania współbieżnego,
- znajomość mechanizmów IPC lub wielowątkowości z innych języków i platform.
Cel i zakres szkolenia
Szkolenie, prowadzone na platformie Linux, obejmuje te mechanizmy programowania
współbieżnego, które są obecnie uważane za standardowe i są przenośne między różnymi wersjami
systemów opartych o UNIX. Gdzie możliwe, opieramy się o standard POSIX. Omawiane są także
podstawowe zasady poprawnego programowania współbieżnego, a także typowe błędy i zagrożenia.
Prezentowane jest podstawowe API mechanizmów, dostępne z języka C i korzystające bezpośrednio
z odpowiednich zasobów i funkcji systemowych. Używanie ich w ten sposób daje największą
przenośność rozwiązań i największą kontrolę nad szczegółami.
Po zakończeniu szkolenia aktywny uczestnik potrafi:
- tworzyć i zamykać procesy, a także uruchamiać na różne sposoby nowe programy,
- tworzyć procedury obsługi sygnałów oraz maskować sygnały,
- współbieżnie korzystać z plików używając takich mechanizmów jak blokowanie plików
- czy mapowanie plików do pamięci,
- tworzyć proste rozwiązania wieloprocesowe w modelu rozproszonym oparte o
- komunikację za pomocą łącz nazwanych i nienazwanych,
- tworzyć proste rozwiązania wieloprocesowe w modelu scentralizowanym oparte o
- współdzielenie pamięci i synchronizację za pomocą semaforów,
- korzystać z kolejek komunikatów,
- tworzyć proste aplikacje wielowątkowe w oparciu o bibliotekę pthreads,
- wykorzystywać do synchronizacji między wątkami mutexy i zmienne warunkowe.
Szkolenie nie obejmuje m.in. następujących tematów:
- komunikacja sieciowa (patrz szkolenie C-TCP),
- analogiczne mechanizmy w innych systemach operacyjnych, w szczególności Windows,
- opakowanie poznawanych tu mechanizmów systemowych w nakładki języka C++.