• Non ci sono risultati.

UNIVERSITA' DI BOLOGNA - CORSO DI LAUREA IN INFORMATICA CORSO DI SISTEMI OPERATIVI - ANNO ACCADEMICO 2003/2004 COMPITO CONCORRENZA - 15 Luglio 2004

N/A
N/A
Protected

Academic year: 2021

Condividi "UNIVERSITA' DI BOLOGNA - CORSO DI LAUREA IN INFORMATICA CORSO DI SISTEMI OPERATIVI - ANNO ACCADEMICO 2003/2004 COMPITO CONCORRENZA - 15 Luglio 2004"

Copied!
1
0
0

Testo completo

(1)

Nome/cognome ______________________________ N. di matricola (10 cifre) ______________________ Posizione: Riga _______ Col _______

UNIVERSITA' DI BOLOGNA - CORSO DI LAUREA IN INFORMATICA CORSO DI SISTEMI OPERATIVI - ANNO ACCADEMICO 2003/2004

COMPITO CONCORRENZA - 15 Luglio 2004

Esercizio -1: essersi iscritti correttamente per svolgere questa prova.

Esercizio 0: Su entrambi i fogli, scrivere correttamente nome, cognome, matricola e posizione prima di svolgere ogni altro esercizio.

Esercizio 1

shared val = 0;

shared Semaphore sp = new Semaphore(2);

shared Semaphore sq = new Semaphore(1);

shared Semaphore mutex = new Semaphore(1);

process P { int kp = 0;

while (kp < 3) { sp.P();

mutex.P();

val = val+2;

sq.V();

kp++;

mutex.v();

} }

process Q { int kq = 2;

while (kq > 0) { sq.P();

mutex.P();

val = val*3;

sp.V();

kq--;

mutex.v();

} }

a) Al termine di questo programma, quali sono i valori possibili della variabile condivisa val?

b) E' possibile che i processi P o Q restino bloccati indefinitamente?

Esercizio 2

In una azienda agricola lavorano V vendemmiatori e A autisti di carri. I vendemmiatori raccolgono l'uva e la depositano sui carri; gli autisti guidano i carri dalla azienda agricola alla cantina e viceversa. I vendemmiatori hanno ognuno una cesta di capacità variabile da 1 a MAX Kg d'uva; ogni vendemmiatore, riempita la propria cesta, la svuota in un carro (se disponibile, altrimenti attende). Ogni carro ha una capacità massima N*MAX, e quando si riempe, l'autista parte per andare a portare l'uva in cantina. Ogni carro può servire un solo vendemmiatore alla volta, ma ci sono possono essere più carri in attesa al bordo della vigna, quindi il vendemmiatore sceglierà un carro libero. La cantina può servire un solo carro alla volta, quindi i carri devono attendere il loro turno. Una volta entrato svuota il carico e poi esce ritornando alla vigna. Si implementi una soluzione usando il costrutto monitor per modellare il sistema AziendaAgricola.

Process Vendemmiatore[i] { while (true) {

int quantità = /* Raccogli l'uva */

azienda.scaricaVendemmiatore(i, quantità) }

}

Process Autista[i] { while (true) {

azienda.caricaCarro(i);

azienda.scaricaCarro(i);

} }

Process Cantina { while (true) {

azienda.scaricaCantina();

} }

Nota: non è detto che tutti i parametri passati alle varie funzioni siano necessari.

Esercizio 3

Sia dato un sistema dove oltre alle azioni atomiche di lettura e scrittura in memoria sia data la seguente operazione atomica che opera su due variabili di tipo intero: f(a,b,c)=<a=random(1,b); b=random(0,c)>, dove random(x,y) è una funzione che ritorna un numero casuale compreso tra x e y, estremi inclusi. Scrivere, se possibile, un meccanismo di supporto di sezioni critiche in modo simile al test&set usando la funzione f; in caso contrario fornire una spiegazione del perché non sia possibile scrivere tale supporto.

Riferimenti

Documenti correlati

b) Descrivere una sequenza di allocazioni e deallocazioni di memoria principale che possa essere allocata correttamente da best-fit, ma che non possa essere gestita da first-fit (una

Siano date le funzioni void allocate(resourceset x), void deallocate(resourceset x), and boolean safe() che rispettivamente

p1. 3ms CPU, I/O traccia 10,  3 ms CPU, I/O traccia 3, 3 ms CPU

Dati quattro processi A,B,C,D e tre risorse (singole risorse, non classi) R1, R2, R3 seriali non prerilasciabili, fornire una sequenza di richieste che porti tutti e quattro i

Esercizio 0: Su entrambi i fogli, scrivere correttamente nome, cognome, matricola e posizione prima di svolgere ogni altro esercizio..

Quindi la a2recv deve sempre attendere due messaggi che rispettino le richieste del ricevente (mittente giusto, o ogni mittente se '*') provenienti dallo stesso mittente prima

Spiegate come viene gestita la lista dei blocchi liberi, in particolare come vengono inseriti e rimossi blocchi.

Data la struttura del processo Presidente, in ogni istante vi può essere al più un solo elettore in possesso di scheda ma in attesa di matita. Ovviamente, le cabine possono