Szkolenie: Programowanie systemowe w Linux
Przegląd możliwości i funkcji systemowych Linux dla programistów
- Trenerzy praktycy
- Kameralne grupy
Czas trwania szkolenia:5 dni (40h)
Kod kursu:PS/LINUX
Programowanie systemowe w Linux
Cele szkolenia
Nauka prawidłowego korzystania z różnorodnych mechanizmów systemowych środowiska Linux, w szczególności związanych z wielowątkowością, synchronizacją, komunikacją międzyprocesową oraz usługami sieciowymi
Omówienie poszczególnych obszarów zastosowań mechanizmów systemowych
Poznanie problematyki projektowania i implementacji aplikacji wykorzystujących dostępne mechanizmy systemowe w Linux
Dla kogo?
Szkolenie adresowane jest do programistów tworzących aplikacje w systemie Linux, którzy chcą poznać oraz wykorzystać mechanizmy systemowe
Zalety
Szkolenie warsztatowe, tematyka omawiana jest na praktycznych przykładach realizowanych przez uczestników w formie krótkich zadań programistycznych
Uczestnicy przygotują między innymi aplikacje typu demon oraz oprogramowanie w architekturze klient-serwer
Praktyka przed teorią - wszystkie szkolenia technologiczne prowadzone są w formie warsztatowej. Konieczna teoria jest wyjaśniana na przykładzie praktycznych zadań
Konkretne umiejętności - w ramach każdego szkolenia rozwijamy praktyczne umiejętności związane z daną technologią i tematyką
Nauka z praktykami - wszyscy trenerzy na co dzień pracują w projektach, gwarantuje to dostęp do eksperckiej wiedzy i praktycznego know-how
Wymagania
Od uczestników szkolenia wymagana jest umiejętność programowania w języku C
W cenie otrzymasz:
Materiały szkoleniowe
Certyfikat ukończenia szkolenia
W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki
Program szkolenia
Wprowadzenie do systemu Linux
Architektura systemu
Jądro systemu
Pamięć wirtualna
Wielozadaniowość i wielowątkowość
Współdzielenie zasobów
Współbieżność i synchronizacja
Narzędzia programisty systemowego
Tworzenie i użycie bibliotek statycznych i współdzielonych
Struktury systemowe
Podsystem plików /proc i /sys
Śledzenie wywołań systemowych
Pobieranie informacji systemowych
Interfejs programistyczny POSIX i System V
Procesy i wątki
Tworzenie procesów i wątków, procesy potomne
Przestrzeń użytkownika i przestrzeń jądra
Stany procesów
Priorytety procesów, szeregowanie procesów
Zarządzanie procesami, grupy procesów
Procesy demony
Statystyki procesu, czasomierze
Operacje blokujące i nieblokujące
Usypianie procesów, obsługa czasu
Limitowanie zasobów
Aspekty bezpieczeństwa: prawa procesu
Sygnały
Typy sygnałów
Obsługa sygnałów
Synchronizacja
Aktywne oczekiwanie
Pojęcie wyścigu
Sekcje krytyczne, pojęcie zakleszczenia
Muteksy
Semafory
Pamięć operacyjna
Prawa dostępu do pamięci
Blokowanie pamięci
Pamięć współdzielona
Mapowanie pamięci
Operacje na plikach
Obsługa systemu plików
Bufory zapisu/odczytu
Dowiązania symboliczne i twarde
Aspekty bezpieczeństwa: prawa dostępu do plików
Komunikacja międzyprocesowa
Potoki nazwane i nienazwane
Kolejki komunikatów
Usługi sieciowe
Architektura klient-serwer
Programowanie gniazd TCP
Programowanie gniazd UDP
Obsługa protokołów IPv4 i IPv6
Gniazda surowe
Obsługa urządzeń
Podsystem plików /dev
Rodzaje (znakowe, blokowe, specjalne) i techniki dostępu do urządzeń
Bezpieczeństwo
Uwierzytelnianie z wykorzystaniem modułów PAM
Typowe błędy programistyczne
Narzędzia analizy statycznej i dynamicznej programów
Rozszerzanie systemu
Nowe wywołania systemowe
Moduły jądra