2015-05-12 17:31 GMT+03:00 Cosmin Boaca via so <[email protected]>: > Salut,
Salut, Cosmin! > > Am cateva intrebari legate de enuntul temei 4: > > 1. Operatiile so_wait / so_fork consuma si ele o unitate de timp ca si > execute ? Da, urmărește exemplul de execuție din enunț. Toate cele 4 instrucțiuni (exec, fork, wait, signal) consumă timp. > > 2. Daca un thread executa so_signal(3), si alt thread executa so_wait(3) > dupa ce s-a executat so_signal(3) acesta ramane blocat sau nu ?. > Din enunț: "so_signal(event/io) - trezește unul sau mai multe threaduri care așteaptă un anumit eveniment.". Deci sunt trezite thread-urile care deja așteaptă acel eveniment în momentul semnalizării. > 3. In contextul intrebarii 2, daca se executa signal inainte de wait > evenimentul se considera invalid ? Dacă nu așteaptă niciun thread evenimentul respectiv, acel semnal se pierde. Nu e un caz de eroare. > > 4. Un eveniment IO este invalid doar daca id-ul sau este mai mare decat > numarul maxim de evenimente suportate ? Da, pot fi maxim 256 de dispozitive IO, indexate de la 0. > > 5. Cand un thread ajunge in READY din WAITING, si apoi este trecut in > RUNNING se pastreaza cat mai avea din cuanta in momentul in care s-a blocat > sau i se reseteaza cuanta ? Din enunț: "la replanificarea unui thread, cuanta acestuia de rulare pe procesor va fi resetată la valoarea maximă". > > 6. Are vreo relevanta eficienta implementarii ? Personal tin thread-urile > intr-un vector alocat dinamic ( se redimensioneaza in functie de cate > elemente are ) si ca sa planific aleg mereu minimul dintre cele aflate in > READY. Este nevoie sa implementez folosind alte structuri de date cum ar fi > heap-uri ? Eficiența este importantă. Fiecare test trebuie să ruleze în maxim o secundă. Poți verifica dacă soluția ta se încadrează, dacă nu trebuie să o optimizezi. Adrian _______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
