• Non ci sono risultati.

(1)nome e cognome

N/A
N/A
Protected

Academic year: 2021

Condividi "(1)nome e cognome"

Copied!
4
0
0

Testo completo

(1)

nome e cognome __________________________ numero di matricola 16 74 __________

CORSO DI SISTEMI OPERATIVI

CORSO DI LAUREA IN INFORMATICA - UNIVERSITA’ DI BOLOGNA SESSIONE ESTIVA 1998/99 - SECONDO APPELLO

1 LUGLIO 1999

Esercizio -1. Essersi correttamente iscritti per sostenere questa prova scritta (secondo le regole indicate in un apposito messaggio news).

Esercizio 0. Scrivere correttamente il proprio nome, cognome e numero di matricola in tutti i fogli.

Si vuole rappresentare l'astrazione di variabile di condizione di gruppo.

La classe "setcond" che realizza questa astrazione ha due metodi pubblici:

setcond::setwait() setcond::setsignal()

Dato un oggetto sc di tipo setcond, una operazione di tipo setwait deve sospendere l'esecuzione del processo che l'ha chiamata, una operazione di tipo setsignal deve riattivare TUTTI i processi in attesa della condizione prima di proseguire (signal-urgent).

1) E' possibile realizzare la classe setcond come monitor? (hint: le funzioni di setcond vengono richiamate dall'interno di un altro monitor). Discutere le problematiche correlate.

(2)

2) Scrivere i metodi setwait e setsignal come procedure entry di un monitor o come funzioni richiamabili dall'interno di un monitor a seconda della risposta dell'esercizio 1.

(3)

nome e cognome __________________________ numero di matricola 16 74 __________

3) Scrivere i metodi di setcond usando message passing asincrono.

(4)

4a) Date le primitive relative a semafori generali P e V, scrivere le funzioni BP e BV che realizzano l'astrazione di semaforo binario. (Nota: i semafori binari devono soddisfare la definizione data a lezione: BP deve essere bloccante se il valora del semaforo è 0 e la BV deve essere bloccante se il valore del semaforo è 1)

4b) A un programmatore viene in mente che la doppia sincronizzazione generata dai semafori binari consente di realizzare la soluzione più semplice mai vista per il problema del produttore-consumatore.

x: shared var;

Producer: process while(true) do

x=produce();

BV(s);

od

Consumer: process while(true) do

BP(s);

consume(x);

od

La soluzione è corretta? Perché?

Riferimenti

Documenti correlati

In un piano verticale Oxy si consideri un disco omogeneo, di massa m e raggio R, vincolato con il diametro AB a scorrere su una guida rettilinea mobile attorno ad un suo punto fisso

In un piano verticale Oxy, si consideri un sistema materiale pesante, costituito da un’asta omogenea AB, di massa m e lunghezza 2L, da un disco omogeneo, di massa 2m e raggio R, e da

Punteggi: punti 3 per risposta esatta, punti 0 per risposta non crocettata, punti -1 per risposta

In un piano orizzontale Oxy, si consideri un sistema materiale pesante, costituito da un’asta omogenea OA, di massa m e lunghezza L, e da un disco omogeneo, di massa m e raggio

• Durante lo svolgimento della prova, non si e’ autorizzati ad uscire dall’aula (salvo che per motivi di salute o ci si ritira, in entrambi i casi si abbandona l’aula).

• La valutazione dello svolgimento degli esercizi verra’ utilizzata per la valutazione finale, in sede di esame finale del corso. • Consegnare i seguenti fogli stampati e

• La valutazione dello svolgimento degli esercizi verra’ utilizzata per la valutazione finale, in sede di esame finale del corso. • Consegnare i seguenti fogli stampati e

• La valutazione dello svolgimento degli esercizi verra’ utilizzata per la valutazione finale, in sede di esame finale del corso. • Consegnare i seguenti fogli stampati e