Operativni sistemi (Računarske nauke)

Teorijska nastava

Uloga i cilj operativnog sistema. Osnovni principi. Apstrakcije, procesi, resursi. Kernel i zaštita memorije. Zaštićeni režim rada procesora. Nivoi privilegija i prekidi u zaštićenom režimu rada. Sistemski pozivi. Multitasking i zamena konteksta. Stanja taskova i istiskivanje. Algoritmi raspoređivanja. Primeri procesa i kernela za Unix, Solaris, Linux i Windows. Mikrokernel arhitektura. Pojam datoteke. Sistemi datoteka. Sadržaj i struktura direktorijuma. Dodeljivanje slobodnog prostora. Primeri nekih sistema datoteka. Upravljanje memorijom. Fiksne i dinamičke particije. Straničenje i segmentacija. Straničenje na zahtev i virtuelna memorija. Algoritmi zamene stranica. Konkurentno izvršavanje. Mehanizmi uzajamnog isključivanja i sinhronizacije među nitima i procesima.

Praktična nastava

Rad u konzoli - cd, pwd, gcc, make, mount, grep i sl. Prevođenje sistema Linux, pisanje korisničkih programa, montiranje diska i testiranje. C i asm, upotreba #include i #define, ključne reči extern i static, kako se C i asm pišu zajedno, primeri. TTY, fs deo Linux sistema - pipe, char, file, block. Tastatura, prekidna rutina za tastaturu, konvertovanje scan u ASCII, bibliotečke funkcije. Zaštićeni režim rada procesora, GDT, LDT, IDT, sistemski pozivi. Linux boot – čitanje diskete, ulaz u zaštićeni režim, postavljanje GDT, LDT i IDT tabela. Rad sa procesima i nitima - TSS, fork, exec, sched. HDD, particije, Minix FS. MMU - paging, prekidi i bibliotečke funkcije. Niti - stanje trke i uzajamno isključivanje. Rešavanje problema sinhronizacije, ključevi, muteksi i semafori.

Kreatori kursa: Stevan Milinković