Sistemski softver
U ovom snimku ćemo se upoznati sa Sistemskim softverom, izbornim predmetom u šestom semestru na SI, i obaveznim na RTI.
Korisne veze
- Stara stranica predmeta (rokovi)
- Compiler Explorer (koristan alat pri vežbanju zadataka iz dekompilacije za prvi kolokvijum)
- ETF SI (rokovi, beleške)
- ETF Materijali (Box) (rokovi, nastavni materijal, beleške)
Nastava
Najveći deo gradiva se obrađuje na vežbama i na ispite i kolokvijume/laboratorijsku vežbu dolaze zadaci sa vežbi. Samim tim, predavanja nisu naročitno bitna, osim u prvom delu kada se obrađuje arhitektura x86. Na predavanjima se obrađuju:
- Asembler, reprezentacija tipova, vrste x86 asemblerskih instrukcija, kodovi uslova, set instrukcije, programski skokovi, petlje, pozivanje potprograma i stek okviri.
- GNU alati, razvoj programa uz pomoć GDB debagera.
- Konstrukcija asemblera, dvoprolazni i jednoprolazni asembler.
- Linkeri, relokacije, statičke biblioteke, ELF format, punioci, deljene biblioteke, PIE.
- Emulatori, interpretativni emulatori, statička i dinamička rekompilacija, JIT prevođenje.
- Makroprocesori, C pretprocesor.
Predavanja se prethodnih par godina nisu održavala uživo i samim tim raspored gradiva se ne slaže sa vežbama i kolokvijumima.
Projekat
Projekat iz Sistemskog softvera je obavezan i sastoji se od 3 programa koji čine zajednički skup alata za razvoj softvera na apstraktnom računarskom sistemu. Programi su redom asembler, linker i emulator. Ocenjivanje se deli na 3 nivoa:
- Nivo A koji nosi 30 poena
- Nivo B koji nosi 35 poena i
- Nivo C koji nosi 40 poena.
U svakom nivou je neophodno razviti sva 3 programa i nivoi iznad A sadrže dodatne funkcionalnosti. Postavka se objavljuje na Moodle platformi.
Traženi jezik za razvoj projekta je C/C++. Preporučeno okruženje za razvoj je Visual Studio Code na Ubuntu virtuelnoj mašini koja je dostupna na Moodle platformi. Za kontrolu generisanja koda preporučen je GNU make. Dozvoljeno je koristiti spoljašnje biblioteke koje ne implementiraju srž projekta (generisanje koda, povezivanje, relociranje, emulacija i sl.), ali nije preporučeno jer je možda neophodno instalirati njih na virutelnu mašinu za odbranu, a to zahteva dozvolu predmetnog asistenta na samoj odbrani.
Projekat se testira pomoću javnih testova (dostupni na Moodle kursu predmeta), koji se pokreću za željeni nivo i sve niže nivoe (moguće je uz odobrenje asistenta spustiti nivo na odbrani). Pored pokretanja javnih testova, odbranu čini i modifikacija koja se testira tajnim testovima. Potrebno je da svi testovi rade kako bi odbrana projekta bila uspešna.
Laboratorijske vežbe
Laboratorijska vežba se održava samo na RTI odseku, i ekvivalentna je prvom kolokvijumu na SI odseku.
Ispitni rokovi
Stari ispitni rokovi mogu se pronaći na staroj stranici predmeta, u odeljku za korisne veze. Novi ispitni rokovi nisu dostupni sa stranice predmeta, ali se mogu naći na nekom od drajvova u istom tom odeljku. Zvanična rešenja se ne objavljuju.
Pre prvog kolokvijuma obično izađu probni testovi za teoriju i zadatak. Trenutno su dostupni probni testovi 2022. godine.
Sledeći rokovi su sakupljeni na SI Wiki:
- K1 2022
- K1 Avgust 2020
- K1 Septembar 2020
- K1 Oktobar 2020
- K2 2022
- Jun 2022
- Avgust 2022
- Septembar 2022
- Februar 2023
- K 2023
Ukoliko želite da dodate rok, posetite stranicu za pravljenje roka.
Način ocenjivanja
- — bodovi sa prvog kolokvijuma, ima jedan termin za nadoknadu ili popravku (0-20)
- — bodovi sa drugog kolokvijuma, nadoknađuje se u okviru ispita (0-20)
- — bodovi sa projektnog zadatka (0-40)
- — bodovi sa ispita, uslov za izlazak je preko 30 bodova na projektnom zadatku i prvom kolokvijumu
- Konačni bodovi:
Bodovi | ||||||
---|---|---|---|---|---|---|
Ocena | 5 | 6 | 7 | 8 | 9 | 10 |
Potrebna pomoć
- Na ovom predmetu fale postavke rokova. Pomozite vikiju pamćenjem/prepisivanjem rokova i postavljanjem na viki.
- Na ovom predmetu fale rešenja rokova. Pomozite vikiju rešavanjem rokova i postavljanjem njihovih rešenja na viki.
- Od koristi bi bio vodič za prvi kolokvijum, sa objašnjenjima kako se određene strukture u C mogu preslikati u asembler.