summaryrefslogtreecommitdiff
path: root/kernel-devel/kernel-basics/pres_kernel-basics_de.tex
blob: 1e64d25790b6928a732958d6e5e60ea2e70e1dd9 (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
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
\input{configpres}

\title{Linux Kernel}
\maketitle

\subsection{Grundlagen}

\subsubsection{Facts}
\begin{frame}
\frametitle{Facts}
\begin{itemize}
\item Freie Software (GPL Version 2)
\item Auf vielen Plattformen lauffähig
\item Hohe Skalierbarkeit vom Handy bis zum Supercomputer
\item Große Anzahl integrierter Treiber
\item Einfache Entwicklung eigener Treiber
\item Codequalität auf hohem Niveau
\item Qualitätssicherung durch Code-Review unabhängiger Personen
\item hohes Entwicklungstempo
\item hervorragende Netzwerk-Fähigkeiten
\item Echtzeit-Fähigkeit leicht und sauber erreichbar
\end{itemize}
\end{frame}

\subsubsection{Umfang - Linux 4.16-rc5 (16.03.2018)}

\begin{frame}[fragile]
\frametitle{Lines of code by language}
\begin{verbatim}
ansic:    16.686.769 (97.83%)
asm:         295.663  (1.73%)
perl:         26.424  (0.15%)
sh:           19.168  (0.11%)
python:       15.685  (0.09%)
cpp:           4.919  (0.03%)
yacc:          4.600  (0.03%)
lex:           2.478  (0.01%)
awk:           1.387  (0.01%)
pascal:          231  (0.00%)
sed:               5  (0.00%)
\end{verbatim}
\end{frame}

\begin{frame}[fragile]
\frametitle{Lines of code per folder}
\begin{verbatim}
11.134.588  drivers  66%  c=11.124.729 asm=  2.744
 2.073.368  arch     11%  c= 1.778.733 asm=290.614
   869.993  fs        5%  c=   869.993
   775.712  sound     5%  c=   775.712
   712.404  net       5%  c=   712.404
   540.702  include   3%  c=   538.568
   286.340  tools     2%  c=   253.768
                     python=    12.196
                         sh=    11.354
                       perl=     4.012
   191.741  kernel    2%  c=   191.741
   101.006  lib       1%  c=   100.874
    83.858  mm        1%  c=    83.858
    81.386  crypto    1%  c=    81.386
    59.271  security  1%  c=    59.271
\end{verbatim}
\end{frame}


\subsubsection{Architektur}

\begin{frame}
\frametitle{Subsysteme}
\centering
\includegraphics[width=\textwidth]{images/linux-kernel-map.png}
\end{frame}


\begin{frame}
\frametitle{Treiber}
\centering
\includegraphics[width=0.8\textwidth]{images/Subsystems.png}
\end{frame}



\subsubsection{Maintainer}
\begin{frame}
\frametitle{Kernel Maintainer}
\begin{itemize}
\item Betreuer eines Subsystems oder Treibers
\pause
\item Verantwortlich für Weiterentwicklung
\pause
\item Review von Änderungsvorschlägen
\pause
\item Annehmen/Ablehnen von Änderungsvorschlägen
\pause
\item Weitergabe/Verwaltung angenommener Änderungen
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Linus Torvalds}
\includegraphics[height=5cm]{images/linus7.jpg}

Maintains: THE REST

Company: linuxfoundation
\end{frame}

\begin{frame}
\frametitle{Alan Cox}
\includegraphics[height=5cm]{images/alan.png}

Credits: NET2Debugged/NET3 author, Network layer debugging, Initial AX.25 and
IPX releases, Original Linux netatalk patches, Current 3c501 hacker, Watchdog 
timer drivers, Linux/SMP

Company: intel
\end{frame}

\begin{frame}
\frametitle{Andrew Morton}
\includegraphics[height=5cm]{images/morton.jpg}

Maintains: EXT3, JOURNALLING LAYER FOR BLOCK DEVICES (JBD)

Credits: Linux Quality Management

Company: Linux Foundation
\end{frame}

\begin{frame}
\frametitle{Greg Kroah-Hartmann}
\includegraphics[height=5cm]{images/greg.jpg}

Maintains: SERIAL DRIVER, DRIVER CORE, KOBJECTS, DEBUGFS AND SYSFS, STABLE
BRANCH, STAGING SUBSYSTEM, TTY LAYER, USB SERIAL DRIVER, USB SUBSYSTEM,
USERSPACE I/O

Company: Linux Foundation
\end{frame}

\begin{frame}
\frametitle{Christoph Hellwig}
\includegraphics[height=5cm]{images/hch.jpg}

Maintains: FREEVXFS FILESYSTEM, PERSONALITY HANDLING, SYSV FILESYSTEM, XFS
FILESYSTEM

Company: Freelancer
\end{frame}

\begin{frame}
\frametitle{Thomas Gleixner}
\includegraphics[height=5cm]{images/tglx.jpg}

Maintains: HIGH-RESOLUTION TIMERS, CLOCKEVENTS, DYNTICKS, POSIX CLOCKS and
TIMERS, X86 ARCHITECTURE (32-BIT AND 64-BIT), IRQ SUBSYSTEM

Company: linutronix
\end{frame}

\subsubsection{Entwicklungsprozess}
\begin{frame}
\frametitle{Entwicklungsprozess}
\begin{itemize}
\item Änderungsvorschläge in Form von Patchen
\pause
\item Review und Diskussion auf Mailinglisten
\item z.B. Subsystem Mailinglisten und LKML
\pause
\item strenge Richtlinien für Coding Style
\item siehe Documentation/CodingStyle im Kernel Source Tree
\pause
\item strenge Richtlinien für Form und Weitergabe von Patchen
\item scripts/checkpatch.pl zur Kontrolle verwenden!
\pause
\item Nur technische Argumente zählen!
\pause
\item Dokumentation siehe MAINTAINER Datei im Kernel Source Tree
\end{itemize}
\end{frame}

\subsubsection{Versionierung}
\begin{frame}
\frametitle{Versionierung (4.x)}
\begin{itemize}
\item 4.8.2 oder 4.9-rc1
\pause
\item 4. - historisch gegeben
\pause
\item .8 - aktuelle Version
\pause
\item .2 - Security Fix
\pause
\item .rc1 - Release Candidate
\end{itemize}
\end{frame}


\begin{frame}
\frametitle{Versionierung (0.x \dots 1.3.x)}
\begin{itemize}
\item 09.91-02.94: 0.01\dots0.99 kein definiertes Versionierungsschema
\item 03.94-03.94: 1.0 erster stabiler Kernel
\item 04.94-03.95: 1.1.x Entwicklerversion
\item 03.95-08.95: 1.2.x Stabiler Kernel Alpha, MIPS, SPARC
\item 06.95-05.96: 1.3.x Entwicklerversion MP Support
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Versionierung (2.0.x \dots 4.x)}
\begin{itemize}
\item 06.96-02.04: 2.0.x SMP Support
\item 09.96-01.99: 2.1.x Entwicklerversion
\item 01.99-02.04: 2.2.x Stabiler Kernel, IPv6
\item 05.99-05.00: 2.3.x Entwicklerversion
\item 01.01-12.08: 2.4.x Stabiler Kernel, USB, ACPI, iptables
\item 11.01-07.03: 2.5.x Entwicklerversion
\item 12.03-TODAY: 2.6.x, 3.x, 4.x neues Entwicklungsschema
\end{itemize}
Versionssprünge
\begin{itemize}
\item 05.11: 2.6.39\dots3.0
\item 02.15: 3.19\dots4.0
\end{itemize}
\end{frame}

\begin{frame}
	\includegraphics[height=6cm]{images/kernelversions.png}

	Quelle: http://article.sapub.org
\end{frame}


\subsubsection{Entwicklungstempo}
\begin{frame}
\frametitle{Linux 4.x}
\begin{itemize}
\item 8 \dots 10 weeks release cycle
\item \dots about 14,000 patches each cycle
\item \dots from about 1500 developers
\item \dots about 200 companies
\end{itemize}
\end{frame}

\begin{frame}
\includegraphics[height=7cm]{images/patches_per_hour.png}

Quelle: https://github.com/gregkh/kernel-development
\end{frame}

\begin{frame}
\includegraphics[height=9cm]{images/linux-kernel-development-companies.png}

Quelle: https://fossbytes.com
\end{frame}


\subsubsection{staging und next}
\begin{frame}
\frametitle{staging}
\begin{itemize}
\item Verzeichnis im Kernelsourcetree
\pause
\item erm\"oglicht Entwicklung im Mainline Tree
\pause
\item enth\"alt haupts\"achlich Treiber
\pause
\item Voraussetzung: aktive Weiterentwicklung im Code
\end{itemize}
\end{frame}

\begin{frame}[fragile]
\frametitle{next}
\begin{itemize}
\item \"Anderungen welche vermutlich in die n\"achste Version aufgenommen
werden
\item tracked andere Trees und quilt queues
\end{itemize}
\begin{lstlisting}
Feb-2008, Stephen Rothwell:
I hope to recreate this tree every day automatically.
In order to do this, any tree that has a conflict will
be dropped from that days tree.
The maintainer will be notified. I hope to provide some
clue as to what the conflict is with, but probably not
initially. I will attempt to build the tree between each
merge (and a failed build will again cause the offending
tree to be dropped). These builds will be necessarily
restricted to probably one architecture/config.
\end{lstlisting}
\end{frame}

\subsubsection{Konfiguration}
\begin{frame}[fragile]
\frametitle{Kernel-Konfiguration}
\begin{itemize}
\item Grosse Zahl von Konfigurations-Optionen
\pause
\item Speicherung in .config
\pause
\item Ändern der Konfiguration: make menuconfig
\pause
\item Informationen über Optionen in Kconfig-Dateien
\pause
\item Kernel-Buildsystem: Eigenes Subsystem mit eigenem Maintainer
\pause
\item Unterstützt explizit auch Cross-Compiling
\end{itemize}
\end{frame}

\input{tailpres}