reorganisation
33
docs/presentations/LIS/consistence_faible/définition/adt.tex
Executable 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
docs/presentations/LIS/consistence_faible/définition/exemple.tex
Executable file
7
docs/presentations/LIS/consistence_faible/définition/index.tex
Executable file
@ -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/presentations/LIS/consistence_faible/définition/intro.tex
Executable 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/presentations/LIS/consistence_faible/définition/modele.tex
Executable 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/presentations/LIS/consistence_faible/images/carte_criteres.png
Executable file
After Width: | Height: | Size: 159 KiB |
52
docs/presentations/LIS/consistence_faible/main.tex
Executable file
@ -0,0 +1,52 @@
|
||||
\documentclass{beamer}
|
||||
\usetheme{Boadilla}
|
||||
\usecolortheme{orchid}
|
||||
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[french]{babel}
|
||||
\usepackage{stackengine}
|
||||
|
||||
\addtobeamertemplate{navigation symbols}{}{%
|
||||
\usebeamerfont{footline}%
|
||||
\usebeamercolor[fg]{footline}%
|
||||
\hspace{1em}%
|
||||
\insertframenumber/\inserttotalframenumber
|
||||
}
|
||||
\usepackage{ulem}
|
||||
\usepackage{tkz-tab}
|
||||
\setbeamertemplate{blocks}[rounded]%
|
||||
[shadow=true]
|
||||
\AtBeginSection{%
|
||||
\begin{frame}
|
||||
\tableofcontents[sections=\value{section}]
|
||||
\end{frame}
|
||||
}
|
||||
|
||||
\usepackage{tikz}
|
||||
\usetikzlibrary{positioning}
|
||||
\usetikzlibrary{calc}
|
||||
\usetikzlibrary{arrows.meta}
|
||||
|
||||
\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}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
|
||||
\begin{frame}{Table des matières}
|
||||
\tableofcontents
|
||||
\end{frame}
|
||||
|
||||
\section{Introduction}
|
||||
\input{définition/index.tex}
|
||||
|
||||
\section{Les propriétés de la Cohérence Faible}
|
||||
\input{wconsistence_properties/index.tex}
|
||||
|
||||
\end{document}
|
27
docs/presentations/LIS/consistence_faible/script.md
Executable file
@ -0,0 +1,27 @@
|
||||
# Script présentation Cohérence Faible
|
||||
|
||||
## Plan
|
||||
|
||||
1. Présenter un processus séquentiel classique
|
||||
- exemple : processeur monocœur
|
||||
2. Introduire le concept de cohérence via la cohérence forte (le plus intuitif)
|
||||
- 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ée
|
||||
4. Définir les propriétés d'un système réparti
|
||||
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éarisabilité -> Serialisabilité
|
||||
3. Convergence/Convergence Forte
|
||||
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 (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'écriture
|
||||
1. Ce que ne couvre pas les modèles précédents
|
||||
2. Cohérence d'écriture et cohérence d'écriture forte.
|
||||
|
@ -0,0 +1,41 @@
|
||||
\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=35pt 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=35pt of 23] {};
|
||||
\node[below] at (24.south) {$r/(1,2)^w$};
|
||||
|
||||
\draw[arrow] (21) -- (22);
|
||||
\draw[arrow] (22) -- (23);
|
||||
\draw[arrow] (23) -- (24);
|
||||
|
||||
\draw (24) -- (14);
|
||||
|
||||
\draw[dashed] ($(14)!0.5!(13) + (0,1)$) -- ++(0, -3.5);
|
||||
\end{tikzpicture}
|
||||
}
|
178
docs/presentations/LIS/consistence_faible/wconsistence_properties/index.tex
Executable file
@ -0,0 +1,178 @@
|
||||
\begin{frame}
|
||||
\frametitle{Linéarisation}
|
||||
\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{Sûreté}
|
||||
\begin{block}{Définition}
|
||||
Toute lecture réalisée dans un même environnement non-concurrent est identique.
|
||||
\end{block}
|
||||
\begin{figure}
|
||||
\include{wconsistence_properties/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}
|
||||
\include{wconsistence_properties/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}
|
||||
\include{wconsistence_properties/linearisation_atomicite_hc}
|
||||
\end{figure}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\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/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.: & \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}
|
||||
|
||||
|
||||
\begin{flushright}
|
||||
\begin{math}
|
||||
LS = \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}
|
||||
\right. \\
|
||||
\end{array}
|
||||
\right.
|
||||
\end{math}
|
||||
\end{flushright}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Validité (V)}
|
||||
|
||||
\begin{columns}
|
||||
\column{0.4\textwidth}
|
||||
\include{wconsistence_properties/validite_hc}
|
||||
\column{0.6\textwidth}
|
||||
\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\} \\
|
||||
& w(2) \bullet w(1) \bullet \textcolor{red}{r/(2,1)^w} \\
|
||||
& w(1) \bullet w(2) \bullet \textcolor{red}{r/(1,2)^w} \\
|
||||
\end{array}
|
||||
\end{math}
|
||||
\end{columns}
|
||||
|
||||
|
||||
\begin{flushright}
|
||||
\begin{math}
|
||||
V = \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 \forall e \in E', lin(H[E_H / {e}]) \cap L(T) \neq \emptyset) \\
|
||||
\end{array}
|
||||
\right. \\
|
||||
\end{array}
|
||||
\right.
|
||||
\end{math}
|
||||
\end{flushright}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Convergence (EC)}
|
||||
|
||||
\begin{columns}
|
||||
\column{0.4\textwidth}
|
||||
\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.: & 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}
|
||||
|
||||
|
||||
\begin{flushright}
|
||||
\begin{math}
|
||||
EC = \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}
|
||||
\right. \\
|
||||
\end{array}
|
||||
\right.
|
||||
\end{math}
|
||||
\end{flushright}
|
||||
\end{frame}
|
@ -0,0 +1,31 @@
|
||||
\resizebox{\columnwidth}{!}{%
|
||||
\begin{tikzpicture}[
|
||||
roundedrectangle/.style={draw, rounded corners, rectangle, minimum height=10pt, minimum width=20pt},
|
||||
invisible/.style={draw=none, fill=none},
|
||||
]
|
||||
|
||||
\node[invisible] (10) {};
|
||||
\node[roundedrectangle] (11) [right=60pt of 10] {\textcolor{blue}{$r_x(0,0)$}};
|
||||
\node[roundedrectangle, minimum width=100pt] (12) [right=50pt of 11] {$w_x(1)$};
|
||||
\node[invisible] (13) [right=100pt of 12] {};
|
||||
|
||||
\node[invisible] (20) [below=15pt of 10] {};
|
||||
\node[roundedrectangle] (21) [right=20pt of 20] {\textcolor{blue}{$r_x/(0,0)$}};
|
||||
\node[roundedrectangle] (22) [right=50pt of 21] {\textcolor{red}{$r_x/(0,1)$}};
|
||||
\node[roundedrectangle] (23) [right=15pt of 22] {\textcolor{red}{$r_x/(0,1)$}};
|
||||
\node[roundedrectangle] (24) [right=10pt of 23] {\textcolor{red}{$r_x/(0,1)$}};
|
||||
\node[roundedrectangle] (25) [right=20pt of 24] {\textcolor{red}{$r_x/(0,1)$}};
|
||||
\node[invisible] (26) [below=15pt of 13] {};
|
||||
|
||||
\node[invisible] (30) [below=15pt of 20] {};
|
||||
\node[roundedrectangle] (31) [right=30pt of 30] {\textcolor{blue}{$r_x/(0,0)$}};
|
||||
\node[roundedrectangle] (32) [right=55pt of 31] {\textcolor{blue}{$r_x/(0,0)$}};
|
||||
\node[roundedrectangle] (33) [right=15pt of 32] {\textcolor{red}{$r_x/(0,1)$}};
|
||||
\node[roundedrectangle] (34) [right=25pt of 33] {\textcolor{red}{$r_x/(0,1)$}};
|
||||
\node[invisible] (35) [below=15pt of 26] {};
|
||||
|
||||
\draw (10) -- (11) -- (12) -- (13);
|
||||
\draw (20) -- (21) -- (22) -- (23) -- (24) -- (25) -- (26);
|
||||
\draw (30) -- (31) -- (32) -- (33) -- (34) -- (35);
|
||||
\end{tikzpicture}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
\resizebox{\columnwidth}{!}{%
|
||||
\begin{tikzpicture}[
|
||||
roundedrectangle/.style={draw, rounded corners, rectangle, minimum height=10pt, minimum width=20pt},
|
||||
invisible/.style={draw=none, fill=none},
|
||||
]
|
||||
|
||||
\node[invisible] (10) {};
|
||||
\node[roundedrectangle] (11) [right=60pt of 10] {\textcolor{blue}{$r_x(0,0)$}};
|
||||
\node[roundedrectangle, minimum width=100pt] (12) [right=50pt of 11] {$w_x(1)$};
|
||||
\node[invisible] (13) [right=100pt of 12] {};
|
||||
|
||||
\node[invisible] (20) [below=15pt of 10] {};
|
||||
\node[roundedrectangle] (21) [right=20pt of 20] {\textcolor{blue}{$r_x/(0,0)$}};
|
||||
\node[roundedrectangle] (22) [right=50pt of 21] {\textcolor{red!70}{$r_x/(0,1)$}};
|
||||
\node[roundedrectangle] (23) [right=15pt of 22] {\textcolor{blue!70}{$r_x/(0,0)$}};
|
||||
\node[roundedrectangle] (24) [right=10pt of 23] {\textcolor{blue!70}{$r_x/(0,0)$}};
|
||||
\node[roundedrectangle] (25) [right=20pt of 24] {\textcolor{red}{$r_x/(0,1)$}};
|
||||
\node[invisible] (26) [below=15pt of 13] {};
|
||||
|
||||
\draw (10) -- (11) -- (12) -- (13);
|
||||
\draw (20) -- (21) -- (22) -- (23) -- (24) -- (25) -- (26);
|
||||
\end{tikzpicture}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
\resizebox{\columnwidth}{!}{%
|
||||
\begin{tikzpicture}[
|
||||
roundedrectangle/.style={draw, rounded corners, rectangle, minimum height=10pt, minimum width=20pt},
|
||||
invisible/.style={draw=none, fill=none},
|
||||
]
|
||||
|
||||
\node[invisible] (10) {};
|
||||
\node[roundedrectangle] (11) [right=60pt of 10] {\textcolor{blue}{$r_x(0,0)$}};
|
||||
\node[roundedrectangle, minimum width=100pt] (12) [right=50pt of 11] {$w_x(1)$};
|
||||
\node[invisible] (13) [right=65pt of 12] {};
|
||||
|
||||
\node[invisible] (20) [below=15pt of 10] {};
|
||||
\node[roundedrectangle] (21) [right=20pt of 20] {\textcolor{blue}{$r_x/(0,0)$}};
|
||||
\node[roundedrectangle] (22) [right=25pt of 21] {\textcolor{blue}{$r_x/(0,0)$}};
|
||||
\node[roundedrectangle] (23) [right=30pt of 22] {\textcolor{black!70}{$r_x/(?)$}};
|
||||
\node[roundedrectangle] (24) [right=55pt of 23] {\textcolor{red}{$r_x/(0,1)$}};
|
||||
\node[invisible] (25) [below=15pt of 13] {};
|
||||
|
||||
\draw (10) -- (11) -- (12) -- (13);
|
||||
\draw (20) -- (21) -- (22) -- (23) -- (24) -- (25);
|
||||
\end{tikzpicture}
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
\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, draw=red, fill=red] (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$};
|
||||
|
||||
\draw[arrow] (11) -- (12);
|
||||
\draw[arrow] (12) -- (13);
|
||||
|
||||
\node[roundnode, draw=blue, fill=blue] (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$};
|
||||
|
||||
\draw[arrow] (21) -- (22);
|
||||
\draw[arrow] (22) -- (23);
|
||||
|
||||
\draw[message] (11) -- ($(22)!0.5!(23)$);
|
||||
\draw[message] (21) -- ($(12)!0.5!(13)$);
|
||||
\end{tikzpicture}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
\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) {$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] (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/(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);
|
||||
\end{tikzpicture}
|
||||
}
|
69
docs/presentations/LIS/vanderlinde/corps/attaques.tex
Executable file
@ -0,0 +1,69 @@
|
||||
\begin{frame}
|
||||
\frametitle{Résumé de l'article}
|
||||
|
||||
\begin{block}{Apports}
|
||||
\begin{itemize}
|
||||
\item Formalisation des attaques possibles sur les systèmes satisfaisant la convergence causale.
|
||||
\item Définition de propriétés permettant de contrer ou de limiter ces attaques.
|
||||
\item Formalisation de "nouvelles" classes de cohérence faible étendant la cohérence causale à ces propriétés : "Secure Causal Consistency".
|
||||
\item Présentation d'algorithmes produisant des histoires satisfaisant cette classe.
|
||||
\item Expérimentation de ces algorithmes et comparaison avec les algorithmes existants.
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Résumé de l'article}
|
||||
|
||||
\begin{block}{Attentes}
|
||||
Les auteurs cherchent à produire un algorithme maximisant l'interactivité et donc minimisant la latence. \newline
|
||||
L'architecture étudiée est une architecture client-serveur, avec une connectivité en pair à pair entre les clients.
|
||||
\end{block}
|
||||
|
||||
Illustration de l'architecture
|
||||
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Attaques}
|
||||
|
||||
\begin{block}{Attaques}
|
||||
\begin{itemize}
|
||||
\item \textbf{Tempering} : Anticipation d'une opération reçue par le système, mais pas encore exécutée par l'ensemble des nœuds.
|
||||
\item \textbf{Omitting Dependencies} : Création d'une opération suivant un sous ensemble des dépendances réelles.
|
||||
\item \textbf{Unseen Dependencies} : Anticipation d'une opération non reçue par le système, mais probable d'arrivée.
|
||||
\item \textbf{Sibling Generation} : Création de deux opérations différentes possédant le même identifiant. Réalisant ainsi une divergence entre les nœuds.
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Propriétés}
|
||||
|
||||
\begin{block}{Propriétés}
|
||||
\begin{itemize}
|
||||
\item \textbf{Immutable History} : Chaque opération est envoyée avec son passé causal. (Parade le \textbf{Tempering})
|
||||
\item \textbf{No Future Dependencies} : Chaque opération est envoyée avec l'état qu'il connait des nœuds. (Parade l'\textbf{Unseen Dependencies}, il devient impossible de créer une opération à l'avance).
|
||||
\item \textbf{Causal Execution} : Toute opération $o_i$ appartenant au passé causal d'une opération $o$ doit être sérialisable t.q. : $o_i < o$. (Fait office de synchronisation entre les nœuds)
|
||||
\item \textbf{Eventual Sibling Detection} : Les opérations sont considérées comme des "jumeaux" éventuels et sont donc "révocables" via une nouvelle opération dédiée. (Parade (relativement) le \textbf{Sibling Generation})
|
||||
\item \textbf{Limited Omission} : à travailler
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
|
||||
Ces propriétés définissent la première classe que les auteurs introduisent : \textbf{Secure Causal Consistency}.
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Les différentes classes de cohérence faible}
|
||||
|
||||
\begin{block}{Les différentes classes de cohérence faible}
|
||||
\begin{itemize}
|
||||
\item \textbf{Secure Causal Consistency} : Respecte les propriétés précédentes ainsi que celles introduites par la convergence causale.
|
||||
\item \textbf{Secure Strict Causal Consistency} : Extension de la précédente, mais avec un ordre total basé sur la vision d'un observateur externe.
|
||||
\item \textbf{Extended Secure Causal Consistency} :
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
|
||||
|
||||
\end{frame}
|
1
docs/presentations/LIS/vanderlinde/corps/index.tex
Executable file
@ -0,0 +1 @@
|
||||
\input{corps/attaques.tex}
|
BIN
docs/presentations/LIS/vanderlinde/images/carte_criteres.png
Executable file
After Width: | Height: | Size: 159 KiB |
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
@ -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
@ -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
@ -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
@ -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}
|
58
docs/presentations/LIS/vanderlinde/main.tex
Executable file
@ -0,0 +1,58 @@
|
||||
\documentclass{beamer}
|
||||
\usetheme{Boadilla}
|
||||
\usecolortheme{orchid}
|
||||
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[french]{babel}
|
||||
\usepackage{stackengine}
|
||||
|
||||
\addtobeamertemplate{navigation symbols}{}{%
|
||||
\usebeamerfont{footline}%
|
||||
\usebeamercolor[fg]{footline}%
|
||||
\hspace{1em}%
|
||||
\insertframenumber/\inserttotalframenumber
|
||||
}
|
||||
\usepackage{ulem}
|
||||
\usepackage{tkz-tab}
|
||||
\setbeamertemplate{blocks}[rounded]%
|
||||
[shadow=true]
|
||||
\AtBeginSection{%
|
||||
\begin{frame}
|
||||
\tableofcontents[sections=\value{section}]
|
||||
\end{frame}
|
||||
}
|
||||
|
||||
\usepackage{tikz}
|
||||
\usetikzlibrary{positioning}
|
||||
\usetikzlibrary{calc}
|
||||
\usetikzlibrary{arrows.meta}
|
||||
|
||||
\usepackage{tcolorbox}
|
||||
|
||||
\usepackage{chronosys}
|
||||
|
||||
\title[bwconsistency]{Cohérence faible byzantine appliquée au cloud}
|
||||
\subtitle{Présentation intermédiaire: "Practical Client-side Replication: Weak Consistency Semantics for Insecure Settings"}
|
||||
\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}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
|
||||
\begin{frame}{Table des matières}
|
||||
\tableofcontents
|
||||
\end{frame}
|
||||
|
||||
\section{Introduction}
|
||||
\input{intro/index.tex}
|
||||
|
||||
\input{corps/index.tex}
|
||||
|
||||
% \section{Les propriétés de la Cohérence Faible}
|
||||
% \input{wconsistence_properties/index.tex}
|
||||
|
||||
\end{document}
|
BIN
docs/presentations/LIS/vanderlinde/schemas/ccv_hc_1.png
Executable file
After Width: | Height: | Size: 72 KiB |
41
docs/presentations/LIS/vanderlinde/schemas/convergence_hc_1.tex
Executable file
@ -0,0 +1,41 @@
|
||||
\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=35pt of 13] {};
|
||||
\node[above] at (14.north) {$r/(1,2)^\omega$};
|
||||
|
||||
\draw[arrow] (11) -- (12);
|
||||
\draw[arrow] (12) -- (13);
|
||||
\draw[arrow] (13) -- (14);
|
||||
|
||||
\node[roundnode] (21) [below=10pt 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=35pt of 23] {};
|
||||
\node[below] at (24.south) {$r/(1,2)^\omega$};
|
||||
|
||||
\draw[arrow] (21) -- (22);
|
||||
\draw[arrow] (22) -- (23);
|
||||
\draw[arrow] (23) -- (24);
|
||||
|
||||
\draw (24) -- (14);
|
||||
|
||||
\draw[dashed] ($(14)!0.5!(13) + (0,1)$) -- ++(0, -2.9);
|
||||
\end{tikzpicture}
|
||||
}
|
41
docs/presentations/LIS/vanderlinde/schemas/convergence_hc_2.tex
Executable file
@ -0,0 +1,41 @@
|
||||
\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=35pt of 13] {};
|
||||
\node[above] at (14.north) {$r/(1,2)^\omega$};
|
||||
|
||||
\draw[arrow] (11) -- (12);
|
||||
\draw[arrow] (12) -- (13);
|
||||
\draw[arrow] (13) -- (14);
|
||||
|
||||
\node[roundnode] (21) [below=10pt 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=35pt of 23] {};
|
||||
\node[below] at (24.south) {$r/(2,1)^\omega$};
|
||||
|
||||
\draw[arrow] (21) -- (22);
|
||||
\draw[arrow] (22) -- (23);
|
||||
\draw[arrow] (23) -- (24);
|
||||
|
||||
\draw (24) -- (14);
|
||||
|
||||
\draw[dashed] ($(14)!0.5!(13) + (0,1)$) -- ++(0, -2.9);
|
||||
\end{tikzpicture}
|
||||
}
|
26
docs/presentations/LIS/vanderlinde/schemas/linearisation_atomicite_hc.tex
Executable file
@ -0,0 +1,26 @@
|
||||
\resizebox{\columnwidth}{!}{%
|
||||
\begin{tikzpicture}[
|
||||
roundedrectangle/.style={draw, rounded corners, rectangle, minimum height=10pt, minimum width=20pt},
|
||||
invisible/.style={draw=none, fill=none},
|
||||
]
|
||||
|
||||
\node[invisible] (10) {};
|
||||
\node[roundedrectangle, minimum width=150pt] (11) [right=100pt of 10] {$w_x(1)$};
|
||||
\node[invisible] (12) [right=100pt of 11] {};
|
||||
|
||||
\node[invisible] (20) [below=15pt of 10] {};
|
||||
\node[roundedrectangle, minimum width=50pt] (21) [right=25pt of 20] {\textcolor{blue}{$r/(0)$}};
|
||||
\node[roundedrectangle, minimum width=50pt] (22) [right=75pt of 21] {\textcolor{blue}{$r/(0)$}};
|
||||
\node[roundedrectangle, minimum width=50pt] (23) [right=75pt of 22] {\textcolor{red}{$r/(1)$}};
|
||||
\node[invisible] (24) [below=15pt of 12] {};
|
||||
|
||||
\node[invisible] (30) [below=15pt of 20] {};
|
||||
\node[roundedrectangle, minimum width=50pt] (31) [right=125pt of 30] {\textcolor{red}{$r/(1)$}};
|
||||
\node[roundedrectangle, minimum width=50pt] (32) [right=40pt of 31] {\textcolor{red}{$r/(1)$}};
|
||||
\node[invisible] (33) [below=15pt of 24] {};
|
||||
|
||||
\draw (10) -- (11) -- (12);
|
||||
\draw (20) -- (21) -- (22) -- (23) -- (24);
|
||||
\draw (30) -- (31) -- (32) -- (33);
|
||||
\end{tikzpicture}
|
||||
}
|
26
docs/presentations/LIS/vanderlinde/schemas/linearisation_regularite_hc.tex
Executable file
@ -0,0 +1,26 @@
|
||||
\resizebox{\columnwidth}{!}{%
|
||||
\begin{tikzpicture}[
|
||||
roundedrectangle/.style={draw, rounded corners, rectangle, minimum height=10pt, minimum width=20pt},
|
||||
invisible/.style={draw=none, fill=none},
|
||||
]
|
||||
|
||||
\node[invisible] (10) {};
|
||||
\node[roundedrectangle, minimum width=150pt] (11) [right=100pt of 10] {$w_x(1)$};
|
||||
\node[invisible] (12) [right=100pt of 11] {};
|
||||
|
||||
\node[invisible] (20) [below=15pt of 10] {};
|
||||
\node[roundedrectangle, minimum width=50pt] (21) [right=25pt of 20] {\textcolor{blue}{$r/(0)$}};
|
||||
\node[roundedrectangle, minimum width=50pt] (22) [right=75pt of 21] {\textcolor{blue}{$r/(0)$}};
|
||||
\node[roundedrectangle, minimum width=50pt] (23) [right=75pt of 22] {\textcolor{red}{$r/(1)$}};
|
||||
\node[invisible] (24) [below=15pt of 12] {};
|
||||
|
||||
\node[invisible] (30) [below=15pt of 20] {};
|
||||
\node[roundedrectangle, minimum width=50pt] (31) [right=125pt of 30] {\textcolor{red}{$r/(1)$}};
|
||||
\node[roundedrectangle, minimum width=50pt] (32) [right=40pt of 31] {\textcolor{blue}{$r/(0)$}};
|
||||
\node[invisible] (33) [below=15pt of 24] {};
|
||||
|
||||
\draw (10) -- (11) -- (12);
|
||||
\draw (20) -- (21) -- (22) -- (23) -- (24);
|
||||
\draw (30) -- (31) -- (32) -- (33);
|
||||
\end{tikzpicture}
|
||||
}
|
26
docs/presentations/LIS/vanderlinde/schemas/linearisation_surete_hc.tex
Executable file
@ -0,0 +1,26 @@
|
||||
\resizebox{\columnwidth}{!}{%
|
||||
\begin{tikzpicture}[
|
||||
roundedrectangle/.style={draw, rounded corners, rectangle, minimum height=10pt, minimum width=20pt},
|
||||
invisible/.style={draw=none, fill=none},
|
||||
]
|
||||
|
||||
\node[invisible] (10) {};
|
||||
\node[roundedrectangle, minimum width=150pt] (11) [right=100pt of 10] {$w_x(1)$};
|
||||
\node[invisible] (12) [right=100pt of 11] {};
|
||||
|
||||
\node[invisible] (20) [below=15pt of 10] {};
|
||||
\node[roundedrectangle, minimum width=50pt] (21) [right=25pt of 20] {\textcolor{blue}{$r/(0)$}};
|
||||
\node[roundedrectangle, minimum width=50pt] (22) [right=75pt of 21] {\textcolor{blue}{$r/(0)$}};
|
||||
\node[roundedrectangle, minimum width=50pt] (23) [right=75pt of 22] {\textcolor{red}{$r/(1)$}};
|
||||
\node[invisible] (24) [below=15pt of 12] {};
|
||||
|
||||
\node[invisible] (30) [below=15pt of 20] {};
|
||||
\node[roundedrectangle, minimum width=50pt] (31) [right=125pt of 30] {\textcolor{red!50!blue}{$r/(27)$}};
|
||||
\node[roundedrectangle, minimum width=50pt] (32) [right=40pt of 31] {\textcolor{red}{$r/(1)$}};
|
||||
\node[invisible] (33) [below=15pt of 24] {};
|
||||
|
||||
\draw (10) -- (11) -- (12);
|
||||
\draw (20) -- (21) -- (22) -- (23) -- (24);
|
||||
\draw (30) -- (31) -- (32) -- (33);
|
||||
\end{tikzpicture}
|
||||
}
|
34
docs/presentations/LIS/vanderlinde/schemas/localiteetat_hc_1.tex
Executable file
@ -0,0 +1,34 @@
|
||||
\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, draw=red, fill=red] (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)^\omega$};
|
||||
|
||||
\draw[arrow] (11) -- (12);
|
||||
\draw[arrow] (12) -- (13);
|
||||
|
||||
\node[roundnode, draw=blue, fill=blue] (21) [below=10pt 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)^\omega$};
|
||||
|
||||
\draw[arrow] (21) -- (22);
|
||||
\draw[arrow] (22) -- (23);
|
||||
|
||||
\draw[message] (11) -- ($(22)!0.5!(23)$);
|
||||
\draw[message] (21) -- ($(12)!0.5!(13)$);
|
||||
\end{tikzpicture}
|
||||
}
|
32
docs/presentations/LIS/vanderlinde/schemas/localiteetat_hc_2.tex
Executable file
@ -0,0 +1,32 @@
|
||||
\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) {$r/(0,0)$};
|
||||
\node[roundnode] (13) [right=of 12] {};
|
||||
\node[above] at (13.north) {$r/(0,2)^\omega$};
|
||||
|
||||
\draw[arrow] (11) -- (12);
|
||||
\draw[arrow] (12) -- (13);
|
||||
|
||||
\node[roundnode] (21) [below=10pt 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/(0,1)$};
|
||||
\node[roundnode] (23) [right=of 22] {};
|
||||
\node[below] at (23.south) {$r/(2,1)^\omega$};
|
||||
|
||||
\draw[arrow] (21) -- (22);
|
||||
\draw[arrow] (22) -- (23);
|
||||
|
||||
\end{tikzpicture}
|
||||
}
|
31
docs/presentations/LIS/vanderlinde/schemas/validite_hc_1.tex
Executable file
@ -0,0 +1,31 @@
|
||||
\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) {$r/(0,1)$};
|
||||
\node[roundnode] (13) [right=of 12] {};
|
||||
\node[above] at (13.north) {$r/(2,1)^\omega$};
|
||||
|
||||
\draw[arrow] (11) -- (12);
|
||||
\draw[arrow] (12) -- (13);
|
||||
|
||||
\node[roundnode] (21) [below=10pt 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/(0,2)$};
|
||||
\node[roundnode] (23) [right=of 22] {};
|
||||
\node[below] at (23.south) {$r/(1,2)^\omega$};
|
||||
|
||||
\draw[arrow] (21) -- (22);
|
||||
\draw[arrow] (22) -- (23);
|
||||
\end{tikzpicture}
|
||||
}
|
31
docs/presentations/LIS/vanderlinde/schemas/validite_hc_2.tex
Executable file
@ -0,0 +1,31 @@
|
||||
\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) {$r/(0,1)$};
|
||||
\node[roundnode] (13) [right=of 12] {};
|
||||
\node[above] at (13.north) {$r/(0,1)^\omega$};
|
||||
|
||||
\draw[arrow] (11) -- (12);
|
||||
\draw[arrow] (12) -- (13);
|
||||
|
||||
\node[roundnode] (21) [below=10ptof 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/(0,2)$};
|
||||
\node[roundnode] (23) [right=of 22] {};
|
||||
\node[below] at (23.south) {$r/(1,2)^\omega$};
|
||||
|
||||
\draw[arrow] (21) -- (22);
|
||||
\draw[arrow] (22) -- (23);
|
||||
\end{tikzpicture}
|
||||
}
|
42
docs/presentations/LIS/vanderlinde/schemas/wcc_hc_1.tex
Executable file
@ -0,0 +1,42 @@
|
||||
\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, color=red] (11) {};
|
||||
\node[above] at (11.north) {$w(1)$};
|
||||
\node[roundnode, color=red!50] (12) [right=of 11] {};
|
||||
\node[above] at (12.north) {$r/(0,1)$};
|
||||
\node[roundnode, color=red!25] (13) [right=of 12] {};
|
||||
\node[above] at (13.north) {$r/(3,2)^\omega$};
|
||||
|
||||
\draw[arrow] (11) -- (12);
|
||||
\draw[arrow] (12) -- (13);
|
||||
|
||||
\node[roundnode, color=green!75!black] (21) [below=20pt of 11] {};
|
||||
\node[left] at (21.west) {$r/(3,1)$};
|
||||
\node[roundnode, color=green!95!black] (22) [right=of 21] {};
|
||||
\node[right] at (22.east) {$w(2)$};
|
||||
|
||||
\draw[arrow] (21) -- (22);
|
||||
|
||||
\node[roundnode, color=blue] (31) [below=20pt of 21] {};
|
||||
\node[below] at (31.south) {$w(3)$};
|
||||
\node[roundnode, color=blue!50] (32) [right=of 31] {};
|
||||
\node[below] at (32.south) {$r/(3,1)$};
|
||||
\node[roundnode, color=blue!25] (33) [right=of 32] {};
|
||||
\node[below] at (33.south) {$r/(3,2)^\omega$};
|
||||
|
||||
\draw[arrow] (31) -- (32);
|
||||
\draw[arrow] (32) -- (33);
|
||||
|
||||
\draw[message] (11) -- (21);
|
||||
\draw[message] (31) -- (21);
|
||||
\draw[message] (21) -- (32);
|
||||
\draw[message] (22) -- (13);
|
||||
\draw[message] (22) -- (33);
|
||||
\end{tikzpicture}
|
||||
}
|
29
docs/presentations/LIS/vanderlinde/schemas/wcc_hc_2.tex
Executable file
@ -0,0 +1,29 @@
|
||||
\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[above] at (11.north) {$w(1)$};
|
||||
\node[roundnode] (12) [right=of 11] {};
|
||||
\node[above] at (12.north) {$r/(2,1)$};
|
||||
\node[roundnode] (13) [right=of 12] {};
|
||||
\node[above] at (13.north) {$r/(2,1)^\omega$};
|
||||
|
||||
\draw[arrow] (11) -- (12);
|
||||
\draw[arrow] (12) -- (13);
|
||||
|
||||
\node[roundnode] (21) [below=20pt of 11] {};
|
||||
\node[left] at (21.west) {$r/(0,1)$};
|
||||
\node[roundnode] (22) [right=of 21] {};
|
||||
\node[right] at (22.east) {$w(2)$};
|
||||
|
||||
\draw[arrow] (21) -- (22);
|
||||
|
||||
\draw[message] (11) -- (21);
|
||||
\draw[message] (22) -- (12);
|
||||
\end{tikzpicture}
|
||||
}
|
41
docs/presentations/LIS/vanderlinde/schemas/wcc_hc_3.tex
Executable file
@ -0,0 +1,41 @@
|
||||
\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, color=red] (11) {};
|
||||
\node[above] at (11.north) {$w(1)$};
|
||||
\node[roundnode, color=red!50] (12) [right=of 11] {};
|
||||
\node[above] at (12.north) {$r/(3,1)$};
|
||||
\node[roundnode, color=red!25] (13) [right=of 12] {};
|
||||
\node[above] at (13.north) {$r/(1,2)^\omega$};
|
||||
|
||||
\draw[arrow] (11) -- (12);
|
||||
\draw[arrow] (12) -- (13);
|
||||
|
||||
\node[roundnode, color=green!75!black] (21) [below=20pt of 11] {};
|
||||
\node[left] at (21.west) {$r/(0,0)$};
|
||||
\node[roundnode, color=green!95!black] (22) [right=of 21] {};
|
||||
\node[right] at (22.east) {$w(2)$};
|
||||
|
||||
\draw[arrow] (21) -- (22);
|
||||
|
||||
\node[roundnode, color=blue] (31) [below=20pt of 21] {};
|
||||
\node[below] at (31.south) {$w(3)$};
|
||||
\node[roundnode, color=blue!50] (32) [right=of 31] {};
|
||||
\node[below] at (32.south) {$r/(1,3)$};
|
||||
\node[roundnode, color=blue!25] (33) [right=of 32] {};
|
||||
\node[below] at (33.south) {$r/(3,2)^\omega$};
|
||||
|
||||
\draw[arrow] (31) -- (32);
|
||||
\draw[arrow] (32) -- (33);
|
||||
|
||||
\draw[message] (11) -- (31);
|
||||
\draw[message] (31) -- (12);
|
||||
\draw[message] (22) -- (13);
|
||||
\draw[message] (22) -- (33);
|
||||
\end{tikzpicture}
|
||||
}
|
64
docs/presentations/scille/seminaire_ete_2023/box.css
Executable file
@ -0,0 +1,64 @@
|
||||
.reveal .colourbox, .reveal .colorbox {
|
||||
padding-left: 3%;
|
||||
padding-right: 3%;
|
||||
padding-top: 0.8ex;
|
||||
padding-bottom: 1ex;
|
||||
margin-bottom: 15px;
|
||||
width: 100%;
|
||||
color: #000000;
|
||||
text-shadow: none;
|
||||
text-align: left;
|
||||
background-color: #fff6ac;
|
||||
border: none;
|
||||
border-radius: 0.5em;
|
||||
box-shadow: 8px 8px 4px 2px rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
.reveal .box {
|
||||
width: 100% auto;
|
||||
margin-bottom: 15px;
|
||||
margin-top: 1ex;
|
||||
line-height: 1.2;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
overflow: auto;
|
||||
text-align: left;
|
||||
border-top-right-radius: 0.5em;
|
||||
border-bottom-right-radius: 0.5em;
|
||||
box-shadow: 8px 8px 4px 2px rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
.reveal .box .title,
|
||||
.reveal .box .content {
|
||||
padding-left: 3%;
|
||||
padding-right: 3%;
|
||||
border: #000 1px solid;
|
||||
}
|
||||
|
||||
.reveal .box .title {
|
||||
padding-top: 0.4ex;
|
||||
padding-bottom: 0.5ex;
|
||||
color: #ffffff;
|
||||
text-shadow: 1px 1px 0 #000;
|
||||
background-color: #421e00;
|
||||
border-bottom: none;
|
||||
border-top-right-radius: 0.5em;
|
||||
border-top-left-radius: 0.5em;
|
||||
}
|
||||
|
||||
.reveal .box .content {
|
||||
padding-top: 0.8ex;
|
||||
padding-bottom: 1ex;
|
||||
color: #000000;
|
||||
text-shadow: none;
|
||||
background-color: #fff6ac;
|
||||
border-bottom-right-radius: 0.5em;
|
||||
border-bottom-left-radius: 0.5em;
|
||||
|
||||
font-size: .75em;
|
||||
}
|
||||
|
||||
.reveal .box .content ul li {
|
||||
padding: 0px 0px;
|
||||
list-style: symbols();
|
||||
}
|
After Width: | Height: | Size: 89 KiB |
After Width: | Height: | Size: 49 KiB |
BIN
docs/presentations/scille/seminaire_ete_2023/img/perrin.png
Executable file
After Width: | Height: | Size: 319 KiB |
BIN
docs/presentations/scille/seminaire_ete_2023/img/reparti.png
Normal file
After Width: | Height: | Size: 33 KiB |
135
docs/presentations/scille/seminaire_ete_2023/main.md
Executable file
@ -0,0 +1,135 @@
|
||||
|
||||
<link rel="stylesheet" href="./sunblind.css">
|
||||
<!-- <link rel="stylesheet" href="./box.css"> -->
|
||||
|
||||
# "Event Horizon": Lot 2 21/06/2023
|
||||
### JOLY Amaury (Laboratoire d'Informatique et Système, Parsec)
|
||||
### __Encadrants:__ Emmanuel GODARD, Corentin TRAVERS (Equipe Algorithmique Distribuée)
|
||||
|
||||
---
|
||||
|
||||
# Rappel des objectifs
|
||||
|
||||
--
|
||||
|
||||
## Pour Parsec
|
||||
|
||||
__Lot 2 :__ Ajout à Parsec d'un outil d'édition collaborative.
|
||||
|
||||
Dans approche visant à maximiser les performances (latence et interactivité) et la résilience.
|
||||
|
||||
--
|
||||
|
||||
## Pour le LIS
|
||||
|
||||
Produire de la recherche sur la cohérence faible en milieu byzantin.
|
||||
|
||||
--
|
||||
|
||||
## La synthèse des deux
|
||||
|
||||
1. Faire un état de l'art des solutions existantes.
|
||||
- Prendre des décisions sur les choix techniques à adopter.
|
||||
2. Recherche d'un compromis algorithmique __résilience__/__intéractivité__.
|
||||
3. Réaliser un produit innovant dans sa gestion de la cohérence.
|
||||
- Chercher une valeur ajoutée pour l'utilisateur.
|
||||
|
||||
---
|
||||
|
||||
# Mon travail depuis avril
|
||||
## Quelques définitions
|
||||
|
||||
--
|
||||
|
||||
## Quelques définitions
|
||||
|
||||
__Systèmes répartis :__
|
||||
Système composé d'un ensemble d'acteur interconnecté réalisant une tâche commune.
|
||||
|
||||
<img src="./img/reparti.png" width="400"/>
|
||||
|
||||
--
|
||||
|
||||
## Quelques définitions
|
||||
|
||||
__Cohérence dans un système reparti:__
|
||||
Étude du comportement des données dans un système reparti d'un point de vue observateur.
|
||||
|
||||
__Cohérence forte :__
|
||||
Comportement attendu dans le cas d'une exécution à un seul acteur.
|
||||
|
||||
---
|
||||
|
||||
# Mon travail depuis avril
|
||||
## État de l'art
|
||||
|
||||
|
||||
--
|
||||
|
||||
## État de l'art
|
||||
|
||||
- Cohérence dans les systèmes répartis.
|
||||
- Lamports (1970)
|
||||
- Perrin : Concurrence et Cohérence des Systèmes répartis (2017)
|
||||
|
||||
---
|
||||
<img src="./img/perrin.png" alt="couverture \'Consistence et Cohérence des Systèmes réparties' M. Perrin" width="200"/>
|
||||
|
||||
|
||||
--
|
||||
|
||||
## État de l'art
|
||||
|
||||
### Un (très) rapide résumé
|
||||
|
||||
<img src="./img/cartographie_simplifie.png" alt="cartographie des critères de cohérences" height="250"/>
|
||||
|
||||
- Les critères de cohérences s'articulent autour de 3 propriétés élémentaires.
|
||||
- La conjonction des 3 représente le comportement d'un programme séquentiel.
|
||||
- Nous cherchons un compromis pour maximiser l'interactivité du produit
|
||||
|
||||
|
||||
--
|
||||
|
||||
## État de l'art
|
||||
|
||||
### Un (très) rapide résumé
|
||||
|
||||
- Inventaire des différentes solutions existantes.
|
||||
- Peu de littérature.
|
||||
- Pas de taxonomie consensuelle, travail de classification
|
||||
|
||||
- Peu de réflexions sur les potentiels fautes byzantines induites par la (les ?) cohérences faibles.
|
||||
|
||||
---
|
||||
|
||||
# La suite
|
||||
|
||||
--
|
||||
|
||||
## La liste des tâches
|
||||
|
||||
- [ ] Réaliser l'état de l'art
|
||||
- [x] Gestion de la cohérence dans les systèmes répartis.
|
||||
- [ ] Faire l'inventaire des solutions existantes. (BFT weak consistency).
|
||||
- [x] Lister les solutions algorithmiques dans la littérature.
|
||||
- [ ] S'intéresser aux solutions open-source (e.g.: etherpad)
|
||||
- [ ] Classer les solutions.
|
||||
- [ ] Produire/adapter un algorithme dans une situation de référence (à déterminer).
|
||||
- [ ] Formaliser les besoins du produit.
|
||||
- [ ] Essayer de les satisfaire.
|
||||
- [ ] Réaliser un PoC.
|
||||
|
||||
|
||||
--
|
||||
|
||||
## Pour les mois à venir
|
||||
|
||||
Je vous propose une réunion en distanciel (~2h) pour :
|
||||
1. Vous présenter l'état de l'art.
|
||||
2. Placer le produit suivant ces contraintes.
|
||||
|
||||
---
|
||||
|
||||
# Merci !
|
||||
<img src="./img/cartographie.png" alt="cartographie des critères de cohérences" height="450"/>
|
218
docs/presentations/scille/seminaire_ete_2023/main.revealjs.htm
Executable file
340
docs/presentations/scille/seminaire_ete_2023/metropolis.css
Executable file
@ -0,0 +1,340 @@
|
||||
/**
|
||||
* A simple theme for reveal.js presentations, derived from serif.css
|
||||
* It's in the spirit of the Metropolis theme for beamer https://github.com/matze/mtheme
|
||||
*
|
||||
* This theme is Copyright (C) 2016 Vince Hodges, http://sourdoughlabs.com - it is MIT licensed.
|
||||
*/
|
||||
|
||||
@import url('https://fonts.googleapis.com/css?family=Fira+Sans');
|
||||
|
||||
.reveal a {
|
||||
line-height: 1.3em; }
|
||||
|
||||
/*********************************************
|
||||
* GLOBAL STYLES
|
||||
*********************************************/
|
||||
body {
|
||||
background: #f1f1f1;
|
||||
background-color: #f1f1f1; }
|
||||
|
||||
body.dark {
|
||||
background: #33474b;
|
||||
background-color: #33474b; }
|
||||
|
||||
body.dark .reveal {
|
||||
color:#f1f1f1;
|
||||
}
|
||||
|
||||
body.dark .reveal h1,
|
||||
body.dark .reveal h2,
|
||||
body.dark .reveal h3,
|
||||
body.dark .reveal h4,
|
||||
body.dark .reveal h5,
|
||||
body.dark .reveal h6 {
|
||||
color:#f1f1f1;
|
||||
}
|
||||
|
||||
.reveal {
|
||||
font-family: "Fira Sans";
|
||||
font-size: 32px;
|
||||
font-weight: normal;
|
||||
color: #33474b; }
|
||||
|
||||
::selection {
|
||||
color: #fff;
|
||||
background: #26351C;
|
||||
text-shadow: none; }
|
||||
|
||||
.reveal .slides {
|
||||
text-align:left;
|
||||
}
|
||||
|
||||
.reveal .slides > section,
|
||||
.reveal .slides > section > section {
|
||||
line-height: 1.2;
|
||||
font-weight: inherit; }
|
||||
|
||||
/*********************************************
|
||||
* HEADERS
|
||||
*********************************************/
|
||||
.reveal h1,
|
||||
.reveal h2,
|
||||
.reveal h3,
|
||||
.reveal h4,
|
||||
.reveal h5,
|
||||
.reveal h6 {
|
||||
margin: 0 0 20px 0;
|
||||
color: #33474b;
|
||||
font-family: "Fira Sans";
|
||||
font-weight: normal;
|
||||
line-height: 1;
|
||||
letter-spacing: normal;
|
||||
text-transform: none;
|
||||
text-shadow: none;
|
||||
word-wrap: break-word; }
|
||||
|
||||
.reveal h1 {
|
||||
font-size: 1.77em; }
|
||||
|
||||
.reveal h2 {
|
||||
font-size: 1.30em; }
|
||||
|
||||
.reveal h3 {
|
||||
font-size: .95em; }
|
||||
|
||||
.reveal h4 {
|
||||
font-size: .75em; }
|
||||
|
||||
.reveal h1 {
|
||||
text-shadow: none; }
|
||||
|
||||
h1.subtitle {
|
||||
font-size: 1em;
|
||||
padding-bottom:15px;
|
||||
border-bottom: 2px solid #EB811B;
|
||||
}
|
||||
|
||||
h2.author, h3.date {
|
||||
font-size: .6em;
|
||||
}
|
||||
|
||||
h1.title {
|
||||
font-variant: small-caps;
|
||||
}
|
||||
|
||||
.level2 h1 {
|
||||
font-size:1.57em;
|
||||
font-variant: small-caps;
|
||||
text-transform: lowercase;
|
||||
}
|
||||
|
||||
.titleslide h1 {
|
||||
font-variant: small-caps;
|
||||
font-size:1.67em;
|
||||
margin-left:25px;
|
||||
margin-right:25px;
|
||||
padding-bottom: 10px;
|
||||
border-bottom: 2px solid #EB811B;
|
||||
}
|
||||
|
||||
|
||||
/*********************************************
|
||||
* OTHER
|
||||
*********************************************/
|
||||
.reveal p {
|
||||
margin: 20px 0;
|
||||
line-height: 1.3; }
|
||||
|
||||
/* Ensure certain elements are never larger than the slide itself */
|
||||
.reveal img,
|
||||
.reveal video,
|
||||
.reveal iframe {
|
||||
max-width: 95%;
|
||||
max-height: 95%; }
|
||||
|
||||
.reveal strong,
|
||||
.reveal b {
|
||||
font-weight: bold; }
|
||||
|
||||
.reveal em {
|
||||
font-style: italic; }
|
||||
|
||||
.reveal ol,
|
||||
.reveal dl,
|
||||
.reveal ul {
|
||||
display: inline-block;
|
||||
text-align: left;
|
||||
margin: 0 0 0 1em; }
|
||||
|
||||
.reveal ol {
|
||||
list-style-type: decimal; }
|
||||
|
||||
.reveal ul {
|
||||
list-style-type: disc; }
|
||||
|
||||
.reveal ul ul {
|
||||
list-style-type: square; }
|
||||
|
||||
.reveal ul ul ul {
|
||||
list-style-type: circle; }
|
||||
|
||||
.reveal ul ul,
|
||||
.reveal ul ol,
|
||||
.reveal ol ol,
|
||||
.reveal ol ul {
|
||||
display: block;
|
||||
margin-left: 40px; }
|
||||
|
||||
.reveal dt {
|
||||
font-weight: bold; }
|
||||
|
||||
.reveal dd {
|
||||
margin-left: 40px; }
|
||||
|
||||
.reveal q,
|
||||
.reveal blockquote {
|
||||
quotes: none; }
|
||||
|
||||
.reveal blockquote {
|
||||
display: block;
|
||||
position: relative;
|
||||
width: 70%;
|
||||
margin: 20px auto;
|
||||
padding: 5px;
|
||||
font-style: italic;
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
|
||||
|
||||
.reveal blockquote p:first-child,
|
||||
.reveal blockquote p:last-child {
|
||||
display: inline-block; }
|
||||
|
||||
.reveal q {
|
||||
font-style: italic; }
|
||||
|
||||
.reveal pre {
|
||||
display: block;
|
||||
position: relative;
|
||||
width: 90%;
|
||||
margin: 20px auto;
|
||||
text-align: left;
|
||||
font-size: 0.55em;
|
||||
font-family: monospace;
|
||||
line-height: 1.2em;
|
||||
word-wrap: break-word;
|
||||
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
|
||||
|
||||
.reveal code {
|
||||
font-family: monospace; }
|
||||
|
||||
.reveal pre code {
|
||||
display: block;
|
||||
padding: 5px;
|
||||
overflow: auto;
|
||||
max-height: 400px;
|
||||
word-wrap: normal; }
|
||||
|
||||
.reveal table {
|
||||
margin: auto;
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0; }
|
||||
|
||||
.reveal table th {
|
||||
font-weight: bold; }
|
||||
|
||||
.reveal table th,
|
||||
.reveal table td {
|
||||
text-align: left;
|
||||
padding: 0.2em 0.5em 0.2em 0.5em;
|
||||
border-bottom: 1px solid; }
|
||||
|
||||
.reveal table th[align="center"],
|
||||
.reveal table td[align="center"] {
|
||||
text-align: center; }
|
||||
|
||||
.reveal table th[align="right"],
|
||||
.reveal table td[align="right"] {
|
||||
text-align: right; }
|
||||
|
||||
.reveal table tr:last-child td {
|
||||
border-bottom: none; }
|
||||
|
||||
.reveal sup {
|
||||
vertical-align: super; }
|
||||
|
||||
.reveal sub {
|
||||
vertical-align: sub; }
|
||||
|
||||
.reveal small {
|
||||
display: inline-block;
|
||||
font-size: 0.6em;
|
||||
line-height: 1.2em;
|
||||
vertical-align: top; }
|
||||
|
||||
.reveal small * {
|
||||
vertical-align: top; }
|
||||
|
||||
/*********************************************
|
||||
* LINKS
|
||||
*********************************************/
|
||||
.reveal a {
|
||||
color: #51483D;
|
||||
text-decoration: none;
|
||||
-webkit-transition: color 0.15s ease;
|
||||
-moz-transition: color 0.15s ease;
|
||||
transition: color 0.15s ease; }
|
||||
|
||||
.reveal a:hover {
|
||||
color: #8b7c69;
|
||||
text-shadow: none;
|
||||
border: none; }
|
||||
|
||||
.reveal .roll span:after {
|
||||
color: #fff;
|
||||
background: #25211c; }
|
||||
|
||||
/*********************************************
|
||||
* IMAGES
|
||||
*********************************************/
|
||||
.reveal section img {
|
||||
margin: 15px 0px;
|
||||
background: rgba(255, 255, 255, 0.12);
|
||||
border: 4px solid #000;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
|
||||
|
||||
.reveal section img.plain {
|
||||
border: 0;
|
||||
box-shadow: none; }
|
||||
|
||||
.reveal a img {
|
||||
-webkit-transition: all 0.15s linear;
|
||||
-moz-transition: all 0.15s linear;
|
||||
transition: all 0.15s linear; }
|
||||
|
||||
.reveal a:hover img {
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border-color: #51483D;
|
||||
box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
|
||||
|
||||
/*********************************************
|
||||
* NAVIGATION CONTROLS
|
||||
*********************************************/
|
||||
.reveal .controls .navigate-left,
|
||||
.reveal .controls .navigate-left.enabled {
|
||||
border-right-color: #51483D; }
|
||||
|
||||
.reveal .controls .navigate-right,
|
||||
.reveal .controls .navigate-right.enabled {
|
||||
border-left-color: #51483D; }
|
||||
|
||||
.reveal .controls .navigate-up,
|
||||
.reveal .controls .navigate-up.enabled {
|
||||
border-bottom-color: #51483D; }
|
||||
|
||||
.reveal .controls .navigate-down,
|
||||
.reveal .controls .navigate-down.enabled {
|
||||
border-top-color: #51483D; }
|
||||
|
||||
.reveal .controls .navigate-left.enabled:hover {
|
||||
border-right-color: #8b7c69; }
|
||||
|
||||
.reveal .controls .navigate-right.enabled:hover {
|
||||
border-left-color: #8b7c69; }
|
||||
|
||||
.reveal .controls .navigate-up.enabled:hover {
|
||||
border-bottom-color: #8b7c69; }
|
||||
|
||||
.reveal .controls .navigate-down.enabled:hover {
|
||||
border-top-color: #8b7c69; }
|
||||
|
||||
/*********************************************
|
||||
* PROGRESS BAR
|
||||
*********************************************/
|
||||
.reveal .progress {
|
||||
background: rgba(235, 129, 27, .4); }
|
||||
|
||||
.reveal .progress span {
|
||||
background: rgba(235, 129, 27, 1);
|
||||
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
|
||||
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
|
||||
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
|
340
docs/presentations/scille/seminaire_ete_2023/sunblind.css
Executable file
@ -0,0 +1,340 @@
|
||||
/**
|
||||
|
||||
[ sunblind ]
|
||||
|
||||
A blindingly sunny theme for Reveal.js with Lora + Leto fonts and a colorful border.
|
||||
By Josh Dzielak, https://dzello.com/, License MIT
|
||||
|
||||
The bold border is optional and requires some HTML. To use it:
|
||||
|
||||
1. Add 4 divs to your HTML page:
|
||||
<div class="line top"></div>
|
||||
<div class="line bottom"></div>
|
||||
<div class="line left"></div>
|
||||
<div class="line right"></div>
|
||||
|
||||
2. Set { margin: 0.2 } in the Reveal.js initializer to make sure
|
||||
your presentation content doesn't collide with the frame.
|
||||
|
||||
Like the theme but don't like the colors? Don't fret. Just change
|
||||
$borderColor and/or $linkColor below to something else and rebuild.
|
||||
|
||||
Or if you don't want to rebuild the theme just override the .line background
|
||||
property with some CSS:
|
||||
|
||||
.line {
|
||||
background: <new-color>;
|
||||
}
|
||||
|
||||
*/
|
||||
@import url(https://fonts.googleapis.com/css?family=Lato:300,700);
|
||||
@import url(https://fonts.googleapis.com/css?family=Lora:700);
|
||||
section.has-light-background, section.has-light-background h1, section.has-light-background h2, section.has-light-background h3, section.has-light-background h4, section.has-light-background h5, section.has-light-background h6 {
|
||||
color: #141414; }
|
||||
|
||||
.reveal .controls {
|
||||
right: 50px;
|
||||
bottom: 50px; }
|
||||
|
||||
.line {
|
||||
content: '';
|
||||
position: fixed;
|
||||
background: #f6f195;
|
||||
z-index: 105; }
|
||||
.line.top {
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 30px; }
|
||||
@media (max-width: 840px) {
|
||||
.line.top {
|
||||
height: 15px; } }
|
||||
.line.bottom {
|
||||
left: 0;
|
||||
top: auto;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
height: 30px; }
|
||||
@media (max-width: 840px) {
|
||||
.line.bottom {
|
||||
height: 15px; } }
|
||||
.line.left {
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 30px;
|
||||
height: 200%; }
|
||||
@media (max-width: 840px) {
|
||||
.line.left {
|
||||
width: 15px; } }
|
||||
.line.right {
|
||||
left: auto;
|
||||
right: 0;
|
||||
top: 0;
|
||||
width: 30px;
|
||||
height: 200%; }
|
||||
@media (max-width: 840px) {
|
||||
.line.right {
|
||||
width: 15px; } }
|
||||
|
||||
.reveal.has-dark-background .line {
|
||||
display: none; }
|
||||
|
||||
/*********************************************
|
||||
* GLOBAL STYLES
|
||||
*********************************************/
|
||||
body {
|
||||
background: #fff;
|
||||
background-color: #fff; }
|
||||
|
||||
.reveal {
|
||||
font-family: "Lato", serif;
|
||||
font-size: 32px;
|
||||
font-weight: normal;
|
||||
color: #363636; }
|
||||
|
||||
::selection {
|
||||
color: #fff;
|
||||
background: #ffc0d5;
|
||||
text-shadow: none; }
|
||||
|
||||
::-moz-selection {
|
||||
color: #fff;
|
||||
background: #ffc0d5;
|
||||
text-shadow: none; }
|
||||
|
||||
.reveal .slides > section,
|
||||
.reveal .slides > section > section {
|
||||
line-height: 1.3;
|
||||
font-weight: inherit; }
|
||||
|
||||
/*********************************************
|
||||
* HEADERS
|
||||
*********************************************/
|
||||
.reveal h1,
|
||||
.reveal h2,
|
||||
.reveal h3,
|
||||
.reveal h4,
|
||||
.reveal h5,
|
||||
.reveal h6 {
|
||||
margin: 0 0 20px 0;
|
||||
color: #141414;
|
||||
font-family: "Lora", sans-serif;
|
||||
font-weight: 700;
|
||||
line-height: 1.2;
|
||||
letter-spacing: normal;
|
||||
text-transform: uppercase;
|
||||
text-shadow: none;
|
||||
word-wrap: break-word; }
|
||||
|
||||
.reveal h1 {
|
||||
font-size: 1.77em; }
|
||||
|
||||
.reveal h2 {
|
||||
font-size: 1.3em; }
|
||||
|
||||
.reveal h3 {
|
||||
font-size: .95em; }
|
||||
|
||||
.reveal h4 {
|
||||
font-size: .75em; }
|
||||
|
||||
.reveal h1 {
|
||||
text-shadow: none; }
|
||||
|
||||
/*********************************************
|
||||
* OTHER
|
||||
*********************************************/
|
||||
.reveal p {
|
||||
margin: 20px 0;
|
||||
line-height: 1.3; }
|
||||
|
||||
/* Ensure certain elements are never larger than the slide itself */
|
||||
.reveal img,
|
||||
.reveal video,
|
||||
.reveal iframe {
|
||||
max-width: 95%;
|
||||
max-height: 95%; }
|
||||
|
||||
.reveal strong,
|
||||
.reveal b {
|
||||
font-weight: bold; }
|
||||
|
||||
.reveal em {
|
||||
font-style: italic; }
|
||||
|
||||
.reveal ol,
|
||||
.reveal dl,
|
||||
.reveal ul {
|
||||
display: inline-block;
|
||||
text-align: left;
|
||||
margin: 0 0 0 1em; }
|
||||
|
||||
.reveal ol {
|
||||
list-style-type: decimal; }
|
||||
|
||||
.reveal ul {
|
||||
list-style-type: disc; }
|
||||
|
||||
.reveal ul ul {
|
||||
list-style-type: square; }
|
||||
|
||||
.reveal ul ul ul {
|
||||
list-style-type: circle; }
|
||||
|
||||
.reveal ul ul,
|
||||
.reveal ul ol,
|
||||
.reveal ol ol,
|
||||
.reveal ol ul {
|
||||
display: block;
|
||||
margin-left: 40px; }
|
||||
|
||||
.reveal dt {
|
||||
font-weight: bold; }
|
||||
|
||||
.reveal dd {
|
||||
margin-left: 40px; }
|
||||
|
||||
.reveal blockquote {
|
||||
display: block;
|
||||
position: relative;
|
||||
width: 70%;
|
||||
margin: 20px auto;
|
||||
padding: 5px;
|
||||
font-style: italic;
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); }
|
||||
|
||||
.reveal blockquote p:first-child,
|
||||
.reveal blockquote p:last-child {
|
||||
display: inline-block; }
|
||||
|
||||
.reveal q {
|
||||
font-style: italic; }
|
||||
|
||||
.reveal pre {
|
||||
display: block;
|
||||
position: relative;
|
||||
width: 90%;
|
||||
margin: 20px auto;
|
||||
text-align: left;
|
||||
font-size: 0.55em;
|
||||
font-family: monospace;
|
||||
line-height: 1.2em;
|
||||
word-wrap: break-word;
|
||||
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
|
||||
|
||||
.reveal code {
|
||||
font-family: monospace;
|
||||
text-transform: none; }
|
||||
|
||||
.reveal pre code {
|
||||
display: block;
|
||||
padding: 5px;
|
||||
overflow: auto;
|
||||
max-height: 400px;
|
||||
word-wrap: normal; }
|
||||
|
||||
.reveal table {
|
||||
margin: auto;
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0; }
|
||||
|
||||
.reveal table th {
|
||||
font-weight: bold; }
|
||||
|
||||
.reveal table th,
|
||||
.reveal table td {
|
||||
text-align: left;
|
||||
padding: 0.2em 0.5em 0.2em 0.5em;
|
||||
border-bottom: 1px solid; }
|
||||
|
||||
.reveal table th[align="center"],
|
||||
.reveal table td[align="center"] {
|
||||
text-align: center; }
|
||||
|
||||
.reveal table th[align="right"],
|
||||
.reveal table td[align="right"] {
|
||||
text-align: right; }
|
||||
|
||||
.reveal table tbody tr:last-child th,
|
||||
.reveal table tbody tr:last-child td {
|
||||
border-bottom: none; }
|
||||
|
||||
.reveal sup {
|
||||
vertical-align: super; }
|
||||
|
||||
.reveal sub {
|
||||
vertical-align: sub; }
|
||||
|
||||
.reveal small {
|
||||
display: inline-block;
|
||||
font-size: 0.6em;
|
||||
line-height: 1.2em;
|
||||
vertical-align: top; }
|
||||
|
||||
.reveal small * {
|
||||
vertical-align: top; }
|
||||
|
||||
/*********************************************
|
||||
* LINKS
|
||||
*********************************************/
|
||||
.reveal a {
|
||||
color: #FF4081;
|
||||
text-decoration: none;
|
||||
-webkit-transition: color .15s ease;
|
||||
-moz-transition: color .15s ease;
|
||||
transition: color .15s ease; }
|
||||
|
||||
.reveal a:hover {
|
||||
color: #ff8db3;
|
||||
text-shadow: none;
|
||||
border: none; }
|
||||
|
||||
.reveal .roll span:after {
|
||||
color: #fff;
|
||||
background: #f30053; }
|
||||
|
||||
/*********************************************
|
||||
* IMAGES
|
||||
*********************************************/
|
||||
.reveal section img {
|
||||
margin: 15px 0px;
|
||||
background: rgba(255, 255, 255, 0.12);
|
||||
border: 4px solid #363636;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
|
||||
|
||||
.reveal section img.plain {
|
||||
border: 0;
|
||||
box-shadow: none; }
|
||||
|
||||
.reveal a img {
|
||||
-webkit-transition: all .15s linear;
|
||||
-moz-transition: all .15s linear;
|
||||
transition: all .15s linear; }
|
||||
|
||||
.reveal a:hover img {
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border-color: #FF4081;
|
||||
box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
|
||||
|
||||
/*********************************************
|
||||
* NAVIGATION CONTROLS
|
||||
*********************************************/
|
||||
.reveal .controls {
|
||||
color: #FF4081; }
|
||||
|
||||
/*********************************************
|
||||
* PROGRESS BAR
|
||||
*********************************************/
|
||||
.reveal .progress {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
color: #FF4081; }
|
||||
|
||||
.reveal .progress span {
|
||||
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
|
||||
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
|
||||
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
|
||||
|
||||
.reveal .progress {
|
||||
z-index: 1000;
|
||||
color: #ece11f; }
|