• Non ci sono risultati.

UNIVERSITA' DI BOLOGNA - CORSO DI LAUREA IN INFORMATICA CORSO DI SISTEMI OPERATIVI - ANNO ACCADEMICO 2004/2005 COMPITO CONCORRENZA – 16 Settembre 2005

N/A
N/A
Protected

Academic year: 2021

Condividi "UNIVERSITA' DI BOLOGNA - CORSO DI LAUREA IN INFORMATICA CORSO DI SISTEMI OPERATIVI - ANNO ACCADEMICO 2004/2005 COMPITO CONCORRENZA – 16 Settembre 2005"

Copied!
2
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 2004/2005

COMPITO CONCORRENZA – 16 Settembre 2005

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 – Doppio Buffer Limitato Sincronizzato

Oggetto dell'esercizio e' un sistema a buffer limitato con due produttori e due consumatori: un produttore e un consumatore elaborano oggetti di tipo A e gli altri due oggetti di tipo B.

Il consumatore di oggetti di tipo A consuma oggetti prodotti dal produttore di oggetti di tipo A e similmente operano produttore e

consumatore di oggetti del tipo B.

Esistono due buffer, uno per oggetti di tipo A e uno per quelli di tipo B, di uguale capacita' MAXOBJ.

Oltre ai normali vincoli per i buffer limitati deve accadere che la produzione ed il consumo di oggetti di tipo diverso siano sincronizzati. Il produttore di oggetti di tipo A non puo' produrre un altro elemento di tipo A se non e' stato nel frattempo prodotto uno di tipo B e similmente il consumatore del tipo A non puo' proseguire se anche il consumatore dell'altro tipo ha consumato un elemento.

Esercizio 2 –

Sia dato un servizio di message passing asincrono. Si vuole implementare un sistema di message passing sincrono con possibilita' del ricevente di "rifiutare" messaggi.

Le funzioni da realizzare sono:

int msgxsnd(ProcID dst, MsgT msg) MsgT msgxrcv(ProcID sender)

msgxaccept(ProcID sender) msgxdeny(ProcID sender)

Il mittente spedisce il messaggio con msgxsnd e attende. il destinatario riceve il msg con msgxrecv e a suo comodo decide se accettare il messaggio chiamando msgxaccept o rifiutarlo con msgxdeny. A quato punto il mittente si puo' sbloccare rotirnando 1 se il messaggio e' stato accettato 0 se e' stato rifiutato.

Esercizio 3:

Queste funzioni:

F(X,Y)=<x++,y-->

G(X,Y)=<x=x+y,y=x*y>

consentono di essere usate in modo simile Test&Set?

(2)

Riferimenti

Documenti correlati

Esercizio 0: Su entrambi i fogli, scrivere correttamente nome, cognome, matricola e posizione prima di svolgere ogni altro esercizio.. Mostrare l'output dei processi

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.