• Non ci sono risultati.

UNIVERSITA' DEGLI STUDI DI BOLOGNA - CORSO DI LAUREA IN INFORMATICAPROVA SCRITTA DI SISTEMI OPERATIVIANNO ACCADEMICO 2016/201719 giugno 2017

N/A
N/A
Protected

Academic year: 2021

Condividi "UNIVERSITA' DEGLI STUDI DI BOLOGNA - CORSO DI LAUREA IN INFORMATICAPROVA SCRITTA DI SISTEMI OPERATIVIANNO ACCADEMICO 2016/201719 giugno 2017"

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 2016/2017 19 giugno 2017

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: Una gara di lancio del giavellotto prevede che tutti gli atleti in gara facciano tre tiri. Lancia un atleta alla volta seguendo l’ordine numerico.

Atleta: process i=0..NATLETI-1:

while giav.pronto(i) // lancia

giav.lanciato(i);

Giudice: process

while (i=giav.lanciofatto()) >= 0:

m = misuralancio()

giav.registraechiama(i, m) v = giav.classifica().

Il giudice di volta in volta attende in “lanciofatto” fino a quando il giocatore corrente non ha lanciato, misura la distanza del lancio e la registra, solo a quel punto il prossimo giocatore puo’ lanciare. Scrivere il monitor giav.

Esercizio c.2: Quali fra le seguenti funzioni possono essere usate al posto della test&set per realizzare un servizio di spinlock in un sistema nel quale la scrittura di una variabile globale non sia una funzione atomica?

i) foo(a,b,c): <if (random(0,1)) {a=b; b=c} else {c=b; b=a}> (random(0,1) genera a caso un valore 0 o 1) ii) bar(a,b): <x=a & 1; a = (a >> 1) | b << 31; b = x>

In tutte le funzioni i parametri sono passati per indirizzo.

Esercizio g.1: Siano dati due processi in esecuzione in un sistema monoprocessore e gestiti da uno scheduler round-robin.

I due processi sono gli unici nel sistema e usano la stessa unità di I/O gestita in modo FIFO.

PA: 1ms CPU, 2ms I/O, 1ms CPU, 6ms I/O, 1ms CPU PB: 2ms CPU, 1ms I/O, 6ms CPU, 1ms I/O, 1ms CPU

Quale è il tempo minimo e quale il tempo massimo impiegato dal sistema per completare l’elaborazione dei due processi al variare della lunghezza del quanto di tempo e della posizione iniziale dei processi nella ready queue (PA precede PB o viceversa).

Esercizio g.2: Rispondere alle domande seguenti:

a) perché aumentando la dimensione dell’area di memoria secondaria usata dalla memoria virtuale si corre rischio di trashing?

b) cosa provoca la scelta errata della durata del quanto di tempo in uno scheduler round robin?

c) quali sono le condizioni necessarie per poter applicare l’algoritmo del banchiere

d) quali sono i vantaggi di usare una FAT rispetto ad una allocazione concatenata dove l’indirizzo del prossimo blocco dati viene memorizzato nel blocco dati stesso?

Riferimenti

Documenti correlati

Scopo dell'esercizio è di scrivere il codice dei processi server che garantiscano che: - tutti i processi server stampino tutti i messaggi ricevuti (indipendentemente dal server

Esercizio 0: Scrivere correttamente nome, cognome, matricola e posizione in tutti i fogli prima di svolgere ogni altro esercizio.. Scrivere esclusivamente a penna

Trovare una stringa di riferimenti infinita (che usi un numero finito di pagine), se esiste, per la quale l’algoritmo LIFO (per il quale la pagina vittima è l’ultima caricata) e LRU

Nella directory radice all’interno della partizione ci sono tre directory: una chiamata.. “lost+found” (quella standard per il controllo di coerenza), una seconda chiamata “dev”

Nella directory radice all’interno della partizione c’è un file con nome “helloworld” e due directory una chiamata “lost+found” (quella standard per il controllo di coerenza)

Costruire, se possibile, una stringa di riferimenti di lunghezza infinita e che generi infiniti page fault usando un numero finito di pagine tale che FIFO, LRU e MAX si

a) scrivere, se possibile, una stringa di riferimenti di lunghezza infinita (che faccia riferimento ad un insieme finito di pagine e che generi un numero infinito di page fault)

b) Trovate una stringa di riferimenti di lunghezza infinita tale che se confrontiamo FIFO e MIN, da un certo istante in poi il numero di page fault per FIFO sia almeno triplo di