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

Liczba uczestników


cena netto za uczestnika

Propozycje terminów

Powiązane Kategorie