• Non ci sono risultati.

nome e cognome ___________________________ numero di matricola _____________________ (numero di matricola completo: 10 cifre numeriche)

N/A
N/A
Protected

Academic year: 2021

Condividi "nome e cognome ___________________________ numero di matricola _____________________ (numero di matricola completo: 10 cifre numeriche)"

Copied!
4
0
0

Testo completo

(1)

nome e cognome ___________________________ numero di matricola _____________________

(numero di matricola completo: 10 cifre numeriche)

CORSO DI SISTEMI OPERATIVI

CORSO DI LAUREA IN INFORMATICA - UNIVERSITA’ DI BOLOGNA PRIMO APPELLO UNICO DELLA SESSIONE ESTIVA AA 2000/2001

12 giugno 2001

Esercizio -1. Essersi iscritti per sostenere questa prova.

Esercizio 0. Scrivere correttamente il proprio nome e cognome e numero di matricola in tutti i fogli.

INVECCHIAMENTO VARIABILE

Gli attori di questo problema sono di tre tipi:

- i clienti - i serventi

- il processo orologio.

I serventi, tutti equivalenti fra loro, hanno la seguente struttura:

SERVER[i, i=0,..,NSERVER-1] : process { local var req;

while true {

q.getrequest(req) process(req) }

}

I clienti (in numero di NCLIENT) sottopongono delle richieste al pool dei serventi chiamando il seguente metodo:

q.putrequest(req, prio, priovar)

dove prio rappresenta la priorità inizale e priovar la velocità di variazione della priorità.

Il processo orologio (unico) è così strutturato:

TIMER: process { while true {

q.tick() sleep 1;

} }

Allo scoccare di ogni tick tutti le richieste ancora in attesasubiscono un incremento di priorità pari al parametro priovar specificato all'atto della richiesta.

Esercizio 1a. Questa definizione del problema non è starvation free. Cosa occorre indicare per renderla starvation free?

Esercizio 2. Ci puo' essere deadlock?

(2)

Esercizio 2. Scrivere il monitor q.

(3)

nome e cognome ___________________________ numero di matricola _____________________

(numero di matricola completo: 10 cifre numeriche)

Esercizio 3. Dato un supporto di semafori Fair caratterizzato dalle chiamate P e V implementare un supporto per semafori unfair, che quindi rispettino gli invarianti del semafori ma che non rispettino eventual entry (cioe' che possano generare starvation per qualche processo, ma mai stati di deadlock!).

(4)

Esercizio 4. Scrivere un programma che facendo uso di message passing asincrono e un processo gestore fornisca un supporto per semafori unfair (come nell'esercizio precedente).

Riferimenti

Documenti correlati

I punteggi di ciascuna domanda sono indicati tra parentesi: attenzione, una risposta errata verr` a valutata con il numero negativo indicato sempre in parentesi, per

Quando un camion vuole scaricare si reca al molo 1 e chiama la funzione harbour.truckunload(int capacity) Quando un camion vuole caricare si reca al molo 2 e chiama la

Esercizio 2a: Dato un meccanismo di message passing sincrono (dotato delle chiamate ssend sreceive viste a lezione) im- plementare un sistema di supporto per il message passing

Esercizio 0: Scrivere correttamente il proprio nome, cognome e numero di matricola in ogni foglio prima di svolgere ogni altro esercizio seguente.. Esercizio 1: Un semaforo ternario `

request è utile per riattivare un processo in attesa; xmf può valere m (sblocca un processo in attesa maschile) f (riattiva un processo in attesa femminile) a (any, sblocca

Quando un processo ha necessità di operare in mutua esclusione spedisce il gettone al proprio thread di gestione del gettone, questo non appena riceve il gettone lo mantiene (non

Esercizio 5: Indicare le modifiche da apportare al codice dell'esercizio 1 per gestire classi di messaggi con diversa priorità, ipotizzare che la funzione class(f) restituisca

Tutte le comunicazioni sono asincrone, i ritardi sono impredicibili ma in genere inferiori a t millisecondi, ad eccezione della comunicazione fra il clock e l'handler che ha