GNU programování
Kód | Zakončení | Kredity | Rozsah |
---|---|---|---|
11GNU | KZ | 4 | 2P+2C |
- Garant předmětu:
- Martin Dráb
- Přednášející:
- Martin Dráb
- Cvičící:
- Předmět zajišťuje:
- katedra inženýrství pevných látek
- Anotace:
-
Účelem (převážně) přednášek a (občasných) cvičení je seznámit studenty s prostředím systému Linux a v něm používanými GNU utilitami a programovacími nástroji do té míry, aby byli schopni těchto nástrojů využívat k vytváření skriptů a programů pro zpracování naměřených či simulovaných dat pro svoje fyzikální experimenty s použitím fakultního Hyperion clusteru (přičemž naučené dovednosti lze samozřejmě aplikovat na libovolný Linuxový systém). K tomu, aby byli studenti schopni psát efektivní kód je ovšem potřeba vědět jak dnešní počítače vnitřně fungují, takže první zhruba polovina kurzu je věnována přehledu principů vnitřního fungování počítače (od hardwaru, přes operační systém až po aplikace).
- Požadavky:
-
Vypracování zápočtové úlohy zahrnující jak buildování projektu, program v C i script v BASHi s použitím dalších GNU utilit. Primárně zaměřeno na zpracování experimentálních dat. Po úspěšném odevzdání vyhovovující zápočtové úlohy následuje osobní diskuse nad řešením a dotazy na teoretické věci z první zhruba poloviny přednášek. Na základě toho všeho pak následuje udělení klasifikovaného zápočtu.
- Osnova přednášek:
-
1. Úvod, fyzická ukázka HW, komponenty, sběrnice.
2. Procesor, jádro, vlákno, RISC/CISC, instrukce, pipeline, registry, klopné obvody, Booleova algebra.
3. Registry x86-64, IEEE754, cache, cache-line, FIFO/LIFO.
4. RAM (topologie/organizace, řádky, sloupce, banky, ranky, CL, multi-channel, refresh, princip).
5. Virtualizace paměti, MMU, page-table, memory mapping, TLB, adresové prostory, swap, shared memory.
6. I/O, MMIO, IOMMU, zařízení, GPU, APU, přerušení a výjimky, znaková a bloková zařízení.
7. Protection mode, protection rings, proces, vlákno, kontexty, user-space, kernel-space, context switching.
8. Bloková zařízení, disky, sektor, CHS, LBA, AF, 4kn/512e, RAID, filesystemy, soubor, adresář, FAT, journal,
inode, b-tree, symlink, hardlink, snapshots.
9. Boot, MBR/GPT, partition table, (U)EFI/Legacy, BIOS, kernel architecture, Linux distribuce, virtualizace.
10. Úvod do Linuxu, Linux vs. Windows, UNIX/Windows time, EPOCH, práva, file attributy, UID, GID, PID, FHS.
11. Rozdělení programovacích jazyků, princip překladače.
12. Pokračování principu překladače (GIMPLE, RTL, optimalizace, frontend, backend, LTO, PGO).
13. Dokončení principu překladače, Princip interpreteru.
14. Přihlášení k Linuxu, vim, shell, BASH, man, info, základní příkazy a utility pro práci se soubory.
15. BASH: proměnné, expanze, stdin/stdout/stderr, přesměrování, subshell, pole.
16. BASH: příkazy, výrazy, pipe, speciální výrazy a symboly, aritmetika, psaní scriptů.
17. BASH: další příkazy, ukázky.
18. grep, regulární výrazy, sed: princip a většina příkazů.
19. sed: příkaz 's' a adresování; C: úvod, standardy, libc, základní typy, ukazatele, void pointer, pole.
20. C: složené typy, makra, pointerová aritmetika, kvalifikátory, dynamicky alokovaná paměť,
garbage collector, reference counting.
21. C: operátory a jejich priority, atomické operace, příklady kódu
22. C: příklady kódu, práce se soubory.
23. GNU Make: Úvod, Makefile, pravidla, předpoklady, statické a dynamické knihovny, ruční linkování, ukázky
24. SW projekty, buildovací systémy, Autotools (autoconf, automake, m4, libtool), příklady
(Ostatní přednášky většinou odpadnou v průběhu semestru, jinak ale lze pokračovat k úvodu do paralelního programování a práci s clusterem. Volitelně, dle času.)
- Osnova cvičení:
-
(Cvičení nejsou oddělená od přednášek a probíhají v návaznosti na ně dle potřeby.)
- Cíle studia:
- Studijní materiály:
-
Povinná literatura:
[1] C. Alvin: Computer Programming: Learn Any Programming Language in 2 Hours. CreateSpace Independent Publishing Platform, 2018. ISBN: 1985644916, 9781985644915
[2] T. Roughgarden: Algorithms Illuminated. Soundlikeyourself Publishing, LLC 2019, ISBN-13: 978-0999282946.
Doporučená literatura:
[1] M. Barr, A. Massa: Programming Embedded Systems: With C and GNU Development Tools. 2nd ed., OReilly Media, Sebastopol CA USA 2007, ISBN-13: 978-0596009830
- Poznámka:
- Rozvrh na zimní semestr 2025/2026:
- Rozvrh není připraven
- Rozvrh na letní semestr 2025/2026:
- Rozvrh není připraven
- Předmět je součástí následujících studijních plánů: