Powrót do katalogu

VOUCHERY SZKOLENIOWE 2023/2024 R.
Kup w 2023 r.  - wykorzystaj do końca przyszłego roku!
Potrzebujesz wykorzystać budżet szkoleniowy w bieżącym okresie rozliczeniowym? Mamy dla Ciebie rozwiązanie!

Kupując voucher już teraz, zachowujesz gwarancję stałej ceny, a szkolenie możesz zrealizować w przyszłym roku.

Więcej informacji znajdziesz TUTAJ.

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.
Zaproponuj własny termin
Postaramy się uruchomić nowy termin dla Ciebie
3 200 / 3 dni
Zgłoś chęć udziału

Back-End > 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

  • Do tej pory nie miałem żadnej styczności z programowaniem w języku C na systemie Linux, a odbyte szkolenie pozwoliło mi na zrozumienie pewnych mechanizmów.

    Programista - Bombardier Transportation Polska

  • Szkolenie miało warsztatowy charakter, a pomimo różnicy w poziomie wiedzy uczestników, przebiegało bardzo sprawnie i przyjemnie.

    Pracownik IT - Bombardier Transportation Polska

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

    Piotr Łuniewski - Szkolenie indywidualne