Системски софтвер — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
м (Izlistavanje rokova)
 
(Није приказано 10 међуизмена 3 корисника)
Ред 1: Ред 1:
{{Предмет
{{Предмет
| шифра    = 13С113СС, 13Е113СС
| шифра    = 13С113СС, 13Е113СС
| семестар  = 6
| семестар  = 6, 8 (СИ)
| статус    = изборни (СИ), обавезни (РТИ)
| статус    = изборни (СИ), обавезни (РТИ)
| страница  = [https://rti.etf.bg.ac.rs/rti/ir3ss/ rti.etf.rs/rti/ir3ss]
| страница  = [https://rti.etf.bg.ac.rs/rti/ir3ss/ rti.etf.rs/rti/ir3ss]
| одсек    = СИ, РТИ
| одсек    = СИ, РТИ
}}
}}
'''Системски софтвер''' је изборни предмет у шестом семестру за СИ, док је за РТИ обавезан.
У овом снимку ћемо се упознати са '''Системским софтвером''', изборним предметом у шестом семестру на СИ, и обавезним на РТИ.


== Корисне везе ==
== Корисне везе ==
* [http://si3ss.etf.bg.ac.rs/ Стара страница предмета] (рокови)
* [http://si3ss.etf.bg.ac.rs/ Стара страница предмета] (рокови)
* [https://godbolt.org/ ''Compiler Explorer''] (користан алат при вежбању задатака из декомпилације за први колоквијум)
* [https://drive.google.com/open?id=19796xkLX-qDMEAh9-4a5yi-8cdX_9t3G ETF SI] (рокови, белешке)
* [https://drive.google.com/open?id=19796xkLX-qDMEAh9-4a5yi-8cdX_9t3G ETF SI] (рокови, белешке)
* [https://app.box.com/s/0r50je333z1qyypz0h3rm0iqb9s0d64f/folder/17683025696 ETF Materijali (Box)] (рокови, наставни материјал, белешке)
* [https://app.box.com/s/0r50je333z1qyypz0h3rm0iqb9s0d64f/folder/17683025696 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''. Дозвољено је користити спољашње библиотеке које не имплементирају срж пројекта (генерисање кода, повезивање, релоцирање, емулација и сл.), али није препоручено јер је можда неопходно инсталирати њих на вирутелну машину за одбрану, а то захтева дозволу предметног асистента на самој одбрани.
 
Пројекат се тестира помоћу јавних тестова (доступни на ''Moodle'' курсу предмета), који се покрећу за жељени ниво и све ниже нивое (могуће је уз одобрење асистента спустити ниво на одбрани). Поред покретања јавних тестова, одбрану чини и модификација која се тестира тајним тестовима. Потребно је да сви тестови раде како би одбрана пројекта била успешна.


== Лабораторијске вежбе ==
== Лабораторијске вежбе ==
Ред 26: Ред 40:
== Испитни рокови ==
== Испитни рокови ==
Стари испитни рокови могу се пронаћи на старој страници предмета, у [[#Корисне везе|одељку за корисне везе]]. Нови испитни рокови нису доступни са странице предмета, али се могу наћи на неком од драјвова у истом том одељку. Званична решења се не објављују.
Стари испитни рокови могу се пронаћи на старој страници предмета, у [[#Корисне везе|одељку за корисне везе]]. Нови испитни рокови нису доступни са странице предмета, али се могу наћи на неком од драјвова у истом том одељку. Званична решења се не објављују.
Пре првог колоквијума обично изађу пробни тестови за теорију и задатак. Тренутно су доступни [[Системски софтвер/Пробни тестови 2022|пробни тестови 2022. године]].


Следећи рокови су сакупљени на {{SITENAME}}:
Следећи рокови су сакупљени на {{SITENAME}}:
Ред 34: Ред 50:
| noresultsheader = Тренутно нема рокова.
| noresultsheader = Тренутно нема рокова.
}}
}}
Уколико желите да додате рок, посетите '''[[Project:Направи|страницу за прављење рока]]'''.


== Начин оцењивања ==
== Начин оцењивања ==
Ред 52: Ред 69:
* {{задаци|postavke}}
* {{задаци|postavke}}
* {{задаци|rešenja}}
* {{задаци|rešenja}}
* Од користи би био водич за први колоквијум, са објашњењима како се одређене структуре у C могу пресликати у асемблер.

Тренутна верзија на датум 16. март 2024. у 14:20

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

Корисне везе

Настава

Највећи део градива се обрађује на вежбама и на испите и колоквијуме/лабораторијску вежбу долазе задаци са вежби. Самим тим, предавања нису нарочитно битна, осим у првом делу када се обрађује архитектура 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 могу пресликати у асемблер.