Szkolenie dostępne na zamówienie
Programowanie systemowe w Linux
Przegląd możliwości i funkcji systemowych Linux dla programistów
Czas trwania szkolenia:5 dni (40h)
Poziom zaawansowania:
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
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