summaryrefslogtreecommitdiff
path: root/realtime/rt-basics/pres_rt-basics_de.tex
blob: 128b1152b7ae633d136cba4d1922410bc03d09c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
\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}