• 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 CORSI DI SISTEMI OPERATIVI A-L e M-Z. PROGRAMMAZIONE CONCORRENTE

SESSIONE ESTIVA – ANNO ACCADEMICO 2001/2002 2 LUGLIO 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 data una funzione atomica che opera su una variabile globale v cos`ı definita:

f (x) =< tmp = v; v = x; return(odd(tmp)) >

E possibile usare f per definire un supporto alla mutua esclusione in modo simile a test&set? NO+perch´` e oppure SI+come.

Esercizio 2. Si definiscano i semafori unari come caso limite dei semafori n-ari. Le operazioni UP e UV se non ci sono processi in attesa sono bloccanti altrimenti attivano il primo processo che ha fatto l’operazione opposta. (invariante nU V − nU P = 0). Sia dato un processo ausiliario e due semafori unari chiamati mutexin e mutexout:

mutex_support: process while (true)

UV(mutexin);

UP(putexout);

Scrivere le funzioni P e V che realizzano l’astrazione di semaforo generale facendo uso dei semafori unari e del processo mutex_support.

1

(2)

Esercizio 3: Si vuole scrivere un monitor che sincronizzi le operazioni di entrata e di uscita da un’autostrada. Gli utenti(clienti) sono di due tipi: quelli con telepasso e quelli senza. Le interazioni fra clienti e caselli possono essere rappresentati coi processi che seguono:

cliente_con_telepasso[i]:process .... giunge al casello in_k autostrada.tp_enter(i,in_k);

.... guida fino al casello out_k autostrada.tp_exit(i,out_k);

....

cliente_senza[j]:process .... giunge al casello in_k biglietto=autostrada.enter(in_k);

.... guida fino al casello out_k

importo=autostrada.exit(out_k,biglietto);

autostrada.pay(importo);

...

casello_telepasso[k]:process while (true)

(i,ink)=autostrada.tp_journey();

bank.debt(i,amount(ink,k));

casello_senza[k]:process while (true)

ink=autostrada.journey();

importo=amount(ink,k);

autostrada.cash(importo);

Scrivere il monitor autostrada. (Esiste un solo casello telepasso e uno normale per ogni uscita. Un solo automobilista alla volta passa per ogni casello.)

2

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

Modificare opportunamente la struttura di dati tabella ad indirizzamento diretto in modo che possa contenere pi`u oggetti con la medesima chiave (ma con dati satellite

Scrivere in forma leggibile il proprio nome, cognome e matricola sul testo del compito e su ogni foglio consegnato.. Consegnare solo la bella copia e il testo

Scrivere in forma leggibile il proprio nome, cognome e matricola sul testo del compito e su ogni foglio consegnato;.. Consegnare solo la bella copia e il testo

Scrivere in forma leggibile il proprio nome, cognome e matricola sul testo del compito e su ogni foglio consegnato.. Consegnare solo la bella copia e il testo

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 `