Bądźmy w kontakcie

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

Liczba uczestników


Cena za uczestnika (netto)

Propozycje terminów

Powiązane Kategorie