Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Plan Szkolenia
Wprowadzenie
- Cele
- Kto Jesteś
- Fundacja Linux
- Szkolenia Fundacji Linux
- Programy Certyfikacyjne i Cyfrowe Odznaki
- Dystrybucje Linux
- Platformy
- Przygotowanie Systemu
- Używanie i Pobieranie Maszyn Wirtualnych
- W Linuxie się zmienia
Podstawy
- Procedury
- Standardy i LSB
Jak pracować w projektach OSS **
- Przegląd sposobu prawidłowego wkładu
- Zostań blisko głównym drzewem kodowym dla bezpieczeństwa i jakości
- Badanie i zrozumienie DNA projektu
- Zidentyfikuj, co chcesz naprawić
- Znajdź administratorów i ich przepływy pracy oraz metody
- Otrzymaj wcześniejsze informacje zwrotne i pracuj w otwartym źródle
- Wkładaj stopniowo, a nie duże zrzuty kodu
- Zostaw swoje ego w drzwiach: nie bądź zbyt wrażliwy
- Bądź cierpliwy, rozwija długotrwałe relacje, bądź pomocny
Kompilatory
- GCC
- Inne kompilatory
- Główne opcje gcc
- Preprocesor
- Środowiska programowania zintegrowane (IDE)
- Laboratoria
Biblioteki
- Statyczne biblioteki
- Dzielenie bibliotek
- Łączenie z bibliotekami
- Dynamiczny ładowacz linkowania
- Laboratoria
Make
- Używanie make i Makefiles
- Budowanie dużych projektów
- Więcej skomplikowanych zasad
- Wbudowane zasady
- Laboratoria
Kontrola wersji
- Kontrola wersji
- RCS i CVS
- Subversion
- git
- Laboratoria
Debugowanie i pliki core dumps
- gdb
- Co to są pliki core dumps?
- Wyprodukowanie core dumps
- Badanie core dumps
- Laboratoria
Narzędzia do debugowania
- Pobieranie czasu
- Profilowanie i wydajność
- valgrind
- Laboratoria
Wywołania systemowe
- Wywołania systemowe vs. funkcje biblioteki
- Jak wykonywane są wywołania systemowe
- Wartości zwrotne i numery błędów
- Laboratoria
Zarządzanie i alokacja pamięci
- Zarządzanie pamięcią
- Dynamiczna alokacja
- Optymalizacja malloc()
- Blokowanie stron
- Laboratoria
Pliki i systemy plików w Linuxie **
- Pliki, katalogi i urządzenia
- Wirtualny system plików
- System plików ext2/ext3
- Systemy plików dziennikowe
- System plików ext4
- Laboratoria
Wyjście do pliku
- Wyjście do pliku UNIX
- Otwieranie i zamykanie
- Czytanie, pisanie i przesuwanie
- Pozycjonowanie i wektorowe operacje I/O
- Biblioteka standardowego wejścia/wyjścia
- Współpraca z dużymi plikami (LFS)
- Laboratoria
Zaawansowane operacje na plikach
- Funkcje stat
- Funkcje katalogów
- inotify
- Mapowanie pamięci
- flock() i fcntl()
- Tworzenie tymczasowych plików
- Inne wywołania systemowe
- Laboratoria
Procesy I
- Co to jest proces?
- Ograniczenia procesów
- Grupy procesów
- System plików proc
- Metody komunikacji międzyprocesowej
- Laboratoria
Procesy II
- Używanie system() do tworzenia procesu
- Używanie fork() do tworzenia procesu
- Używanie exec() do tworzenia procesu
- Używanie clone()
- Wyjście
- Konstruktory i destruktory
- Oczekiwanie
- Procesy demoniczne
- Laboratoria
Potoki i FIFO
- Potoki i komunikacja międzyprocesowa
- popen() i pclose()
- pipe()
- Nazwane potoki (FIFO)
- splice(), vmsplice() i tee()
- Laboratoria
Asynchroniczne I/O**
- Co to jest asynchroniczne I/O?
- API Asynchronicznego I/O POSIX
- Implementacja w Linuxie
- Laboratoria
Sygnały I
- Co to są sygnały?
- Dostępne sygnały
- Rozsyłanie sygnałów
- Alarm, pauzowanie i sen
- Ustawienie obsługiwacza sygnałów
- Zbiory sygnałów
- sigaction()
- Laboratoria
Sygnały II
- Ponowne wejście i obsługiwacze sygnałów
- Skoki i nie-lokalne powroty
- siginfo i sigqueue()
- Sygnały czasu rzeczywistego
- Laboratoria
POSIX Wątki I
- Wielowątkowość w Linuxie
- Podstawowa struktura programu
- Tworzenie i niszczenie wątków
- Sygnały i wątki
- Forkowanie vs. Wątkowość
- Laboratoria
POSIX Wątki II
- Blokady i warunki wyścigu
- Operacje z mutexami
- Semafory
- Futexy
- Operacje warunkowe
- Laboratoria
Sieciowanie i gniazda
- Warstwy sieciowe
- Co to są gniazda?
- Gniazda strumieniowe
- Gniazda datagramowe
- Surowe gniazda
- Kolejność bajtów
- Laboratoria
Gniazda Adresy i hosty
- Struktury adresów gniazd
- Konwersja adresów IP
- Informacje o hoście
- Laboratoria
Gniazda Porty i protokoły
- Informacje o portach usługowych
- Informacje o protokołach
- Laboratoria
Gniazda Klienty
- Podstawowa sekwencja klienta
- socket()
- connect()
- close() i shutdown()
- Klienci UNIX
- Klient internetowy
- Laboratoria
Gniazda Serwery
- Podstawowa sekwencja serwera
- bind()
- listen()
- accept()
- Serwery UNIX
- Serwery internetowe
- Laboratoria
Gniazda Operacje wejścia/wyjścia
- write(), read()
- send(), recv()
- sendto(), recvfrom()
- sendmsg(), recvmsg()
- sendfile()
- socketpair()
- Laboratoria
Gniazda Opcje
- Pobieranie i ustawianie opcji gniazd
- fcntl()
- ioctl()
- getsockopt() i setsockopt()
- Laboratoria
Netlink gniazda **
- Co to są gniazda netlink?
- Otwieranie gniazda netlink
- Wiadomości netlink
- Laboratoria
Gniazda Mnożenie i współbieżne serwery
- Wielokrotnie i asynchroniczne operacje I/O gniazd
- select()
- poll()
- pselect() i ppoll()
- epoll
- Sterowanie sygnałami i asynchroniczne I/O
- Współbieżne serwery
- Laboratoria
Komunikacja międzyprocesowa
- Metody IPC
- POSIX IPC
- System V IPC **
- Laboratoria
Pamięć wspólna
- Co to jest pamięć wspólna?
- POSIX pamięć wspólna
- System V pamięć wspólna **
- Laboratoria
Semafory
- Co to jest semafor?
- POSIX semafory
- System V semafory **
- Laboratoria
Kolejki komunikatów
- Co to są kolejki komunikatów?
- POSIX kolejki komunikatów
- System V kolejki komunikatów **
- Laboratoria
Wymagania
Ten kurs jest przeznaczony dla doświadczonych programistów. Studenci powinni być biegli w programowaniu w języku C i znać podstawowe Linux narzędzia i edytory tekstu.
Uczestnicy
Ten kurs jest przeznaczony dla doświadczonych programistów. Studenci powinni być biegli w programowaniu w języku C i znać podstawowe Linux narzędzia i edytory tekstu.
Poziom doświadczenia: Średniozaawansowany
28 godzin