• Non ci sono risultati.

Nome_______________ Cognome _____________________N. di matricola (10 cifre) ___________________ Riga ___ Col _____ UNIVERSITA' DEGLI STUDI DI BOLOGNA - CORSO DI LAUREA IN INFORMATICA CORSO DI SISTEMI OPERATIVI - ANNO ACCADEMICO 2007/2008 CONCORRENZA – 17

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 CORSO DI SISTEMI OPERATIVI - ANNO ACCADEMICO 2007/2008 CONCORRENZA – 17 "

Copied!
5
0
0

Testo completo

(1)

Nome_______________ Cognome _____________________N. di matricola (10 cifre) ___________________ Riga ___ Col _____

UNIVERSITA' DEGLI STUDI DI BOLOGNA - CORSO DI LAUREA IN INFORMATICA CORSO DI SISTEMI OPERATIVI - ANNO ACCADEMICO 2007/2008

CONCORRENZA – 17 Settembre 2008

Esercizio -1: essersi iscritti correttamente per svolgere questa prova.

Esercizio 0: Scrivere correttamente nome, cognome, matricola e posizione prima di svolgere ogni altro esercizio.

Esercizio 1: Sia dato un servizio di pronto soccorso con piu' di 3 medici. I pazienti possono appartenere a due categorie:

pazienti urgenti (urgent==1o non urgenti (urgent=0).

I pazienti urgenti hanno sempre la priorita' nell'allocazione del medico. Se c'e' un paziente urgente il primo medico disponibile lo cura, i pazienti non urgenti vengono curati solo se ci sono almeno tre medici liberi e disponibili per i pazienti urgenti.

questi sono i processi che usano il monitor eu (emergency unit).

process doctor(myname) { while(1) {

patient_s_name = eu.getpatient(myname);

patient_s_name.help();

} }

process patient(myname) { ...

doctor_s_name=eu.getdoctor(myname,urgent);

...

}

Come si vede il monitor "presenta" medico e paziente: al medico fornisce il nome del paziente e viceversa.

Implementare il monitor eu.

Esercizio 2: Considerate il seguente sistema, dove siano stati attivati in parallelo tre processi P[0] || P[1] || P[2]

semaphore S[3] = {1,0,0};

semaphore R[2] = {1,1};

process P[i] { while(1) { S[i].P();

R[random(2)].P();

R[random(2)].V();

S[(i + random(2))%3].V();

} }

a) Descrivere (p.e. con l'aiuto di un grafo) tutte le possibili evoluzioni del sistema b) Puo' il sistema entrare in deadlock?

c) c) Puo' il sistema non entrare mai in deadlock?

ci) d) Possono esserci casi di starvation?

cii) e) [DIFFICILE] Probabilisticamente, cosa avverra' al trascorrere all'infinito del tempo?

Esercizio 3 (Message passing del piu' lesto): [DIFFICILE] le primitive di message passing asincrono del piu' lesto sono definite come segue.

void send2(msg m1, msg m2, dest d1, dest d2); /* invia il messaggio m1 al primo fra d1 e d2 che fa receive2 e il messaggio m2 al secondo fra d1 e d2 che fa receive2 */

msg receive2(); /* riceve un messaggio inviato con una send2 */

Il message passing asincrono del piu' lesto ha lo stesso potere espressivo del message passing asincrono?

Nota: si suppone (per assurdo) che tutti i processi abbiano a disposizione un orologio globale e che, in caso di ricezione simultanea, il comportamento sia indefinito (ovvero, fate quello che volete!).

(2)
(3)

Nome_______________ Cognome _____________________N. di matricola (10 cifre) _____________________ Riga ___ Col _____

UNIVERSITA' DEGLI STUDI DI BOLOGNA - CORSO DI LAUREA IN INFORMATICA CORSO DI SISTEMI OPERATIVI - ANNO ACCADEMICO 2007/2008

PARTE GENERALE – 17 Settembre 2008

Esercizio -1: essersi iscritti correttamente per svolgere questa prova.

Esercizio 0: Scrivere correttamente nome, cognome, matricola e posizione prima di svolgere ogni altro esercizio.

Esercizio 1:

a) E' possibile che usando pagine di ampiezza maggiore (sempre pero' potenza di 2) la frammentazione interna cresca?

b) Nelle stesse condizioni e' possibile che diminuisca?

Portare dimostrazioni di impossibilita' o esempi.

Esercizio 2:

a) Mostrare lo stato di un banchiere multivaluta con due valute e tre processi tale che:

I)

lo stato sia safe e

II) le richieste P1:A(3,3); P2:A(4,2); P3:A(2,4) possano essere soddisfatte esclusivamente nell'ordine dato (ovvero ogni altra permutazione di queste tre richieste non sia immediatamente soddisfacibile)

b) Partendo dalla soluzione al punto a), spiegare cosa accade se il banchiere riceve le seguenti richieste nell'ordine dato:

P1:A(1,1); P2:A(2,1); P1:A(2,2); P1:R(4,3);P3:A(0,1); P2:(1,1); P2:R(3,3); P3:(2,3)

c)

c) Mostrare il grado di holt che descrive lo stato del banchiere trovato al punto a). Il grafo e' riducibile?

Esercizio 3:

Sia x l'ultima e y la penultima cifra del vostro numero di matricola. Rispondete alla domanda

(y*10+x)

%3.0. Descrivere tutte le strutture dati mantenute dal gestore della memoria di un sistema operativo basato su paginazione e l'algoritmo di rimpiazzamento detto dell'orologio.

1. Descrivere tutte le strutture dati mantenute (in RAM o su disco) dal gestore di un file system FAT 2. Descrivere tutte le strutture dati mantenute (in RAM o su disco) dal gestore di un file system ext2 (Unix)

(4)
(5)

Riferimenti

Documenti correlati

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

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:

Msg srx_recv(pid_t sender, time timeout) riceve un messaggio dal processo indicato come sender (che in questo servizio non puo' essere '*') ma se non arriva alcun messaggio,

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

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 in ordine ciclico (come se