Provetta di Sistemi Operativi – 4 novembre 2004

annuncio pubblicitario
Soluzioni della provetta di Sistemi Operativi – 4 novembre 2004
Analisi dei Sistemi Operativi mediante le code d’attesa
1) (1pt) Descrivere un algoritmo per generare una variabile aleatoria uniforme tra -2 e +2.
Partendo da una v.a. uniforme ‘r’ tra 0 e 1, una v.a. ‘x’ uniforme tra -2 e +2 si può
evidentemente ottenere nel seguente modo:
x=4r-2
Volendo verificare questo risultato possiamo usare il metodo classico della funzione di
distribuzione inversa di una v.a. uniforme tra -2 e +2:
F(x)=

x
1
d 
 4

x
1
1
d  ( x  2)
4
2 4
Quindi, da r=F(x) si ottiene x=4r-2.
2) (3pt) Un utente di un sistema operativo scrive una applicazione che risponde al paradigma
del produttore/consumatore. L’applicazione è composta da due processi, uno dei quali – il
produttore - scrive continuamente messaggi in un buffer di 100 byte. Si consideri che:
 Ogni messaggio richiede 5 byte
 Il buffer di 100 byte non è circolare: dopo che il buffer si riempie i messaggi
ulteriormente prodotti non sovrascrivono altri messaggi, semplicemente vengono persi
se non vengono letti.
L’altro processo – il consumatore – legge il buffer con degli intertempi aleatori distribuiti
secondo una distribuzione esponenziale con frequenza pari a 2 [letture/s].
Tenendo conto dei valori medi, trovare la frequenza massima alla quale il processo
produttore scrive messaggi in modo tale che non venga perso nessun messaggio.
Il problema si può descrivere con una coda M/M/1 con  = 2 e  da determinare in modo
tale che la lunghezza della coda non superi mai 100 byte. Questo vuol dire che,
considerando i valori medi e chiamando n il numero medio di messaggi in coda, 5*n <100
ovvero 5
2
 100 ovvero 5 2  100 100  0 che ha due soluzioni: 1=0,954 e 2=-20,954.
1 
Dal che risulta che <0,954 ovvero, visto che /2, la frequenza media con la quale il
processo scrittore scrive messaggi deve essere minore di 1,9 messaggi al secondo.
3) (6pt) Un progettista realizza una applicazione nella quale i processi che eseguono nel
contesto del Sistema Operativo – basato su una sola CPU - richiedono ciclicamente servizio
da parte di una sola unità di I/O. Il numero dei processi nel sistema è costante e pari a 6 e
le distribuzioni relative alle elaborazioni della CPU e dell’I/O sono esponenziali con
frequenze rispettivamente 1 e 2.
 Sapendo che la frequenza media di servizio da parte della unità di I/O è pari a 5
richieste al secondo, trovare il numero dei processi elaborati al secondo dalla CPU in
modo tale che la probabilità di utilizzazione della CPU sia maggiore di 0.8.
 Per eliminare la coda d’attesa dei processi pronti per l’esecuzione, il progettista del
sistema pensa di sostituire la CPU con un numero di processori di minore costo ( e di
minore potenza) che, da un punto di vista funzionale sono posti in parallelo, in modo
tale che non appena un nuovo processo richiede elaborazione viene subito assegnato ad
un processore libero. Sapendo che ognuno dei nuovi processori ha una potenza ed un
costo 3 volte inferiori all’unica CPU della versione iniziale, calcolare il costo della
soluzione multiprocessore relativamente al sistema originale.
Considerando il sistema multiprocessore come un unico server equivalente di
elaborazione, e gli altri parametri invariati (nr. complessivo di processi e frequenza di
I/O) calcolare la probabilità di utilizzazione del server.

Il problema può essere modellato quindi con una coda ciclica:
CPU
1

2
con un numero di processi J=6. È conosciuto 2 e si vuole conoscere 1 tale che U>0,8.
 Mettendo U in una forma più maneggevole:

1  J
1 
dove
J 1
 0,8

   J 1  0,8  0,8 J 1
cioè
  0,8   J 1  0,8 J 1  0,2  J 1
2
1
Quindi
2
 J 1
 0,8  0,2 2
1
1 J 1
 2 1 J  0,8 2 J 1  0,2 2 J 1  0,2  5 7  15625
Provando con qualche valore di 1, si vede che per 1=5,1 si ha un valore di U maggiore di 0.8.
In particolare U=0,8485.
Quindi, consideriamo 1=5,1. Con questo valore, si ha r=5/5,1.
Il numero medio processi è E{Pn(t)}= nPn(t), dove Pn(t)=n(1-)/(1-J+1). Sviluppando, si ha
E{Pn(t)}=

1 
[( J  1)
1  J
1   J 1
 J ]  2,92 . Quindi consideriamo che ci siano mediamente 3
processi nel sistema CPU.

Per eliminare la coda d’attesa nel sistema CPU, si può pensare di usare alcune CPU di
minore potenza (in particolare come affermato, di potenza 1/3 della precedente) in modo tale
che non appena un processo entra nel sistema CPU, viene subito elaborato da un processore,
eliminando quindi la coda d’attesa. Con i dati precedenti, il numero medio di processi nel
sistema CPU è uguale a 3. Quindi il numero di CPU che sostituiscono l’unica CPU del
sistema originale sarà pari a tre.
Ovviamente, se il processore è tre volte meno potente, la durata della elaborazione sarà tre
volte maggiore di prima, cioè possiamo dire che la frequenza di elaborazione dei processori
meno potenti (1’) sarà un terzo della precedente (1’=1/3). Naturalmente la minore
frequenza sarà compensata dalla maggiore disponibilità di processori.
Intanto, possiamo dire che il sistema CPU ha lo stesso costo di prima (naturalmente non c’e’
bisogno di memoria per contenere la coda d’attesa ma questo è un risparmio limitato e sul
quale non vengono forniti dati quindi nulla si può dire sul fattore memoria).

Cosa possiamo dire sul fattore di utilizzazione con il sistema delle 3 CPU?
Se ci fosse una sola CPU di potenza 1/3, avremmo ’=2/1’=3. Se invece consideriamo le
3 CPU come un sistema M/M/3 (un sistema con ‘c’ processori ciascuno con coefficiente di
utilizzazione pari a  è equivalente ad un server con coefficiente di utilizzazione pari a
’=/c) il fattore di utilizzazione resta uguale a . Quindi anche il fattore di utilizzazione U
resta uguale al precedente.
In conclusione, nel problema considerato nulla cambia (costo e fattore di utilizzazione) se al
posto di una CPU si usassero tre CPU di potenza pari a 1/3.
Scarica