summaryrefslogtreecommitdiff
path: root/pruefung.tex
blob: 4f5f8cc5e7938753e846f3677a3b369de616972a (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
\documentclass[addpoints,12pt]{exam}

\usepackage{german}
\usepackage{listings,color}
\usepackage{graphicx}

\firstpageheadrule
\runningheadrule
\lhead{Manuel Traut\\SoSe 2012}
\chead{Hochschule Ravensburg-Weingarten\\Linux-Kernelprogrammierung}
\rhead{MatrNr:\\Datum:}

\firstpagefootrule
\runningfootrule
\firstpagefooter{Page \thepage\ of \numpages}
{}
{Punkte: \makebox[.5in]{\hrulefill}\\
von \pointsonpage{\thepage} Punkten}

\runningfooter{Page \thepage\ of \numpages}
{}
{}

\pagestyle{headandfoot}

\pointsinrightmargin
\pointpoints{Punkt}{Punkte}

\begin{document}


\begin{coverpages}
\begin{titlepage}
\title{Pr\"ufung Linux-Kernelprogrammierung}
\author{Dozent: Manuel Traut}
\date{19. Juli 2012}
\maketitle
\begin{center}
Hochschule Ravensburg-Weingarten
\vspace{1cm}

Dauer: 60 Minuten, erlaubte Hilfsmittel: keine
\end{center}

\vspace{2cm}
Name:\enspace\hrulefill
\vspace{2cm}
MatrNr:\enspace\hrulefill
\begin{center}
\begin{lstlisting}
              a8888b.
             d888888b.
             8P"YP"Y88      (((((((())))))))))
             8|o||o|88      ||VIEL ERFOLG !!||
             8'    .88      ((((((((((((()))))
             8`._.' Y8.
            d/      `8b.
          .dP   .     Y8b.
         d8:'   "   `::88b.
        d8"           `Y88b
       :8P     '       :888
        8a.    :      _a88P
      ._/"Yaa_ :    .| 88P|
      \    YP"      `| 8P  `.
      /     \._____.d|    .'
      `--..__)888888P`._.'
\end{lstlisting}
\end{center}
\end{titlepage}
\end{coverpages}


\begin{questions}

\section{Entwicklungsmodell}

\question[1] Was versteht man unter dem Begriff 'Kernelpatch'?

\question[3] F\"ur die Linuxkernelentwicklung wurde das
 Versionskontrollsystem git entwickelt. Nennen Sie mind. 4 gravierende
 Unterschiede zu Versionskontrollsystemen wie cvs oder svn.

\question Im Linuxsourcetree gibt es einen Ordner 'staging'.
\begin{parts}
\part[1] Was findet man in diesem Ornder?
\part[2] Was ist zu beachten?
\end{parts}

\question[4] Beschreiben Sie die Aufgaben und die Verantwortung eines Linux
Kernelmaintainers.

\section{Tools}

\question
\begin{parts}
\part[1] Was ist auf folgendem Bild zu sehen?
\part[3] Warum wird es ben\"otigt?
\part[4] Was kann mit diesem Tool gemacht werden? (beschreiben Sie Kategorien)
\end{parts}

\includegraphics[height=0.3\textwidth]{./images/kconfig.png}

\question [6] Ein von Ihnen entwickelter Kerneltreiber funktioniert nicht wie
erwartet. Welche Debugingm\"oglichkeiten haben Sie?

Nennen Sie mindestens zwei und Beschreiben Sie Vor- und Nachteile

\section{Plumbing Layer}

\question [2] Sie starten ein Linuxsystem. Die letzten Ausgaben lauten:
               'freeing memory, loading init'
              Nennen Sie 2 m\"ogliche Ursachen.

\question [2] In 3.4-rc2 wurde die sogenannte x32 system call ABI Patche
  gemerged. Was f\"ur Funktionalit\"at haben Sie eingef\"uhrt?
  (grobe Beschreibung)

\section{Programmierung}

\question Zusammenspiel des Linuxtreibermodels:

Denken Sie dabei an die Strukturen 'Bus', 'Device' und 'Driver';
Beschreiben Sie:
\begin{parts}
\part [1] Wie kann die Zust\"andigkeit eines Treibers f\"ur ein Ger\"at
  ausgedr\"uckt werden?
\part [2] Was wird typischerweise in einer register\_* Funktion gemacht?
\part [3] Wozu dient eine *probe Funktion?
\end{parts}

\question Sie wollen einen SPI LED Baustein (erm\"oglicht das Steuern von 16
LEDs - an, aus, helligkeit - mittels SPI Kommandos) an Ihr embedded Linux
Board anschliessen. Alle Treiber f\"ur Ihr Board sind bereits im Mainline Linux
enthalten. Allerdings gibt es noch keine Unterst\"utzung für Ihren LED Baustein.
Sie haben ein Datenblatt vom Hersteller des LED Bausteins, der die
unterst\"utzen SPI Befehle beschreibt. Was tun Sie nun?
\begin{parts}
\part [10] Beschreiben Sie 2 M\"oglichkeiten, wie Sie den LED Baustein per
           Software integrieren k\"onnten. Nennen Sie jeweils Vor- und
           Nachteile. Markieren Sie die M\"oglichkeit welche Sie f\"ur am
           sinnvollsten erachten und f\"ur die Beantwortung der nachfolgenden
           Fragen als Basis nutzen.

\part [3] Welche Dateien im Linuxkernel werden Sie modifizieren / anlegen ?
\part [2] Wie k\"onnen die LEDs vom Kernel aus geschalten werden? (Pseudocode)
\part [5] Wie k\"onnen die LEDs vom Userspace aus geschalten werden?
           Skizzieren Sie auch den Weg durch beteiligte Subsysteme.
\end{parts}

\section{Rootfilesystem}

\question Sie haben ein System mit 256 MB NAND Flash und sollen ein
  GNU/Linux Userspace (ohne Xorg, etc) einrichten. Es sollen g\"angige Tools
  f\"ur Netzwerk, Bluetooth und Audio vorhanden sein.

\begin{parts}
\part [2] Wie erstellen Sie das Rootfilesystem ? (Tools, Steps, Pseudocode)
\part [6] Sie haben einen u-boot Bootloader und k\"onnen aus Flash und von SD
           Card booten. Das Rootfilesystem soll zuk\"unftig auf einem ubifs
           liegen. Wie gehen Sie vor? (Tools, Steps, Pseudocode)
\end{parts}
\end{questions}

\vspace{1cm}
Punkte: \_\_\_\_ von \numpoints
\hspace{1cm}
Note:

\end{document}