ОС1/Модификације септембар 2021 — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
(os1 septembar` https://cdn.discordapp.com/attachments/640937104712663047/892830623339790336/thumb_4451-0-5160.png d)
 
(mod za 30 poena da isto na svakoj iteraciji treba da spava od 50 do 250 ms)
Ред 25: Ред 25:


* Napraviti sledeći test primer:
* Napraviti sledeći test primer:
** Pravi se 5 niti pomocu <code>int fork_n(int n, int* pids)</code> koje od 3 do 10 puta treba da ispišu '''<code>Thread <threadID> : iter <trenutna iteracija> / <ukupno iteracija></code>'''/
** Pravi se 5 niti pomocu <code>int fork_n(int n, int* pids)</code> koje od 3 do 10 puta treba da ispišu '''<code>Thread <threadID> : iter <trenutna iteracija> / <ukupno iteracija></code>''' i pomoću sopstvenog semafora spavaju od 50ms do 250ms izmedju iteracjia.
** Jednom se ispisuju PID-ovi forkovanih niti.
** Jednom se ispisuju PID-ovi forkovanih niti.

Верзија на датум 1. октобар 2021. у 18:17

Sledeće modifikacije su se pojavile na odbrani projekta u septembarskom roku 2021.

20 poena

  • U klasi Thread dodati statičku metodu void waitForAll() koja blokira pozivajuću nit dok god se sve niti koje su inicijalizovane a nisu startovane ne završe.
  • Napraviti sledeći test primer:
    • Pravi se 10 niti Radnik
    • Pravi se nit Šef i startuje se
    • Po jedan radnik se startuje signalom dugmeta na tastaturi (jedan se startuje kad se dugme pristisne i još jedan se startuje pri otpuštanju dugmeta)
  • Radnik treba da:
    • Napiše Radnik <threadID> started.
    • 5 puta napiše Radnik <threadID> i pomoću sopstvenog semafora spava od 50ms do 1000ms izmedju iteracjia.
    • Napiše Radnik <threadID> ended.
  • Šef treba da:
    • Napiše Sef started.
    • Pozove metodu void waitForAll().
    • Napiše Sef ended.

Pravilan ispis treba da ispiše Sef ended tek nakon završetka svih radnika.

30 poena

  • U klasi Thread dodati metodu (nije bilo naglašeno da li je statička ili ne) int fork_n(int n, int* pids) koja fork()uje nit n puta i PID-ove forkovoanih niti smešta u pids (povratna vrednost isto nije bila specificirana).
  • Napraviti sledeći test primer:
    • Pravi se 5 niti pomocu int fork_n(int n, int* pids) koje od 3 do 10 puta treba da ispišu Thread <threadID> : iter <trenutna iteracija> / <ukupno iteracija> i pomoću sopstvenog semafora spavaju od 50ms do 250ms izmedju iteracjia.
    • Jednom se ispisuju PID-ovi forkovanih niti.