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
- Kim jesteś
- The Linux Foundation
- Szkolenia Linux Foundation
- Programy certyfikacji i cyfrowe odznaki
- Dystrybucje Linuksa
- Platformy
- Przygotowanie systemu
- Korzystanie i pobieranie maszyny wirtualnej
- Rzeczy zmieniają się w Linuksie
Wstęp
- Procedury
- Standardy i LSB
Jak pracować w projektach OSS **
- Przegląd, jak właściwie przyczyniać się
- Pozostań blisko głównej linii dla bezpieczeństwa i jakości
- Przeanalizuj i zrozum DNA projektu
- Określ, co chcesz osiągnąć
- Zidentyfikuj opiekunów i ich przepływy pracy oraz metody
- Uzyskaj wczesne informacje i pracuj otwarcie
- Przyczyniaj się małymi krokami, a nie dużymi fragmentami kodu
- Zostaw ego za drzwiami: nie bądź przewrażliwiony
- Bądź cierpliwy, buduj długoterminowe relacje, bądź pomocny
Kompilatory
- GCC
- Inne kompilatory
- Główne opcje gcc
- Preprocesor
- Zintegrowane środowiska programistyczne (IDE)
- Laboratoria
Biblioteki
- Biblioteki statyczne
- Biblioteki współdzielone
- Łączenie z bibliotekami
- Dynamiczny ładownik bibliotek
- Laboratoria
Make
- Korzystanie z make i Makefiles
- Budowanie dużych projektów
- Bardziej skomplikowane reguły
- Wbudowane reguły
- Laboratoria
Kontrola wersji
- Kontrola wersji
- RCS i CVS
- Subversion
- git
- Laboratoria
Debugowanie i zrzuty pamięci
- gdb
- Czym są pliki zrzutu pamięci?
- Generowanie zrzutów pamięci
- Analiza zrzutów pamięci
- Laboratoria
Narzędzia do debugowania
- Pomiar czasu
- Profilowanie i wydajność
- valgrind
- Laboratoria
Wywołania systemowe
- Wywołania systemowe vs. funkcje biblioteczne
- Jak są wykonywane wywołania systemowe
- Wartości zwracane i numery błędów
- Laboratoria
Zarządzanie pamięcią i alokacja
- Zarządzanie pamięcią
- Alokacja dynamiczna
- Dostrajanie malloc()
- Blokowanie stron
- Laboratoria
Pliki i systemy plików w Linuksie **
- Pliki, katalogi i urządzenia
- Wirtualny system plików
- System plików ext2/ext3
- Systemy plików z dziennikiem
- System plików ext4/
- Laboratoria
Wejście/wyjście plików
- Wejście/wyjście plików UNIX
- Otwieranie i zamykanie
- Czytanie, pisanie i przemieszczanie
- Pozycyjne i wektorowe I/O
- Standardowa biblioteka I/O
- Obsługa dużych plików (LFS)
- Laboratoria
Zaawansowane operacje na plikach
- Funkcje Stat
- Funkcje katalogowe
- inotify
- Mapowanie pamięci
- flock() i fcntl()
- Tworzenie plików tymczasowych
- Inne wywołania systemowe
- Laboratoria
Procesy I
- Czym jest proces?
- Ograniczenia procesów
- Grupy procesów
- System plików proc
- Metody komunikacji międzyprocesowej
- Laboratoria
Procesy II
- Tworzenie procesu za pomocą system()
- Tworzenie procesu za pomocą fork()
- Tworzenie procesu za pomocą exec()
- Użycie clone()
- Zakończenie
- Konstruktory i destruktory
- Oczekiwanie
- Procesy demonów
- Laboratoria
Potoki i fifo
- Potoki i komunikacja międzyprocesowa
- popen() i pclose()
- pipe()
- Potoki nazwane (FIFO)
- splice(), vmsplice() i tee()
- Laboratoria
Asynchroniczne I/O**
- Czym jest asynchroniczne I/O?
- API asynchronicznego I/O POSIX
- Implementacja w Linuksie
- Laboratoria
Sygnały I
- Czym są sygnały?
- Dostępne sygnały
- Wysyłanie sygnałów
- Alarmy, pauza i sen
- Konfigurowanie obsługi sygnałów
- Zbiory sygnałów
- sigaction()
- Laboratoria
Sygnały II
- Reentrancja i obsługa sygnałów
- Skoki i powroty nie lokalne
- siginfo i sigqueue()
- Sygnały czasu rzeczywistego
- Laboratoria
Wątki POSIX I
- Wielowątkowość w Linuksie
- Podstawowa struktura programu
- Tworzenie i niszczenie wątków
- Sygnały i wątki
- Forking vs. wątki
- Laboratoria
Wątki POSIX II
- Zakleszczenia i warunki wyścigu
- Operacje na muteksach
- Semafory
- Futexy
- Operacje warunkowe
- Laboratoria
Sieci i gniazda
- Warstwy sieciowe
- Czym są gniazda?
- Gniazda strumieniowe
- Gniazda datagramowe
- Gniazda surowe
- Kolejność bajtów
- Laboratoria
Adresy gniazd i hosty
- Struktury adresów gniazd
- Konwersja adresów IP
- Informacje o hoście
- Laboratoria
Porty i protokoły gniazd
- Informacje o portach usług
- Informacje o protokołach
- Laboratoria
Klienci gniazd
- Podstawowa sekwencja klienta
- socket()
- connect()
- close() i shutdown()
- Klient UNIX
- Klient internetowy
- Laboratoria
Serwery gniazd
- Podstawowa sekwencja serwera
- bind()
- listen()
- accept()
- Serwer UNIX
- Serwer internetowy
- Laboratoria
Operacje wejścia/wyjścia gniazd
- write(), read()
- send(), recv()
- sendto(), recvfrom()
- sendmsg(), recvmsg()
- sendfile()
- socketpair()
- Laboratoria
Opcje gniazd
- Pobieranie i ustawianie opcji gniazd
- fcntl()
- ioctl()
- getsockopt() i setsockopt()
- Laboratoria
Gniazda netlink**
- Czym są gniazda netlink?
- Otwieranie gniazda netlink
- Wiadomości netlink
- Laboratoria
Multipleksowanie i serwery współbieżne gniazd
- Multipleksowane i asynchroniczne I/O gniazd
- select()
- poll()
- pselect() i ppoll()
- epoll
- Sygnałowe i asynchroniczne I/O
- Serwery współbieżne
- Laboratoria
Komunikacja międzyprocesowa
- Metody IPC
- IPC POSIX
- System V IPC**
- Laboratoria
Pamięć współdzielona
- Czym jest pamięć współdzielona?
- Pamięć współdzielona POSIX
- Pamięć współdzielona System V**
- Laboratoria
Semafory
- Czym jest semafor?
- Semafory POSIX
- Semafory System V**
- Laboratoria
Kolejki komunikatów
- Czym są kolejki komunikatów?
- Kolejki komunikatów POSIX
- Kolejki komunikatów System V**
- Laboratoria
Wymagania
Ten kurs jest przeznaczony dla doświadczonych programistów. Uczestnicy powinni biegle posługiwać się językiem C oraz znać podstawowe narzędzia i edytory tekstu w systemie Linux.
Grupa docelowa
Ten kurs jest przeznaczony dla doświadczonych programistów. Uczestnicy powinni biegle posługiwać się językiem C oraz znać podstawowe narzędzia i edytory tekstu w systemie Linux.
Poziom zaawansowania: Średnio zaawansowany
28 godzin