Difference between revisions of "User talk:Python"

From Sistemi Operativi
Jump to navigation Jump to search
m (AlexJ moved page User talk:AlexJ to User talk:Python)
Line 5: Line 5:
 
[[  http://www.cs.unibo.it/~renzo/so/compiti/2014.01.22.tot.pdf  ]]
 
[[  http://www.cs.unibo.it/~renzo/so/compiti/2014.01.22.tot.pdf  ]]
  
 +
 +
 +
monitor bridge {
 +
condition oktomove; /*si muove solo se il ponte è libero o non ci sono auto che vengono nel senso opposto */
 +
int turn=0; /*indica il senso delle auto */
 +
int est=0,ovest=0;      /*contatori delle auto da est e da ovest */
 +
Queue q; /*coda delle senso delle macchine in attesa */
 +
 +
procedure entry enter (char EoW)
 +
{
 +
if(EoW == "E") /* viene da est */
 +
{
 +
if(turn == 2 || est >=N || !empty(q)) 
 +
{
 +
q=equeue("E"); /*inserisco nella coda dei sensi*/
 +
oktomove.wait();  /*aspetta*/
 +
 +
}
 +
turn = 1; /*impongo il senso delle auto in circolo nel ponte */
 +
est++;
 +
}
 +
else /* viene da ovest */
 +
{
 +
if(turn ==1 || ovest >=N || !empty(q))
 +
{
 +
q=equeue("O"); /*inserisco nella coda dei sensi*/
 +
oktomove.wait(); /*aspetta*/
 +
 +
}
 +
turn = 2; /*impongo il senso delle auto in circolo nel ponte */
 +
ovest++;
 +
}
 +
}
 +
 +
procedure entry exit(char EoW)
 +
{
 +
char r;
 +
if(EoW == "O")
 +
{
 +
est--;
 +
r=tail(q);
 +
if(est == 0 || r == "E")
 +
{
 +
est--;
 +
if(est == 0) /*nessuna auto in transito nel ponte */
 +
{
 +
turn = 0; /*avanti un altro */
 +
}
 +
if(!empty(q))
 +
{
 +
q.dequeue();
 +
oktomove.signal(); /*segnale*/
 +
}
 +
else
 +
{
 +
ovest--;
 +
if(ovest == 0) /*nessuna auto in transito nel ponte */
 +
{
 +
turn = 0; /*avanti un altro */
 +
}
 +
if(!empty(q))
 +
{
 +
q.dequeue();
 +
oktomove.signal(); /*segnale*/
 +
}
 +
}
 +
}
 +
 +
}
 +
 +
== ProvaTeorica 2014.01.22  ==
 +
 +
<syntaxhighlight lang="C">
 +
 +
http://www.cs.unibo.it/~renzo/so/compiti/2014.01.22.tot.pdf
  
  

Revision as of 23:53, 14 March 2014

<syntaxhighlight lang="C">

Esame 2014.01.22

[[ http://www.cs.unibo.it/~renzo/so/compiti/2014.01.22.tot.pdf ]]


monitor bridge { condition oktomove; /*si muove solo se il ponte è libero o non ci sono auto che vengono nel senso opposto */ int turn=0; /*indica il senso delle auto */ int est=0,ovest=0; /*contatori delle auto da est e da ovest */ Queue q; /*coda delle senso delle macchine in attesa */

procedure entry enter (char EoW) { if(EoW == "E") /* viene da est */ { if(turn == 2 || est >=N || !empty(q)) { q=equeue("E"); /*inserisco nella coda dei sensi*/ oktomove.wait(); /*aspetta*/

} turn = 1; /*impongo il senso delle auto in circolo nel ponte */ est++; } else /* viene da ovest */ { if(turn ==1 || ovest >=N || !empty(q)) { q=equeue("O"); /*inserisco nella coda dei sensi*/ oktomove.wait(); /*aspetta*/

} turn = 2; /*impongo il senso delle auto in circolo nel ponte */ ovest++; } }

procedure entry exit(char EoW) { char r; if(EoW == "O") { est--; r=tail(q); if(est == 0 || r == "E") { est--; if(est == 0) /*nessuna auto in transito nel ponte */ { turn = 0; /*avanti un altro */ } if(!empty(q)) { q.dequeue(); oktomove.signal(); /*segnale*/ } else { ovest--; if(ovest == 0) /*nessuna auto in transito nel ponte */ { turn = 0; /*avanti un altro */ } if(!empty(q)) { q.dequeue(); oktomove.signal(); /*segnale*/ } } }

}

ProvaTeorica 2014.01.22

<syntaxhighlight lang="C">

http://www.cs.unibo.it/~renzo/so/compiti/2014.01.22.tot.pdf


monitor bridge { condition oktomove; /*si muove solo se il ponte è libero o non ci sono auto che vengono nel senso opposto */ int turn=0; /*indica il senso delle auto */ int est=0,ovest=0; /*contatori delle auto da est e da ovest */ Queue q; /*coda delle senso delle macchine in attesa */

procedure entry enter (char EoW) { if(EoW == "E") /* viene da est */ { if(turn == 2 || est >=N || !empty(q)) { q=equeue("E"); /*inserisco nella coda dei sensi*/ oktomove.wait(); /*aspetta*/

} turn = 1; /*impongo il senso delle auto in circolo nel ponte */ est++; } else /* viene da ovest */ { if(turn ==1 || ovest >=N || !empty(q)) { q=equeue("O"); /*inserisco nella coda dei sensi*/ oktomove.wait(); /*aspetta*/

} turn = 2; /*impongo il senso delle auto in circolo nel ponte */ ovest++; } }

procedure entry exit(char EoW) { char r; if(EoW == "O") { est--; r=tail(q); if(est == 0 || r == "E") { est--; if(est == 0) /*nessuna auto in transito nel ponte */ { turn = 0; /*avanti un altro */ } if(!empty(q)) { q.dequeue(); oktomove.signal(); /*segnale*/ } else { ovest--; if(ovest == 0) /*nessuna auto in transito nel ponte */ { turn = 0; /*avanti un altro */ } if(!empty(q)) { q.dequeue(); oktomove.signal(); /*segnale*/ } } }

}