Циљ предмета
Упознавање са функцијама оперативних система, принципима њиховог пројектовања и имплементације.
Исход предмета
Познавање савремених оперативних система. Разумевање кључних разлика између објектно-оријентисаних, модуларних, слојевитих или система заснованих на микрокернелу. Познавање конкурентног извршавања као и проблема који том приликом настају. Познавање распоређивања. Разумевање механизама виртуелне меморије, витруелних уређаја и система датотека.
Садржај предмета
Теоријска настава
Улога и циљ оперативног система. Основни принципи. Апстракције, процеси, ресурси. Кернел и заштита меморије. Заштићени режим рада процесора. Нивои привилегија и прекиди у заштићеном режиму рада. Системски позиви. Мултитаскинг и замена контекста. Стања таскова и истискивање. Распоређивање. Примери процеса и кернела за Unix, Solaris, Linux и Windows. Микрокернел архитектура. Појам датотеке. Системи датотека. Механизми додељивања слободног простора. Примери неких система датотека. Управљање меморијом. Фиксне и динамичке партиције. Страничење и сегментација. Страничење на захтев и виртуелна меморија. Замене страница. Конкурентно извршавање. Механизми узајамног искључивања и синхронизације међу нитима и процесима.
Практична настава
Рад у конзоли – cd, pwd, gcc, make, mount, grep и сл. Превођење система Linux, писање корисничких програма, монтирање диска и тестирање. C и asm, употреба #include и #define, кључне речи extern и static, како се C и asm пишу заједно, primeri. TTY, fs део Linux система – pipe, char, file, block. Тастатура, прекидна рутина за тастатуру, конвертовање scan у ASCII, библиотечке функције. Заштићени режим рада процесора, системски позиви. Linux boot – читање диска, улаз у заштићени режим, постављање системских табела. Рад са процесима и нитима – fork, exec, sched. HDD, партиције, Minix FS. MMU – paging, прекиди и библиотечке функције. Нити – стање трке и узајамно искључивање. Решавање проблема синхронизације, кључеви, мутекси и семафори.