Dziękujemy za wysłanie zapytania! Jeden z członków naszego zespołu skontaktuje się z Państwem wkrótce.
Dziękujemy za wysłanie rezerwacji! Jeden z członków naszego zespołu skontaktuje się z Państwem wkrótce.
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 znani z podstawowych narzędzi Linux oraz edytorów tekstu.
Grupa docelowa
Ten kurs jest przeznaczony dla doświadczonych programistów. Studenci powinni być biegli w programowaniu w języku C i znani z podstawowych narzędzi Linux oraz edytorów tekstu.
Poziom doświadczenia: Średniozaawansowany
28 godzin