Системски софтвер

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

У овом снимку ћемо се упознати са Системским софтвером, изборним предметом у шестом семестру на СИ, и обавезним на РТИ.

Корисне везе

Настава

Највећи део градива се обрађује на вежбама и на испите и колоквијуме/лабораторијску вежбу долазе задаци са вежби. Самим тим, предавања нису нарочитно битна, осим у првом делу када се обрађује архитектура x86. На предавањима се обрађују:

  • Асемблер, репрезентација типова, врсте x86 асемблерских инструкција, кодови услова, сет инструкције, програмски скокови, петље, позивање потпрограма и стек оквири.
  • ГНУ алати, развој програма уз помоћ GDB дебагера.
  • Конструкција асемблера, двопролазни и једнопролазни асемблер.
  • Линкери, релокације, статичке библиотеке, ELF формат, пуниоци, дељене библиотеке, PIE.
  • Емулатори, интерпретативни емулатори, статичка и динамичка рекомпилација, JIT превођење.
  • Макропроцесори, C претпроцесор.

Предавања се претходних пар година нису одржавала уживо и самим тим распоред градива се не слаже са вежбама и колоквијумима.

Пројекат

Пројекат из Системског софтвера је обавезан и састоји се од 3 програма који чине заједнички скуп алата за развој софтвера на апстрактном рачунарском систему. Програми су редом асемблер, линкер и емулатор. Оцењивање се дели на 3 нивоа:

  • Ниво А који носи 30 поена
  • Ниво Б који носи 35 поена и
  • Ниво Ц који носи 40 поена.

У сваком нивоу је неопходно развити сва 3 програма и нивои изнад А садрже додатне функционалности. Поставка се објављује на Moodle платформи.

Тражени језик за развој пројекта је C/C++. Препоручено окружење за развој је Visual Studio Code на Ubuntu виртуелној машини која је доступна на Moodle платформи. За контролу генерисања кода препоручен је GNU make. Дозвољено је користити спољашње библиотеке које не имплементирају срж пројекта (генерисање кода, повезивање, релоцирање, емулација и сл.), али није препоручено јер је можда неопходно инсталирати њих на вирутелну машину за одбрану, а то захтева дозволу предметног асистента на самој одбрани.

Пројекат се тестира помоћу јавних тестова (доступни на Moodle курсу предмета), који се покрећу за жељени ниво и све ниже нивое (могуће је уз одобрење асистента спустити ниво на одбрани). Поред покретања јавних тестова, одбрану чини и модификација која се тестира тајним тестовима. Потребно је да сви тестови раде како би одбрана пројекта била успешна.

Лабораторијске вежбе

Лабораторијска вежба се одржава само на РТИ одсеку, и еквивалентна је првом колоквијуму на СИ одсеку.

Испитни рокови

Стари испитни рокови могу се пронаћи на старој страници предмета, у одељку за корисне везе. Нови испитни рокови нису доступни са странице предмета, али се могу наћи на неком од драјвова у истом том одељку. Званична решења се не објављују.

Пре првог колоквијума обично изађу пробни тестови за теорију и задатак. Тренутно су доступни пробни тестови 2022. године.

Следећи рокови су сакупљени на SI Wiki:

Уколико желите да додате рок, посетите страницу за прављење рока.

Начин оцењивања

  • — бодови са првог колоквијума, има један термин за надокнаду или поправку (0-20)
  • — бодови са другог колоквијума, надокнађује се у оквиру испита (0-20)
  • — бодови са пројектног задатка (0-40)
  • — бодови са испита, услов за излазак је преко 30 бодова на пројектном задатку и првом колоквијуму
  • Коначни бодови:
Бодови
Оцена 5 6 7 8 9 10

Потребна помоћ

  • На овом предмету фале поставке рокова. Помозите викију памћењем/преписивањем рокова и постављањем на вики.
  • На овом предмету фале решења рокова. Помозите викију решавањем рокова и постављањем њихових решења на вики.
  • Од користи би био водич за први колоквијум, са објашњењима како се одређене структуре у C могу пресликати у асемблер.