\documentclass{beamer}
\usetheme{linutronix}
\usepackage{german}
\usepackage[utf8]{inputenc}
\usepackage{pgf}
\usepackage{graphicx}
\usepackage{lxextras}

\title{Block \lq Realtime Linux\rq}
\institute{Linutronix GmbH}

\begin{document}

\maketitle


% ----- Slide ------------------
\begin{frame}
\frametitle{Was ist Echtzeit?}
\begin{itemize}
\item Korrektheit bedeutet auch Ausführung zum korrekten Zeitpunkt
\item Nicht Einhalten des korrekten Zeitrahmens führt zu einem Fehler
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Echtzeit ''anschaulich''}
\begin{overprint}
\onslide<1>
\begin{alertblock}{Wir erinnern uns}
Nicht Einhalten des korrekten Zeitrahmens führt zu einem Fehler!
\end{alertblock}
\onslide<2>
\begin{figure}[h]
\centering
\includegraphics[height=0.5\textwidth]{images/nuclear.png}
\end{figure}
\end{overprint} 
\end{frame}

\begin{frame}
\frametitle{Anwendungsbereiche}
\begin{itemize}
\item Steuerungs- / Automatisierungstechnik
\item Multimediasysteme
\item Luft- und Raumfahrttechnik
\item Finanzdienstleistung
\item ...
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Anforderungen}
\begin{itemize}
\item Deterministisches Zeitverhalten
\item Unterbrechbarkeit
\item Priority Inheritance / Priority Ceiling
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Priority Inversion}
\begin{figure}[h]
\centering
\includegraphics[width=0.8\textwidth]{images/prio_inv.png}
\end{figure}
\end{frame}

\begin{frame}
\frametitle{Linux und Echtzeit}
\begin{figure}[h]
\centering
\includegraphics[height=0.5\textwidth]{images/gpos_vs_rt.png}
\end{figure}
\end{frame}

\begin{frame}
\frametitle{Ansätze}
\begin{itemize}
\item Dual-Kernel
\item In-Kernel / Single Kernel
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Dual-Kernel}
\begin{figure}[h]
\centering
\includegraphics[height=0.5\textwidth]{images/dual_kernel.png}
\end{figure}
\end{frame}

\begin{frame}
\frametitle{Single-Kernel}
\begin{figure}[h]
\centering
\includegraphics[height=0.5\textwidth]{images/single_kernel.png}
\end{figure}
\end{frame}

\begin{frame}
\frametitle{RTAI}
\begin{itemize}
\item Prof. Paolo Mantegazza, Universität Mailand
\item Dual-Kernel Ansatz
\item Echtzeit im Kernelspace
\item Userspace Echtzeittasks nur eingeschränkt möglich
\item Oberstes Designziel: Möglichst niedrige Latenzzeiten
\item Unterstützte Plattformen: x86, x86\_64, einige ARM Plattformen
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{RTAI}
\begin{figure}[h]
\centering
\includegraphics[height=0.5\textwidth]{images/rtai.png}
\end{figure}
\end{frame}

\begin{frame}
\frametitle{Xenomai}
\begin{itemize}
\item Gegründet 2001
\item Echtzeit im Userpace
\item Skins bilden API verschiedenster RTOSse nach
\item Dual-Kernel Ansatz
\item Unterstützte Plattformen: x86, x86\_64, PowerPC, ARM, ia64
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Xenomai}
\begin{figure}[h]
\centering
\includegraphics[height=0.5\textwidth]{images/xenomai.png}
\end{figure}
\end{frame}

\begin{frame}
\frametitle{Xenomai / IPIPE}
\begin{figure}[h]
\centering
\includegraphics[height=0.5\textwidth]{images/ipipe.png}
\end{figure}
\end{frame}

\begin{frame}
\frametitle{Drum prüfe, wer sich ewig bindet...}
\begin{overprint}
\onslide<1>
\begin{figure}[h]
\centering
\includegraphics[width=0.8\textwidth]{images/mar01.png}
\end{figure}
\onslide<2>
\begin{figure}[h]
\centering
\includegraphics[height=0.5\textwidth]{images/mar02.png}
\end{figure}
\onslide<3>
\begin{figure}[h]
\centering
\includegraphics[height=0.5\textwidth]{images/mar03.png}
\end{figure}
\end{overprint}
\end{frame}

\begin{frame}
\frametitle{Preempt RT}
\begin{itemize}
\item Thomas Gleixner, Ingo Molnar
\item In-Kernel Ansatz
\item Große Entwicklergemeinde
\item Viele Funktionen bereits nach ''Mainline'' Linux übernommen
\item POSIX Realtime
\item Hohe Akzeptanz, vollständige Integration in Linux 2006 beschlossen
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Preempt RT und Mainline}
\textit{''Controlling a laser with Linux is crazy, but everyone in this room is
crazy in his own way. So if you want to use Linux to control an industrial
welding laser, I have no problem with your using Preempt RT''} - Linus Torvalds
auf dem Kernel Summit 2006
\end{frame}

\begin{frame}
\frametitle{Wie macht Preempt RT Linux echtzeitfähig?}
\begin{overprint}
\onslide<1>
\begin{alertblock}{Wir erinnern uns...}
Unterbrechbarkeit ist eine zentrale Anforderung an ein Echtzeitsystem
\end{alertblock}
\onslide<2>
\begin{itemize}
\item Locking Primitiven: Spinlocks werden durch RT Mutexe ersetzt, die schlafen
können. Raw Spinlocks ersetzen die ursprüngliche Spinlock
\item Interrupt Handler laufen per default in einem Kernelthread
\end{itemize}
\end{overprint}
\end{frame}

\begin{frame}
\frametitle{Preempt RT}
\begin{figure}[h]
\centering
\includegraphics[height=0.5\textwidth]{images/preempt_rt.png}
\end{figure}
\end{frame}


\end{document}
