Návrh Školení

Úvod

  • Cíle
  • Kdo jste
  • Linux Foundation
  • Vzdělávání od Linux Foundation
  • Certifikační programy a digitální odznaky
  • Distribuce Linuxu
  • Platformy
  • Příprava systému
  • Použití a stažení virtuálního počítače
  • Věci se v Linuxu mění

Předpoklady

  • Postupy
  • Normy a LSB

Jak pracovat na open source projektech **

  • Přehled o tom, jak správně přispívat
  • Zůstat blízko hlavní větvi pro bezpečnost a kvalitu
  • Studovat a pochopit DNA projektu
  • Zjistit, co potřebujete opravit nebo zlepšit
  • Identifikovat správce a jejich práci a metody
  • Získat rané připomínky a pracovat otevřeně
  • Přispívat postupně, ne v masivních blozích kódu
  • Nechat vaše ego doma: Nebuďte citliví na kritiku
  • Být trpěliví, vybílit dlouhodobé vztahy a být nápomocní

Kompilátory

  • GCC
  • Jiné kompilátory
  • Hlavní možnosti gcc
  • Předprocesor
  • Integrovaná vývojová prostředí (IDE)
  • Laboratoře

Knihovny

  • Statické knihovny
  • Sdílené knihovny
  • Odkazování na knihovny
  • Dynamický návrhači spouštěče
  • Laboratoře

Make

  • Použití make a Makefiles
  • Vytváření velkých projektů
  • Složitější pravidla
  • Budované pravidla
  • Laboratoře

Řízení zdrojového kódu

  • Řízení zdrojového kódu
  • RCS a CVS
  • Subversion
  • git
  • Laboratoře

Ladění a jádra chyb (core dumps)

  • gdb
  • Co jsou soubory jádra chyb?
  • Vytváření jáder chyb
  • Pohled do jádra chyb
  • Laboratoře

Nástroje pro ladění

  • Získání času
  • Profilace a výkon
  • valgrind
  • Laboratoře

Systémové volání

  • Systémová volání vs. knihovní funkce
  • Jak se systémová volání provádějí
  • Vrácené hodnoty a chybové čísla
  • Laboratoře

Správa paměti a alokace

  • Správa paměti
  • Dynamická alokace
  • Optimalizace malloc()
  • Zamykání stránek
  • Laboratoře

Soubory a souborové systémy v Linuxu **

  • Soubory, adresáře a zařízení
  • Virtuální souborový systém
  • Souborový systém ext2/ext3
  • Journaling souborové systémy
  • Souborový systém ext4/
  • Laboratoře

Vstup/výstup (I/O) souborů

  • UNIX vstup/výstup souborů
  • Otevírání a zavírání souborů
  • Čtení, zápis a posunování ukazatele
  • Pozicovní a vektorový vstup/výstup
  • Standardní knihovna I/O
  • Podpora velkých souborů (LFS)
  • Laboratoře

Pokročilé operace se soubory

  • Funkce stat
  • Funkce adresáře
  • inotify
  • Mapování paměti
  • flock() a fcntl()
  • Vytváření dočasných souborů
  • Jiná systémová volání
  • Laboratoře

Procesy I

  • Co je to proces?
  • Omezení procesů
  • Skupiny procesů
  • Souborový systém proc
  • Metody mezi-procesní komunikace (IPC)
  • Laboratoře

Procesy II

  • Použití system() k vytvoření procesu
  • Použití fork() k vytvoření procesu
  • Použití exec() k vytvoření procesu
  • Použití clone()
  • Ukončování
  • Konstruktory a destruktory
  • Čekání
  • Démonské procesy
  • Laboratoře

Potrubí (pipes) a FIFO

  • Potrubí a mezi-procesní komunikace
  • popen() a pclose()
  • pipe()
  • Jmenovaná potrubí (FIFO)
  • splice(), vmsplice() a tee()
  • Laboratoře

Asynchronní I/O **

  • Co je to asynchronní I/O?
  • API pro asynchronní I/O POSIX
  • Linuxová implementace
  • Laboratoře

Signály I

  • Co jsou signály?
  • Dostupné signály
  • Zasílání signálů
  • Alarmy, pauzování a spánkové funkce
  • Nastavení obslužných rutin pro signály
  • Množiny signálů
  • sigaction()
  • Laboratoře

Signály II

  • Ponovatelnost a obslužné rutiny pro signály
  • Přeskoky a ne-lokální návraty
  • siginfo a sigqueue()
  • Reálné časy signály
  • Laboratoře

POSIX vlákna I

  • Vlákna v Linuxu
  • Základní struktura programu
  • Vytváření a zničování vláken
  • Signály a vlákna
  • Forkování vs. vláknování
  • Laboratoře

POSIX vlákna II

  • Zámky (deadlocks) a rizika souběžnosti (race conditions)
  • Operace na zámkách (mutexes)
  • Semafory
  • Futexy
  • Podmínkové operace
  • Laboratoře

Sítě a sokety

  • Síťová vrstvy
  • Co jsou sokety?
  • Proudové sokety (stream sockets)
  • Datagramové sokety (datagram sockets)
  • Jednoduché sokety (raw sockets)
  • Pořadí bajtů (byte ordering)
  • Laboratoře

Sokety – adresy a počítače

  • Struktury adres soken
  • Převod IP adres
  • Informace o hostiteli
  • Laboratoře

Sokety – porty a protokoly

  • Informace o portech služeb
  • Informace o protokolech
  • Laboratoře

Sokety – klienti

  • Základní posloupnost klienta
  • socket()
  • connect()
  • close() a shutdown()
  • UNIX klient
  • Internet klient
  • Laboratoře

Sokety – servery

  • Základní posloupnost serveru
  • bind()
  • listen()
  • accept()
  • UNIX server
  • Internet server
  • Laboratoře

Sokety – operace vstupu/výstupu

  • write(), read()
  • send(), recv()
  • sendto(), recvfrom()
  • sendmsg(), recvmsg()
  • sendfile()
  • socketpair()
  • Laboratoře

Sokety – možnosti

  • Získání a nastavení možností soketu
  • fcntl()
  • ioctl()
  • getsockopt() a setsockopt()
  • Laboratoře

Sokety – netlink **

  • Co jsou netlink sokety?
  • Otevření netlink soketu
  • Zprávy netlink
  • Laboratoře

Sokety – multiplexování a paralelní servery

  • Multiplexovaný a asynchronní vstup/výstup soketu
  • select()
  • poll()
  • pselect() a ppoll()
  • epoll
  • Signdrivene a asynchroní vstup/výstup
  • Paralelní servery
  • Laboratoře

Mezi-procesní komunikace (IPC)

  • Způsoby mezi-procesní komunikace (IPC)
  • POSIX IPC
  • System V IPC **
  • Laboratoře

Sdílená paměť

  • Co je to sdílená paměť?
  • POSIX sdílená paměť
  • System V sdílená paměť **
  • Laboratoře

Semafory

  • Co je to semafor?
  • POSIX semafory
  • System V semafory **
  • Laboratoře

Zprávové fronty

  • Co jsou zprávové fronty?
  • POSIX zprávové fronty
  • System V zprávové fronty **
  • Laboratoře

Požadavky

Tento kurz je určen pro zkušené programátory. Studenti by měli být schopni programovat v C a mít znalost základních linuxových utilit a textových editorů.

Cílová skupina

Tento kurz je určen pro zkušené programátory. Studenti by měli být schopni programovat v C a mít znalost základních linuxových utilit a textových editorů.

Úroveň znalostí: Střední

 28 hodiny

Počet účastníků


Cena za účastníka

Nadcházející kurzy

Související kategorie