spell check + des ajouts en vrac
This commit is contained in:
parent
dc7c4f0290
commit
8bf0a343fa
2
docs/.gitignore
vendored
2
docs/.gitignore
vendored
@ -19,7 +19,7 @@
|
||||
# these rules might exclude image files for figures etc.
|
||||
# *.ps
|
||||
# *.eps
|
||||
# *.pdf
|
||||
*.pdf
|
||||
|
||||
## Generated if empty string is given at "Please type another file name for output:"
|
||||
.pdf
|
||||
|
33
docs/présentation_consistence_faible/définition/adt.tex
Normal file
33
docs/présentation_consistence_faible/définition/adt.tex
Normal file
@ -0,0 +1,33 @@
|
||||
\begin{frame}
|
||||
\frametitle{Les Types de données abstraits}
|
||||
|
||||
Pour communiquer entre eux, les processus doivent utiliser des objets partagés. \\
|
||||
|
||||
Pour spécifier la notion d'objets partagés nous allons d'abord cerner la notion de type de donnée abstrait :
|
||||
\begin{block}{Définition}
|
||||
Un type de donnée abstrait peut être défini par un automate tel que : $T = (A, B, Z, \zeta_0, \tau, \delta)$ \\
|
||||
Tel que :
|
||||
\begin{itemize}
|
||||
\item A est un ensemble dénombrable (alphabet d'entrée)
|
||||
\item B est un ensemble dénombrable (alphabet de sortie)
|
||||
\item Z est un ensemble dénombrable d'états abstraits
|
||||
\item $\zeta_0 \in Z$ est l'état initial
|
||||
\item $\tau$ est la fonction de transition ($Z \times A \rightarrow Z$)
|
||||
\item $\delta$ est la fonction de sortie ($Z \times A \rightarrow B$)
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Les flux fenêtrés (Work in Progress)}
|
||||
|
||||
|
||||
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Les ensembles (Work in Progress)}
|
||||
|
||||
|
||||
|
||||
\end{frame}
|
@ -0,0 +1,7 @@
|
||||
\input{définition/intro.tex}
|
||||
|
||||
\subsection{Objets partagés}
|
||||
\include{définition/adt}
|
||||
|
||||
\subsection{Définition du modèle}
|
||||
% \include{définition/modele}
|
50
docs/présentation_consistence_faible/définition/intro.tex
Normal file
50
docs/présentation_consistence_faible/définition/intro.tex
Normal file
@ -0,0 +1,50 @@
|
||||
\begin{frame}
|
||||
\frametitle{Problématique (Work in Progress)}
|
||||
|
||||
\begin{block}{Système distribué}
|
||||
Ce dit d'un système informatique dont les nœuds sont indépendant et reliés par un réseau informatique. Travaillant sur une tâche commune.
|
||||
\end{block}
|
||||
|
||||
\begin{columns}
|
||||
\column{0.4\textwidth}
|
||||
\begin{block}{Avantages}
|
||||
\begin{itemize}
|
||||
\item une répartition de la charge de travail entre plusieurs acteurs
|
||||
\item une meilleure tolérance aux pannes
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
|
||||
\column{0.4\textwidth}
|
||||
|
||||
\begin{block}{Inconvénients}
|
||||
\begin{itemize}
|
||||
\item Introduit une notion de concurrence dans les tâches.
|
||||
\item Il faut définir ce qu'on considère acceptable.
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Problématique (Work in Progress)}
|
||||
|
||||
\begin{columns}
|
||||
\column{0.6\textwidth}
|
||||
\resizebox{\columnwidth}{!}{
|
||||
\includegraphics{images/carte_criteres.png}
|
||||
}
|
||||
|
||||
\column{0.4\textwidth}
|
||||
\begin{block}{Les classes de cohérences}
|
||||
\begin{itemize}
|
||||
\item Introduites par PERRIN
|
||||
\item Objectifs :
|
||||
\begin{itemize}
|
||||
\item Classer les histoires créées par un algorithme.
|
||||
\item Créer une relation de dépendance entre les classes.
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
|
||||
\end{columns}
|
||||
\end{frame}
|
291
docs/présentation_consistence_faible/définition/modele.tex
Normal file
291
docs/présentation_consistence_faible/définition/modele.tex
Normal file
@ -0,0 +1,291 @@
|
||||
\begin{frame}
|
||||
\frametitle{Modèle}
|
||||
|
||||
\begin{columns}
|
||||
\column{0.4\textwidth}
|
||||
|
||||
\resizebox{\columnwidth}{!}{
|
||||
|
||||
\begin{tikzpicture}[
|
||||
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
|
||||
arrow/.style={|->, thick,},
|
||||
]
|
||||
|
||||
\node[roundnode] (p0) {};
|
||||
\node[left] at (p0.west) {$p_0$};
|
||||
|
||||
\node[roundnode] (p1) [below=of p0] {};
|
||||
\node[left] at (p1.west) {$p_1$};
|
||||
|
||||
\node[roundnode] (p2) [right=of p1] {};
|
||||
\node[right] at (p2.east) {$p_2$};
|
||||
|
||||
\node[roundnode] (p3) [right=of p0] {};
|
||||
\node[right] at (p3.east) {$p_3$};
|
||||
|
||||
\draw (p0) -- (p1);
|
||||
\draw (p0) -- (p2);
|
||||
\draw (p0) -- (p3);
|
||||
\draw (p1) -- (p2);
|
||||
\draw (p1) -- (p3);
|
||||
\draw (p2) -- (p3);
|
||||
\end{tikzpicture}
|
||||
}
|
||||
|
||||
\column{0.6\textwidth}
|
||||
|
||||
\begin{block}{Prérequis}
|
||||
\begin{itemize}
|
||||
\item Tous les nœuds du système sont fortement connectés
|
||||
\item Le système n'est pas partitionnable
|
||||
\item Les nœuds sont asynchrones
|
||||
\item Les nœuds ne peuvent pas être défaillants
|
||||
\item Les nœuds ne peuvent pas être malicieux
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Modèle}
|
||||
|
||||
\begin{columns}
|
||||
|
||||
\column{0.4\textwidth}
|
||||
|
||||
\centering
|
||||
\resizebox{0.75\columnwidth}{!}{
|
||||
\begin{tikzpicture}[
|
||||
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
|
||||
]
|
||||
|
||||
\node[roundnode] (p0) {};
|
||||
\node[left] at (p0.west) {$p_0$};
|
||||
\onslide<3> {
|
||||
\node[above] at (p0.north) {$\textcolor{red}{w(1)}$};
|
||||
}
|
||||
\onslide<7> {
|
||||
\node[above] at (p0.north) {$\textcolor{red}{r/(1,2)^w}$};
|
||||
}
|
||||
|
||||
\node[roundnode] (p1) [below=of p0] {};
|
||||
\node[left] at (p1.west) {$p_1$};
|
||||
\onslide<2> {
|
||||
\node[below] at (p1.south) {$\textcolor{red}{r/(0,0)}$};
|
||||
}
|
||||
\onslide<5> {
|
||||
\node[below] at (p1.south) {$\textcolor{red}{w(2)}$};
|
||||
}
|
||||
\onslide<6> {
|
||||
\node[below] at (p1.south) {$\textcolor{red}{r/(1,2)}$};
|
||||
}
|
||||
\onslide<7> {
|
||||
\node[below] at (p1.south) {$\textcolor{red}{r/(1,2)^w}$};
|
||||
}
|
||||
|
||||
\node[roundnode] (p2) [right=of p1] {};
|
||||
\node[right] at (p2.east) {$p_2$};
|
||||
\onslide<4> {
|
||||
\node[below] at (p2.south) {$\textcolor{red}{r/(0,1)}$};
|
||||
}
|
||||
\onslide<6> {
|
||||
\node[below] at (p2.south) {$\textcolor{red}{r/(1,2)}$};
|
||||
}
|
||||
\onslide<7> {
|
||||
\node[below] at (p2.south) {$\textcolor{red}{r/(1,2)^w}$};
|
||||
}
|
||||
|
||||
\node[roundnode] (p3) [right=of p0] {};
|
||||
\node[right] at (p3.east) {$p_3$};
|
||||
\onslide<4> {
|
||||
\node[above] at (p3.north) {$\textcolor{red}{r/(0,1)}$};
|
||||
}
|
||||
\onslide<5> {
|
||||
\node[above] at (p3.north) {$\textcolor{red}{w(1)}$};
|
||||
}
|
||||
\onslide<6> {
|
||||
\node[above] at (p3.north) {$\textcolor{red}{r/(1,1)}$};
|
||||
}
|
||||
\onslide<7> {
|
||||
\node[above] at (p3.north) {$\textcolor{red}{r/(1,2)^w}$};
|
||||
}
|
||||
|
||||
\draw (p0) -- (p1);
|
||||
\draw (p0) -- (p2);
|
||||
\draw (p0) -- (p3);
|
||||
\draw (p1) -- (p2);
|
||||
\draw (p1) -- (p3);
|
||||
\draw (p2) -- (p3);
|
||||
\end{tikzpicture}
|
||||
}
|
||||
|
||||
\column{\textheight}
|
||||
|
||||
\begin{tabular}{l}
|
||||
$p_0 = \onslide<3->{w(1)} \onslide<7->{\bullet r/(1,2)^w}$ \\
|
||||
$p_1 = \onslide<2->{r/(0,0)} \onslide<5->{\bullet w(2)} \onslide<6->{\bullet r/(1,2)} \onslide<7->{\bullet r/(1,2)^w}$ \\
|
||||
$p_2 = \onslide<4->{r/(0,1)} \onslide<6->{\bullet r/(1,2)} \onslide<7->{\bullet r/(1,2)^w}$ \\
|
||||
$p_3 = \onslide<4->{r/(0,1)} \onslide<5->{\bullet w(1)} \onslide<6->{\bullet r/(1,1)} \onslide<7->{\bullet r/(1,2)^w}$ \\
|
||||
\end{tabular}
|
||||
|
||||
\end{columns}
|
||||
|
||||
\centering
|
||||
\resizebox{!}{\height}{
|
||||
|
||||
\begin{tikzpicture}[
|
||||
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
|
||||
ignorednode/.style={circle, draw=black!20, fill=black!20, very thick, minimum size=1pt,},
|
||||
invisiblenode/.style={circle, draw=white, fill=white, very thick, minimum size=1pt,},
|
||||
arrow/.style={|->, thick,},
|
||||
message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}},
|
||||
]
|
||||
|
||||
\node[roundnode] (p00) {};
|
||||
\node[left] at (p00.west) {$p_0$};
|
||||
\node[above] at (p00.north) {$\{0\}$};
|
||||
|
||||
\node[roundnode] (p10) [below=20pt of p00] {};
|
||||
\node[left] at (p10.west) {$p_1$};
|
||||
\node[above] at (p10.north) {$\{0\}$};
|
||||
|
||||
\node[roundnode] (p20) [below=20pt of p10] {};
|
||||
\node[left] at (p20.west) {$p_2$};
|
||||
\node[above] at (p20.north) {$\{0\}$};
|
||||
|
||||
\node[roundnode] (p30) [below=20pt of p20] {};
|
||||
\node[left] at (p30.west) {$p_3$};
|
||||
\node[above] at (p30.north) {$\{0\}$};
|
||||
|
||||
\pause
|
||||
|
||||
\node[roundnode] (p01) [right=of p00] {};
|
||||
\node[above] at (p01.north) {$\{1\}$};
|
||||
|
||||
\draw[arrow] (p00) -- node[above] {tata} (p01);
|
||||
|
||||
|
||||
|
||||
% \onslide<3->{
|
||||
% \node[roundnode] (11) {};
|
||||
% \node[left] at (11.west) {$p_0$};
|
||||
% \node[above] at (11.north) {$w(1)$};
|
||||
% }
|
||||
% \onslide<7-> {
|
||||
% \node[roundnode] (12) [right=of 11] {};
|
||||
% \node[above] at (12.north) {$r/(1,2)^w$};
|
||||
|
||||
% \draw[arrow] (11) -- (12);
|
||||
% }
|
||||
|
||||
% \onslide<2-> {
|
||||
% \node[roundnode] (21) [below=20pt of 11] {};
|
||||
% \node[left] at (21.west) {$p_1$};
|
||||
% \node[above] at (21.north) {$r/(0,0)$};
|
||||
% }
|
||||
% \onslide<5-> {
|
||||
% \node[roundnode] (22) [right=of 21] {};
|
||||
% \node[above] at (22.north) {$w(2)$};
|
||||
|
||||
% \draw[arrow] (21) -- (22);
|
||||
% }
|
||||
% \onslide<6-> {
|
||||
% \node[roundnode] (23) [right=of 22] {};
|
||||
% \node[above] at (23.north) {$r/(1,2)$};
|
||||
|
||||
% \draw[arrow] (21) -- (23);
|
||||
% }
|
||||
% \onslide<7-> {
|
||||
% \node[roundnode] (24) [right=of 23] {};
|
||||
% \node[above] at (24.north) {$r/(1,2)^w$};
|
||||
|
||||
% \draw[arrow] (21) -- (24);
|
||||
% }
|
||||
|
||||
% \onslide<4-> {
|
||||
% \node[roundnode] (31) [below=20pt of 21] {};
|
||||
% \node[left] at (31.west) {$p_2$};
|
||||
% \node[above] at (31.north) {$r/(0,1)$};
|
||||
% }
|
||||
% \onslide<6-> {
|
||||
% \node[roundnode] (32) [right=of 31] {};
|
||||
% \node[above] at (32.north) {$r/(1,2)$};
|
||||
|
||||
% \draw[arrow] (31) -- (32);
|
||||
% }
|
||||
% \onslide<7-> {
|
||||
% \node[roundnode] (33) [right=of 32] {};
|
||||
% \node[above] at (33.north) {$r/(1,2)^w$};
|
||||
|
||||
% \draw[arrow] (31) -- (33);
|
||||
% }
|
||||
|
||||
% \onslide<4-> {
|
||||
% \node[roundnode] (41) [below=20pt of 31] {};
|
||||
% \node[left] at (41.west) {$p_3$};
|
||||
% \node[above] at (41.north) {$r/(0,1)$};
|
||||
% }
|
||||
% \onslide<5-> {
|
||||
% \node[roundnode] (42) [right=of 41] {};
|
||||
% \node[above] at (42.north) {$w(1)$};
|
||||
|
||||
% \draw[arrow] (41) -- (42);
|
||||
% }
|
||||
% \onslide<6-> {
|
||||
% \node[roundnode] (43) [right=of 42] {};
|
||||
% \node[above] at (43.north) {$r/(1,1)$};
|
||||
|
||||
% \draw[arrow] (41) -- (43);
|
||||
% }
|
||||
% \onslide<7-> {
|
||||
% \node[roundnode] (44) [right=of 43] {};
|
||||
% \node[above] at (44.north) {$r/(1,2)^w$};
|
||||
|
||||
% \draw[arrow] (41) -- (44);
|
||||
% }
|
||||
|
||||
\end{tikzpicture}
|
||||
}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Modèle}
|
||||
|
||||
\resizebox{\columnwidth}{!}{
|
||||
\begin{tikzpicture}[
|
||||
roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,},
|
||||
ignorednode/.style={circle, draw=black!20, fill=black!20, very thick, minimum size=1pt,},
|
||||
arrow/.style={|->, thick,},
|
||||
message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}},
|
||||
]
|
||||
|
||||
\node[roundnode] (11) {};
|
||||
\node[left] at (11.west) {$p_0$};
|
||||
\node[above] at (11.north) {$w(1)$};
|
||||
\node[roundnode] (12) [right=of 11] {};
|
||||
\node[above] at (12.north) {$I(a)$};
|
||||
\node[roundnode] (13) [right=of 12] {};
|
||||
\node[above] at (13.north) {$r/(0,1)$};
|
||||
\node[roundnode] (14) [right=of 13] {};
|
||||
\node[above] at (14.north) {$r/(1,2)^w$};
|
||||
|
||||
\draw[arrow] (11) -- (12);
|
||||
\draw[arrow] (12) -- (13);
|
||||
\draw[arrow] (13) -- (14);
|
||||
|
||||
\node[roundnode] (21) [below=of 11] {};
|
||||
\node[left] at (21.west) {$p_1$};
|
||||
\node[below] at (21.south) {$w(2)$};
|
||||
\node[roundnode] (22) [right=of 21] {};
|
||||
\node[below] at (22.south) {$R/\emptyset$};
|
||||
\node[roundnode] (23) [right=of 22] {};
|
||||
\node[below] at (23.south) {$r/(0,2)$};
|
||||
\node[roundnode] (24) [right=of 23] {};
|
||||
\node[below] at (24.south) {$r/(1,2)^w$};
|
||||
|
||||
\draw[arrow] (21) -- (22);
|
||||
\draw[arrow] (22) -- (23);
|
||||
\draw[arrow] (23) -- (24);
|
||||
\end{tikzpicture}
|
||||
}
|
||||
\end{frame}
|
BIN
docs/présentation_consistence_faible/images/carte_criteres.png
Normal file
BIN
docs/présentation_consistence_faible/images/carte_criteres.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 159 KiB |
@ -28,9 +28,9 @@
|
||||
\usetikzlibrary{calc}
|
||||
\usetikzlibrary{arrows.meta}
|
||||
|
||||
\title[bwconsistency]{Consistence faible byzantine appliquée au cloud}
|
||||
\subtitle{Présentation intermédiaire: Consistence faible}
|
||||
\author[JOLY Amaury]{JOLY Amaury\\ \textbf{Encadrants :} G, LABOUREL Arnaud }
|
||||
\title[bwconsistency]{Cohérence faible byzantine appliquée au cloud}
|
||||
\subtitle{Présentation intermédiaire : Cohérence faible}
|
||||
\author[JOLY Amaury]{JOLY Amaury\\ \textbf{Encadrants :} GODARD Emmanuel, TRAVERS Corentin }
|
||||
% \\[2ex] \includegraphics[scale=0.1]{./img/amu.png}
|
||||
\institute[LIS, Scille]{LIS-LAB, Scille}
|
||||
\date{\today}
|
||||
@ -43,10 +43,10 @@
|
||||
\tableofcontents
|
||||
\end{frame}
|
||||
|
||||
% \section{Introduction}
|
||||
% \input{introduction/index.tex}
|
||||
\section{Introduction}
|
||||
\input{définition/index.tex}
|
||||
|
||||
\section{Les propriétés de la Consistence faibes}
|
||||
\section{Les propriétés de la Cohérence Faible}
|
||||
\input{wconsistence_properties/index.tex}
|
||||
|
||||
\end{document}
|
@ -1,27 +1,27 @@
|
||||
# Script présentation Consistence Faible
|
||||
# Script présentation Cohérence Faible
|
||||
|
||||
## Plan
|
||||
|
||||
1. Présenter un processus séquentiel classique
|
||||
- exemple: processeur mono coeur
|
||||
- exemple : processeur monocœur
|
||||
2. Introduire le concept de cohérence via la cohérence forte (le plus intuitif)
|
||||
- exemple: processeur multi coeur, application distribuée centralisé
|
||||
- notions: respect de l'ordre, atomicité, isolation
|
||||
- exemple : processeur multicœur, application distribuée centralisée.
|
||||
- notions : respect de l'ordre, atomicité, isolation
|
||||
3. Introduire le concept de cohérence faible
|
||||
- exemple: application distribuée décentralisé
|
||||
- exemple : application distribuée décentralisée
|
||||
4. Définir les propriétés d'un système réparti
|
||||
5. Definir les differents modèles de cohérence faible (des plus trivial aux moins)
|
||||
5. Définir les différents modèles de cohérence faible (des plus trivial aux moins)
|
||||
1. Cohérence Séquentielle (SC)
|
||||
2. Linéarisibilité -> Serialisabilité
|
||||
2. Linéarisabilité -> Serialisabilité
|
||||
3. Convergence/Convergence Forte
|
||||
1. Définit le concepts de convergence
|
||||
1. Définit le concept de convergence
|
||||
2. Pourquoi ? + les apports de la convergence forte
|
||||
3. Types de données basés sur la convergence (poruquoi ?)
|
||||
3. Types de données basés sur la convergence (pourquoi ?)
|
||||
4. Cohérence Pipeline
|
||||
1. On présente la notion d'Intention
|
||||
2. On l'oppose à la cohérence Pipeline
|
||||
|
||||
6. Cohérence d'écriure
|
||||
1. Ce que ne couvre pas les modèles précedents
|
||||
2. Cohérence d'écriture et cohérence d'écriure forte.
|
||||
6. Cohérence d'écriture
|
||||
1. Ce que ne couvre pas les modèles précédents
|
||||
2. Cohérence d'écriture et cohérence d'écriture forte.
|
||||
|
||||
|
@ -1,13 +1,19 @@
|
||||
\begin{frame}
|
||||
\frametitle{Linéarisation}
|
||||
% \begin{itemize}
|
||||
% \end{itemize}
|
||||
\begin{block}{Définition}
|
||||
Un ensemble d'événement est dit linéarisable s'il existe une séquence d'événement qui respecte les 3 propriétés suivantes :
|
||||
\begin{itemize}
|
||||
\item \textbf{Sûreté}
|
||||
\item \textbf{Régularité}
|
||||
\item \textbf{Atomicité}
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Sureté}
|
||||
\frametitle{Sûreté}
|
||||
\begin{block}{Définition}
|
||||
Toute lécture réalisé dans un même environement non-concurrent est identique.
|
||||
Toute lecture réalisée dans un même environnement non-concurrent est identique.
|
||||
\end{block}
|
||||
\begin{figure}
|
||||
\include{wconsistence_properties/linearisation_surete_hc}
|
||||
@ -17,9 +23,9 @@
|
||||
\begin{frame}
|
||||
\frametitle{Régularité}
|
||||
\begin{block}{Définition}
|
||||
Une lécture concurrente à une écriture peut lire soit la valeur avant l'écriture, soit la valeur après l'écriture.
|
||||
Une lecture concurrente à une écriture peut lire soit la valeur avant l'écriture, soit la valeur après l'écriture.
|
||||
\end{block}
|
||||
\begin{figure}
|
||||
\begin{figure}
|
||||
\include{wconsistence_properties/linearisation_regularite_hc}
|
||||
\end{figure}
|
||||
\end{frame}
|
||||
@ -27,25 +33,50 @@
|
||||
\begin{frame}
|
||||
\frametitle{Atomicité}
|
||||
\begin{block}{Définition}
|
||||
Une lécture concurrente à une écriture peut lire soit la valeur avant l'écriture, soit la valeur après l'écriture.
|
||||
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}
|
||||
\begin{figure}
|
||||
\include{wconsistence_properties/linearisation_atomicite_hc}
|
||||
\end{figure}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Convergence (EC)}
|
||||
\frametitle{Les classes de cohérence}
|
||||
\begin{columns}
|
||||
\column{0.5\textwidth}
|
||||
\resizebox{\columnwidth}{!}{
|
||||
\includegraphics{images/carte_criteres.png}
|
||||
}
|
||||
|
||||
\column{0.5\textwidth}
|
||||
Une approche pour définir la cohérence d'un algorithme est de placer l'histoire concurrente qu'il produit dans une classe de cohérence. \\
|
||||
Nous pouvons définir 3 classes de cohérence : %citer Perrin
|
||||
\begin{itemize}
|
||||
\item La \textbf{Localité d'état} (LS)
|
||||
\item La \textbf{Validité} (V)
|
||||
\item La \textbf{Convergence} (EC)
|
||||
\end{itemize}
|
||||
\end{columns}
|
||||
|
||||
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Localité d'état (LS)}
|
||||
|
||||
\begin{columns}
|
||||
\column{0.4\textwidth}
|
||||
\include{wconsistence_properties/convergence_hc}%
|
||||
\column{0.5\textwidth}
|
||||
Il existe un ensemble cofini d'évenements dont chacun peut être justifier par la même linéarisation. \\
|
||||
\include{wconsistence_properties/localiteetat_hc}
|
||||
\column{0.6\textwidth}
|
||||
\begin{block}{Définition}
|
||||
Pour tout processus $p$, il existe une linéarisation contenant toutes les lectures pures de $p$. \\
|
||||
\end{block}
|
||||
\begin{math}
|
||||
\begin{array}{ll}
|
||||
e.g.: & E' = \{r/(1,2)^w, r/(1,2)^w\} \\
|
||||
& w(1) \bullet w(2) \bullet \textcolor{red}{r/(1,2)^w} \\
|
||||
e.g.: & \textcolor{blue}{C_{p_1} = \{r/(0,0), r/(0,2)^w, w(2)\}}, \\
|
||||
& \textcolor{red}{C_{p_2} = \{r/(0,0), r/(0,1)^w, w(1)\}}, \\
|
||||
& \textcolor{blue}{r/(0,0) \bullet w(2) \bullet r/(0,2)^w} \\
|
||||
& \textcolor{red}{r/(0,0) \bullet w(1) \bullet r/(0,1)^w} \\
|
||||
\end{array}
|
||||
\end{math}
|
||||
\end{columns}
|
||||
@ -53,15 +84,15 @@
|
||||
|
||||
\begin{flushright}
|
||||
\begin{math}
|
||||
EC = \left\{
|
||||
LS = \left\{
|
||||
\begin{array}{l}
|
||||
\mathcal{T} \rightarrow \mathcal{P}(\mathcal{H}) \\
|
||||
T \rightarrow \left\{
|
||||
\begin{array}{lll}
|
||||
H \in \mathcal{H}: & \multicolumn{2}{l}{|U_{T,H}| = \infty} \\
|
||||
& \lor & \exists E' \subset E_H, |E_H \setminus E'| < \infty \\
|
||||
& & \land \displaystyle\bigcap_{e \in E'} \delta_T^{-1}(\lambda(e)) \neq \emptyset \\
|
||||
\end{array}
|
||||
\begin{tabular}{lll}
|
||||
$H \in \mathcal{H}:$ & \multicolumn{2}{l}{$\forall p \in \mathcal{P}_H, \exists C_p \subset E_H,$} \\
|
||||
& & $\hat{Q}_{T,H} \subset C_p$ \\
|
||||
& $\land$ & $lin(H[p \cap C_p / C_p]) \cap L(T) \neq \emptyset$ \\
|
||||
\end{tabular}
|
||||
\right. \\
|
||||
\end{array}
|
||||
\right.
|
||||
@ -77,7 +108,9 @@
|
||||
\column{0.4\textwidth}
|
||||
\include{wconsistence_properties/validite_hc}
|
||||
\column{0.6\textwidth}
|
||||
Il existe, un ensemble cofini d'évenement tels que pour chacun d'entre eux une linéarisations de toutes les opérations d'écriture les justifient. \\
|
||||
\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{math}
|
||||
\begin{array}{ll}
|
||||
e.g.: & E' = \{r/(2,1)^w, r/(1,2)^w\} \\
|
||||
@ -106,20 +139,21 @@
|
||||
\end{flushright}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Localité d'état (LS)}
|
||||
\frametitle{Convergence (EC)}
|
||||
|
||||
\begin{columns}
|
||||
\column{0.4\textwidth}
|
||||
\include{wconsistence_properties/localiteetat_hc}
|
||||
\column{0.6\textwidth}
|
||||
Pour tout processus $p$, il existe une linéarisation contenant toutes les lectures pures de $p$ rendant l'histoire cohérente. \\
|
||||
\include{wconsistence_properties/convergence_hc}%
|
||||
\column{0.5\textwidth}
|
||||
\begin{block}{Définition}
|
||||
Il existe un ensemble cofini d'événements dont chacun peut être justifié par une seule linéarisation. \\
|
||||
\end{block}
|
||||
\begin{math}
|
||||
\begin{array}{ll}
|
||||
e.g.: & \textcolor{blue}{C_{p_1} = \{r/(0,0), r/(0,2)^w, w(2)\}}, \\
|
||||
& \textcolor{red}{C_{p_2} = \{r/(0,0), r/(0,1)^w, w(1)\}}, \\
|
||||
& \textcolor{blue}{r/(0,0) \bullet w(2) \bullet r/(0,2)^w} \\
|
||||
& \textcolor{red}{r/(0,0) \bullet w(1) \bullet r/(0,1)^w} \\
|
||||
e.g.: & E' = \{r/(1,2)^w, r/(1,2)^w\} \\
|
||||
& w(1) \bullet w(2) \bullet \textcolor{red}{r/(1,2)^w} \\
|
||||
\end{array}
|
||||
\end{math}
|
||||
\end{columns}
|
||||
@ -127,18 +161,18 @@
|
||||
|
||||
\begin{flushright}
|
||||
\begin{math}
|
||||
LS = \left\{
|
||||
EC = \left\{
|
||||
\begin{array}{l}
|
||||
\mathcal{T} \rightarrow \mathcal{P}(\mathcal{H}) \\
|
||||
T \rightarrow \left\{
|
||||
\begin{tabular}{lll}
|
||||
$H \in \mathcal{H}:$ & \multicolumn{2}{l}{$\forall p \in \mathcal{P}_H, \exists C_p \subset E_H,$} \\
|
||||
& & $\hat{Q}_{T,H} \subset C_p$ \\
|
||||
& $\land$ & $lin(H[p \cap C_p / C_p]) \cap L(T) \neq \emptyset$ \\
|
||||
\end{tabular}
|
||||
\begin{array}{lll}
|
||||
H \in \mathcal{H}: & \multicolumn{2}{l}{|U_{T,H}| = \infty} \\
|
||||
& \lor & \exists E' \subset E_H, |E_H \setminus E'| < \infty \\
|
||||
& & \land \displaystyle\bigcap_{e \in E'} \delta_T^{-1}(\lambda(e)) \neq \emptyset \\
|
||||
\end{array}
|
||||
\right. \\
|
||||
\end{array}
|
||||
\right.
|
||||
\end{math}
|
||||
\end{flushright}
|
||||
\end{frame}
|
||||
\end{frame}
|
||||
|
@ -6,29 +6,26 @@
|
||||
message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}},
|
||||
]
|
||||
|
||||
\node[roundnode, draw=red, fill=red] (11) {};
|
||||
\node[roundnode] (11) {};
|
||||
\node[left] at (11.west) {$p_0$};
|
||||
\node[above] at (11.north) {$w(1)$};
|
||||
\node[roundnode, draw=blue, fill=blue] (12) [right=of 11] {};
|
||||
\node[above] at (12.north) {$r/(0,0)$};
|
||||
\node[roundnode, draw=blue, fill=blue] (13) [right=of 12] {};
|
||||
\node[above] at (13.north) {$r/(0,2)^w$};
|
||||
\node[roundnode] (12) [right=of 11] {};
|
||||
\node[above] at (12.north) {$r/(0,1)$};
|
||||
\node[roundnode] (13) [right=of 12] {};
|
||||
\node[above] at (13.north) {$r/(2,1)^w$};
|
||||
|
||||
\draw[arrow] (11) -- (12);
|
||||
\draw[arrow] (12) -- (13);
|
||||
|
||||
\node[roundnode, draw=blue, fill=blue] (21) [below=of 11] {};
|
||||
\node[roundnode] (21) [below=of 11] {};
|
||||
\node[left] at (21.west) {$p_1$};
|
||||
\node[below] at (21.south) {$w(2)$};
|
||||
\node[roundnode, draw=red, fill=red] (22) [right=of 21] {};
|
||||
\node[below] at (22.south) {$r/(0,0)$};
|
||||
\node[roundnode, draw=red, fill=red] (23) [right=of 22] {};
|
||||
\node[below] at (23.south) {$r/(0,1)^w$};
|
||||
\node[roundnode] (22) [right=of 21] {};
|
||||
\node[below] at (22.south) {$r/(0,2)$};
|
||||
\node[roundnode] (23) [right=of 22] {};
|
||||
\node[below] at (23.south) {$r/(1,2)^w$};
|
||||
|
||||
\draw[arrow] (21) -- (22);
|
||||
\draw[arrow] (22) -- (23);
|
||||
|
||||
\draw[message] (11) -- ($(22)!0.5!(23)$);
|
||||
\draw[message] (21) -- ($(12)!0.5!(13)$);
|
||||
\end{tikzpicture}
|
||||
}
|
@ -1,50 +1,50 @@
|
||||
# Concurrence et cohérence dans les systèmes répartis
|
||||
|
||||
## Autheur: Matthieu Perrin
|
||||
## Auteur: Matthieu Perrin
|
||||
|
||||
## Reflexions
|
||||
## Réflexions
|
||||
|
||||
Un peu de mal a comprendre les bornes de cohérence.
|
||||
Ca veut dire quoi composable ?
|
||||
Un peu de mal à comprendre les bornes de cohérence.
|
||||
Ça veut dire quoi composable ?
|
||||
|
||||
## Définitions
|
||||
|
||||
Système réparti: Collection d'entités de calcul autonomones connectées en vue d'accomplir une tâche commune.
|
||||
Système réparti : Collection d'entités de calcul autonomes connectées en vue d'accomplir une tâche commune.
|
||||
|
||||
Entités de calcul: (ou processus). Entité d'un réseau capable de décision en fonction de stimuli.
|
||||
Entités de calcul : (ou processus). Entité d'un réseau capable de décision en fonction de stimuli.
|
||||
|
||||
Cohérence forte: Les objets ciblés cachent la concurrence et se comportent comme si tous les accès etait sequentiels.
|
||||
Cohérence forte : Les objets ciblés cachent la concurrence et se comportent comme si tous les accès était séquentiels.
|
||||
|
||||
## Introduction
|
||||
|
||||
Un système réparti est caractérisé par:
|
||||
Un système réparti est caractérisé par :
|
||||
|
||||
- L'échelle du système
|
||||
- Les moyens d'interactions
|
||||
- Gestion des fautes (c.f.: reynal18 attacks) (et nombre de fautes acceptables)
|
||||
- Rapport au temps (y a t'il une horloge partagé ?)
|
||||
- Gestion des fautes (c.f. : reynal18 attacks) (et nombre de fautes acceptables)
|
||||
- Rapport au temps (y a-t-il une horloge partagée ?)
|
||||
|
||||
## Les histoires concurrentes
|
||||
|
||||
Une histoire concurrente est un ensemble d'évenements partiellement ordonnés par un ordre de processus et étiquetés par des opérations.
|
||||
Une histoire concurrente est un ensemble d'événements partiellement ordonnés par un ordre de processus et étiquetés par des opérations.
|
||||
|
||||
3 primitives possibles:
|
||||
3 primitives possibles :
|
||||
|
||||
- Broadcast (diffusion fiable):
|
||||
- Validité: tout message reçu est émis par un processus
|
||||
- Uniformité: tout message reçu par un processus est recu par tout les autres processus
|
||||
- FIFO Broadcast (idem Broadcast):
|
||||
- Réception FIFO: tout message reçu par un processus est reçu dans l'ordre d'émission
|
||||
- Causal Broadcast (idem FIFO Broadcast):
|
||||
- Réception causale: Tout message m' envoyé par un processus après reception d'un message m est aussi reçu après m chez tout les autres processus
|
||||
- Broadcast (diffusion fiable) :
|
||||
- Validité : tout message reçu est émis par un processus
|
||||
- Uniformité : tout message reçu par un processus est reçu par tous les autres processus
|
||||
- FIFO Broadcast (idem Broadcast) :
|
||||
- Réception FIFO : tout message reçu par un processus est reçu dans l'ordre d'émission
|
||||
- Causal Broadcast (idem FIFO Broadcast) :
|
||||
- Réception causale : Tout message $m'$ envoyé par un processus après réception d'un message $m$ est aussi reçu après $m$ chez tous les autres processus
|
||||
|
||||
### Composabilité
|
||||
|
||||
La composabilité définit la possibilité pour deux types de données abstraits différents cohérent pris de manière unitaire, de pouvoir être combinés tout en gardant leurs conhérences.
|
||||
La compossibilité définit la possibilité pour deux types de données abstraits différents, cohérente pris de manière unitaire, de pouvoir être combinés tout en gardant leurs cohérences.
|
||||
|
||||
### Décomposabilité
|
||||
### Décomposable
|
||||
|
||||
La décomposabilité définit la possibilité pour deux types de données abstraits différents cohérent si considérés "ensemble" de rester cohérent si considérés séparéments.
|
||||
La décomposabilité définit la possibilité pour deux types de données abstraits différents cohérents si considérés "ensemble" de rester cohérent si considérés séparément.
|
||||
|
||||
### Localité
|
||||
|
||||
@ -52,69 +52,69 @@ La localité est le respect simultané de la composabilité et de la décomposab
|
||||
|
||||
## Modèles
|
||||
|
||||
Cohérence forte impossible dans des environements crédibles de cloud. (Trop de risques de déni de services)
|
||||
Cohérence forte impossible dans des environnements crédibles de cloud. (Trop de risques de déni de services)
|
||||
|
||||
Ci dessous une liste des differents paradigmes de modélisation de système répartis:
|
||||
Ci-dessous une liste des différents paradigmes de modélisation de système répartis :
|
||||
|
||||
### Cohérence Sequentiel (Décomposable, Fort)
|
||||
### Cohérence Séquentiel (Décomposable, Fort)
|
||||
|
||||
Cohérence Sequentiel (SC): Les objets ciblés cachent la concurrence et se comportent comme si tous les accès etait sequentiels.
|
||||
Le but est de mimer le comportement "comme si" un serveur centralisait et ordonnait l'information. (Ca peut etre le cas ou non, il faut juste que la propriété soit respectée).
|
||||
Y a un débat sur une notion de la cohérence séquentielle. La première formalisation de ce type de cohérence formulé par Lamport oublie de mentionner la notion de "synchronisation". Ce qui peut conduire a des comportements non cohérents. Elle permet par exemple l'existence d'histoires infinies qui viennent s'ajouter les unes derrières les autres. Ce qui serait absurde dans un système réel. (Exemple: infinité de lecture suivie d'une infinité d'écriture).
|
||||
Il y a donc débat sur la notion de cohérence séquentielle avec une école qui considére ce cas comme plausible, et une autre qui souhaite rajouter une notion de synchronisation.
|
||||
Cohérence Séquentiel (SC) : Les objets ciblés cachent la concurrence et se comportent comme si tous les accès était séquentiels.
|
||||
Le but est de mimer le comportement "comme si" un serveur centralisait et ordonnait l'information. (Ça peut être le cas ou non, il faut juste que la propriété soit respectée).
|
||||
Il y a un débat sur une notion de la cohérence séquentielle. La première formalisation de ce type de cohérence formulé par Lamport oublie de mentionner la notion de "synchronisation". Ce qui peut conduire a des comportements non cohérents. Elle permet par exemple l'existence d'histoires infinies qui viennent s'ajouter les unes derrières les autres. Ce qui serait absurde dans un système réel. (Exemple : infinité de lectures suivie d'une infinité d'écritures).
|
||||
Il y a donc débat sur la notion de cohérence séquentielle avec une école qui considère ce cas comme plausible et une autre qui souhaite rajouter une notion de synchronisation.
|
||||
|
||||
### Linéarisibilité ()
|
||||
### Linéarisabilité ()
|
||||
|
||||
Il y a ici un lien fort entre l'ordre d'action du processus et son intégration au système. Il y a une synchronicité plus forte.
|
||||
Ici lorsqu'un processus souhaite acceder à un objet, si il n'entre en conflit avec aucune action d'écriture, il récupere la valeur antérieur à son éxécution. (propriété: Registre Sûr).
|
||||
Si plusieurs processus veulent acceder à un objet, et entrent en concurrence avec une écriture, alors ils ne peuvent retourner seulement la valeur avant ou après l'écriture (propriété: Registre Régulier).
|
||||
Si deux lectures ne sont pas concurrentes, alors elles doivent rétourner une valeur au moins aussi récente que la lecture antérieur. (propriété: Registre Atomique).
|
||||
Ici lorsqu'un processus souhaite accéder à un objet, s'il ne rentre pas en conflit avec aucune action d'écriture, il récupère la valeur antérieure à son exécution. (propriété : Registre Sûr).
|
||||
Si plusieurs processus veulent accéder à un objet, et entrent en concurrence avec une écriture, alors ils ne peuvent retourner seulement la valeur avant ou après l'écriture (propriété : Registre Régulier).
|
||||
Si deux lectures ne sont pas concurrentes, alors elles doivent retourner une valeur au moins aussi récente que la lecture antérieure. (propriété : Registre Atomique).
|
||||
|
||||
### Serialisabilité (Décomposable, Faible)
|
||||
### Sérialisabilité (Décomposable, Faible)
|
||||
|
||||
ACID: Atomicité (une transaction est soit completement acceptée soit completement avortée), Cohérence (Un transaction éxécutée dans un état correct emmène vers un état correct), Isolation (Les transactions n'interferent pas entre elles), Durabilité (une transaction accepté n'est pas remise en cause).
|
||||
ACID : Atomicité (une transaction est soit complètement acceptée soit complètement avortée), Cohérence (Une transaction exécutée dans un état correct emmène vers un état correct), Isolation (Les transactions n'interfèrent pas entre elles), Durabilité (une transaction acceptée n'est pas remise en cause).
|
||||
|
||||
La serialisabilité est similaire à la linéarisibilité, à la difference que des transactions peuvent être avortés. Cela à pour effet de rendre le système moins "fort" en terme de consistence.
|
||||
La sérialisabilité est similaire à la linéarisabilité, à la différence que des transactions peuvent être avortés. Cela à pour effet de rendre le système moins "fort" en termes de consistance.
|
||||
|
||||
### Convergence (Composable, Faible)
|
||||
|
||||
La convergence est une notion de cohérence faible. Elle définit un systèmes qui peut à un instant t être divergent, mais qui finira sur un temps infinit à converger vers un état commun.
|
||||
La convergence est une notion de cohérence faible. Elle définit un système qui peut à un instant $t$ être divergent, mais qui finira sur un temps infini à converger vers un état commun.
|
||||
|
||||
### Convergenece forte (Composable, Foaible)
|
||||
### Convergence forte (Composable, Faible)
|
||||
|
||||
La convergence forte est une extension de la convergence où notre histoire est diviser en plusieurs états. Chaques transaction se trouve dans un état avec d'autres transaction avec qui elle partage un "passé commun". On définit le passé commun comme la base de connaissance antérieur à l'éxécution de la transaction.
|
||||
La convergence forte est une extension de la convergence où notre histoire est divisée en plusieurs états. Chaque transaction se trouve dans un état avec d'autres transactions avec qui elle partage un "passé commun". On définit le passé commun comme la base de connaissance antérieur à l'exécution de la transaction.
|
||||
|
||||
#### Data type pour la convergence
|
||||
|
||||
Les types de données vue pour les autres modèles sont peu adapté pour modeliser les interactions dasn le cas de la convergence. On privilégie plutot des types de données qui permettent de définir des états (ex: OR-SET).
|
||||
Les types de données vues pour les autres modèles sont peu adapté pour modéliser les interactions dans le cas de la convergence. On privilégie plutôt des types de données qui permettent de définir des états (ex : OR-SET).
|
||||
|
||||
### Intention
|
||||
|
||||
L'intention est une notion qui tend à aplliquer la cohérence en fonction de l'intention des utilisatuers. Elle trouve son sens particulièrement dans l'éditions collaborative lors d'écritures concurentes. Mais sa spécification reste flou et c'est un concept qui semble difiicile à appliquer.
|
||||
L'intention est une notion qui tend à appliquer la cohérence en fonction de l'intention des utilisateurs. Elle trouve son sens particulièrement dans l'édition collaborative lors d'écritures concurrentes. Mais sa spécification reste floue et c'est un concept qui semble difficile à appliquer.
|
||||
|
||||
### Coherence pipeline (Décomposable, Faible)
|
||||
### Cohérence pipeline (Décomposable, Faible)
|
||||
|
||||
La cohérence pipeline consiste une cohérence ne garantissant pas l'ordre des états finaux. C'est donc une cohérence faible. La chose la plus notable est que le résultat n'est pas garantit pour deux histoires concurentes équivalentes.
|
||||
La cohérence pipeline consiste une cohérence ne garantissant pas l'ordre des états finaux. C'est donc une cohérence faible. La chose la plus notable est que le résultat n'est pas garantit pour deux histoires concurrentes équivalentes.
|
||||
|
||||
### Cohérence de Cache (Composable, Décomposable, Fort)
|
||||
|
||||
On imagine que chaque type de donnée abstraite utilise une seule et même memoire qu'il partage avec tous les processus de l'histoire concurrente. Chaque mêmemoire respecte une cohérence séquentiel.
|
||||
On imagine que chaque type de donnée abstraite utilise une seule et même mémoire qu'il partage avec tous les processus de l'histoire concurrente. Chaque mémoire respecte une cohérence séquentielle.
|
||||
|
||||
### Cohérence d'écriture (Faible)
|
||||
|
||||
Un aspect manquant de la convergence est l'absence de cohérence d'écriture. C'est à dire que rien ne garantit que les données écrites par un processus soient bien celles lue à la fin par les lectures infinits.
|
||||
Un aspect manquant de la convergence est l'absence de cohérence d'écriture. C'est-à-dire que rien ne garantit que les données écrites par un processus soient bien celles lue à la fin par les lectures infinies.
|
||||
Le concept de cohérence d'écriture vise donc à spécifier cette propriété.
|
||||
|
||||
### Cohérence d'écriture forte (Faible)
|
||||
|
||||
La cohérence d'écriture forte est une extension de la cohérence d'écriture qui rajoute un ordre dans les opérations d'écriture. Ceci permet d'assurer que chaque opération soient faites dans le même état et assure donc une convergence plus "rapide".
|
||||
La cohérence d'écriture forte est une extension de la cohérence d'écriture qui rajoute un ordre dans les opérations d'écriture. Ceci permet d'assurer que chaque opération soit faites dans le même état et assure donc une convergence plus "rapide".
|
||||
|
||||
## Cohérence causale
|
||||
|
||||
### Cohérence Causale Faible
|
||||
|
||||
Cohérence direct avec son passé local, et respect de cette cohérence avec les autres processus par transitivité. Aucune préservation de l'ordre des opérations.
|
||||
Résultat potentiellement divergents ?
|
||||
Cohérence directe avec son passé local et respect de cette cohérence avec les autres processus par transitivité. Aucune préservation de l'ordre des opérations.
|
||||
Résultat potentiellement divergent ?
|
||||
|
||||
### Convergence Causale
|
||||
|
||||
@ -122,4 +122,4 @@ Rajout de la notion d'ordre totale. Qui permet de garantir la convergence du ré
|
||||
|
||||
### Cohérence Causale
|
||||
|
||||
Cohérence avec les écritures du passé causal et des lectures du passé local.
|
||||
Cohérence avec les écritures du passé causal et des lectures du passé local.
|
||||
|
Loading…
Reference in New Issue
Block a user