Sistemski softver

Izvor: SI Wiki
Pređi na navigaciju Pređi na pretragu

U ovom snimku ćemo se upoznati sa Sistemskim softverom, izbornim predmetom u šestom semestru na SI, i obaveznim na RTI.

Korisne veze

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:

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.