• Non ci sono risultati.

Nome_______________ Cognome ____________________N. di matricola (10 cifre) ______________________ Riga ____ Col ____UNIVERSITA' DEGLI STUDI DI BOLOGNA - CORSO DI LAUREA IN INFORMATICAPROVA SCRITTA DI SISTEMI OPERATIVIANNO ACCADEMICO 2018/201915 gennaio 20

N/A
N/A
Protected

Academic year: 2021

Condividi "Nome_______________ Cognome ____________________N. di matricola (10 cifre) ______________________ Riga ____ Col ____UNIVERSITA' DEGLI STUDI DI BOLOGNA - CORSO DI LAUREA IN INFORMATICAPROVA SCRITTA DI SISTEMI OPERATIVIANNO ACCADEMICO 2018/201915 gennaio 20"

Copied!
1
0
0

Testo completo

(1)

Nome_______________ Cognome ____________________N. di matricola (10 cifre) ______________________ Riga ____ Col ____

UNIVERSITA' DEGLI STUDI DI BOLOGNA - CORSO DI LAUREA IN INFORMATICA PROVA SCRITTA DI SISTEMI OPERATIVI

ANNO ACCADEMICO 2018/2019 15 gennaio 2020

Esercizio -1: Essere iscritti su AlmaEsami per svolgere questa prova.

Esercizio 0: Scrivere correttamente nome, cognome, matricola e posizione in tutti i fogli prima di svolgere ogni altro esercizio. Scrivere esclusivamente a penna senza abrasioni. E' vietato l'uso delle penne cancellabili, della matita, dei coprenti bianchi per la correzione (bianchetto) e la scrittura in colore rosso (riservato alla correzione).

Il compito e' formato da tre fogli, sei facciate compresa questa. Le soluzioni che si vogliono sottoporre per la correzione devono essere scritte negli spazi bianchi di questi fogli. Non verranno corretti altri supporti.

E' obbligatorio consegnare il compito, e' possibile chiedere che esso non venga valutato scrivendo “NON VALUTARE”

in modo ben visibile nella prima facciata.

Per svolgere questo compito occorre solo una penna e un documento di identità valido. La consultazione o anche solo la disponibilità di altro materiale comporterà l'annullamento del compito (verrà automaticamente valutato gravemente insufficiente).

Esercizio c.1: Il monitor "semaforo con timeout" semtimeout deve fornire tre procedure entry:

void V(void)

boolean P(unsigned int timeout) void tick(void)

Vale l'invariante dei semafori generali. La funzione tick viene richiamata ad ogni millisecondo. Un processo messo in attesa a causa di una P attende al massimo il numero di millisecondi indicato nel parametro.

Se un processo viene riattivato per timeout la P ritorna valore vero, altrimenti falso. Le operazioni V devono riattivare i processi in attesa in ordine FIFO.

Scrivere semtimeout.

Esercizio c.2: Dato un servizio di message passing asincrono scrivere un servizio di message passing sincrono a spedizione multipla (senza fare uso di processi server). Devono essere previste due funzioni:

mulsend(pid_t destination, T msg, int times) T mulrecv(pid_t sender)

La chiamata mulsend spedisce il messaggio msg al processo destination times volte. Solo quando il messaggio è stato ricevuto times volte da destination l'esecuzione della funzione mulsend viene completata.

Il ricevente può indicare il valore zero come sender nella mulrecv per indicare che vuole ricevere un messaggio da qualsiasi mittente.

Esercizio g.1: Si consideri l'algoritmo del banchiere a tre valute. Si prenda in considerazione una situazione nella qualetre processi p1, p2, p3 abbiano un massimo credito disponibile rispettivamente di (3, 2, 3), (3, 3, 2), (2, 3, 3), cioé peresempio p1 può prendere in prestito 3 unità della prima e della terza valuta ma solo 2 della seconda. In un certo istante p1 ha 2 unità della prima valuta, p2 ha 2 unità della seconda, p3 ha 3 unità della terza e nessuna altra risorsa è stata assegnata. Qual è il capitale iniziale minimo che consente allo stato di essere safe? (considerare tutti i casi possibili e spiegare bene il procedimento.

Esercizio g.2: rispondere alle seguenti domande:

a) perché uno scheduler round-robin può essere inadatto a gestire processi con I/O multimediale?

b) per risolvere un problema di trashing è necessario terminare forzatamente dei processi o è sufficiente bloccare l'esecuzione di qualche processo e riattivarli successivamente? Perché?

c) Con lo stesso numero di dischi, RAID1 o RAID5 consente di memorizzare più dati? Perché? Quale è più sicuro?

Perché?

d) Perché è difficile revolacre una autorizzazione fornita tramite una capability?

Riferimenti

Documenti correlati

Quando l'ultimo utente ha preso la propria biancheria, se vi sono almeno tre utenti in attesa si inizia un nuovo ciclo di lavaggio altrimenti occorre attendere l'arrivo di almeno

Per esempio put(v), (dove v e' un vettore di M elementi) inserisce ogni elemento del vettore nel buffer corrispondente. I consumatori ricevono un oggetto dal buffer indicato

Devono essere presenti elementi da leggere in almeno N/2 buffer perche' la chiamata abbia successo (negli elementi relativi a buffer vuoti la chiamata restituisce il valore

In entrambi i casi, la risposta non deve essere limitata al valore numerico, ma deve illustrare il ragionamento. Domanda a) L'insieme A e' vuoto? In caso affermativo spiegare

Esercizio c.1: (a) Scrivere un monitor dualwriter che realizzi un doppio buffer limitato (ogni buffer ha ampiezza BUFSIZE) che consenta a uno scrittore di

Esercizio c.1: (a) Scrivere un monitor nmbb che realizzi un buffer limitato (di ampiezza BUFSIZE) che consenta alle chiamate write (inserimento nel buffer) e read (lettura da

Esercizio c.1: Per lo scopo di questo esercizio si ipotizzi la presenza di infiniti processi che si vogliono sincronizzare a tre a tre sulla base di un contrassegno numerico

Considerando in un sistema di elaborazione dove sono in esecuzione tre istanze del programma P che sono state attivate ai tempi 0,3ms e 7ms e che il sistema usa uno scheduler