\input{configpres} \title{Block \lq Realtime Linux\rq} \maketitle \subtitle{Echtzeit} \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} \subsubsection{Priority Inversion} \begin{frame} \frametitle{Priority Inversion} \begin{figure}[h] \centering \includegraphics[width=0.8\textwidth]{images/prio_inv.png} \end{figure} \end{frame} \subsubsection{Linux und Echtzeit} \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} \input{tailpres}