• Non ci sono risultati.

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 20 febbra

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 INFORMATICA PROVA SCRITTA DI SISTEMI OPERATIVI ANNO ACCADEMICO 2018/2019 20 febbra"

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 20 febbraio 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 delay deve fornire tre procedure entry:

boolean delay(unsigned int timeout) int count(void)

void tick(void)

La funzione tick viene richiamata ad ogni millisecondo. Un processo messo in attesa a causa di una delay attende per un numero di millisecondi (tick) indicato nel parametro.

La procedure entry count deve restituire il numero di processi attualmente in attesa a causa di una delay.

Scrivere delay.

Esercizio c.2: sia dato un sistema di processi a memoria privata che fornisca servizio di message passing asincrono.

Siano date inoltre la funzione call4fun ed il processo server definite come segue:

def call4fun (x):

asend(server, (getpid(), x, 0, 1)) return(arecv(server))

process server:

forever:

(s, n, r, v) = arecv(*) if (n > 0)

asend(server, (s, n-1, r+v, v+2)) else

asend(s, r) Cosa calcola la funzione call4fun e come viene calcolato questo valore?

Esercizio g.1: In un sistema ci sono 3 classi di risorse A, B, C e 4 processi p,q,r,s.

In un determinato istante le tre risorse della classe A sono assegnate a p (due risorse) e a s (1 risorsa), l'unica risorsa della classe B è assegnata ad r mentre le due risorse della classe C sono assegnate a q ed a r. Sono pendenti le seguenti richieste: p ed s richiedono una risorsa della classe C e q chiede una risorsa della classe A.

Lo stato così determinato è di deadock? Mostrare il procedimento usato per ottenere la risposta.

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 revocare una autorizzazione fornita tramite una capability?

Riferimenti

Documenti correlati

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

La consultazione o anche solo la disponibilità di altro materiale comporterà l'annullamento del compito (verra' automaticamente valutato gravemente insufficiente).. Esercizio c.1:

Un solo processo alla volta deve essere in esecuzione (fra quelli che hanno chiamato init e non ancora fini), yield deve fare avvicendare i processi, deve attivare quello a priorita'

Esercizio 0: Scrivere correttamente nome, cognome, matricola e posizione prima di svolgere ogni altro esercizio. Esercizio 1: Considerare I seguenti processi gestiti mediante