• Non ci sono risultati.

process P { int kp = 2

N/A
N/A
Protected

Academic year: 2021

Condividi "process P { int kp = 2"

Copied!
1
0
0

Testo completo

(1)

Nome e cognome ___________________________ N. di matricola (10 cifre) ___________________ Posizione: Riga ____ Col _____

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

MIDTERM CONCORRENZA - 14 Novembre 2003

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

Esercizio 0: 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 = 2;

while (kp > 0) { sp.P();

mutex.P();

val = val+1;

sq.V();

kp--;

mutex.v();

} }

process Q { int kq = 3;

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

mutex.P();

val = val*2;

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: Buffer di accumulazione doppio

Si consideri il seguente problema. Esistono due classi di oggetti chiamati A e B. Gli oggetti di queste due classi vengono prodotti da un insieme di produttori PAB e consumati da due insiemi di consumatori CA e CB. I produttori producono un oggetto di classe A e un oggetto di classe B con una singola chiamata al monitor DoubleBuf. I consumatori in CA

consumano oggetti di classe A e i consumatori in CB consumano oggetti di classe B. Gli oggetti vengono mantenuti in due buffer limitati (entrambi di dimensione N, con N pari) controllati dal monitor DoubleBuf. Vi sono numerosi

produttori/consumatori (il numero di istanze di ogni categoria supera N).

Il monitor è caratterizzato da due periodi: riempimento e svuotamento. Durante il riempimento è possibile solo aggiungere oggetti ai buffer, durante lo svuotamento è possibile solo rimuovere oggetti. Quando il buffer è vuoto, i produttori

inseriscono oggetti fino a riempirlo. Quando il buffer è pieno, i consumatori consumano oggetti fino a svuotarlo. I

consumatori devono alternarsi nel modo seguente: prima viene consumato un oggetto A, poi viene consumato un oggetto B, poi ancora un oggetto B, poi un oggetto A, e così via fino allo svuotamento del buffer.

process PAB { while (true) { A a = produceA();

B b = produceB();

DoubleBuf.add(a, b);

} }

process CA { while (true) {

A a = DoubleBuf.getA();

consume(a);

} }

process CB { while (true) {

B b = DoubleBuf.getB();

consume(b);

} } a) Scrivere il monitor DoubleBuf

b) Sono possibili situazioni di deadlock?

c) Sono possibili situazioni di starvation?

Esercizio 3 – Buffer con messaggi, variazione

Sia dato un buffer con N elementi e siano dati numerosi produttori/consumatori (il numero di istanze di ogni categoria supera N). Si realizzi un meccanismo per la comunicazione di dati dai produttori ai consumatori che rispetti tutte le proprietà del buffer limitato ma consenta ad un consumatore di prelevare il dato solamente se il buffer è

completamentente pieno oppure se ci sono in attesa tanti conumatori quanti elementi nel buffer (N).

Scrivere le funzioni bbbsend e bbbreceive (blocking bounded buffer send/receive), facendo uso di message passing sincrono e di un processo gestore.

Riferimenti

Documenti correlati

Prova scritta di Matematica Applicata 29 gennaio

Durante tale periodo chiunque abbia interesse può prenderne visione dalle ore 8.00 alle ore 14.00 nei giorni feriali e dalle ore 9.00 alle ore 12.00 nei giorni festivi. Entro

Dividi a mente per 2 e attento a questa strategia: se un numero termina con uno o più zeri, dividi per due la cifra o le due cifre iniziali e scrivi appresso tutti gli zeri

Per rendere pi` u “leggibile” il tutto, useremo la lettera y per indicare proposte fatte dal giocatore II, ma y ∈ [0, 1] rappresenta comunque sempre una proposta di spartizione in

Oltre ai vostri famigliari e alle altre persone a voi vicine, potete contare sulla consulenza specializzata degli orientatori e delle orientatrici dell’Ufficio dell’orientamento

Ciò posto, va ricordato che la ratio legis sottesa alle disposizioni normative relative ai buoni-corrispettivo è che le stesse non comportano deroghe alla disciplina applicabile alle

Calcolare l'aumento di volume di una sfera di alluminio, il cui raggio misura 10cm a 0°C , quando la sfera viene immersa in

Calcolare poi il numero dei sottoinsiemi di A di cardinalità 4 che hanno intersezione non vuota con B.. 3) Calcolare il numero di tutte le matrici con 3 righe e