Powrót do katalogu

Podaj maila aby obejrzeć webinar z Node.js

Wyrażam zgodę na otrzymywanie informacji o promocjach i produktach oferowanych Czytaj więcej przez Vavatech Sp z o.o. Zgodę możesz cofnąć w każdym czasie.
Termin sugerowany
2018-11-28
Warszawa

Zapisz się jako pierwszy!

2 100 / 3 dni
Zgłoś chęć udziału
Termin sugerowany
2018-12-19
Warszawa

Zapisz się jako pierwszy!

2 100 / 3 dni
Zgłoś chęć udziału
Zaproponuj własny termin
Postaramy się uruchomić nowy termin dla Ciebie
Zgłoś chęć udziału

Inżynieria oprogramowania > Języki programowania > C

Szkolenie: Programowanie współbieżne w języku C na system UNIX

Kod: [C-IPC]
Pobierz program

Wprowadzenie

Trudno obecnie o nietrywialną aplikację nie korzystającą w żaden sposób ze współbieżności. Nietrywialne aplikacje systemowe, jak i wszelkie rozwiązania na styku aplikacji z systemem operacyjnym (sterowniki, biblioteki) wymagają uwzględnienia interakcji między poszczególnymi procesami i odpowiedniej ich synchronizacji. Wiele aplikacji, nie wyłączając zwykłych aplikacji użytkowych, dla wygody i dla wykorzystania w pełni mocy wieloprocesorowych maszyn projektuje się z kolei jako aplikacje wielowątkowe. Naturalne jest też, że programy komunikują się miedzy sobą przez sieć albo używając innych mechanizmów. Dla wszystkich tych zastosowań istnieją pewne zasady poprawnego programowania, które przenoszą się na dowolne platformy i technologie.

System UNIX był od początku projektowany jako system wieloprocesowy i jest pierwszym szeroko stosowanym systemem tego typu. Obecnie wiele systemów opartych o UNIX-a, w tym Linux, pozwala korzystać z ukształtowanych przez lata rozwoju tej rodziny systemów mechanizmów komunikacji i synchronizacji międzyprocesowej (IPC – inter-process communication). Wątki w systemie UNIX i pochodnych pojawiły się później. Spośród dostępnych bibliotek pozwalających korzystać z wątków najbardziej popularną dla czystego języka C jest pthreads.

Cel 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++.

Adresaci szkolenia

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-PDC-IPCC-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.

Czas i forma szkolenia

21 godzin (3 dni x 7 godzin), w tym wykłady i warsztaty praktyczne.

Plan szkolenia

  1. Procesy w systemie UNIX.
    1. Tworzenie nowych procesów: funkcja fork, hierarchia procesów.
    2. Kończenie procesów, funkcja wait, procesy zombie.
    3. Ładowanie nowych programów, grupa funkcji exec_.
  2. Sygnały.
    1. Wysyłanie sygnałów.
    2. Rejestrowanie kodu obsługi sygnału.
    3. Maskowanie sygnałów.
  3. Komunikacja między procesami za pomoczą plików.
    1. Deskryptory plików a funkcje fork i exec.
    2. Oczekiwanie na zdarzenia wejścia/wyjścia – funkcje select i poll.
    3. Blokowanie dostępu do pliku (do całości, do części).
    4. Mapowanie plików do pamięci.
  4. Komunikacja między procesami za pomoczą łącz.
    1. Łącza nienazwane („pipe”).
    2. Duplikowanie otwartych deskryptorów i podmiana standardowego wejścia i wyjścia.
    3. Łącza nazwane („fifo”).
  5. Synchronizacja między procesami za pomocą semaforów.
    1. Definicja teoretyczna i działanie semaforów.
    2. Semafory standardu POSIX.
    3. Zastosowanie semaforów do synchronizacji między procesami.
  6. Mechanizmy IPC Systemu V.
    1. Wspólne podstawy.
    2. Tablice semaforów („sem”).
    3. Segmenty pamięci dzielonej („shm”).
    4. Kolejki komunikatów („msg”).
  7. Tworzenie aplikacji wielowątkowych za pomocą biblioteki pthreads.
    1. Uruchamianie wątków.
    2. Kończenie wątków, wątki detached i joinable.
    3. Anulowanie wątków, wstrzymywanie anulowania i stos bloków czyszczących.
    4. Synchronizacja wątków za pomocą mutexów.
    5. Synchronizacja wątków za pomocą zmiennych warunkowych.

Opinie uczestników

  • Szkolenie wniosło wiedzę i uporządkowanie informacji. Jestem bardzo zadowolony, polecam firmę jak i prowadzącego.

    Piotr Łuniewski - Szkolenie indywidualne