[so] [ Clarificari enunt tema 4 ]

Adrian Stanciu adrian.stanciu.pub at gmail.com
Tue May 12 17:51:52 EEST 2015


2015-05-12 17:31 GMT+03:00 Cosmin Boaca via so <so at cursuri.cs.pub.ro>:
> 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


More information about the so mailing list