Sistema di votazione

Transcript

Sistema di votazione
Sistema
di votazione
Anno accademico 2005/2006
Progetto per l’esame di Sistemi di Elaborazione: Modellistica e Simulazione
Docente del corso Prof. A. Bondavalli
Paolo Filippelli <[email protected]>, matr. 2566393
Giacomo Sacchetti <[email protected]>, matr. 2661644
Mattia Santoro <[email protected]>, matr. 2532059
15 febbraio 2006
2
Copyright (c) 2006 Paolo Filippelli, Giacomo Sacchetti, Mattia Santoro
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1
or any later version published by the Free Software Foundation; with
the Invariant Sections being Ringraziamenti, with the Front-Cover Texts
being Sistema di votazione, and no Back-Cover Texts.
Il presente elaborato è stato scritto per poter sostenere l’esame di “Sistemi di Elaborazione: Modellistica e Simulazione
del corso di laurea in Informatica a Firenze.
.
In copertina:
Il testo è stato composto dagli autori mediante LATEX 2ε .
Indice
1 Descrizione del progetto
1.1 Testo del progetto . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Assunzioni di base . . . . . . . . . . . . . . . . . . . . . . . . . .
5
5
5
2 Cenni sulle distribuzioni
2.1 Esponenziale . . . . .
2.2 Normale . . . . . . . .
2.3 Weibull . . . . . . . .
7
7
7
9
di probabilità
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
3 Modello del Sistema in Mobius
3.1 Descrizione Generale . . . . . . . . .
3.2 Descrizione Specifica dei Modelli . .
3.2.1 Modello Atomico delle CPU .
3.2.2 Modello Atomico del Canale
3.2.3 Modello Atomico del Voter .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11
11
11
11
12
16
4 Simulazioni
4.1 Parametri della simulazione
4.2 Reward variables . . . . . .
4.3 Rate Rewards . . . . . . . .
4.4 Impulse Rewards . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
23
23
24
25
25
5 Risultati delle Simulazioni
5.1 Mean Time To Failure . . . . . . . . . .
5.2 Steady state . . . . . . . . . . . . . . . .
5.2.1 Caso λ variabile, X = 2, N = 3 .
5.2.2 Caso X variabile, λ = 0.1, N = 3
5.2.3 Caso N variabile, λ = 0.1, X = 2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
27
27
36
36
36
36
.
.
.
.
.
.
.
.
6 Computer farm
.
.
.
.
.
.
.
.
.
.
.
.
43
3
4
INDICE
Capitolo 1
Descrizione del progetto
1.1
Testo del progetto
Un sistema è composto da N processori ridondati e da un votatore. Ad intervalli di tempo regolari di 0.1 secondi, ciascun processore invia in maniera
sincronizzata al votatore il risultato di un esperimento. Se il processore funziona correttamente, il risultato trasmesso sarà il numero 1, altrimenti verrà
trasmesso un numero casuale fra 0 e 9. Il risultato, prima di giungere al votatore, attraversa un unico canale di comunicazione, condiviso da tutti i processori.
Se il canale funziona correttamente, il risultato giunge invariato al votatore,
altrimenti il risultato trasmesso potrà essere modificato come segue:
• se il risultato in transito è compreso fra 0 e 3, con probabilità p = 0.3
viene trasformato in un numero casuale compreso fra 4 e 9;
• se il risultato in transito è compreso fra 4 e 9, con probabilità p = 0.1
viene trasformato in un numero casuale compreso fra 0 e 3.
Si supponga che ciascun processore fallisca secondo una Weibull di parametri
(α, β) = (x, x), che il canale di comunicazione fallisca con rate esponenziale
pari a λ , e che entrambi abbiano tempi di riparazione distribuiti secondo una
normale di media 1 e varianza 1.5. L’intero sistema fallisce se il votatore ottiene
una maggioranza di risultati uguali che, però, non sono uguali ad 1. Si costruisca
un modello che rappresenti il sistema e si determini il tempo medio al fallimento
del sistema e la probabilità a steady-state che il votatore fornisca un risultato
scorretto nei seguenti casi:
• x = 2, λ = 0.1 (fallimenti/giorno), N = 2, 3, 4, 5.
• x = 2, λ = 0.01, 0.1, 1, 10 (fallimenti/giorno), N = 3.
• x = 1, 2, 3, 4 , λ = 0.1 (fallimenti/giorno), N = 3.
1.2
Assunzioni di base
In questa sezione si vanno a specificare alcuni aspetti del sistema che o non sono
specificati o possono risultare ambigui leggendo il testo del progetto e che sono
stati assunti durante la stesura del modello e le simulazioni.
5
6
CAPITOLO 1. DESCRIZIONE DEL PROGETTO
Si assume che:
• il canale invia tutti i messaggi istantaneamente;
• il votatore decide istantaneamente;
• la maggioranza calcolata dal votatore è una maggioranza proporzionale (sarebbe stato interessante simulare anche il caso maggioritario ma
purtroppo non è bastato il tempo);
• se il numero di risultati con valore uno è uguale al numero di risultati con
valore diverso da uno il sistema NON fallisce (es. se con N = 5 si hanno
i risultati: 1, 2, 2, 1, 9 allora il sistema non fallisce);
• il rate esponenziale λ passa da fallimenti/giorno a fallimenti/ora in quanto
le computazioni delle simulazioni con fallimenti/giorno duravano decine di
ore (visto che in 100 giorni ogni CPU del sistema invia 86400000 risultati),
in questo modo si hanno computazioni con tempi più brevi (anche se
comunque lunghi).
Capitolo 2
Cenni sulle distribuzioni di
probabilità
Nella modellazione del nostro sistema, utilizziamo diversi tipi di distribuzioni di
probabilità. Presentiamo nei seguenti paragrafi alcuni aspetti caratteristici.
2.1
Esponenziale
È una distribuzione continua nell’intervallo illimitato [0, +∞), caratterizzata
dal numero reale λ. Le funzioni densità e ripartizione di probabilità sono
rispettivamente:
0
x<0
fX (x) =
λe−λx x ≥ 0
e
FX (x) =
0
1 − λe−λx
x<0
x≥0
I valori caratteristici di questa distribuzione sono:
E[X] =
2.2
1
λ
e
σ 2 [X] =
1
σ2
Normale
È una distribuzione continua nell’intervallo illimitato (−∞, +∞) ed è caratterizzata da due parametri: µ reale e σ reale positivo. Le funzioni densità e
ripartizione di probabilità sono rispettivamente:
fX (x) =
e
Z
1 x−µ 2
1
√ e− 2 ( σ )
σ 2π
x
FX (x) =
−∞
1 t−µ 2
1
√ e− 2 ( σ )
σ 2π
7
8
CAPITOLO 2. CENNI SULLE DISTRIBUZIONI DI PROBABILITÀ
10
1
! = 10
!=1
8
0.8
6
0.6
4
0.4
2
0.2
0
0
0.2
0.4
0.6
0.8
1
0.1
0
0
2
4
6
8
0.01
! = 0.1
! = 0.01
0.08
0.008
0.06
0.006
0.04
0.004
0.02
0.002
0
10
0
20
40
60
80
100
0
0
200
400
600
800
1000
Figura 2.1: fX (x) della distribuzione esponenziale
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
! = 10
0
0
0.2
0.4
0.6
0.8
!=1
1
0
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0
2
4
6
10
0.2
! = 0.1
0
8
0
20
40
60
80
! = 0.01
100
0
0
200
400
600
Figura 2.2: FX (x) della distribuzione esponenziale
800
1000
2.3. WEIBULL
9
I valori caratteristici di questa distribuzione sono:
E[X] = µ
e
σ 2 [X] = σ 2
0.35
µ = 1, !2 = 1.5
0.3
0.25
0.2
0.15
0.1
0.05
0
!3
!2
!1
0
1
2
3
4
Figura 2.3: fX (x) della distribuzione normale
2.3
Weibull
È una distribuzione continua nell’intervallo illimitato [0, +∞) ed è caratterizzata
da due paramentri: α > 0, detto parametro di forma e β > 0, detto parametro
di scala. Le funzioni densità e ripartizione di probabilità sono rispettivamente:
(
0
x<0
α−1
x α
fX (x) =
−( β
α x
)
x≥0
e
β
β
e
(
FX (x) =
0
x α
1 − e−( β )
x<0
x≥0
Nel nostro caso, poiché α = β = x queste funzioni si riducono (nell’incognita t)
a:
(
0
t<0
x
fX (t) =
t x−1 −( xt )
t
≥0
e
x
e
(
FX (t) =
0
t x
1 − e−( x )
t<0
t≥0
10
CAPITOLO 2. CENNI SULLE DISTRIBUZIONI DI PROBABILITÀ
1
x=1
x=2
x=3
x=4
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
1
2
3
4
5
6
7
8
9
10
Figura 2.4: fX (x) della distribuzione Weibull
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
x=1
x=2
x=3
x=4
0.1
0
0
1
2
3
4
5
6
7
8
9
Figura 2.5: FX (x) della distribuzione Weibull
10
Capitolo 3
Modello del Sistema in
Mobius
3.1
Descrizione Generale
Il modello costruito per rappresentare il sistema da analizzare è costituito dalla
composizione di tre SAN atomiche: una SAN rappresenta il comportamento
degli N processori, una il comportamento del canale di trasmissione e l’ultima
quello del voter.
Nella prima SAN ogni 0.1 sec vengono inviati tanti risultati = 1 quanti sono i
processori che in quell’istante funzionano e tanti risultati casuali (∈ [0, 9]) quanti
sono i processori che non funzionano. Questi risultati vengono memorizzati in
dei Places che sono condivisi con il modello atomico del cananle (ris 0,...,ris 9),
una volta che i processori hanno inviato i risultati e abilitato l’invio ponendo
un token nel Place READY (condiviso dal modello delle CPU e del canale),
il modello del canale li invia verso il votatore. L’invio dei risultati al votatore
puo’ avvenire in due modi: a seconda che il canale funzioni correttamente o no.
Nel primo caso i risultati vengono copiati cosi’ come sono nei Places condivisi
dal canale e dal votatore (ris 0 fin,...,ris 9 fin) e rimossi dai Places in comune
tra il modello delle CPU e quello del canale, nel secondo caso i risultati vengono
invece distorti (ovvero alcuni risultati possono essere cambiati) prima di essere
copiati nei Places condivisi con il votatore. Una volta inviati i risultati il cananle pone un token nel Place VOTE ENABLED (condiviso con il modello del
votatore). Infine nel terzo modello atomico, quando il votatore si accorge che
il canale gli ha inviato i risultati (ovvero quando trova un token nel Place VOTE ENABLED), i risultati vengono contati (secondo la regola che può essere
proporzionale o maggioritaria), rimossi dai Places in comune con il canale e si
decide se il sistema è fallito o no.
3.2
3.2.1
Descrizione Specifica dei Modelli
Modello Atomico delle CPU
In questo modello il numero di processori (N ) è rappresentato dal numero di
token presenti nei Places CPU OK (processori che funzionano correttamen11
12
CAPITOLO 3. MODELLO DEL SISTEMA IN MOBIUS
Figura 3.1: SAN Composta del Modello
te) e CPU KO (processori che mandano risultati random). Questi Places sono
collegati alle attivitaà di fallimento e restore delle CPU che sono attività temporizzate secondo le dostribuzioni di probabilità descritte nel testo dell’esercizio.
Nel modello c’è un’attività send result temporizzata (deterministica) che si
attiva ogni 0.1 secondi. Questa attività ha sia un Input che un Output Gate (ig result e og result). L’Input gate in realtà non serve per l’abilitazione
dell’attività che deve scattare sempre ogni 0.1 sec, ma serve ad evitare che al
momento della sua attivazione l’attivià tolga un token dal Place CPU OK.
La funzione dell’Output gate invece legge il numero di token eni Places delle
CPU e invia un risultato uguale a 1 per ogni token in CPU OK e un risultato
random per ogni token in CPU KO. I risultati inviati al canale sono rappresentati nel modello come token ed il loro valore dipende da dove il token viene
messo. Infatti nel modello sono presenti 10 Places ris 0,...,ris 9, il numero di
token dentro ognuno di questi Places indica il numero di risultati inviati con
quel valore (per esempio se nel Place ris 1 ci sono 3 token significa che sono
stati inviati al canale 3 risultati di valore 1). Infine og result mette un token
nel Place READY a significare che le CPU hanno inviato i loro messaggi al
canale.
3.2.2
Modello Atomico del Canale
Quello che simula questo modello è il comportamento del canale che, quando viene abilitato per l’invio, prende i risultati dai Places ris 0,...,ris 9 e li
trasferisce nei Places ris 0 fin,...,ris 9 fin. Il funzionamento del canale è rappresentato da un token che si può trovare nel Place BUS OK (il canale funziona
correttamente) o nel Place BUS KO (il canale non funziona correttamente).
3.2. DESCRIZIONE SPECIFICA DEI MODELLI
Figura 3.2: SAN delle CPU
Output Gate:
og_CPU
int i_cpu_ko = CPU_KO->Mark();
ris_1->Mark()=CPU_OK->Mark();
srand(SEED);
for (int k=1;k<=i_cpu_ko;k++) {
int message = rand() % 10;
{
switch (message)
Function
}
}
case
case
case
case
case
case
case
case
case
case
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
ris_0->Mark()++;break;
ris_1->Mark()++;break;
ris_2->Mark()++;break;
ris_3->Mark()++;break;
ris_4->Mark()++;break;
ris_5->Mark()++;break;
ris_6->Mark()++;break;
ris_7->Mark()++;break;
ris_8->Mark()++;break;
ris_9->Mark()++;break;
READY->Mark()=1;
Figura 3.3: Codice della funzione dell’Output Gate della SAN delle CPU
13
14
CAPITOLO 3. MODELLO DEL SISTEMA IN MOBIUS
L’abilitazione all’invio è rappresentata dal numero di token nel Place READY (se = 1 allora è abilitato altrimenti no). Quando viene messo un token in
READY si attiva l’attività istantanea send bus (che ha sia un Input Gate
ig bus send che un Output Gate og bus send), infatti il predicato di attivazione dell’Input Gate è che READY contenga un token, la funzione dell’Input
Gate riazzera i token in READY. La funzione dell’Output Gate controlla lo
stato del canale (ovvero in quale Place si trova il token del canale): se il canale
funziona correttamente (e quindi c’è un token in BUS OK) allora in ognuno dei
Places ris o fin,...,ris 9 fin vengono messi tanti token quanti rispettivamente
in ris 0,...,ris 9, viene inoltre messo un token nel Place VOTE ENABLED
a significare che il canale ha inviato i risultati; altrimenti il canale non sta
funzionando correttamente e viene messo un token nel Place DISTORT. La
distorsione dovuta al malfunzionamento del cananle viene realizzata tramite le
attività istantanee send CANALE NO 03 e send CANALE NO 49 (entrambe con due case e collegate ognuna a un Input gate e due Output Gate)
visto che il canale si comporta in maniera differente a seconda che stia inviando
un risultato compreso fra 0 e 3 o un risultato compreso fra 4 e 9.
Queste due attività hanno comportamenti del tutto simili tranne che per il
fatto che esse vengono attivate se ci sono risultati da inviare al voter compresi
rispettivamente in [0, 3] e [4, 9] e che i loro case hanno diverse probabilità di
essere eseguiti (vedi testo eserciazio). Poichè il funzionamento delle due attività
è poi del tutto identico, si considera ora solo l’attività send CANALE NO 03.
Come già detto questa attività si attiva quandi il predicato della sua Input gate
è vero, ovvero quando la somma dei marker dei Places ris 0,...,ris 3 è maggiore
di zero e c’è un token nel Place DISTORT. Una volta attivata quest’attività
viene eseguito uno dei due case ovvero la funzione della corrispondente Output
gate. Il primo ha probabilità 0.7 di essere eseguito e corrisponde al caso in cui
il cananle pur non funzionando correttamente invia il risultato senza cambiarlo,
la funzione della sua Output gate quindi non fa altro che cercare il primo Place
fra ris 0,...,ris 3 contenete almeno un token, decrementare il numero di token
in quel Place e aumentare di uno il numero di token nel corrispondente Place
di risultati inviati al voter (quindi se c’è un token in ris 0, questo viene levato
da lı̀ e messo in ris 0 fin). Se invece viene eseguito l’altro case il risultato
inviato al voter diventa un numero casuale compreso fra 4 e 9, la funzione
dell’Output gate di questo case decrementa il numero di token nel primo Place
che ne contiene almeno uno, genera un numero random fra 4 e 9 ed aggiunge
un token al Place corrispondente contenente i risultati iviati al voter (quindi se
il numero random è 4 aggiungerà un token al Place ris 4 fin). Alla fine della
funzione dell’Output gate si controlla se ci sono ancora risultati da inviare: in
tal caso non viene fatto nulla (le attività si riattiveranno istantaneamente e
spediranno i risultati rimanenti), in caso contrario invece viene posto un token
nel Place VOTE ENABLED e tolto il token da DISTORT.
Si noti che a differenza dell’invio di risultati con il canale funzionante (in
cui i risultati venivano spostati tutti insiem) in questo caso i risultati vengono
processati uno per uno, questo è dovuto al fatto che le attivià che possono
distorcere i risultati devono essere eseguite su ogni risultato singolarmente e
non su tutti insieme altrimenti il malfunzionamento del canale comporterebbe
che o tutti i risultati siano cambiati o che nessun risultato sia cambiato visto
che si sceglierebbe una volta sola il case da eseguire.
3.2. DESCRIZIONE SPECIFICA DEI MODELLI
15
Figura 3.4: SAN del Canale
Input Gate:
Predicate
Function
ig_BUS
(READY->Mark()==1)
READY->Mark()=0;
Figura 3.5: Codice della dell’Input Gate ig bus della SAN del Canale
Output Gate:
Function
og_BUS_SEND
if (BUS_OK->Mark()==1) {
ris_0_fin->Mark()=ris_0->Mark();
ris_1_fin->Mark()=ris_1->Mark();
ris_2_fin->Mark()=ris_2->Mark();
ris_3_fin->Mark()=ris_3->Mark();
ris_4_fin->Mark()=ris_4->Mark();
ris_5_fin->Mark()=ris_5->Mark();
ris_6_fin->Mark()=ris_6->Mark();
ris_7_fin->Mark()=ris_7->Mark();
ris_8_fin->Mark()=ris_8->Mark();
ris_9_fin->Mark()=ris_9->Mark();
ris_0->Mark()=0;
ris_1->Mark()=0;
ris_2->Mark()=0;
ris_3->Mark()=0;
ris_4->Mark()=0;
ris_5->Mark()=0;
ris_6->Mark()=0;
ris_7->Mark()=0;
ris_8->Mark()=0;
ris_9->Mark()=0;
VOTE_ENABLED->Mark()=1;
} else {
VOTE_DISTORT->Mark() = 1;
}
Figura 3.6: Codice della dell’Output Gate og bus send della SAN del Canale
16
CAPITOLO 3. MODELLO DEL SISTEMA IN MOBIUS
Input Gate:
IG_CANALE_NO_03
((ris_0->Mark()+ris_1->Mark()+ris_2->Mark()+ris_3->Mark()>0) &&
(VOTE_DISTORT->Mark()>0))
Predicate
Function
Figura 3.7: Codice della dell’Input Gate ig canale no 03 della SAN del Canale
Input Gate:
Predicate
Function
IG_CANALE_NO_49
((ris_4->Mark()+ris_5->Mark()+ris_6->Mark()+ris_7->Mark()+ris_8>Mark()+ris_9->Mark()>0) && (VOTE_DISTORT->Mark()>0))
;
Figura 3.8: Codice della dell’Input Gate ig canale no 49 della SAN del Canale
3.2.3
Modello Atomico del Voter
Questo modello simula il comportamento del votatore che quando riceve i messaggi dal canale deve contarli e decidere se il sitema ha un fallimento o meno.
Il conteggio dei risultati avviene nell’Output gate dell’unica attività (istantanea) di questo modello: vote result. Questa attività viene abilitata quando il
predicato della sua Input gate è vero, cioè quando c’è un token nel Place VOTE ENABLED. A questo punto viene eseguita prima la funzione dell’Input
gate che riazzera i token in VOTE ENABLED, dopodichè viene eseguita la
funzione dell’Output gate. Questa funzione inizialmente definisce un array di
dieci elementi in cui viene memorizzato nella posizione i-esima il numero di risultati ricevuti con valore i. A questo punto si scorre tutto il vettore cercando il
suo massimo, in questo modo si ha che il max del vettore rappresenta il numero massimo di risultati uguali ricevuti e la posizione del massimo all’interno del
vettore è il loro valore. Per sapere se il sistema fallisce o no basta controllare che
la posizione del massimo del vettore sia uguale a 1. Se la posizione del massimo
è diversa da 1 allora si ha un fallimento, a questo punto si controlla il numero
di token nel Place SYS KO (che rappresenta il numero di volte che il sistema
ha fallito) per sapere se quello appena trovato è il primo fallimento. Se è cosı̀
viene posto un token nel Place PRIMO (l’utilità di questo Place sarà chiarita
nella sezione riguardante le variabili di reward in cui si vedrà come utilizzarlo
per avere l’MTTF del sistema), poi si aggiunge un token nel Place SYS KO e
si svuotano i Places dei risultrati che cosı̀ saranno pronti a ricevere i nuovi risultati dopo 0.1 sec. Se invece il sistema non fallisce (quindi si ha che la posizione
del massimo è) 1 si controlla il numero di token nel Place PRIMO: se c´‘e un
solo token ne viene aggiunto un altro, altrimenti si lascia invariato il numero
di token in PRIMO. Dopo questo controllo viene aggiunto un token nel Place
SYS OK (che contiene un token per ogni volta che il sistema ha funzionato
correttamente) e vengono svuotati i Places contenenti i risultati.
3.2. DESCRIZIONE SPECIFICA DEI MODELLI
Output Gate:
17
OG_03_cambia
int msg=rand()%6;
Function
if (ris_0->Mark()>0)
{
ris_0->Mark()--;
} else {
if (ris_1->Mark()>0)
{
ris_1->Mark()--;
} else {
if (ris_2->Mark()>0)
{
ris_2->Mark()--;
} else {
ris_3->Mark()--;
}
}
}
switch (msg)
{
case
case
case
case
case
case
}
0:
1:
2:
3:
4:
5:
ris_4_fin->Mark()++;break;
ris_5_fin->Mark()++;break;
ris_6_fin->Mark()++;break;
ris_7_fin->Mark()++;break;
ris_8_fin->Mark()++;break;
ris_9_fin->Mark()++;break;
if ((ris_0->Mark()+ris_1->Mark()+ris_2->Mark()+ris_3->Mark()+ris_4>Mark()+ris_5->Mark()+ris_6->Mark()+ris_7->Mark()+ris_8>Mark()+ris_9->Mark())==0)
{
VOTE_ENABLED->Mark()=1;
VOTE_DISTORT->Mark()=0;
}
Figura 3.9: Codice della dell’Output Gate og 03 cambia della SAN del Canale
18
CAPITOLO 3. MODELLO DEL SISTEMA IN MOBIUS
Output Gate:
Function
OG_03_uguale
if (ris_0->Mark()>0)
{
ris_0->Mark()--;
ris_0_fin->Mark()++;
} else {
if (ris_1->Mark()>0)
{
ris_1->Mark()--;
ris_1_fin->Mark()++;
} else {
if (ris_2->Mark()>0)
{
ris_2->Mark()--;
ris_2_fin->Mark()++;
} else {
ris_3->Mark()--;
ris_3_fin->Mark()++;
}
}
}
if ((ris_0->Mark()+ris_1->Mark()+ris_2->Mark()+ris_3->Mark()+ris_4>Mark()+ris_5->Mark()+ris_6->Mark()+ris_7->Mark()+ris_8>Mark()+ris_9->Mark())==0)
{
VOTE_ENABLED->Mark()=1;
VOTE_DISTORT->Mark()=0;
}
Figura 3.10: Codice della dell’Input Gate og 03 uguale della SAN del Canale
3.2. DESCRIZIONE SPECIFICA DEI MODELLI
Output Gate:
19
OG_49_cambia
int msg=rand()%4;
Function
if (ris_4->Mark()>0)
{
ris_4->Mark()--;
} else {
if (ris_5->Mark()>0)
{
ris_5->Mark()--;
} else {
if (ris_6->Mark()>0)
{
ris_6->Mark()--;
} else {
if (ris_7->Mark()>0)
{
ris_7->Mark()--;
} else {
if (ris_8->Mark()>0)
{
ris_8->Mark()--;
} else {
ris_9->Mark()--;
}
}
}
}
}
switch (msg)
{
case 0: ris_0_fin->Mark()++;break;
case 1: ris_1_fin->Mark()++;break;
case 2: ris_2_fin->Mark()++;break;
case 3: ris_3_fin->Mark()++;break;
}
if ((ris_0->Mark()+ris_1->Mark()+ris_2->Mark()+ris_3->Mark()+ris_4>Mark()+ris_5->Mark()+ris_6->Mark()+ris_7->Mark()+ris_8>Mark()+ris_9->Mark())==0)
{
VOTE_ENABLED->Mark()=1;
VOTE_DISTORT->Mark()=0;
}
Figura 3.11: Codice della dell’Output Gate og 49 cambia della SAN del Canale
20
CAPITOLO 3. MODELLO DEL SISTEMA IN MOBIUS
Output Gate:
Function
OG_49_uguale
if (ris_4->Mark()>0)
{
ris_4->Mark()--;
ris_4_fin->Mark()++;
} else {
if (ris_5->Mark()>0)
{
ris_5->Mark()--;
ris_5_fin->Mark()++;
} else {
if (ris_6->Mark()>0)
{
ris_6->Mark()--;
ris_6_fin->Mark()++;
} else {
if (ris_7->Mark()>0)
{
ris_7->Mark()--;
ris_7_fin->Mark()++;
} else {
if (ris_8->Mark()>0)
{
ris_8->Mark()--;
ris_8_fin->Mark()++;
} else {
ris_9->Mark()--;
ris_9_fin->Mark()++;
}
}
}
}
}
if ((ris_0->Mark()+ris_1->Mark()+ris_2->Mark()+ris_3->Mark()+ris_4>Mark()+ris_5->Mark()+ris_6->Mark()+ris_7->Mark()+ris_8>Mark()+ris_9->Mark())==0)
{
VOTE_ENABLED->Mark()=1;
VOTE_DISTORT->Mark()=0;
}
Figura 3.12: Codice della dell’Input Gate og 49 uguale della SAN del Canale
3.2. DESCRIZIONE SPECIFICA DEI MODELLI
Figura 3.13: SAN del Votatore
Input Gate:
Predicate
Function
ig_voter
(VOTE_ENABLED->Mark()==1)
VOTE_ENABLED->Mark() = 0;
Figura 3.14: Codice della dell’Input Gate ig voter della SAN del Voter
21
22
CAPITOLO 3. MODELLO DEL SISTEMA IN MOBIUS
Output Gate:
og_decide
int vote[10];
long message;
vote[0]=ris_0_fin->Mark();
vote[1]=ris_1_fin->Mark();
vote[2]=ris_2_fin->Mark();
vote[3]=ris_3_fin->Mark();
vote[4]=ris_4_fin->Mark();
vote[5]=ris_5_fin->Mark();
vote[6]=ris_6_fin->Mark();
vote[7]=ris_7_fin->Mark();
vote[8]=ris_8_fin->Mark();
vote[9]=ris_9_fin->Mark();
int max = vote[1];
int msg = 1;
for (int g=0;g<10;g++) {
if (vote[g]>max) {
max = vote[g];
msg = g;
}
}
Function
if (msg != 1) {
if (SYS_KO->Mark() == 0) {
PRIMO->Mark() = 1;
}
SYS_KO->Mark()++;
} else {
if (PRIMO->Mark() == 1) {
PRIMO->Mark() = 2;
}
SYS_OK->Mark()++;
}
ris_0_fin->Mark()=0;
ris_1_fin->Mark()=0;
ris_2_fin->Mark()=0;
ris_3_fin->Mark()=0;
ris_4_fin->Mark()=0;
ris_5_fin->Mark()=0;
ris_6_fin->Mark()=0;
ris_7_fin->Mark()=0;
ris_8_fin->Mark()=0;
ris_9_fin->Mark()=0;
Figura 3.15: Codice della dell’Output Gate og decide della SAN del Voter
Capitolo 4
Simulazioni
4.1
Parametri della simulazione
Lo scopo principale del progetto assegnatoci era il condurre un certo numero di
simulazioni sul sistema da noi modellato, al variare di alcune quantità rispetto
su cui il modello è stato parametrizzato:
Parametro
λ
N
X
Valori Assunti
1
1
100 , 10 ,1,10
2, · · · , 5
1, · · · , 4
Descrizione
Parametro della distribuzione esponenziale
Numero dei processori
Parametro della Weibull
Tabella 4.1: Parametri della simulazione
In realtà non abbiamo simulato su tutte le possibili combinazioni dei valori
appena mostrati, bensı̀ abbiamo condotto tre famiglie di simulazioni tenendo
fissi ogni volta due parametri e variando sul terzo. Vedremo in seguito ed
in dettaglio i vari casi che abbiamo affrontato: adesso dobbiamo fare qualche
precisazione sulle assunzioni fatte. Lo scopo principale del progetto era infatti
quello di determinare due quantità:
• Il tempo medio al fallimento del sistema, ovvero il mean time to failure,
indice della reliability.
• La probabilità a steady state che il sistema fosse in fallimento, cioè l’availability.
Sicuramente la parte più critica è stata quella di determinare in maniera ragionevole quelle che sono le quantità caratteristiche di una simulazione steady
state, cioè la durata del transiente e la dimensione dei batch. Infatti prendere risultati quando il sistema non è stabile (e si trova dunque nella sua fase
transiente) può inquinare i risultati forniti dagli stimatori, cosı̀ come del resto
si dovrebbe scegliere una lunghezza del batch tale che ogni prova possa essere
considerata indipendente dalle altre.
Ci siamo accorti allora che la nostra analisi “naturalmente” convergeva sullo studio delle distribuzioni di probabilità presenti nel sistema, cosa che ci ha
permesso di fare alcune importanti assunzioni:
23
24
CAPITOLO 4. SIMULAZIONI
• Le CPU possono fallire in modo indipendente ma tutte inviano i loro valori
su di un unico canale, il fallimento del quale sarà quindi molto più incisivo
sul comportamente dell’intero sistema.
• Creando alcuni grafici delle distribuzioni esponenziale e di Weibull (utilizzando il software Matlab), abbiamo potuto osservare come la probabilità
di avere un singolo fallimento fosse naturalmente crescente rispetto al numero dei giorni, ma raggiungesse valori superiori al 90-95% in tempi assai
diversi, molto più lunghi per la distribuzione esponenziale che è proprio
quella del canale (fatta eccezione per il caso in cui λ = 10). abbiamo
Abbiamo dunque pensato di poter prendere λ come valore cruciale nel determinare durata del transiente e batch size, utilizzandolo anche per la stima del
MTTF : cominciamo a parlare del secondo caso.
Il parametro λ rappresenta il numero di fallimenti per ora del canale, dunque
volendo fare un esempio, ci si può aspettare benissimo che con λ = 0.1 (cioè un
fallimento in media ogni 10 ore) una simulazione terminante a 50 ore possa dare
risultati ragionevoli sul tempo medio al fallimento. Abbiamo allora posto nella
reward variable riguardante il MTTF i seguenti valori, al variare di λ
λ
1
100
1
10
1,10
Intervallo di tempo
0 · · · 500
0 · · · 50
5
Tabella 4.2: Intervalli di tempo per il MTTF al variare di λ
Il problema della simulazione steady state si è rivelato più arduo da affrontare, anche se alla fine abbiamo individuato dei valori del transiente e del batch
size, di seguito riportati sempre al variare di λ, che ci hanno permesso di ottenere
i risultati seguenti:
λ
1
100
1
10
1,10
Transiente
500
50
5
Batch Size
1000
100
10
Tabella 4.3: Transiente e Batch Size per il caso steady state al variare di λ
Come si vede ad esempio nel caso λ = 0.1, il porre la durata del transiente
a 50 ore dall’inizio della simulazione teoricamente ci permette di trascurare un
periodo di tempo durante il quale ci saranno stati abbastanza fallimenti e quindi
il sistema dovrebbe aver raggiunto una certa stabilità; la durata del batch size
è stata scelta con l’intento di ottenere dei batch che tra loro fossero scorrelati
in modo non aver risultati falsati.
4.2
Reward variables
In questa sezione mostriamo le reward variables utilizzate nell’ambito del nostro progetto: sappiamo infatti che le reward structures vengono estensivamente
4.3. RATE REWARDS
25
impiegate nei simulatori per ottenere informazioni su caratteristiche del sistema in esame, quali appunto la reliability oppure l’availability. Nel nostro caso
abbiamo fatto uso sia di rate rewards che di impulse rewards, come di seguito
ci accingiamo ad illustrare.
4.3
Rate Rewards
Tramite le rate reward abbiamo informazione sulla “persistenza” del sistema
in certi stati, durante un certo intervallo di tempo: nel nostro caso abbiamo
utilizzato due variabili di reward che contassero il numero di token presenti nei
places SYS OK e SYS KO, indicanti rispettivamente il numero di successi e
fallimenti del sistema di votazione. La probabilità a steady state che il sistema
sia in fallimento (cioè che restituisca un risultato che non è 1) verrà calcolata
semplicemente nel seguente modo
Numero di token in SY S KO
Numero di token in SY S OK + Numero di token in SY S KO
Nelle pagine successive elenchiamo le rate reward variables
Variable
Affecting Models
SYS OK
Definition
Voter
Rate rewards code
return voter-¿SYS OK->Mark();
Impulse reward
none
Simulator statistics
type = steady steate
estimate mean
confidence level = 0.95
relative confidence interval = 0.1
initial transient = 50
batch size = 100
Tabella 4.4: SYS OK rate reward variable
4.4
Impulse Rewards
Le variabili di tipo impulse sono tipicamente associate ai completamenti delle
attività presenti nel sistema: possono dare informazioni su quanto tali attività
vengano eseguite, sia nel caso di simulazioni terminanti che steady state.
L’unica variabile di tipo impulse che abbiamo usato è quella relativa alla
stima del tempo medio al fallimento: in questo contesto facciamo uso del place
SYS KO, verificando quando vi viene messo il primo token (condizione che indica
il primo fallimento del sistema), utilizzando al contempo il place PRIMO per
controllare che il valore riportato dal simulatore (cioè SIS OK− >Mark) venga
restituito solamente una volta. Sappiamo infatti che l’invio di un voto è un
evento temporizzato, dunque il numero di token in SYS OK al momento del
26
CAPITOLO 4. SIMULAZIONI
Variable
Affecting Models
SYS KO
Definition
Voter
Rate rewards
return voter-¿SYS KO->Mark();
Impulse reward
none
Simulator statistics
type = steady steate
estimate mean
confidence level = 0.95
relative confidence interval = 0.1
initial transient = 50
batch size = 100
Tabella 4.5: SYS KO rate reward variables
Variable
Affecting Models
MTTF
Definition
Voter
Rate rewards code
none
Impulse reward
if (voter->SYS KO-¿Mark()==1 ) && (voter->PRIMO-¿Mark() == 1) {
return 1;
} else {
return 0;
}
Simulator statistics
type = steady steate
estimate mean
confidence level = 0.95
relative confidence interval = 0.1
initial transient = 50
batch size = 100
Tabella 4.6: SYS OK rate reward variable
primo fallimento rappresenta proprio il time to failure. Mostriamo di seguito
come abbiamo definito la reward variable per il MTTF :
Capitolo 5
Risultati delle Simulazioni
In questo capitolo vengono riportati e commentati i risultati ottenuti dalle
simulazioni.
5.1
Mean Time To Failure
In questa sezione si presentano, discutendoli brevemente, i risultati forniti dalle
simulazioni da noi condotte per calcolare il tempo medio al fallimento del sistema.
In figura 5.1 troviamo a confronto i valori del MTTF nel caso in cui il parametro
che varia è N (numero dei processori): come si può osservare, il valore del tempo
medio al fallimento descresce all’aumentare del numero N , fatta eccezione per
il caso in cui N = 3. Probabilmente questo é dovuto al fatto che con tale valore
abbiamo fallimento quando almeno 2 valori su 3 sono uguali e diversi da 1. Tale
caso è ovviamente più frequente di quando il numero di processori è 2, e per
N = 4, 5 non necessariamente bastano 2 risulati uguali diversi da 1.
I casi in cui i parametri che variano sono λ e X sono simili, come si può osservare dalle figure 5.2 e 5.3: il tempo medio al fallimento decresce all’aumentare
dei valori, ma con una sorprendente proprieta’. Infatti, mentre ci potevamo
aspettare che ciò accadesse con λ crescente (il che significa più fallimenti del
canale), è quanto meno inaspettato il comportamento che si riscontra quando
aumenta il valore di X. Dalla distribuzione di Weibull si osserva che quando X
cresce in realtà si ha un tempo maggiore per avere fallimento, questo sembra
andare in controtendenza con i risultati ottenuti per il MTTF (che diminuiscono): la spiegazione è che il canale fallisce sempre con lo stesso rate (qui λ = 0.1)
e, quando ci sono meno fallimenti (quindi per X maggiore) al canale arriverà
un maggior numero di valori uguali ad uno che potranno essere poi distorti dal
bus di sistema in modo tale da arrivare al votatore e causare un fallimento. Se
invece al canale arrivano più valori scorretti, aumenta la probabilità che essi
siano modificati in numeri distinti (ed eventualmente anche uguali ad 1).
Riportiamo qui di seguito i grafici del MTTF ottenuti con le simulazioni.
27
28
CAPITOLO 5. RISULTATI DELLE SIMULAZIONI
9,000
8,000
7,000
6,000
MTTF (h)
5,000
4,000
3,000
2,000
1,000
0,000
2
3
4
5
Numero processori
Figura 5.1: Grafico del valore del MTTF (in ore) con λ = 0.1, x = 2 al variare
di N
5.1. MEAN TIME TO FAILURE
29
10,000
9,000
8,000
7,000
6,000
MTTF
5,000
4,000
3,000
2,000
1,000
0,000
1
2
3
4
X
Figura 5.2: Grafico del valore del MTTF (in ore) con λ = 0.1, N = 3 al variare
di x
30
CAPITOLO 5. RISULTATI DELLE SIMULAZIONI
9,000
8,000
7,000
6,000
MTTF (h)
5,000
4,000
3,000
2,000
1,000
0,000
2
3
4
5
Numero processori
Figura 5.3: Grafico del valore del MTTF (in ore) con x = 2, N = 3 al variare
di λ
70
60
50
Ore
40
30
20
10
0
0
50
100
150
200
Batch
250
300
350
Figura 5.4: MTTF caso N = 2, λ = 0.1 e X = 2
400
5.1. MEAN TIME TO FAILURE
31
70
60
50
Ore
40
30
20
10
0
0
50
100
150
200
Batch
250
300
350
400
Figura 5.5: MTTF caso N = 3, λ = 0.1 e X = 2
70
60
50
Ore
40
30
20
10
0
0
50
100
150
200
250
300
350
400
Batch
Figura 5.6: MTTF caso N = 4, λ = 0.1 e X = 2
450
32
CAPITOLO 5. RISULTATI DELLE SIMULAZIONI
45
40
35
30
Ore
25
20
15
10
5
0
0
50
100
150
200
250
Batch
300
350
400
450
500
Figura 5.7: MTTF caso N = 5, λ = 0.1 e X = 2
350
300
250
Ore
200
150
100
50
0
0
50
100
150
200
Batch
250
300
350
Figura 5.8: MTTF caso L = 0.01, N = 3, X = 2
400
5.1. MEAN TIME TO FAILURE
33
70
60
50
Ore
40
30
20
10
0
0
50
100
150
200
Batch
250
300
350
400
Figura 5.9: MTTF caso L = 0.1, N = 3, X = 2
5
4.5
4
3.5
Ore
3
2.5
2
1.5
1
0.5
0
0
50
100
150
200
Batch
250
300
350
Figura 5.10: MTTF caso L = 1, N = 3, X = 2
400
34
CAPITOLO 5. RISULTATI DELLE SIMULAZIONI
0.9
0.8
0.7
0.6
Ore
0.5
0.4
0.3
0.2
0.1
0
0
50
100
150
200
Batch
250
300
350
400
Figura 5.11: MTTF caso L = 10, N = 3, X = 2
60
50
Ore
40
30
20
10
0
0
50
100
150
200
250
300
Batch
Figura 5.12: MTTF caso X = 1, N = 3, λ = 0.1
350
5.1. MEAN TIME TO FAILURE
35
70
60
50
40
30
20
10
0
0
50
100
150
200
250
300
350
400
Figura 5.13: MTTF caso X = 2, N = 3, λ = 0.1
30
25
Ore
20
15
10
5
0
0
50
100
150
Batch
200
250
Figura 5.14: MTTF caso X = 3, N = 3, λ = 0.1
300
36
CAPITOLO 5. RISULTATI DELLE SIMULAZIONI
50
45
40
35
Ore
30
25
20
15
10
5
0
0
50
100
150
200
250
300
350
Batch
Figura 5.15: MTTF caso X = 4, N = 3, λ = 0.1
5.2
5.2.1
Steady state
Caso λ variabile, X = 2, N = 3
In questo caso, all’aumentare di λ crescono il numero di fallimenti che si hanno nell’unità di tempo fissata ed infatti, come mostrano i seguenti grafici la
probabilità di fallimento steady state del sistema è maggiore.
5.2.2
Caso X variabile, λ = 0.1, N = 3
Al variare di X, analogamente a quanto descritto per il caso del MTTF la
probabilità di fallimento decresce all’aumentare del parametro X della Weibull
(tranne nel caso X = 2 che, come si vedrá in seguito, risulta assai particolare).
Riportiamo qui di seguito i grafici della probabilità a steady state ottenuti con
le simulazioni.
5.2.3
Caso N variabile, λ = 0.1, X = 2
Osservando i grafici ottenuti da queste simulazioni si nota come il numero di
CPU che partecipano alla votazione influenzi la probabilitá di fallimento del
sistema molto meno di quanto si potesse immaginare. In effetti come ci si
aspetterebbe la probabilitá di fallimento tende a diminuire al crescere del numero
di processori, anche se molto lentamente, infatti la differenza tra la probabilitá
di fallimento con N = 2 e N = 5 é di 0, 0015.
5.2. STEADY STATE
37
!3
8.5
x 10
8
7.5
Probabilità
7
6.5
6
5.5
5
4.5
0
50
100
150
Batch
200
250
300
Figura 5.16: Steady state caso λ = 0.01, N = 3, X = 2
0.04
0.038
0.036
0.034
Probabilità
0.032
0.03
0.028
0.026
0.024
0.022
0.02
0
20
40
60
80
100
120
Batch
Figura 5.17: Steady state caso λ = 1, N = 3, X = 2
140
38
CAPITOLO 5. RISULTATI DELLE SIMULAZIONI
0.09
0.085
0.08
Probabilità
0.075
0.07
0.065
0.06
0.055
0.05
0.045
0
20
40
60
80
100
120
140
Batch
Figura 5.18: Steady state caso λ = 10, N = 3, X = 2
0.43
0.42
Probabilità
0.41
0.4
0.39
0.38
0.37
0
20
40
60
80
100
120
Batch
Figura 5.19: Steady state caso X = 1, λ = 0.1 e N = 3
140
5.2. STEADY STATE
39
!3
8.5
x 10
8
7.5
Probabilità
7
6.5
6
5.5
5
4.5
0
50
100
150
Batch
200
250
300
Figura 5.20: Steady state caso X = 2, λ = 0.1 e N = 3
!3
12
x 10
11
10
Probabilità
9
8
7
6
5
4
0
20
40
60
80
100
120
Batch
Figura 5.21: Steady state caso X = 3, λ = 0.1 e N = 3
140
40
CAPITOLO 5. RISULTATI DELLE SIMULAZIONI
!3
9.5
x 10
9
Probabilità
8.5
8
7.5
7
6.5
6
0
20
40
60
80
100
120
140
Batch
Figura 5.22: Steady state caso X = 4, λ = 0.1 e N = 3
L’unico caso che si discosta da questo andamento, come giá notato nel caso
precedente, é il caso in cui N = 3. Effettivamente nel caso in cui λ = 0.1 la configurazione migliore del sistema risulta essere quella con tre CPU che falliscono
secondo una distribuzione di probabilitá Weibull con parametri (α, β) = (2, 2).
Se si osserva il grafico corrispondente a questa situazione si vede subito che
la probabilitá di fallimento é decisamente minore rispetto alle altre (questo si
puøosservare anche nel caso in cui si fa variare il valore di X).
5.2. STEADY STATE
41
0.016
0.0155
0.0145
0.014
0.0135
0.013
0.0125
0
20
40
60
80
100
120
140
Batch
Figura 5.23: MTTF caso L = 0.01, N = 3, X = 2
!3
10
x 10
9
8
Probabilità
Probabilità
0.015
7
6
5
4
3
0
20
40
60
80
100
120
Batch
Figura 5.24: MTTF caso L = 0.1, N = 3, X = 2
140
42
CAPITOLO 5. RISULTATI DELLE SIMULAZIONI
0.02
0.018
0.016
Probabilità
0.014
0.012
0.01
0.008
0.006
0.004
0
20
40
60
80
100
120
140
Batch
Figura 5.25: MTTF caso L = 1, N = 3, X = 2
0.02
0.018
0.016
Probabilità
0.014
0.012
0.01
0.008
0.006
0.004
0
20
40
60
80
100
120
Batch
Figura 5.26: MTTF caso L = 10, N = 3, X = 2
140
Capitolo 6
Computer farm
Le simulazioni con Mobius del presente progetto sono state eseguite utilizzando
i seguenti calcolatori:
Tabella 6.1: default
Nome
alice
sara
antani
nil
pear
Processore
Intel Celeron 1.4 GHz
AMD Sempron 3100+
AMD Athlon 3800+
Intel Pentium 4 1.6 GHz
PowerPC G4 1.67
Memoria RAM
384 MB
1GB
1 GB
1 GB
1 GB
43
Sistema operativo
Windows ME
Windows XP Pro
Windows XP Pro
SuSE Linux 10.0
Windows XP Pro (emulazione x86)
44
CAPITOLO 6. COMPUTER FARM
Elenco delle tabelle
4.1
4.2
4.3
4.4
4.5
4.6
Parametri della simulazione . . . . . . . . . . . .
Intervalli di tempo per il MTTF al variare di λ .
Transiente e Batch Size per il caso steady state al
SYS OK rate reward variable . . . . . . . . . . .
SYS KO rate reward variables . . . . . . . . . . .
SYS OK rate reward variable . . . . . . . . . . .
.
.
.
.
.
.
23
24
24
25
26
26
6.1
default . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
45
. . . . . . .
. . . . . . .
variare di λ
. . . . . . .
. . . . . . .
. . . . . . .
.
.
.
.
.
.
46
ELENCO DELLE TABELLE
Elenco delle figure
2.1
2.2
2.3
2.4
2.5
fX (x) della distribuzione esponenziale
FX (x) della distribuzione esponenziale
fX (x) della distribuzione normale . . .
fX (x) della distribuzione Weibull . . .
FX (x) della distribuzione Weibull . . .
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
3.12
3.13
3.14
3.15
SAN Composta del Modello . . . . . . . . . . . . . . . . . . . . .
SAN delle CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Codice della funzione dell’Output Gate della SAN delle CPU . .
SAN del Canale . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Codice della dell’Input Gate ig bus della SAN del Canale . . . .
Codice della dell’Output Gate og bus send della SAN del Canale
Codice della dell’Input Gate ig canale no 03 della SAN del Canale
Codice della dell’Input Gate ig canale no 49 della SAN del Canale
Codice della dell’Output Gate og 03 cambia della SAN del Canale
Codice della dell’Input Gate og 03 uguale della SAN del Canale .
Codice della dell’Output Gate og 49 cambia della SAN del Canale
Codice della dell’Input Gate og 49 uguale della SAN del Canale .
SAN del Votatore . . . . . . . . . . . . . . . . . . . . . . . . . . .
Codice della dell’Input Gate ig voter della SAN del Voter . . . .
Codice della dell’Output Gate og decide della SAN del Voter . .
5.1
Grafico del valore del MTTF (in ore) con λ = 0.1, x = 2 al variare
di N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Grafico del valore del MTTF (in ore) con λ = 0.1, N = 3 al
variare di x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Grafico del valore del MTTF (in ore) con x = 2, N = 3 al variare
di λ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MTTF caso N = 2, λ = 0.1 e X = 2 . . . . . . . . . . . . . . . .
MTTF caso N = 3, λ = 0.1 e X = 2 . . . . . . . . . . . . . . . .
MTTF caso N = 4, λ = 0.1 e X = 2 . . . . . . . . . . . . . . . .
MTTF caso N = 5, λ = 0.1 e X = 2 . . . . . . . . . . . . . . . .
MTTF caso L = 0.01, N = 3, X = 2 . . . . . . . . . . . . . . . .
MTTF caso L = 0.1, N = 3, X = 2 . . . . . . . . . . . . . . . . .
MTTF caso L = 1, N = 3, X = 2 . . . . . . . . . . . . . . . . . .
MTTF caso L = 10, N = 3, X = 2 . . . . . . . . . . . . . . . . .
MTTF caso X = 1, N = 3, λ = 0.1 . . . . . . . . . . . . . . . . .
MTTF caso X = 2, N = 3, λ = 0.1 . . . . . . . . . . . . . . . . .
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.10
5.11
5.12
5.13
47
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
8
8
9
10
10
12
13
13
15
15
15
16
16
17
18
19
20
21
21
22
28
29
30
30
31
31
32
32
33
33
34
34
35
48
ELENCO DELLE FIGURE
5.14
5.15
5.16
5.17
5.18
5.19
5.20
5.21
5.22
5.23
5.24
5.25
5.26
MTTF caso X = 3, N = 3, λ = 0.1 . . . .
MTTF caso X = 4, N = 3, λ = 0.1 . . . .
Steady state caso λ = 0.01, N = 3, X = 2
Steady state caso λ = 1, N = 3, X = 2 . .
Steady state caso λ = 10, N = 3, X = 2 .
Steady state caso X = 1, λ = 0.1 e N = 3
Steady state caso X = 2, λ = 0.1 e N = 3
Steady state caso X = 3, λ = 0.1 e N = 3
Steady state caso X = 4, λ = 0.1 e N = 3
MTTF caso L = 0.01, N = 3, X = 2 . . .
MTTF caso L = 0.1, N = 3, X = 2 . . . .
MTTF caso L = 1, N = 3, X = 2 . . . . .
MTTF caso L = 10, N = 3, X = 2 . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
35
36
37
37
38
38
39
39
40
41
41
42
42