summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Traut <manut@mecka.net>2012-07-17 10:26:17 +0200
committerManuel Traut <manut@linutronix.de>2018-03-16 21:39:30 +0100
commit498c9ea2498497cc398c910f907c0882b3aa1b72 (patch)
treeb5058814bb18eec2a7a01cd62db4419780703e6f
parent4fd7806b30863b20f1126007d9437cd18a1b276f (diff)
add pruefung 2012
Signed-off-by: Manuel Traut <manut@mecka.net>
-rw-r--r--images/kconfig.pngbin0 -> 13068 bytes
-rw-r--r--pruefung.tex169
2 files changed, 169 insertions, 0 deletions
diff --git a/images/kconfig.png b/images/kconfig.png
new file mode 100644
index 0000000..4fdd864
--- /dev/null
+++ b/images/kconfig.png
Binary files differ
diff --git a/pruefung.tex b/pruefung.tex
new file mode 100644
index 0000000..4f5f8cc
--- /dev/null
+++ b/pruefung.tex
@@ -0,0 +1,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}