Difference between revisions of "Prova Teorica 2013.06.21"
Jump to navigation
Jump to search
Line 1: | Line 1: | ||
<h1>[http://www.cs.unibo.it/~renzo/so/compiti/2013.06.21.tot.pdf Testo del compito]</h1> | <h1>[http://www.cs.unibo.it/~renzo/so/compiti/2013.06.21.tot.pdf Testo del compito]</h1> | ||
+ | |||
+ | <h2> Esercizio c.1 </h2> | ||
+ | |||
+ | <syntaxhighlight lang="C"> | ||
+ | |||
+ | monitor nvie | ||
+ | { | ||
+ | condition oktoread; | ||
+ | queue buffer[N]; | ||
+ | |||
+ | |||
+ | procedure entry put(int n, generic object) | ||
+ | { | ||
+ | |||
+ | if (buffer[n].length < NELEM) | ||
+ | buffer[n].enqueue(object); | ||
+ | |||
+ | oktoread.signal(); | ||
+ | |||
+ | } | ||
+ | |||
+ | procedure entry generic get(generic *object) | ||
+ | { | ||
+ | |||
+ | int count=0; | ||
+ | |||
+ | for (int i=0;i<N;i++) | ||
+ | { | ||
+ | if (buffer[i].length>0) | ||
+ | count++; | ||
+ | return None ; | ||
+ | } | ||
+ | for (int j=0;j<N;j++) | ||
+ | { if (count>=N/2) | ||
+ | (buffer[j].dequeue(*object) ; | ||
+ | oktoread.wait(); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | Save | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | |||
+ | |||
<h2> Esercizio g.1 </h2> | <h2> Esercizio g.1 </h2> | ||
[[http://so.v2.cs.unibo.it/wiki/images/0/02/G1paginazione.jpg soluzione]] | [[http://so.v2.cs.unibo.it/wiki/images/0/02/G1paginazione.jpg soluzione]] |
Revision as of 17:13, 28 May 2014
Testo del compito
Esercizio c.1
monitor nvie
{
condition oktoread;
queue buffer[N];
procedure entry put(int n, generic object)
{
if (buffer[n].length < NELEM)
buffer[n].enqueue(object);
oktoread.signal();
}
procedure entry generic get(generic *object)
{
int count=0;
for (int i=0;i<N;i++)
{
if (buffer[i].length>0)
count++;
return None ;
}
for (int j=0;j<N;j++)
{ if (count>=N/2)
(buffer[j].dequeue(*object) ;
oktoread.wait();
}
}
}
Save
Esercizio g.1
Esercizio c.2
#Casi possibili delle iterazioni
int val = 0
PQPQQ (((val +1) *2) +1) * 2 * 2 → 12
PQQPQ (( val +1 ) * 2 * 2) +1 * 2 → 12
QQPQP (((val * 2 * 2) + 1 )* 2) + 1 → 3
QPQQP (((val * 2) + 1) * 2 * 2) + 1 → 5
QPQPQ ((((val * 2) + 1) * 2) + 1) * 2 → 6
a) #Quindi i valori possibili sono → (3, 5, 6, 12)
b) #
- Midolo e Marangoni