...
This commit is contained in:
parent
86a47662ce
commit
c5232bc821
8 changed files with 397 additions and 9 deletions
53
09-concurrency.tex
Normal file
53
09-concurrency.tex
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
\documentclass[99-notes-packed.tex]{subfiles}
|
||||
|
||||
\begin{document}
|
||||
\paragraph*{Concurrency Semantics} Define the following semantics of interest wrt. concurrency theory:
|
||||
\begin{enumerate}
|
||||
\item {
|
||||
\textbf{Interleaving Semantics}: concurrent actions $a$, $b$ occur in one of the following orders:
|
||||
\begin{itemize}
|
||||
\item $a; b$
|
||||
\item $b; a$
|
||||
\end{itemize}
|
||||
}
|
||||
\item {
|
||||
\textbf{Step Semantics}: concurrent actions $a$, $b$ occur in one of the following orders:
|
||||
\begin{itemize}
|
||||
\item $a; b$
|
||||
\item $b; a$
|
||||
\item $a || b$ (in parallel)
|
||||
\end{itemize}
|
||||
}
|
||||
\item {
|
||||
\textbf{Interval Semantics}: concurrent actions $a$, $b$ occur in continuous time, such that $a$, $b$ may occur in parallel for a subset of total runtime.
|
||||
}
|
||||
\item {
|
||||
\textbf{Partial-order (aka. Causal) Semantics}: concurrent actions $a$, $b$ not only can occur in parallel for some continuous time interval, but can also intersperse as unspecified segments (e.g., OS scheduling).
|
||||
|
||||
Nevertheless, causal relationships between $a, b, \dots$ are preserved -- $a$ calling e.g. \texttt{fork()} will posit a partial ordering before the spawned task $b$, though the exact concurrency behaviors leave much leeway to the OS scheduler.
|
||||
}
|
||||
\end{enumerate}
|
||||
|
||||
\begin{definition}[Pomset]
|
||||
A \textbf{pomset (partial-ordered multiset)} defines a $(E, <, l)$-tuple where:
|
||||
\begin{itemize}
|
||||
\item $E$ a set of ``events'' -- corresponding to each occurrence of action.
|
||||
\item $<$ a partial-order of E -- $e_i$ happens before $e_j$, or incomparable, etc.
|
||||
\item $l: E \rightarrow A$ a mapping between events to their actions.
|
||||
\end{itemize}
|
||||
|
||||
A normal trace thus becomes a totally ordered multiset of actions, compared to a pomset representation.
|
||||
\end{definition}
|
||||
|
||||
\paragraph*{Petri Net} captures the dynamism within parallel systems. It defines a $(S, T, F, I)$-tuple where:
|
||||
\begin{itemize}
|
||||
\item $S, T$ define \underline{places} and actions grouped in bipartite form.
|
||||
\item $F \subseteq (S \times T) \cup (T \times S)$ set of transitions.
|
||||
\item $I: S \rightarrow \mathbb{N}$ (initial marking) defines the initial state of control, via allocating tokens to initial states. Subsequent states of control is referred to as \textbf{marking} in general.
|
||||
\end{itemize}
|
||||
|
||||
\begin{definition}[Control \& Tokens]
|
||||
Petri nets encode control at runtime. A \textbf{control} simply refers to the state at which the system is currently at. It is symbolized by a \textbf{token} for each concurrent state.
|
||||
\end{definition}
|
||||
|
||||
\end{document}
|
||||
Loading…
Add table
Add a link
Reference in a new issue