[so] [Tema 4] Nelamuriri functii

Paul Olaru olarupaulstelian97 at gmail.com
Thu May 2 20:06:39 EEST 2019


so_fork are un parametru care e prioritatea lui; noul thread va intra în
coada ready la prioritatea respectivă.

Fiecare thread are ca tranziții:
running->ready în so_exec și celelalte funcții care preemptează, când
expiră cuanta sau apare (în so_fork sau so_signal) un thread cu prioritate
mai mare.
running->waiting în so_wait, se adaugă la coada de I/O menționată în
parametru.
ready->running când este scheduled, dacă nu există niciun thread de
prioritate mai mare.
waiting->ready când threadul activ a dat signal pe coada pe care cel despre
care discutăm a dat so_wait
running->terminated când funcția a returnat.

On Thu, May 2, 2019, 8:02 PM Tuculina Gabriel <gtuculina at yahoo.com> wrote:

> Multumesc frumos, asta explica multe!
>
> De ce ar trebui sa avem un vector de cozi de prioritati? Dupa ce criteriu
> stabilim pe ce coada de prioritati se duce un thread?
>
> On Thursday, May 2, 2019, 7:46:26 PM GMT+3, Paul Olaru <
> olarupaulstelian97 at gmail.com> wrote:
>
>
> Looks like significant misunderstandings here.
>
> 1. Vezi 3; ID-ul este dintr-un vector de cozi I/O.
> 2. Fiecare thread este ori running, ori ready (în coadă), ori blocked
> (într-o coadă I/O). Fiecare funcție manipulează în general propriul thread,
> cu excepția lui fork (care crează un thread nou) și signal (care scoate
> alte threaduri dintr-o coadă de I/O și le pune în ready, în coada de
> priorități)
> 3. Primul parametru e dimensiunea unei cuante de timp iar al doilea este
> nr de cozi I/O. Numărul de thread-uri nu este limitat.
> 4. Funcția dată lui fork va apela ea so_exec, sau so_fork, sau so_wait,
> sau so_signal. Nu le apelezi tu. Te folosești de apelurile ăstea ca
> oportunitate pt a face schedulingul.
> 5. Funcția apelează so_exec; deci ai posibilitatea în acest moment.
>
> P.S: cuanta de timp este de fapt nr de apeluri fork/exec/signal maxim
> permis până când forțezi o anume preempție.
>
> P.P.S: Va trebui tu să ai grijă intern ca numai un thread să se poată rula
> la un moment dat.
>
> On Thu, May 2, 2019, 7:38 PM Tuculina Gabriel via so <so at cursuri.cs.pub.ro>
> wrote:
>
> Buna ziua,
>
> Am si eu o serie de nelamuriri legate de functiile pe care trebuie sa le
> implementam:
>
> 1. Wait si Signal primesc amandoua cate un parametru IO. Acel eveniment ar
> trebui sa fie un id ce trebuie comparat cu id-ul threadurilor din lista de
> prioritati?
>
> 2. Cand se va scoate un element din lista de prioritati? Cand starea lui
> ajunge in Terminated?
>
> 3. Ce se intampla daca se incearca crearea mai multor procese decat a fost
> initial setat in init? Se ignora?
>
> 4. Din cate inteleg, se va executa functia pasata la fork, iar apoi
> threadurile ar trebui sa intre in starea Terminated. Cum ar trebui sa fie
> folosit so_exec? Care mai este rolul lui daca "work is done" si nu mai pot
> face nimic in privinta asta?
>
> 5. Cum ar trebui sa decrementam time_quantum-ul daca nu avem control
> asupra executiei work-ului?
>
>
>
> Multumesc anticipat!
>
> Gabriel
> _______________________________________________
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20190502/70895b6f/attachment.html>


More information about the so mailing list