Linux – vývoj nízkoúrovňových služeb a knihoven (LNXPR1)
Unixové systémy, Linux - programování
Programy na Linuxu a dalších unixových systémech komunikují prostřednictvím jádra operačního systému a v některých případech pomocí sdílené paměti. Systémová standardní knihovna podle standardu POSIX nabízí víc než jen ISO C. Pokud vyvíjíte čistě pro Linux, máte navíc k dispozici velmi praktická rozšíření.
Meziprocesová komunikace podle POSIX a System V nabízí fronty zpráv, semafory a již zmíněnou sdílenou paměť. Mezi další komunikační prostředky patří síťové i lokální sockety a roury, které navíc umožňují posílat si souborové deskriptory dalších prostředků. Linux pak pomáhá do smyčky událostí integrovat i ošetření signálů a časové události.
Tento kurz lze objednat v původní variantě s jazykem C, ale není problém si domluvit C++ nebo Rust, případně i Python. Na požádání lze připravit variantu pro jiný operační systém než Linux.
TOTO ŠKOLENÍ VÁM POMŮŽE:
- Seznámit se s fungováním operačního systému z pohledu uživatelského programu
- Naučit se pracovat s komunikačními prostředky unixových operačních systémů
- Poznat, čím vším nám Linux ulehčuje život oproti samotnému POSIX standardu
KDO BY SE MĚL KURZU ZÚČASTNIT?
- Vývojáři software a systémových nástrojů pro Linuxové embedded systémy a servery
- Tvůrci knihoven a frameworků pro integraci software na unixových platformách
- Zájemci o fungování operačních systémů a jejich služeb pro uživatelský prostor
Privátní školení a termíny na míru
Toto téma je možné zrealizovat pouze jako privátní, a to nejen formou uzavřeného firemního kurzu, ale také jako individuální konzultaci pro jednotlivce.
V případě kurzu na míru je níže uvedená osnova pouze inspirací. Finální obsah vzdělávání, jeho délka i termíny budou přizpůsobeny konkrétním vstupním znalostem, potřebám a cílům účastníků.
Cenovou nabídku vám rádi připravíme na základě vstupů zaslaných e-mailem nebo zadaných prostřednictvím poptávkového formuláře. Cena privátního školení vychází z náročnosti požadované obsahové náplně školení, časového rozsahu a celkového počtu přihlášených osob.
KDE A KDY KURZ PROBÍHÁ?
Kontaktujte nás
S námi
máte na výběr: Přijďte na
kurz osobně do naší učebny, nebo se ke kurzu
připojte online. Pokud preferujete online formu, uveďte prosím do poznámky v objednávce "Připojím se virtuálně".
Více informací k hybridní formě školení
naleznete zde.
Náplň kurzu:
Skrýt detaily
-
Rozhraní operačního systému
-
Systémová volání (syscalls)
-
Standardní knihovna a POSIX.1-2024
-
Nástroje pro trasování komunikace s jádrem
-
Chyby při systémových voláních
-
Práce s fatálními a opravitelnými chybami
-
Ošetření a propagace chyb od operačního systému
-
Systémová volání přerušená signálem
-
Komunikace, vstup a výstup
-
Standardní proudy (stdin, stdout, stderr)
-
Souborové deskriptory (file descriptors)
-
Bufferované proudy v C, C++ a Rustu
-
Souborový systém a adresářová struktura
-
Operace souborového systému
-
Relativní cesty a aktuální adresář
-
Oprávnění a vlastnosti souborů
-
Práce se soubory
-
Otevření pro čtení nebo pro zápis
-
Hybridní přístup k souborům
-
Workaroundy absence transakcí
-
Hodiny a měření času
-
Aktuální čas a časové intervaly
-
Časové signály, události a
timerfd
-
Čekání a pozastavení procesu (wait)
-
Správa procesů a vláken
-
Funkce
fork, exec a spawn
-
Odpovídající systémová volání
-
Standardní vlákna a
pthreads
-
Sdílení prostředků
-
Při volání
fork nebo clone
-
Uzavření či zachování prostředků přes
exec
-
Návratová hodnota programu
-
Prostředí a shell
-
Skupiny procesů, a procesy na pozadí
-
Systémové služby a service manager
-
Kombinace procesů spuštěných ze shellu
-
Úlohy operačního systému
-
Rozdíl mezi procesem a vláknem (LWP)
-
Volba mezi multiprocesingem a multithreadingem
-
Vlákna a procesy v C, C++, Rustu a Pythonu
-
Signály a jejich zpracování
-
Asynchronní zpracování signálů
-
Synchronní zpracování pomocí
timerfd
-
Komunikace pomocí real-time signálů
-
Blokující a neblokující komunikace
-
Když nechceme uspávat proces v syscallech
-
Připravenost souborových deskriptorů (readiness)
-
Místo blokování se vrací
EWOULDBLOCK
-
Multiplexování vstupu a výstupu
-
Čekání na celou sadu možných událostí
-
Zdrojem událostí jsou souborové deskriptory
-
Externí knihovny na správu událostí
-
Základní meziprocesová komunikace
-
Roury mezi procesy (pipe)
-
Pojmenované roury v souborovém systému (named pipe)
-
Řešení nefunkčních rour a
SIGPIPE
-
Fronty zpráv
-
POSIX a System V varianty
-
Více odesilatelů a příjemců
-
V něčem flexibilnější než sockety
-
Lokální sockety
-
Forkování procesů a
socketpair
-
Lokální klient-server architektura
-
Typy socketů a jejich omezení
-
Síťové sockety
-
Klient-server architektura
-
Internet a protokol TCP/IP
-
Workaround s
SO_REUSEADDR
-
Strategie obsluhy spojení
-
Forkování procesů či startování vláken
-
Použití poolu procesů či threadů
-
Neblokující sockety a fronta událostí
-
Jmenné služby
-
Doménová jména a
getaddrinfo
-
Knihovna
glibc a /etc/nsswitch.conf
-
Omezení, chyby a alternativy
-
Správa paměti a mapování
-
Dynamická alokace paměti (heap, alloca)
-
Mapování souborů v souborovém systému
-
Hranice mezi kernelem a uživatelským prostorem
-
Sdílená paměť
-
Automaticky v případě vláken
-
Explicitně POSIX nebo System V (shm)
-
Jediná komunikace, která nejde přes jádro
-
Posílání souborových deskriptorů
-
Jádro umožňuje předávat souborové deskriptory
-
Lze například použít rouru nebo lokální socket
-
Posílat pak lze libovolný souborový deskriptor.
-
Synchronizační nástroje
-
Nástroje knihovny
pthread (mutex, condition variable)
-
POSIX a System V semafory a
eventfd
-
Atomické proměnné a lock-free operace
-
Možnosti debugování
-
Systémové volání
ptrace
-
Interaktivní debuggery jako GDB
-
Tracery jako
strace
-
Sdílené dynamické knihovny
-
Linkování knihoven při startu programu
-
Explicitní otevírání přes dlopen
-
Závislosti mezi knihovnami
-
Bonus: Optimalizované datové toky
-
Optimalizovaný polling přes
epoll
-
Zero-copy techniky v kernelu
-
Mechanismus
io_uring
-
Předpokládané znalosti:
-
Dobrá znalost programování v jazyce C
-
Doporučený předchozí kurz:
-
Linux – základy administrace (LNX1)
-
Doporučený následný kurz:
-
Rozhraní operačního systému na Linux a POSIX platformách (LNXPR2)
-
Časový rozvrh:
-
3 dny (9:00hod. - 17:00hod.)
Vybrané zákaznické reference
ComAp a.s., Jan T.
Linux – vývoj nízkoúrovňových služeb a knihoven (
LNXPR1)
"Lektor ma viditelne vysokou odbornost a dobre pedagogicke schopnosti. Prostor pro zlepseni vidim ve vyjadrovani, napriklad mene castem pouzivani obratu "...jak kdyby.." :-)"