<div dir="auto">so_fork are un parametru care e prioritatea lui; noul thread va intra în coada ready la prioritatea respectivă.<div dir="auto"><br></div><div dir="auto">Fiecare thread are ca tranziții:</div><div dir="auto">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.</div><div dir="auto">running->waiting în so_wait, se adaugă la coada de I/O menționată în parametru.</div><div dir="auto">ready->running când este scheduled, dacă nu există niciun thread de prioritate mai mare.</div><div dir="auto">waiting->ready când threadul activ a dat signal pe coada pe care cel despre care discutăm a dat so_wait</div><div dir="auto">running->terminated când funcția a returnat.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, May 2, 2019, 8:02 PM Tuculina Gabriel <<a href="mailto:gtuculina@yahoo.com">gtuculina@yahoo.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="m_7103619744892571254ydpbf2ea0d7yahoo-style-wrap" style="font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:13px"><div></div>
        <div>Multumesc frumos, asta explica multe!</div><div><br></div><div>De ce ar trebui sa avem un vector de cozi de prioritati? Dupa ce criteriu stabilim pe ce coada de prioritati se duce <span><span style="color:rgb(0,0,0);font-family:Helvetica Neue,Helvetica,Arial,sans-serif">un thread?</span></span></div><div><br></div>
        
        </div><div id="m_7103619744892571254yahoo_quoted_7372773154" class="m_7103619744892571254yahoo_quoted">
            <div style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;color:#26282a">
                
                <div>
                    On Thursday, May 2, 2019, 7:46:26 PM GMT+3, Paul Olaru <<a href="mailto:olarupaulstelian97@gmail.com" target="_blank" rel="noreferrer">olarupaulstelian97@gmail.com</a>> wrote:
                </div>
                <div><br></div>
                <div><br></div>
                <div><div id="m_7103619744892571254yiv2367630173"><div><div><div>Looks like significant misunderstandings here.</div><div><br clear="none"></div><div>1. Vezi 3; ID-ul este dintr-un vector de cozi I/O.</div><div>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)</div><div>3. <span style="font-family:sans-serif">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.</span></div><div><font face="sans-serif">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.</font></div><div><font face="sans-serif">5. Funcția apelează so_exec; deci ai posibilitatea în acest moment.</font></div><div><font face="sans-serif"><br clear="none"></font></div><div><font face="sans-serif">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.</font></div><div><font face="sans-serif"><br clear="none"></font></div><div><font face="sans-serif">P.P.S: Va trebui tu să ai grijă intern ca numai un thread să se poată rula la un moment dat.<br clear="none"></font><br clear="none"><div class="m_7103619744892571254yiv2367630173yqt1376682282" id="m_7103619744892571254yiv2367630173yqt78745"><div class="m_7103619744892571254yiv2367630173gmail_quote"><div class="m_7103619744892571254yiv2367630173gmail_attr" dir="ltr">On Thu, May 2, 2019, 7:38 PM Tuculina Gabriel via so <<a rel="nofollow noreferrer" shape="rect" href="mailto:so@cursuri.cs.pub.ro" target="_blank">so@cursuri.cs.pub.ro</a>> wrote:<br clear="none"></div><blockquote class="m_7103619744892571254yiv2367630173gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Buna ziua,<br clear="none">
<br clear="none">
Am si eu o serie de nelamuriri legate de functiile pe care trebuie sa le implementam:<br clear="none">
<br clear="none">
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?<br clear="none">
<br clear="none">
2. Cand se va scoate un element din lista de prioritati? Cand starea lui ajunge in Terminated?<br clear="none">
<br clear="none">
3. Ce se intampla daca se incearca crearea mai multor procese decat a fost initial setat in init? Se ignora?<br clear="none">
<br clear="none">
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?<br clear="none">
<br clear="none">
5. Cum ar trebui sa decrementam time_quantum-ul daca nu avem control asupra executiei work-ului?<br clear="none">
<br clear="none">
<br clear="none">
<br clear="none">
Multumesc anticipat!<br clear="none">
<br clear="none">
Gabriel<br clear="none">
_______________________________________________<br clear="none">
<a rel="nofollow noreferrer" shape="rect" href="http://ocw.cs.pub.ro/courses/so/info/lista-discutii" target="_blank">http://ocw.cs.pub.ro/courses/so/info/lista-discutii</a></blockquote></div></div></div></div></div></div></div>
            </div>
        </div></div></blockquote></div>