Plan Szkolenia

Wprowadzenie

  • Cele
  • Kim jesteś
  • Fundacja Linux
  • Szkolenie Linux Foundation
  • Programy certyfikacji i odznaki cyfrowe
  • Linux Dystrybucje
  • Platformy
  • Przygotowanie systemu
  • Używanie i pobieranie maszyny wirtualnej
  • Rzeczy zmieniają się w Linux

Wstęp

  • Procedury
  • Standardy i LSB

Jak pracować w projektach OSS **

  • Przegląd sposobów prawidłowego wnoszenia wkładu
  • Pozostań blisko głównej linii dla bezpieczeństwa i jakości
  • Przestudiowanie i zrozumienie DNA projektu
  • Ustalenie, co chcesz zrobić Scratch
  • Identyfikacja opiekunów oraz ich przepływów pracy i metod
  • Uzyskaj wczesny wkład i pracuj otwarcie
  • Przyczyniaj się do przyrostowych bitów, a nie dużych zrzutów kodu
  • Zostaw swoje ego za drzwiami: Don’t Be ThinSkinned
  • Bądź cierpliwy, rozwijaj 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
  • Ładowarka z dynamicznym łączeniem
  • Laboratoria

Marka

  • Korzystanie z plików make i makefile
  • Tworzenie dużych projektów
  • Bardziej skomplikowane reguły
  • Wbudowane reguły
  • Laboratoria

Kontrola źródła

  • Kontrola źródła
  • RCS i CVS
  • Subversion
  • git
  • Laboratoria

Debugowanie i zrzuty rdzenia

  • gdb
  • Czym są pliki Core Dump?
  • Tworzenie zrzutów podstawowych
  • Badanie zrzutów podstawowych
  • Laboratoria

Narzędzia do debugowania

  • Uzyskiwanie czasu
  • Profilowanie i wydajność
  • valgrind
  • Laboratoria

Wywołania systemowe

  • Wywołania systemowe a funkcje biblioteczne
  • Jak wykonywane są wywołania systemowe
  • Wartości zwracane i numery błędów
  • Laboratoria

Pamięć Management i alokacja

  • Pamięć Management
  • Dynamiczna alokacja
  • Dostrajanie funkcji malloc()
  • Blokowanie stron
  • Laboratoria

Pliki i systemy plików w Linux**.

  • Pliki, katalogi i urządzenia
  • Wirtualny system plików
  • System plików ext2/ext3
  • Systemy plików z dziennikiem
  • System plików ext4/
  • Laboratoria

Plik we/wy

  • Pliki we/wy systemu UNIX
  • Otwieranie i zamykanie plików
  • Odczyt, zapis i wyszukiwanie
  • Pozycyjne i wektorowe operacje wejścia/wyjścia
  • Standardowa biblioteka we/wy
  • Obsługa dużych plików (LFS)
  • Laboratoria

Zaawansowane operacje na plikach

  • Funkcje statystyczne
  • Funkcje katalogów
  • inotify
  • Mapowanie pamięci
  • flock() i fcntl()
  • Tworzenie plików tymczasowych
  • Inne wywołania systemowe
  • Laboratoria

Procesy  I

  • Czym jest proces?
  • Limity procesów
  • Grupy procesów
  • System plików proc
  • Metody międzyprocesowe Communication
  • Laboratoria

Procesy  II

  • Użycie funkcji system() do utworzenia procesu
  • Użycie funkcji fork() do utworzenia procesu
  • Użycie exec() do utworzenia procesu
  • Użycie funkcji clone()
  • Wyjście
  • Konstruktory i destruktory
  • Oczekiwanie
  • Procesy demona
  • Laboratoria

Pipes and Fifos

  • Pipes i InterProcess Communication
  • popen() i pclose()
  • pipe()
  • Nazwane potoki (FIFO)
  • splice(), vmsplice() i tee()
  • Laboratoria

Asynchroniczne wejścia/wyjścia**

  • Czym jest asynchroniczne we/wy?
  • Interfejs API asynchronicznego wejścia/wyjścia POSIX
  • Linux Implementacja
  • Laboratoria

Sygnały  I

  • Czym są sygnały?
  • Dostępne sygnały
  • Wysyłanie sygnałów
  • Alarmy, wstrzymanie i uśpienie
  • Konfigurowanie programu obsługi sygnałów
  • Zestawy sygnałów
  • sigaction()
  • Laboratoria

Sygnały  II

  • Reentrancy i obsługa sygnałów
  • Skoki i zwroty nielokalne
  • siginfo i sigqueue()
  • Sygnały czasu rzeczywistego
  • Laboratoria

Wątki POSIX  I

  • Wielowątkowość w Linux
  • Podstawowa struktura programu
  • Tworzenie i niszczenie wątków
  • Sygnały i wątki
  • Rozwidlanie a wątkowanie
  • Laboratoria

Wątki POSIX  II

  • Blokady i warunki wyścigu
  • Operacje na muteksach
  • Semafory
  • Futexy
  • Operacje warunkowe
  • Laboratoria

Networking i Gniazda

  • Networking Warstwy
  • Czym są gniazda?
  • Gniazda strumieniowe
  • Gniazda datagramów
  • Gniazda nieprzetworzone
  • Porządkowanie 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 porcie usługi
  • Informacje o protokole
  • Laboratoria

Gniazda  Klienci

  • Podstawowa sekwencja klienta
  • socket()
  • connect()
  • close() i shutdown()
  • Klient UNIX
  • Klient internetowy
  • Laboratoria

Gniazda  Serwery

  • Podstawowa sekwencja serwera
  • bind()
  • listen()
  • accept()
  • Serwer UNIX
  • Serwer internetowy
  • Laboratoria

Gniazda  Operacje wejścia/wyjścia

  • write(), read()
  • send(), recv()
  • sendto(), recvfrom()
  • sendmsg(), recvmsg()
  • sendfile()
  • socketpair()
  • Labs

Gniazda  Opcje

  • Pobieranie i ustawianie opcji gniazda
  • fcntl()
  • ioctl()
  • getsockopt() i setsockopt()
  • Laboratoria

Gniazda Netlink**

  • Czym są gniazda netlink?
  • Otwieranie gniazda netlink
  • Komunikaty netlink
  • Laboratoria

Gniazda  Multipleksowanie i serwery współbieżne

  • Wielokrotne i asynchroniczne wejścia/wyjścia gniazda
  • select()
  • poll()
  • pselect() i ppoll()
  • epoll
  • I/O sterowane sygnałami i asynchroniczne
  • Serwery współbieżne
  • Laboratoria

Inter Process Communication

  • Metody IPC
  • POSIX IPC
  • System V IPC**
  • Laboratoria

Pamięć współdzielona

  • Czym jest pamięć współdzielona?
  • Pamięć współdzielona POSIX
  • Pamięć współdzielona w systemie V**
  • Laboratoria

Semafory

  • Czym jest semafor?
  • Semafory POSIX
  • Semafory systemu V**
  • Laboratoria

Ogony wiadomości

  • Czym są kolejki komunikatów?
  • Kolejki komunikatów POSIX
  • Kolejki komunikatów systemu V**
  • 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