• Non ci sono risultati.

Nome e Cognome Numero di Matricola

N/A
N/A
Protected

Academic year: 2021

Condividi "Nome e Cognome Numero di Matricola"

Copied!
2
0
0

Testo completo

(1)

Nome e Cognome Numero di Matricola(10 cifre numeriche)

UNIVERSIT `A DEGLI STUDI DI BOLOGNA – CORSO DI LAUREA IN INFORMATICA CORSO DI SISTEMI OPERATIVI

PRIMA PROVA PARZIALE – ANNO ACCADEMICO 2002/2003 29 ottobre 2002

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

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

Esercizio 1: 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)=<a=b=(b*3)%11>

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´e non sia possibile scrivere tale supporto con la funzione f.

Esercizio 2:Il seguente programma concorrente, a seconda dell’interleaving fra i due processi, puo’ stampare una o piu’

stringhe. Indicare quali. (nota: tutti i semafori sono semafori generali inizializzati a 0)

P: process { print E;

s2.V();

s2.V();

s1.P();

print S;

}

Q: process { s2.P();

print R;

s2.P();

s1.V();

print P;

}

Esercizio 3: Considerate i seguenti processi:

P: process { print C;

print R;

}

Q: process { print A;

print P;

print E;

}

Modificare il codice dei processi in modo che stampino unicamente le parole ”CARPE” e ”CAPRE”. Le uniche modifiche ammesse sono inserimenti di invocazioni di primitive P e V sui semafori. Tutti i semafori utilizzati devono essere inizializzati a zero.

Esercizio 4: Bus Eireann e’ il nome del servizio di trasporti su autobus irlandese. La stazione degli autobus di Dublino offre una serie di viaggi organizzati per le mete turistiche piu’ visitate dell’Irlanda. Gli utenti che vogliono partecipare ad un viaggio hanno gia’ acquistato un biglietto per la meta desiderata. Esistono N M ET E mete diverse.

Il giorno prescelto, gli utenti si recano all’autostazione, che e’ composta da una sala d’attesa e da un’unica piattaforma di partenza. Gli utenti entrano nella sala d’attesa e raggiungono il gruppo di partecipanti ad una delle gite. Quando il gruppo ha raggiunto la dimensione prevista (che puo’ essere ottenuta tramite la funzione dimgruppo(int i), dove i e’ l’indice

1

(2)

del gruppo), il gruppo esce sulla piattaforma di partenza e aspetta l’autobus. Quando l’autobus arriva, tutti i partecipanti salgono nell’autubus, che puo’ finalmente partire.

La vita di un utente e di un autobus sono quindi rispettivamente:

utente: process {

eireann.entraSala(int gruppo);

eireann.esciPiattaforma (int gruppo);

eireann.saliAutobus(int gruppo);

}

autobus: process {

eireann.vaiPiattaforma(int gruppo);

eireann.iniziaGita(int gruppo);

}

Il fatto che esista un’unica piattaforma impone alcuni accorgimenti. Quando un gruppo e’ formato, tutti i partecipanti devono uscire uno dopo l’altro, uno alla volta. Non e’ possibile mischiare due gruppi. Quando il primo partecipante esce, l’autobus assegnato puo’ uscire dal deposito e recarsi alla piattaforma. I partecipanti non possono salire sull’autobus fino a quando non arriva alla piattaforma. Quando tutti i partecipanti sono saliti, l’autobus puo’ partire e un nuovo gruppo puo’

utilizzare la piattaforma. Quando un intero gruppo e’ uscito sulla piattaforma, un nuovo gruppo con lo stesso indice puo’

formarsi nella sala d’attesa.

• A) La definizione data non e’ starvation-free. Definire un invariante che garantisca assenza di starvation.

• B) Data la definizione del problema, possibile che vi siano deadlock?

• C) Implementare il monitor eireann

2

Riferimenti

Documenti correlati

Se sapete usare un foglio elettronico o sapete programmare calcolate il valor medio al variare del numero di tiri e copiate qui il grafico. In alternativa,usando 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

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

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