Системски софтвер — разлика између измена
(инфо о предавањима) |
(→Пројекат: опис пројекта) |
||
Ред 24: | Ред 24: | ||
== Пројекат == | == Пројекат == | ||
Пројекат из Системског софтвера је обавезан и састоји се од 3 програма који чине заједнички скуп алата за развој софтвера на апстрактном рачунарском систему. Програми су редом асемблер, линкер и емулатор. Оцењивање се дели на 3 нивоа: | |||
* Ниво А који носи 30 поена | |||
* Ниво Б који носи 35 поена и | |||
* Ниво Ц који носи 40 поена. | |||
У сваком нивоу је неопходно развити сва 3 програма и нивои изнад А садрже додатне функционалности. Поставка се објављује на ''Moodle'' платформи. У јунском и јулском року су дозвољени парцијални поени, односно смањен број поена за непотпуне функционалности по нивоима. Након јулског рока нема парцијалних поена, тј. морају се имплементирати у потпуности и исправо сви захтеви за одређен ниво. | |||
Тражени језик за развој пројекта је C/C++. Препоручено окружење за развој је ''Visual Studio Code'' на ''Ubuntu'' виртуелној машини која је доступна на ''Moodle'' платформи. За контролу генерисања кода препоручен је ''GNU make''. Довзољено је користити спољашње библиотеке које не имплементирају срж пројекта (генерисање кода, повезивање, релоцирање, емулација и сл.), али није препоручено јер је можда неопходно инсталирати њих на вирутелну машину за одбрану, а то захтева дозволу предметног асистента на самој одбрани. | |||
Пројекат се тестира помоћу јавних тестова, који се обично објаве након јунског рока. | |||
== Лабораторијске вежбе == | == Лабораторијске вежбе == |
Верзија на датум 25. септембар 2022. у 18:24
Системски софтвер је изборни предмет у шестом семестру за СИ, док је за РТИ обавезан.
Корисне везе
- Стара страница предмета (рокови)
- Compiler Explorer (користан алат при вежбању задатака из декомпилације за први колоквијум)
- ETF SI (рокови, белешке)
- ETF Materijali (Box) (рокови, наставни материјал, белешке)
Настава
Највећи део градива се обрађује на вежбама и на испите и колоквијуме/лабораторијску вежбу долазе задаци са вежби. Самим тим, предавања нису нарочитно битна, осим у првом делу када се обрађује архитектура x86. На предавањима се обрађују:
- Асемблер, репрезентација типова, врсте x86 асемблерских инструкција, кодови услова, сет инструкције, програмски скокови, петље, позивање потпрограма и стек оквири.
- ГНУ алати, развој програма уз помоћ GDB дебагера.
- Конструкција асемблера, двопролазни и једнопролазни асемблер.
- Линкери, релокације, статичке библиотеке, ELF формат, пуниоци, дељене библиотеке, PIE.
- Емулатори, интерпретативни емулатори, статичка и динамичка рекомпилација, JIT превођење.
- Макропроцесори, C претпроцесор.
Пројекат
Пројекат из Системског софтвера је обавезан и састоји се од 3 програма који чине заједнички скуп алата за развој софтвера на апстрактном рачунарском систему. Програми су редом асемблер, линкер и емулатор. Оцењивање се дели на 3 нивоа:
- Ниво А који носи 30 поена
- Ниво Б који носи 35 поена и
- Ниво Ц који носи 40 поена.
У сваком нивоу је неопходно развити сва 3 програма и нивои изнад А садрже додатне функционалности. Поставка се објављује на Moodle платформи. У јунском и јулском року су дозвољени парцијални поени, односно смањен број поена за непотпуне функционалности по нивоима. Након јулског рока нема парцијалних поена, тј. морају се имплементирати у потпуности и исправо сви захтеви за одређен ниво.
Тражени језик за развој пројекта је C/C++. Препоручено окружење за развој је Visual Studio Code на Ubuntu виртуелној машини која је доступна на Moodle платформи. За контролу генерисања кода препоручен је GNU make. Довзољено је користити спољашње библиотеке које не имплементирају срж пројекта (генерисање кода, повезивање, релоцирање, емулација и сл.), али није препоручено јер је можда неопходно инсталирати њих на вирутелну машину за одбрану, а то захтева дозволу предметног асистента на самој одбрани.
Пројекат се тестира помоћу јавних тестова, који се обично објаве након јунског рока.
Лабораторијске вежбе
Лабораторијска вежба се одржава само на РТИ одсеку, и еквивалентна је првом колоквијуму на СИ одсеку.
Испитни рокови
Стари испитни рокови могу се пронаћи на старој страници предмета, у одељку за корисне везе. Нови испитни рокови нису доступни са странице предмета, али се могу наћи на неком од драјвова у истом том одељку. Званична решења се не објављују.
Пре првог колоквијума обично изађу пробни тестови за теорију и задатак. Тренутно су доступни пробни тестови 2022. године.
Следећи рокови су сакупљени на SI Wiki:
- К1 2022
- К1 Август 2020
- К1 Септембар 2020
- К1 Октобар 2020
- К2 2022
- Јун 2022
- Август 2022
- Септембар 2022
- Фебруар 2023
- К 2023
Уколико желите да додате рок, посетите страницу за прављење рока.
Начин оцењивања
- — бодови са првог колоквијума, има један термин за надокнаду или поправку (0-20)
- — бодови са другог колоквијума, надокнађује се у оквиру испита (0-20)
- — бодови са пројектног задатка (0-40)
- — бодови са испита, услов за излазак је преко 30 бодова на пројектном задатку и првом колоквијуму
- Коначни бодови:
Бодови | ||||||
---|---|---|---|---|---|---|
Оцена | 5 | 6 | 7 | 8 | 9 | 10 |
Потребна помоћ
- На овом предмету фале поставке рокова. Помозите викију памћењем/преписивањем рокова и постављањем на вики.
- На овом предмету фале решења рокова. Помозите викију решавањем рокова и постављањем њихових решења на вики.
- Од користи би био водич за први колоквијум, са објашњењима како се одређене структуре у C могу пресликати у асемблер.