Prova Teorica 2009.09.18
Jump to navigation
Jump to search
TESTO COMPITO
CONCORRENZA
Esercizio 1
Operation | Urgent Stack | c[0] | c[1] | … | c[N-2] | c[N-1] | n[0] | n[1] | … | n[N-2] | n[N-1] | tot | |
initialization | nil | nil | nil | … | nil | nil | 0 | 0 | … | 0 | 0 | ||
p[0]: bar(0) | p[0] | 1 | 0 | ||||||||||
p[1]: bar(1) | p[1] | 1 | 0 | ||||||||||
… | … | … | … | ||||||||||
p[N-2]: bar(N-2) | p[N-2] | 1 | 0 | ||||||||||
p[N-1]: bar(N-1) | p[N-1] | 1 | 1 | ||||||||||
p[0]: bar(0) | p[N-1], p[0] | nil | |||||||||||
p[1]: bar(1) | p[N-1], p[0], p[1] | nil | |||||||||||
… | p[N-1], p[0], p[1], … | … | |||||||||||
p[N-2]: bar(N-2) | p[N-1], p[0], p[1], …, p[N-3] | nil | 0 | ||||||||||
… | … | … | |||||||||||
p[1]: bar(1) | p[N-1], p[0] | 0 | |||||||||||
p[0]: bar(0) | p[N-1] | 0 | |||||||||||
p[N-1]: bar(N-1) | nill | 0 | |||||||||||
Descrizione: | I processi si disattivano fino a quando tutti gli elementi dell'array <n> assumono valore maggiore di 0. | ||||||||||||
Il processo che ha assegnato l'ultimo valore riattiva il processo con indice successivo (in modo circolare), e cosi' via a cascata. | |||||||||||||
Viene popolato e consumato l'urgent stack. | |||||||||||||
Progressivamente i valori contenuti nell'array risultano diminuiti di 1. | |||||||||||||
Non necessariamente tornano a 0. |
Esercizio 2
Queue recvdigest()
{
Queue buffer;
asend(BookMark, getpid());
message = arecv(*);
if (message == BookMark)
buffer.enqueue(arecv(*));
else
{
do
{
buffer.enqueue(message);
message = arecv(*);
} until (message == BookMark)
}
return buffer;
}
GENERALE
Esercizio 1
Reference String | 1 | 2 | 3 | 4 | 5 | 1 | 2 | 3 | 4 | 5 | 1 | 2 | 3 | 1 | 2 | 3 | 2 | 3 | 4 | 2 | 3 | 4 | 1 | 2 | 3 | 4 | 5 |
Least Recently Used policy: | |||||||||||||||||||||||||||
frame 1 | 1 | 1 | 1 | 4 | 4 | 4 | 2 | 2 | 2 | 5 | 5 | 5 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 2 | 2 | 2 | 5 |
frame 2 | 2 | 2 | 2 | 5 | 5 | 4 | 3 | 3 | 3 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4 | 4 | 4 | 4 | 4 | 4 | 3 | 3 | 3 | |
frame 3 | 3 | 3 | 3 | 1 | 5 | 5 | 4 | 4 | 4 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 4 | 4 | ||
Working Set: | |||||||||||||||||||||||||||
Working Set Window | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 1 |
2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 3 | 3 | 3 | 3 | 2 | 2 | 2 | 2 | ||
3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 4 | 4 | 4 | 4 | 3 | 3 | 3 | 3 | |||
4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 5 | 4 | 4 | 4 | 4 | ||||||||||||
5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | ||||||||||||||||||
Osservazioni: | |||||||||||||||||||||||||||
Ambedue i meccanismi si fondano sul fenomeno denominato principle of locality. | |||||||||||||||||||||||||||
Il meccanismo del WS e' orientato ad ottimizzare la CPU utilization, evitando il cosidetto trashing. Non costituisce un algoritmo di page replacement. | |||||||||||||||||||||||||||
Tuttavia, puo' essere utilmente impiegato nell'ambito dell'algoritmo LRU, in quanto definisce una window di riferimenti da mantenere in memoria. | |||||||||||||||||||||||||||
Il problema precipuo dell'algoritmo LRU e' giustappunto il metodo di memorizzazione della serie storica delle pagine accedute. | |||||||||||||||||||||||||||
Nella fattispecie, data una reference string contenente una permutazione di 5 riferimenti, e dato un WS con window size pari a 5, tutte le pagine rimpiazzate si ritrovano nel WS. |