+\subsection{Généralités sur la simulation}
+
+La simulation est largement utilisée dans divers domaines de la recherche scientifique. Elle consiste au processus de la mise en oeuvre et "de la conduite d'expérimentations sur un modèle (une représentation simplifiée du réel) dans le but de comprendre le comportement du système modélisé sous des conditions sélectionnées ou de l'évaluation de diverses stratégies pour le fonctionnement du système sous la limite imposée par les critères de développement et d'exploitation" [29]. Particulièrement, la simulation de l'exécution d'une application parallèle distribuée étudie son comportement (résutats en sortie, temps de performance, scalabilité, ...) sur un environnement virtuel imitant au mieux le fonctionnement d'une plateforme physique réel ou d'un système en cours d'élaboration (banc d'essai) ou encore d'une hypothétique machine non encore réalisée. Ainsi, la simulation informatique se focalise sur le comportement dynamique du modèle à travers le temps. Plusieurs raisons motivent une telle simulation: à titre d'exemple, de réduire les coûts de la conception d'un système et d'éviter les erreurs, de produire dans un temps raisonnable des résultats en sortie d'un modèle ayant un temps d'exécution élevé, de répondre à des scénarions d'exécution avec des questions "what-if" (tests et évaluations), ou encore de créer des outils de simulation pour des formations ou des jeux. \\
+Dans le cadre d'une grille de calcul, les simulateurs ou les outils de simulation permettent à l'inverse des plateformes réelles l'évaluation de la performance des expérimentations "répétables et controllables" [25] sur des configurations flexibles et scalables. En effet, les environnements réels montrent leurs limites sur leur rigidité de passage à l'echelle mais aussi sur la flexibilité de disposer un environnement de calcul particulier répondant aux besoins précis de l'application à un moment donné. Selon la classification dans [30], la simulation d'applications sur une grille de calcul rejoint la classe de simulation "virtuelle" par l'utilisation d'équipements de simulation par des personnes réelles. De façon générale, le simulateur utilise une échelle de temps "discret", c'est-à-dire le temps est découpé en intervalles qui peuvent être réguliers ou non. Dans le cas d'un système à temps discret régulier, le simulateur maintient et met à jour éventuellement un ensemble de "variables d'état" qui reflètent l'état du système physique à un instant t donné. Un "évenement" est associé à chaque instant donné à une "transition d'état". Pour des comparaisons futures, on distingue le "temps physique" comme étant le temps considéré au niveau du système physique, du "temps de simulation" et "le temps de l'horloge murale" désigne le temps de simulation du modèle. Toutefois, le "temps de simulation" est une notion abstraite utilisée par le simulateur pour évaluer le temps de simulation. Il est défini [30] comme étant "un ensemble de valeurs totalement ordonné E où chaque valeur représente un temps du système physique à modéliser et qui vérifie les conditions suivantes:" \\
+
+Soient E l'ensemble des temps discrets de simulation et P l'ensemble des temps du système physique.
+
+\begin{equation}
+\label{eqsim}
+\begin{split}
+\texttt{Si } ( T_1 \in E, T_2 \in E ) \texttt{ et }( P_1 \in P, P_2 \in P ) \texttt{ et } (T_1 \textless T_2) \\
+\Rightarrow ( (P1 \textless P2) \texttt{ et } \exists K \in \mathbb{N}, T_2 - T_1 = K \times ( P_2 - P_1 )
+\end{split}
+\end{equation}
+
+La définition précédente montre le lien linéaire étroit entre les intervalles de temps de simulation et celles des temps physiques. Ce qui permet d'estimer entre autres le temps d'exécution probable d'une application à partir du temps de simulation observé. Outre ce temps global de l'outil de simulation et les variables d'état, une liste des évenements à exécuter complète la composition du simulateur au temps discret. \\
+Le changement des variables d'état peut s'effectuer soit à une fréquence régulière du temps de simulation (exécution rythmée par le temps) soit au début et à la fin d'un évenement donné (exécution rythmée par les évenements).
+Dans le cas d'une simulation d'une application parallèle et distribuée où plusieurs processeurs ou coeurs interconnectés concourent à résoudre ensemble le problème posé, plusieurs autres aspects liés à l'environnement doivent être considérés : \\
+\begin{itemize}
+\item [$\bullet$] L'initialisation du système;
+\item [$\bullet$] Les échanges de données entre les processus;
+\item [$\bullet$] La synchronisation des processus;
+\item [$\bullet$] La détection de deadlock et la reprise;
+\item [$\bullet$] L'arrêt et la fermeture du système.
+\end{itemize}
+Le tableau \ref{table1} donne quelques exemples de simulateurs pour des applications parallèles et distribuées sur une grille de calcul [28, 25].
+
+\begin{table}[htbp]
+\centering
+%\tiny
+\fontsize{8}{9}\selectfont
+\begin{tabular}{|c|c|c|c|p{1cm}p{1cm}p{1cm}p{1cm}|}
+\hline \\
+%{ } & { } & { } & { } & \\
+\textbf{OUTIL} & \textbf{DESCRIPTION} & \textbf{DEVELOPPEUR} & \textbf{APPLICATIONS CIBLE} \\ \hline
+\multirow{ 3}{*}{SimJava} & SimJava fournit un processus de simulation & Université de & Simulation d'évenements \\
+{ } & avec une animation à travers d'entités communiquant entre elles & Edinburgh (UK) & discrets \\
+{ } & http://www.dcs.ed.ac.uk/home/hase/simjava/ & { } & { } \\ \hline
+
+\multirow{ 4}{*}{Bricks} & Bricks est un outil d'évaluation de performance & Tokyo Institute of & Simulation \\
+{ } & analysant divers schémas d'ordonnancement & Technology (Japan) & de grille \\
+{ } & dans un environnement de grille de calcul & { } & { } \\
+{ } & http://matsu-www.is.titech.ac.jp/~takefusa/bricks/ & { } & { } \\ \hline
+
+\multirow{ 4}{*}{Microgrid} & Microcrid permet la simulation d'une montée & University of & Simulation \\
+{ } & en charge des applications sur grille de calcul & California at & de grille \\
+{ } & en utilisant des ressources clusterisées & San Diego (USA) & { } \\
+{ } & http://www-csag.ucsd.edu/projects/grid/microgrid.html & { } & { } \\ \hline
+
+\multirow{ 3}{*}{Simgrid} & Simgrid simule les applications & University of & Simulation \\
+{ } & distribuées dans un environnement distribué hétérogène & California at & de grille \\
+{ } & http://grail.sdsc.edu/projects/simgrid/ & San Diego (USA) & { } \\ \hline
+
+\multirow{ 4}{*}{Gridsim} & Gridsim permet la modélisation et la simulation & Monash & Simulation \\
+{ } & d'entités impliquées dans le calcul parallèle et distribué & University & de grille \\
+{ } & par la création et le pilotage de différentes ressources & Australie & { } \\
+{ } & http://www.buyya.com/gridsim/ & { } & { } \\ \hline
+
+\end{tabular}
+\caption{Quelques outils de simulation pour une grille de calcul}
+\label{table1}
+\end{table}
+
+Simgrid est l'outil choisi dans le cadre de ces travaux pour étudier le comportement et évaluer la performance d'applications parallèles distribuées à grande échelle. Une section de ce chapitre sera dédiée à la description plus détaillée de cette plateforme.
+