Systémové programovanie

Prednáša: RNDr. Jaroslav Janáček, PhD., KI, M-253, jaroslav.janacek@uniba.sk
Cvičí: Ing. Dušan Bernát, PhD., KI, M-252, dusan.bernat@fmph.uniba.sk
Rozsah: 2+2 hodiny týždenne
Forma výuky: prednášky, cvičenia (práca na projekte)
Predpoklady: princípy počítačov, programovanie, základy jazyka C

Náplň:
1. všeobecná časť
reprezentácia údajov, assembler, typy inštrukcií, adresné módy, štruktúra programu v GNU as, linkovanie viacmodulových programov, volacie konvencie, práca so zasobníkom, knižnice, zavádzanie a spúšťanie programov.
2. IA32/Intel64
základná architektúra, registre, vybrané inštrukcie, pamäťové modely, virtuálna pamäť
3. vybrané systémové volania UNIXových systémov:
vytváranie a ukončovanie procesov, vstup/výstup, sieťová komunikácia, práca s terminálom, signály, ...

Praktické veci budú demonštrované pod OS Linux, a budú sa využívať GNU as, ld, gcc, ...

Hodnotenie: úlohy na cvičeniach, (projekt) a záverečná skúška
Skúška predstavuje 70% hodnotenia, hodnotenie práce počas semestra 30%. Hodnotenie práce počas semestra bude pozostávať z úloh na cvičeniach (20%) a z projektu (10%, podmienkou pre uznanie projektu bude dosiahnutie minimálnej hranice (predbežne 90%) z cvičení). Skúška bude mať 2 časti - písomnú a ústnu. Písomná časť bude mať formu testu s hodnotením odpovedí: nesprávna -1, nezodpovedaná 0, správna +2.

Študent, ktorý získa aspoň polovičný počet bodov, postupuje na ústnu časť skúšky. Skúšajúci môže (ale nemusí) študentovi ponúknuť známku určenú na základe písomnej časti, študent ponuku môže a nemusí akceptovať. Ak študent nedostane ponuku známky, alebo ak sa ju rozhodne neakceptovať, známka sa určí na základe ústnej skúšky v rozsahu A až FX.

Projekt sa hodnotí na trojstupňovej škále: 0(0%) - neodovzdaný alebo neakceptovateľný, 1(50%) - akceptovaný s výhradami, 2(100%) - akceptovaný bez výhrad.

Pravidlá hodnotenia cvičení:

Rozvrh:
Prednáška: utorok 8:10 2h v A
Cvičenia: streda 13:10, 14:50 2h v H6

Testovač pre úlohy na cvičeniach

Kód pre pridanie sa do tímu v MS Teams: jwubc2g

Fromulár ohľadom cvičení

Materiály:
Prednášky
Zhrnutie IA32
Rýchlokurz programovania v C
RNDr. Vanda Hambálková: Systémové programovanie - podporný materiál k 1. časti
Intel 64 and IA-32 Architectures Software Developer's Manuals
Dokumentácia k x86-64 ABI (vrátane podrobností volacích konvencií použitých v Linux-e)

Projekty
Projekt umožňuje veľmi dobrým študentom získať ďalšie body do celkového hodnotenia, odovzdať ho treba najneskôr 2 týždne pred koncom skúškového obdobia. Odporúča sa projekt najprv skonzultovať.
Príklady tém pre projekty
Projekty je možné robiť aj na iné témy podobného charakteru a zložitosti. Taktiež je možné robiť projekty typu "Demonštrácia niektorých vlastností IA-32 v protected mode", tie je však nutné vopred odkonzultovať.