Sistemsko programiranje

Cilj i ishod predmeta

Priprema studenata da postanu programeri koji mogu da naprave a) programe niskog nivoa koji koriste ili se izvršavaju unutar operativnog sistema, b) sistemske alatke za druge programere i korisnike (asemblere, kompajlere, punioce, debagere) i v) programe koji međusobno komuniciraju preko računarske mreže. Nakon završenog kursa studenti razumeju funkciju i načine konstrukcije različitih sistemskih alata, kao što su makro procesori, asembleri, kompajleri, emulatori, povezivači i punioci. Mogu da i sami konstruišu i implementiraju slične alate ili prilagode već postojeće. U stanju su da implementiraju različite kernel module za operativne sisteme Unix i Windows.

Teorijska nastava

Upoznavanje sa funkcijama i načinom konstrukcije različitih sistemskih alata, kao što su makro procesori, asembleri, emulatori, povezivači i punioci. Osnove asemblera za različite procesorske arhitekture. Funkcije asemblera kao alata. Konstrukcija asemblera i makroprocesora. Pretprocesor za jezik C. Projektovanje visoko optimizujućih kompajlera. Projektovanje interpretativnih i JIT emulatora. Formati objektnih programa. Osnovne funkcije punioca. Konstrukcija punioca i povezivača. Dinamičko povezivanje i punjenje. Punjenje sa prekrivanjem. Funkcije kernela operativnog sistema i njihova upotreba. Upoznavanje sa funkcionisanjem sistemskih biblioteka i kernel API-ja različitih operativnih sistema Kernel API i sistemski pozivi. Programiranje ulaza i izlaza. Pravljenje upravljačkih programa. Debagovanje u kernelu. Implementacija kernel modula. Interprocesna i međuračunarska komunikacija.

Praktična nastava

Projektovanje kompaktora mašinskog koda. Projektovanje simulatora odredišnog sistema. Projektovanje komponenti za debagovanje i kontrolisano izvršenje programa. Integrisano razvojno okruženje. Procesi, njihova međusobna komunikacija i upotreba komandi za praćenje. Implementacija najvažnijih Unix sistemskih komandi. Pisanje novih komandi. Upotreba POSIX API i signala. Razvoj upravljačkih programa (drajvera) za Unix i Windows. Sistemsko programiranje upotrebom skript jezika.

3034-sistemsko-programiranje