ОС1/Модификације септембар 2021

Извор: SI Wiki
< ОС1
Датум измене: 1. октобар 2021. у 18:17; аутор: Renatus (разговор | доприноси) (mod za 30 poena da isto na svakoj iteraciji treba da spava od 50 do 250 ms)
Пређи на навигацију Пређи на претрагу

Следеће модификације су се појавиле на одбрани пројекта у септембарском року 2021.

20 поена

  • У класи Тхреад додати статичку методу void waitForAll() која блокира позивајућу нит док год се све нити које су иницијализоване а нису стартоване не заврше.
  • Направити следећи тест пример:
    • Прави се 10 нити Радник
    • Прави се нит Шеф и стартује се
    • По један радник се стартује сигналом дугмета на тастатури (један се стартује кад се дугме пристисне и још један се стартује при отпуштању дугмета)
  • Радник треба да:
    • Напише Radnik <threadID> started.
    • 5 пута напише Radnik <threadID> и помоћу сопственог семафора спава од 50мс до 1000мс измедју итерацјиа.
    • Напише Radnik <threadID> ended.
  • Шеф треба да:
    • Напише Sef started.
    • Позове методу void waitForAll().
    • Напише Sef ended.

Правилан испис треба да испише Sef ended тек након завршетка свих радника.

30 поена

  • У класи Тхреад додати методу (није било наглашено да ли је статичка или не) int fork_n(int n, int* pids) која fork()ује нит n пута и ПИД-ове форковоаних нити смешта у pids (повратна вредност исто није била специфицирана).
  • Направити следећи тест пример:
    • Прави се 5 нити помоцу int fork_n(int n, int* pids) које од 3 до 10 пута треба да испишу Thread <threadID> : iter <trenutna iteracija> / <ukupno iteracija> и помоћу сопственог семафора спавају од 50мс до 250мс измедју итерацјиа.
    • Једном се исписују ПИД-ови форкованих нити.