OS1/Modifikacije septembar 2021

Izvor: SI Wiki
< ОС1
Datum izmene: 1. oktobar 2021. u 18:17; autor: Renatus (razgovor | doprinosi) (mod za 30 poena da isto na svakoj iteraciji treba da spava od 50 do 250 ms)
Pređi na navigaciju Pređi na pretragu

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.