WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

La tolérance aux pannes des algorithmes de partage de ressources dans les systèmes répartis et les réseaux Ad Hoc (simulation par ns-2)

( Télécharger le fichier original )
par Sami et Abdelmadjid Oubbati et Benarfa
Université Amar Telidji Laghouat - Ingénieur d'état en informatique 2010
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

ANNEXE : ETTuDE DE L'ouTiL DE A

siMuLATioN NS-2

SoMMAiRE

A.1 PREuvE Du TlgoREME TRuc 80

A. Annexe: Étude de l'outil de simulation NS-2

A.1 Preuve Du théorème truc

Ce théorème est un résultat classique donné, par exemple, par. . .

ANNEXE : LEs scRipTs DE Nos

simuLATioNs

SommAiRE

B.1 LE scRipT TCL (sysTèmE RépARTi) 82

B.2 LE ScRipT TCL AD HOC 85

DANs cette annexe nous présentons deux exmples parmi les scripts réalisés.

B

B.1 LE script TCL (systèmE réparti)

# =========================================================================
# Definition des options #
# =========================================================================

set ns [new Simulator] ;# Creation d'un nouveau Objet simulateur

set bw akemac.dat ;# Le ficher Trace

set nf [ open akemac.nam w] ;# Ouverture du Visualisateur NAM

set f0 [ open $bw w] ;# Declaration de f0 pour ecrire sur le fi c h ie r

$ns namtrace-all $nf ;# Afin de generer le fi c h ie r Trace

set bw nbr_msg_tps.txt ;# ficher . t x t qui contient les resultats

set mesure [ open $bw w] ;# mesure pour ecrire sur le . t x t

set val(stop) 10 ;# Temps de simulation ( ( Durree ) )

# ========================================================================= # Le Corps des Procedures #

# =========================================================================

# ========================================================================= # Procedure d' affichage concernant la simulation #

# ========================================================================= proc Affichage { } {

global mesure nbr nbrk nbrequete ;# Declaration de variables globales puts $mesure " "

puts $mesure " Les Resultats de la Simulation . "

puts $mesure " " puts $mesure "============ Informations de Simulation ===============" puts $mesure " . " puts $mesure "Le Nombre de Sites = $nbr "

puts $mesure "Le Nombre de Ressources K = $nbrk "

puts $mesure "Le Nombre de Requetes = $nbrequete "

puts $mesure " . "

puts $mesure "=======================================================" puts $mesure "================================="

puts $mesure " Resultats pour chaque site : "

puts $mesure "================================="

} ;# Ecriture dans le f i c hi e r des resultats

# ========================================================================= # Procedure de Terminaison de la simulation # # ========================================================================= proc finish { } {

;# Declaration de variables globales global ns nf f0 nbr nbrequete tpatt nmsg p mesure

for { set i 0} {$i < $nbr} { incr i} { ;# compter le nombre de message total set nmsg [ expr [$p($i) set nb_message_]+$nmsg]

} ;# la somme des messages de chaque noeud

puts $mesure "=========================================================" puts $mesure " Le NMM et le TAM . " puts $mesure "=========================================================" puts $mesure "Le nombre total des messages = $nmsg"

puts $mesure " "

puts $mesure "Le nombre de message moyen =

$nmsg/$nbrequete = [ expr $nmsg/$nbrequete ] " puts $mesure " "

set tpatt [ expr $tpatt/$nbrequete] ;# Calcul du temps moyen d' attente
puts
$mesure "Le temps d' attente moyen = $tpatt "

$ns flush-trace ;# Pour Confirmer l ' ecriture

close $f0 ;# Fermer le f ic hi er . t x t

puts " running nam... " ;# Affichage de "Running NAM ... "

exec nam akemac.nam & ; ;# lancer le NAM automatiquement

exit 0 ;# Sortie de la procedure

}

# ========================================================================= # Procedure d' enregistrement des temps d' attente dans le f ic hi er text # # ========================================================================= proc record {p n mutex hour} {

global f0 nbrequete tpatt mesure ;# Declaration des variables globales

set ns [Simulator instance] ;# Instancier la commande NS

set bw0 [$ns now] ;# bw0 est le temps actuelle

set bw0 [ expr $bw0- [$p set dem ] ] ;# bw0 := bw0 - Temps de la demande puts $mesure "Temps d' attente pour le site N° [$n node-addr] =

$bw0 ==> ( ( Date_Requete = $hour ** Duree SC = $mutex ) ) "

puts $mesure "-------------------------------------------------------"

set tpatt [ expr $tpatt+$bw0] ;# le temps d' attente

}

# ========================================================================= # Procedure de Diffusion des demandes d' entrer en Section Critique # # ========================================================================= proc diffusion {p n mutex hour} {

global nbr ;# Variables globales

set ns [Simulator instance] ;# Instancier la commande NS

set nowe [$ns now] ;# Le temps actuelle NOWE

set nbrk [$p set nbracine] ;# nbrk := nbracine ;

$ns at $nowe " tester $p $n $mutex $hour" ;# execution de tester

$ns at $nowe "$p demander-sc" ;# execution de demander-sc

$ns trace-annotate " [ $n node-addr] demande la SC "

$ns at $nowe "$n color limegreen " ;# Colorer noeud demandeur

}

# ========================================================================= # Procedure de test d' entrer et la liberation de la Section Critique # # ========================================================================= proc tester {p n mutex hour} {

global nbr mesure ;# Variables globales

set ns [Simulator instance] ;# definir commande ns

set time 0.01 ;# Temps de test pour SC

set now [$ns now] ;# Definir now

set a [$p set sc] ;# Affectation a := sc ;

set b [$p set racine] ;# b := racine ;

i f { $a == 1} { ;# Condition entrer en SC

$ns at $now " record $p $n $mutex $hour" ;# Record pour le TAM

$ns at $now "$n label \"<SC> \" " ;# l ib e le <SC> au noeud

$ns at [ expr $now+$mutex] "$n label \" \" " ;# Effacer <SC>

$ns at [ expr $now+$mutex] "$p liberation-sc";# Appel de liberation-sc

$ns at [ expr $now+$mutex] "$p set sc -1" ;# sc := -1 pour so r ti r

i f { $b == -1} { ;# racine devient rouge

$ns at [ expr $now+$mutex] "$n color red" ;# Colorer la racine } else { ;# Sinon

$ns at [ expr $now+$mutex] "$n color black";# Colorer noeud en noir

}

} else { ;# noeud veut entrer SC

$ns at [ expr $now+$time] "$p attendre " ;# attendre MAJ sc <- 1

$ns at $now "$n color blue" ;# Colorer BLEU

$ns at [ expr $now+$time] " tester $p $n $mutex $hour"

} ;# rappeler la procedure

} ;# TESTER ( ( Recursif ) )

# ========================================================================

# ========================================================================= # Le programme Principale # # ========================================================================= # ========================================================================= # ========================================================================= # Lecture des donnees a partir d'un f i c hi e r texte # # =========================================================================

set f [ open " les_demandes.txt " " r " ] ;# lire ( les_demandes.txt )

set nbr [ gets $f] ;# ( ( nbr ) ) <-- premier ligne

set nbrk [ gets $f] ;# ( ( nbrk ) )<-- deuxiemme ligne

set nbrequete [ gets $f] ;# ( nbrequete )<-- troisiemme ligne

for { set j 0} {$j < $nbrequete} { incr j} { ;# Boucle pour lire les Scenarios for { set k 0} {$k < 2} { incr k} {

set table($j,$k) [ gets $f] ;# Remplir par ( s i t e , heur, duree )

}

}

close $f ;# Enfin Fermer le f i c h i e r .

# =========================================================================
# Declaration des couleurs selon les numeros #
# =========================================================================

)

$ns

 

color 0 blue

;#

Le

0

est

la

Couleur

Bleu ( (

Demande ) )

$ns

color 1 red

;#

Le

1

est

la

Couleur

Rouge (

( Requete ) )

$ns

color 2 limegreen

;#

Le

2

est

la

Couleur

Vert ( (

Liberation )

$ns

color 3 brown

;#

Le

3

est

la

Couleur

Marron

( ( Accord ) )

$ns

color 4 magenta

;#

Le

4

est

la

Couleur

Violet

( ( Aide ) )

$ns

color 5 black

;#

Le

4

est

la

Couleur

Noir ( (

Recherche ) )

# =========================================================================
# Affichage des informations dans le f i c hi e r des resultats #
# =========================================================================

set now [$ns now] ;# Definir now --> le temps actuelle

$ns at $now " Affichage " ;# Afficher les informations dans . t x t

# =========================================================================
# Creation des noeuds et leurs connections aux agents " Akema " #
# =========================================================================

for { set i 0} {$i < $nbr} { incr i} { ;# i=0 a i=nbr--1 --> creer ( nbr ) noeuds

set n($i) [$ns node] ;# Creation d'un noeud

set p($i) [new Agent/Akemac] ;# Creation d'un Agent AKEMAC

$p($i) set nb_noeud_ $nbr ;# I n i t i a l i s e r ( nb_noeud_ ) par ( nbr )

$p($i) set nbracine $nbrk ;# I n i t i a l i s e r ( nbracine ) par ( nbrk )

$ns at 0.0 "$p ( $i ) initial" ;# i n i t i a l i s e r chaque agent AKEMAC

$ns attach-agent $n($i) $p($i) ;# attacher les noeuds aux agents

$p($i) set packetSize_ 400 ;# La t a i l l e du paquet a envoyer

}

# =========================================================================
# Creation des liens et la connection des agents #
# =========================================================================

for { set i 0} {$i < $nbrk} { incr i} { ;# Boucle pour les liens

$n($i) color " red " ;# Colorer chaque noeud racine

$ns duplex-link $n($i) $n ( [ expr ($i+1)%$nbrk ] ) 1Mb 10ms DropTail $ns connect $p($i) $p ( [ expr ($i+1)%$nbrk] ) ;# Creation d'un lien

} ;# Connecter les agents entre eux

for { set i 0} {$i < $nbrk} { incr i} { ;# Boucle pour les liens

for { set j [ expr ($i+1) ] } {$j < $nbrk} { incr j} {

$ns duplex-link $n($i) $n($j) 1Mb 10ms DropTail ;# Creation d'un lien

$ns connect $p($i) $p($j) ;# Connecter les agents entre eux

}

}

for { set i $nbrk} {$i < $nbr} { incr i} { ;# Boucle pour les liens

$ns duplex-link $n ( [ expr ($i)%$nbrk ] ) $n($i) 1Mb 10ms DropTail

$ns connect $p ( [ expr ($i)%$nbrk ] ) $p($i) ;# Creation d'un lien

} ;# Bi-directionnel Racine-Fils

# ========================================================================= # Initialisation des variables globaux #

# =========================================================================

set tpatt 0 ;# Initialisation de tpatt pour calculer le temps d' attente

set nmsg 0 ;# Initialisation de nmsg pour calculer le nombre de messages

set duree 1 ;# La durree de la Section Critique

# ========================================================================= # L' execution des scenarios de la simulation # # ========================================================================= for { set j 0} {$j < $nbrequete} { incr j} { ;# lire les Scenarios du tableau

set site $table($j,0) ;# lire l ' identificateur du site

set heur $table($j,1) ;# lire l ' heur de la demande

$ns at $heur "$p ( $site ) set dem $heur " ;# affe cte r la demande a l ' heur

$ns at $heur " diffusion $p ( $site ) $n ( $site ) $duree $heur "

} ;# Appel de diffusion

# ========================================================================= # Finalisation de la simulation et debut du RUN # # ========================================================================= $ns at [ expr $val(stop) + 0.1] " finish" ;# Finir la Simulation apres (STOP)

puts " debut de la simulation ... " ;# Ecrire "debut de la simulation.. "

$ns run ;# Debut de la Simulation NAM

le Script TCL (Système réparti)

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Là où il n'y a pas d'espoir, nous devons l'inventer"   Albert Camus