Adresaci szkolenia
Szkolenie adresowane jest do programistów tworzących aplikacje w systemie Linux, którzy chcą poznać oraz wykorzystać charakterystyczne mechanizmy systemowe tej rodziny systemów operacyjnych.
Cel szkolenia
Uczestnicy szkolenia będą wiedzieli jak prawidłowo korzystać z różnorodnych mechanizmów systemowych w środowisku Linux, w szczególności związanych z wielowątkowością, synchronizacją, komunikacją międzyprocesową oraz usługami sieciowymi. Omówione zostaną poszczególne obszary zastosowań mechanizmów systemowych.
Mocne strony szkolenia
Podczas szkolenia uczestnicy:
- w praktycznych zadaniach poznają problematykę projektowania i implementacji aplikacji wykorzystujących dostępne mechanizmy systemowe w Linux,
- wykonają wiele praktycznych zadań, które zobrazują poruszane problemy implementacyjne,
- zrealizują aplikacje wykorzystujące między innymi mechanizmy współbieżności oraz komunikacji międzyprocesowej i sieciowej.
Wymagania
Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.
Specjalne wymagania techniczne
Uczestnicy w trakcie zajęć korzystają z komputera z systemem Linux.
Parametry szkolenia
5 * 8 godzin (5 * 7 godzin netto) wykładów i warsztatów.
Program szkolenia
-
Wprowadzenie do systemu Linux
- architektura systemu
- cechy systemu operacyjnego Linux
- jądro systemu
- pamięć wirtualna
- wielozadaniowość i wielowątkowość
- współdzielenie zasobów i synchronizacja
- praca z powłoką, kompilator GCC, debugger, program make
- tworzenie i wykorzystanie bibliotek statycznych i współdzielonych
- biblioteka glibc
- struktury systemowe
- podsystem plików /proc i /sys
- śledzenie wywołań systemowych
- pobieranie informacji systemowych
- interfejs programistyczny POSIX
-
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
- aspekty bezpieczeństwa, prawa procesu
-
Sygnały i ich obsługa
- typy sygnałów
- obsługa sygnałów
-
Synchronizacja
- aktywne oczekiwanie
- pojęcie wyścigu
- sekcje krytyczne, pojęcie zakleszczenia
- muteksy, szybkie muteksy w przestrzeni użytkownika
- semafory
-
Pamięć
- prawa dostępu do pamięci
- blokowanie pamięci
- pamięć współdzielona
- mapowanie pamięci
-
Operacje na plikach
- obsługa systemu plików
- system plików w przestrzeni użytkownika (FUSE)
- 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, moduły PAM (ang. pluggable authentication modules)
- typowe błędy programistyczne
- narzędzia analizy statycznej i dynamicznej programów
-
Rozszerzanie systemu
- nowe wywołania systemowe
- moduły jądra