• Non ci sono risultati.

UNIVERSITA' DEGLI STUDI DI BOLOGNA - CORSO DI LAUREA IN INFORMATICAPROVA SCRITTA DI SISTEMI OPERATIVIANNO ACCADEMICO 2017/201819 settembre 2018

N/A
N/A
Protected

Academic year: 2021

Condividi "UNIVERSITA' DEGLI STUDI DI BOLOGNA - CORSO DI LAUREA IN INFORMATICAPROVA SCRITTA DI SISTEMI OPERATIVIANNO ACCADEMICO 2017/201819 settembre 2018"

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 2017/2018 19 settembre 2018

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: Scrivere il monitor di controllo per lo smistamento delle valigie all'aeroporto di Bologna. Un carrello viaggia su un binario circolare. Il carrello si ferma ad una postazione dove vengono caricate le valigie e quindi in corrispondenza a più postazioni dove vengono scaricate le valigie. Esiste una postazione corrispondente ad ogni aeroporto di destinazione.

Alla postazione di caricamento un addetto scansiona dal codice a barre l'aeroporto di destinazione e il nome del proprietario della valigia.

Il codice dei processi coinvolti nel problema è il seguente:

int airport_codes = [BLQ, CDG, BRX, LGW, FCO, ....]

## l'elemento 0, BLQ (codice di Bologna) corrisponde alla stazione di caricamento cart: process

while True:

for code in airport_codes:

dispatch.cartat(code) # il carrello è alla postazione code loadingstation: process

while True:

dstcode,owner = read_barcode()

dispatch.load(dstcode, owner) #carica la valigia del viaggiatore owner diretto a dstcode station, for dstcode in airport_codes[1:]: process

while True:

owner = dispatch.unload(dstcode) #scarica dal carrello la valigia dell'utente owner process_luggage(ownder, dstcode)

Condizioni da rispettare: il carrello trasporta MAX valigie, alla stazione di caricamento il carrello si ferma fino al riempimento completo del carrello, alle altre stazioni deve sostare fino a quando tutte le valigie per la destinazione sono state scaricate.

Esercizio c.2: Dato un servizio di message passing asincrono, implementare un nuovo servizio di message passing sincrono e LIFO.

Il ricevente deve svuotare la coda dei messaggi in attesa di essere ricevuti e consegnare al chiamante l'ultimo messaggio arrivato non prima però di aver inviato un messaggio di conferma per sbloccare il mittente.

Nessun messaggio deve essere perduto.

Esercizio g.1: Sia dato questo programma:

Program P:

for (i=0;i<2;i++) { long_compute();

io();

}

short_compute();

long compute impiega 5 ms, short compute 2 ms e io impiega 5 ms. Il programma usa un device condiviso gestito in modalità FIFO.

Considerando in un sistema di elaborazione monorocessore dove sono in esecuzione tre istanze del programma P che sono state attivate ai tempi 0, 4ms e 7ms e che il sistema usa uno scheduler round robin per l'accesso alla CPU disegnare il diagramma di Gannt dell'esecuzione e spiegarne i passaggi. (time slice=3 ms)

Esercizio g.2: Rispondere alle domande seguenti:

a) perché per realizzare un servizio di memoria virtuale l'algoritmo di rimpiazzamento LRU è difficile da implementare?

b) in quali casi anche utilizzando file system con supporto di journaling si possono perdere informazioni?

c) perché il servizio di message passing asincrono e quello sincrono non hanno lo stesso potere espressivo?

d) esistono processori che non hanno istruzioni privilegiate (modo kernel/modo user). Quali conseguenze ci sono per i sistemi operativi?

Riferimenti

Documenti correlati

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

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

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

La funzione dualshift puo' essere usata al posto della test&amp;set per la sincronizzazione fra processi? Dimostrare la risposta.. b) Si consideri ora la funzione andor(a,b) che

Se la dimensione viene incrementata I processi eventualmente in attesa di scrivere devono poter inserire I loro elementi nel buffer fino a che e' consentito della