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

Rozdelenie na cvičenia

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: 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 a z projektu. 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.

Výsledná známka sa určí podľa modelu.

Rozvrh:
Prednáška: utorok 8:10 2h v A
Cvičenia: streda 12:20, 14:00 2h v H3

Testovač pre úlohy na cvičeniach

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

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 je nutnou podmienkou pre lepšie známky (je súčasťou hodnotenia), odovzdať ho treba do konca 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ť.