reorganisation
This commit is contained in:
88
docs/presentations/LIS/vanderlinde/intro/coherencecausale.tex
Executable file
88
docs/presentations/LIS/vanderlinde/intro/coherencecausale.tex
Executable file
@ -0,0 +1,88 @@
|
||||
\begin{frame}
|
||||
\frametitle{Cohérence Causale (Convergente)}
|
||||
|
||||
\begin{columns}
|
||||
\column{0.5\textwidth}
|
||||
\resizebox{\columnwidth}{!}{
|
||||
\includegraphics{images/carte_criteres.png}
|
||||
}
|
||||
|
||||
\column{0.5\columnwidth}
|
||||
\begin{block}{La cohérence causale selon Van Der Linde}
|
||||
Usage du terme \textbf{Causal Consistency} qui pourrait être confondue avec la Cohérence Causale de Perrin. \newline
|
||||
Mais s'approche plus de ce que Perrin qualifie de \textbf{Convergence Causale} (ou Causal Convergence (CCv)). \newline
|
||||
Les auteurs souhaitent privilégier la \textbf{Convergence} à la \textbf{Validité}.
|
||||
\end{block}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Cohérence Causale Faible (WCC)}
|
||||
|
||||
\begin{block}{Définition}
|
||||
Il existe un ordre causal tel que pour chaque lecture, il existe une linéarisation du passé causal de cet événement le justifiant.
|
||||
\end{block}
|
||||
|
||||
\only<1>{
|
||||
\begin{columns}
|
||||
\column{0.4\columnwidth}
|
||||
\begin{tcolorbox}[colframe=green!50!black]
|
||||
\input{schemas/wcc_hc_1}
|
||||
\end{tcolorbox}
|
||||
\column{0.5\columnwidth}
|
||||
$\textcolor{red}{w(1)} \bullet \textcolor{red!50}{r/(0,1)}$ \newline
|
||||
$\textcolor{blue}{w(3)} \bullet \textcolor{red}{w(1)} \bullet \textcolor{green!75!black}{r/(3,1)}$ \newline
|
||||
$\textcolor{blue}{w(3)} \bullet \textcolor{red}{w(1)} \bullet \textcolor{green!75!black}{r} \bullet \textcolor{blue!50}{r/(3,1)}$ \newline
|
||||
$\textcolor{red}{w(1)} \bullet \textcolor{blue}{w(3)} \bullet \textcolor{green!75!black}{r} \bullet \textcolor{green!95!black}{w(2)} \bullet \textcolor{red!25}{r/(3,2)}$ \newline
|
||||
$\textcolor{red}{w(1)} \bullet \textcolor{blue}{w(3)} \bullet \textcolor{green!75!black}{r} \bullet \textcolor{green!95!black}{w(2)} \bullet \textcolor{blue!50}{r} \bullet \textcolor{blue!25}{r/(3,2)}$ \newline
|
||||
\end{columns}
|
||||
|
||||
|
||||
\begin{columns}
|
||||
\column{0.4\columnwidth}
|
||||
\begin{tcolorbox}[colframe=red!50!black]
|
||||
\input{schemas/wcc_hc_2}
|
||||
\end{tcolorbox}
|
||||
\column{0.5\columnwidth}
|
||||
$w(1) \bullet r/(0,1)$ \newline
|
||||
Ici il n'est pas possible de trouver un ordre causal qui permette de linéariser le passé causal de $r/(2,1)$.
|
||||
\end{columns}
|
||||
}
|
||||
|
||||
\only<2>{
|
||||
\begin{columns}
|
||||
\column{0.4\columnwidth}
|
||||
\begin{tcolorbox}[colframe=green!50!black]
|
||||
\input{schemas/wcc_hc_3}
|
||||
\end{tcolorbox}
|
||||
\column{0.5\columnwidth}
|
||||
$\textcolor{green!75!black}{r/(0,0)}$ \newline
|
||||
$\textcolor{red}{w(1)} \bullet \textcolor{blue}{w(3)} \bullet \textcolor{red!50}{r/(3,1)}$ \newline
|
||||
$\textcolor{blue}{w(3)} \bullet \textcolor{red}{w(1)} \bullet \textcolor{blue!50}{r/(1,3)}$ \newline
|
||||
$\textcolor{red}{w(1)} \bullet \textcolor{blue}{w(3)} \bullet \textcolor{green!75!black}{r} \bullet \textcolor{green!95!black}{w(2)} \bullet \textcolor{red!25}{r/(1,2)^\omega}$ \newline
|
||||
$\textcolor{blue}{w(3)} \bullet \textcolor{red}{w(1)} \bullet \textcolor{blue!50}{r} \bullet \textcolor{green!75!black}{r} \bullet \textcolor{green!95!black}{w(2)} \bullet \textcolor{blue!25}{r/(3,2)^\omega}$ \newline
|
||||
|
||||
Cet exemple respecte la validité, mais pas la convergence.
|
||||
\end{columns}
|
||||
}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Convergence Causale (CCv)}
|
||||
|
||||
\begin{block}{Définition}
|
||||
Il existe un ordre causal et un ordre total tel que pour chaque lecture, il existe une linéarisation du passé causal de cet événement trié suivant l'ordre total le justifiant.
|
||||
\end{block}
|
||||
|
||||
\begin{columns}
|
||||
\column{0.4\columnwidth}
|
||||
\begin{tcolorbox}[colframe=green!50!black]
|
||||
\resizebox{1.2\columnwidth}{!}{
|
||||
\includegraphics{schemas/ccv_hc_1.png}
|
||||
}
|
||||
\end{tcolorbox}
|
||||
\column{0.5\columnwidth}
|
||||
% J'expliquerai au tableau
|
||||
\end{columns}
|
||||
|
||||
\end{frame}
|
36
docs/presentations/LIS/vanderlinde/intro/history.tex
Executable file
36
docs/presentations/LIS/vanderlinde/intro/history.tex
Executable file
@ -0,0 +1,36 @@
|
||||
\subsubsection{Le début de l'informatique distribuée}
|
||||
\begin{frame}
|
||||
\frametitle{Les processeurs multicœurs}
|
||||
|
||||
\begin{block}{Historique (1970)}
|
||||
\begin{itemize}
|
||||
\item Besoin d'augmenter les performances des processeurs
|
||||
\begin{itemize}
|
||||
\item Augmentation de la fréquence (limite physique)
|
||||
\item Augmentation du nombre de processeurs (problèmes de cohérence)
|
||||
\end{itemize}
|
||||
\item Lamport à défini des propriétés permettant de définir la notion de cohérence forte.
|
||||
\item L'approche de Lamport est de classer l'exécution et non pas l'algorithme.
|
||||
\end{itemize}
|
||||
\begin{quotation}
|
||||
"A correct execution is achieved if the results produced are the same as would be produced by executing the program steps in order."
|
||||
\footnote{Lamport, \emph{How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs}, 1979}
|
||||
\end{quotation}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{La généralisation aux systèmes distribuée}
|
||||
\begin{block}{Historique (1980)}
|
||||
\begin{itemize}
|
||||
\item Lamport étend sa définition de la cohérence forte aux systèmes distribués. \footnote{Lamport, \emph{On interprocess communication}, 1986}
|
||||
\item Il définit trois propriétés :
|
||||
\begin{itemize}
|
||||
\item \textbf{Sûreté}
|
||||
\item \textbf{Régularité}
|
||||
\item \textbf{Atomicité}
|
||||
\end{itemize}
|
||||
\item Une exécution qui respecte ces 3 propriétés est dite linéarisable.
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{frame}
|
11
docs/presentations/LIS/vanderlinde/intro/index.tex
Executable file
11
docs/presentations/LIS/vanderlinde/intro/index.tex
Executable file
@ -0,0 +1,11 @@
|
||||
\subsection{Historique}
|
||||
\include{intro/history.tex}
|
||||
|
||||
\subsection{La linéarisabilité}
|
||||
\include{intro/linearisabilite.tex}
|
||||
|
||||
\subsection{Rappels}
|
||||
\include{intro/rappel.tex}
|
||||
|
||||
\subsection{Cohérence Causale (Convergente)}
|
||||
\include{intro/coherencecausale.tex}
|
45
docs/presentations/LIS/vanderlinde/intro/linearisabilite.tex
Executable file
45
docs/presentations/LIS/vanderlinde/intro/linearisabilite.tex
Executable file
@ -0,0 +1,45 @@
|
||||
\begin{frame}
|
||||
\frametitle{Sûreté}
|
||||
\begin{block}{Définition}
|
||||
Toute lecture réalisée dans un même environnement non-concurrent est identique.
|
||||
\end{block}
|
||||
\begin{figure}
|
||||
\input{schemas/linearisation_surete_hc}
|
||||
\end{figure}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Régularité}
|
||||
\begin{block}{Définition}
|
||||
Une lecture concurrente à une écriture peut lire soit la valeur avant l'écriture, soit la valeur après l'écriture.
|
||||
\end{block}
|
||||
\begin{figure}
|
||||
\input{schemas/linearisation_regularite_hc}
|
||||
\end{figure}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Atomicité}
|
||||
\begin{block}{Définition}
|
||||
Si deux lectures ne sont pas concurrente la deuxième doit retourner une valeur au moins aussi récente que la première.
|
||||
\end{block}
|
||||
\begin{figure}
|
||||
\input{schemas/linearisation_atomicite_hc}
|
||||
\end{figure}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Cohérence Atomique ($C_\top$)}
|
||||
|
||||
\begin{block}{Définition}
|
||||
La cohérence atomique est le critère de cohérence le plus fort existant.
|
||||
\begin{itemize}
|
||||
\item Il est le moins efficace en terme d'interactivité.
|
||||
\item Il demande une synchronisation entre les opérations
|
||||
\begin{itemize}
|
||||
\item Chaque opération d'écriture ou de lecture est bloquante et doit attendre la fin de la précédente.
|
||||
\end{itemize}
|
||||
\item Il est utilisé en tant que référence.
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{frame}
|
147
docs/presentations/LIS/vanderlinde/intro/rappel.tex
Executable file
147
docs/presentations/LIS/vanderlinde/intro/rappel.tex
Executable file
@ -0,0 +1,147 @@
|
||||
\begin{frame}
|
||||
\frametitle{Les modèles de cohérences}
|
||||
|
||||
\begin{columns}
|
||||
\column{0.6\textwidth}
|
||||
\footnote{Perrin, \emph{Concurrence et cohérence dans les systèmes répartis}, 2017}
|
||||
\resizebox{\columnwidth}{!}{
|
||||
\includegraphics{images/carte_criteres.png}
|
||||
}
|
||||
|
||||
\column{0.4\columnwidth}
|
||||
\begin{block}{Les classes de cohérences}
|
||||
2 Grandes familles :
|
||||
\begin{itemize}
|
||||
\item Cohérence Forte
|
||||
\item Cohérence Faible :
|
||||
\begin{itemize}
|
||||
\item Localité d'état (SL)
|
||||
\item Convergence (EC)
|
||||
\item Validité (V)
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Validité (V)}
|
||||
|
||||
\begin{block}{Définition}
|
||||
Il existe, un ensemble cofini d'événement tel que pour chacun d'entre eux une linéarisation de toutes les opérations d'écriture les justifient. \\
|
||||
\end{block}
|
||||
|
||||
\begin{columns}
|
||||
\column{0.4\columnwidth}
|
||||
\begin{tcolorbox}[colframe=green!50!black]
|
||||
\input{schemas/validite_hc_1}
|
||||
\end{tcolorbox}
|
||||
\column{0.5\columnwidth}
|
||||
\begin{math}
|
||||
\begin{array}{ll}
|
||||
E' = & \{r/(2,1)^\omega, r/(1,2)^\omega\} \\
|
||||
& w(2) \bullet w(1) \bullet \textcolor{red}{r/(2,1)^\omega} \\
|
||||
& w(1) \bullet w(2) \bullet \textcolor{red}{r/(1,2)^\omega} \\
|
||||
\end{array}
|
||||
\end{math}
|
||||
\end{columns}
|
||||
|
||||
\begin{columns}
|
||||
\column{0.4\columnwidth}
|
||||
\begin{tcolorbox}[colframe=red!50!black]
|
||||
\input{schemas/validite_hc_2}
|
||||
\end{tcolorbox}
|
||||
\column{0.5\columnwidth}
|
||||
$E' = \{r/(0,1)^\omega, r/(1,2)^\omega\}$. \\
|
||||
Il n'existe pas de linéarisation des opérations d'écritures qui justifie $r/(0,1)^\omega$.
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Localité d'état}
|
||||
|
||||
\begin{block}{Définition}
|
||||
Pour tout processus $p$, il existe une linéarisation contenant toutes les lectures pures de $p$. Respectant l'ordre local de ces lectures. \\
|
||||
\end{block}
|
||||
|
||||
\begin{columns}
|
||||
\column{0.4\columnwidth}
|
||||
\begin{tcolorbox}[colframe=green!50!black]
|
||||
\input{schemas/localiteetat_hc_1}
|
||||
\end{tcolorbox}
|
||||
\column{0.5\columnwidth}
|
||||
\begin{math}
|
||||
\begin{array}{l}
|
||||
\textcolor{blue}{C_{p_0} = \{r/(0,0), r/(0,2)^\omega, w(2)\}}, \\
|
||||
\textcolor{red}{C_{p_1} = \{r/(0,0), r/(0,1)^\omega, w(1)\}}, \\
|
||||
\textcolor{blue}{r/(0,0) \bullet w(2) \bullet r/(0,2)^\omega} \\
|
||||
\textcolor{red}{r/(0,0) \bullet w(1) \bullet r/(0,1)^\omega} \\
|
||||
\end{array}
|
||||
\end{math}
|
||||
\end{columns}
|
||||
|
||||
\begin{columns}
|
||||
\column{0.4\columnwidth}
|
||||
\begin{tcolorbox}[colframe=red!50!black]
|
||||
\input{schemas/localiteetat_hc_2}
|
||||
\end{tcolorbox}
|
||||
\column{0.5\columnwidth}
|
||||
$E'_{p_0} = \{r/(0,0), r/(2,1)^\omega\},$ \newline
|
||||
$r/(0,0) \bullet w(2) \bullet w(1) \bullet r/(2,1)^\omega$ \newline
|
||||
$E'_{p_1} = \{r/(0,1), r/(2,1)^\omega\}$. \newline
|
||||
Il n'existe pas de linéarisation de $p_1$ respectant la localité d'état.
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Convergence (EC)}
|
||||
|
||||
\begin{block}{Définition}
|
||||
Il existe un ensemble cofini d'événements dont chacun peut être justifié par un seul et même état. \\
|
||||
\end{block}
|
||||
|
||||
\begin{columns}
|
||||
\column{0.4\columnwidth}
|
||||
\begin{tcolorbox}[colframe=green!50!black]
|
||||
\input{schemas/convergence_hc_1}
|
||||
\end{tcolorbox}
|
||||
\column{0.5\columnwidth}
|
||||
$E' = \{r/(1,2)^\omega, r/(1,2)^\omega\}$ \newline
|
||||
$\delta = ((1,2), \emptyset)$ est un état possible justifiant $E'$.
|
||||
\end{columns}
|
||||
|
||||
\begin{columns}
|
||||
\column{0.4\columnwidth}
|
||||
\begin{tcolorbox}[colframe=red!50!black]
|
||||
\input{schemas/convergence_hc_2}
|
||||
\end{tcolorbox}
|
||||
\column{0.5\columnwidth}
|
||||
$E' = \{r/(1,2)^\omega, r/(2,1)^\omega\}$. \newline
|
||||
Il n'existe aucun état possible justifiant $E'$ puisque deux lectures infinies sont incohérentes.
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Cohérence Causale}
|
||||
|
||||
\begin{columns}
|
||||
\column{0.6\textwidth}
|
||||
\resizebox{\columnwidth}{!}{
|
||||
\includegraphics{images/carte_criteres.png}
|
||||
}
|
||||
|
||||
\column{0.4\columnwidth}
|
||||
\begin{block}{Les classes de la cohérence causale}
|
||||
\begin{itemize}
|
||||
\item \textbf{WCC}: Weak Causal Consistency (V)
|
||||
\item \textbf{CCv}: Causal Convergence (V, EC)
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
|
||||
On respecte les propriétés suivantes :
|
||||
\begin{itemize}
|
||||
\item Localité d'état (SL)
|
||||
\item Convergence (EC)
|
||||
\end{itemize}
|
||||
\end{columns}
|
||||
\end{frame}
|
Reference in New Issue
Block a user