diff options
| -rw-r--r-- | 2020-pruefung.tex | 430 | ||||
| -rw-r--r-- | Makefile | 44 | ||||
| -rw-r--r-- | confighandout.tex | 3 | ||||
| -rw-r--r-- | configmasterhandout.tex | 5 | ||||
| -rw-r--r-- | configmasterpres.tex | 11 | ||||
| -rw-r--r-- | images/kernelversions.png | bin | 24780 -> 16610 bytes | |||
| -rw-r--r-- | kernel-devel/kernel-basics/pres_kernel-basics_de.tex | 88 | ||||
| -rw-r--r-- | linux-basics/what-is-linux/handout_what-is-linux_de.tex | 22 | ||||
| -rw-r--r-- | linux-basics/what-is-linux/pres_what-is-linux_de.tex | 6 | ||||
| -rw-r--r-- | pres_master.tex | 2 | ||||
| -rw-r--r-- | tailhandout.tex | 1 | ||||
| -rw-r--r-- | vorl.tex | 8 | ||||
| -rw-r--r-- | vorl3.tex | 3 | ||||
| -rw-r--r-- | vorl5.tex | 2 |
14 files changed, 538 insertions, 87 deletions
diff --git a/2020-pruefung.tex b/2020-pruefung.tex new file mode 100644 index 0000000..add53c4 --- /dev/null +++ b/2020-pruefung.tex @@ -0,0 +1,430 @@ +\documentclass[addpoints,12pt]{exam} + +\usepackage{ngerman} +\usepackage{listings,color} +\usepackage{graphicx} +\usepackage[T1]{fontenc} + +\firstpageheadrule +\runningheadrule +\lhead{Manuel Traut\\Sommersemester 2020} +\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{20. Juli 2020 16:00 Uhr} +\maketitle +\begin{center} +Hochschule Ravensburg-Weingarten +\vspace{1cm} + +Raum: H062 Sektor 1 + +Dauer: 60 Minuten, erlaubte Hilfsmittel: alle +\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} + +\lstset{ % + basicstyle=\scriptsize, % the size of the fonts that are used for the code + breaklines=true, % sets automatic line breaking + frame=single, % adds a frame around the code + language=C, % the language of the code + numbers=left, % where to put the line-numbers; + numbersep=5pt, % how far the line-numbers are from the code + numberstyle=\tiny, % the style that is used for the line-numbers + tabsize=8, % sets default tabsize to 2 spaces +} + +\begin{questions} + +\question[3] Was ist eine Linuxdistribution, was der Linuxkernel? Wie stehen +Sie in Relation? + +\question[3] Was versteht man unter dem Begriff 'Kernelpatch'? Wie wird ein + Patch erstellt und angewendet? + +\question[4] Erkl\"aren Sie an einem Beispiel die Aufgaben eines Linux Kernel + Maintainers. + +\question [6] Beschreiben Sie stichwortartig den Releasezyklus des Linuxkernels +Erkl\"aren Sie in diesem Zusammenhang auch die Begriffe 'Release Candidate', +'Release', 'stable Kernel' und 'staging'. + +\question +\begin{parts} +\part[1] Welches Tool ist auf folgendem Bild zu sehen? +\part[1] \"Uber welche Datei wird der Inhalt / Struktur des Tools gesteuert? +\part[2] Warum ist es notwendig, dass der Kernel konfigurierbar ist? +\part[4] Welche Einstellungen k\"onnen mit Hilfe dieses Tools konfiguriert + werden? (beschreiben Sie 4 Kategorien) +\end{parts} + +\includegraphics[height=0.3\textwidth]{./images/kconfig.png} + + +\question +Linux beinhaltet das Tracingsystem 'ftrace'. +\begin{parts} +\part[4] Beschreiben/Skizzieren Sie die Architektur und die wichtigsten +Funktionen des Systems. +\part[4] Beschreiben Sie am Beispiel sched::sched\_switch Event wie Sie +das Tracing konfigurieren, starten, auslesen. +\end{parts} + +\question[4] Nennen Sie 4 Gr\"unde die f\"ur oder gegen die Integration eines +von Ihnen entwickelten Treibers in Mainline Linux sprechen. + +\question[4] Kernel- und Userspace arbeiten in unterschiedlichen + Addressr\"aumen. Nennen Sie eine M\"oglichkeit, wie Daten zwischen den + Bereichen ausgetauscht werden k\"onnen. Nennen Sie typische + Verwendung, gegebenenfalls Einschr\"ankungen. + +\newpage + +\question +Die folgenden Frage bezieht sich auf den Quellcode 1 im Anhang. +\begin{parts} +\part[10] Mit den Funktionen 'set\_latch\_green und get\_latch\_green' (welche +in asm/mach-rc32434/gpio.h definiert sind) kann analog zu den bereits verwendeten +Funktionen 'set\_latch\_u5 / get\_latch\_u5' eine gr\"une LED angesteuert +werden. Erweitern Sie den Treiber so, dass die gr\"une LED z.B. mit + 'echo 1 > /sys/class/leds/huhu/brightness' +eingeschaltet werden kann. +\end{parts} + +\question +Die folgenden Fragen beziehen sich auf den Quellcode 2 im Anhang. +\begin{parts} +\part[4] Der Treiber wird in einem System geladen, welches 2 PCI Devices mit + Vendor ID 0x186c und Device ID 0x0624 besitzt. Wie oft wird mf624\_pci\_probe + und mf624\_init aufgerufen? +\part[8] Egal auf welches Device Sie zugreifen, Sie interagieren immer nur mit + einer der zwei PCI Karten. Wie m\"usssen Sie den Treiber modifizieren, damit + beide Karten funktionieren? +\end{parts} + +\end{questions} + +\vspace{1cm} +Punkte: \_\_\_\_ von \numpoints +\hspace{1cm} +Note: + +\newpage + +\begin{appendix} + +Quellcode 1: + +\begin{lstlisting} +/* + * LEDs driver for the "User LED" on Routerboard532 + * + * Copyright (C) 2009 Phil Sutter <n0-1@freewrt.org> + * + * Based on leds-cobalt-qube.c by Florian Fainelly and + * rb-diag.c (my own standalone driver for both LED and + * button of Routerboard532). + */ + +#include <linux/leds.h> +#include <linux/module.h> +#include <linux/platform_device.h> +#include <asm/mach-rc32434/gpio.h> +#include <asm/mach-rc32434/rb.h> + +static void rb532_led_set(struct led_classdev *cdev, + enum led_brightness brightness) +{ + if (brightness) + set_latch_u5(LO_ULED, 0); + else + set_latch_u5(0, LO_ULED); +} + +static enum led_brightness rb532_led_get(struct led_classdev *cdev) +{ + return (get_latch_u5() & LO_ULED) ? LED_FULL : LED_OFF; +} + +static struct led_classdev rb532_uled = { + .name = "uled", + .brightness_set = rb532_led_set, + .brightness_get = rb532_led_get, + .default_trigger = "nand-disk", +}; + +static int rb532_led_probe(struct platform_device *pdev) +{ + return led_classdev_register(&pdev->dev, &rb532_uled); +} + +static int rb532_led_remove(struct platform_device *pdev) +{ + led_classdev_unregister(&rb532_uled); + return 0; +} + +static struct platform_driver rb532_led_driver = { + .probe = rb532_led_probe, + .remove = rb532_led_remove, + .driver = { + .name = "rb532-led", + }, +}; + +module_platform_driver(rb532_led_driver); + +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("User LED support for Routerboard532"); +MODULE_AUTHOR("Phil Sutter <n0-1@freewrt.org>"); +MODULE_ALIAS("platform:rb532-led"); +\end{lstlisting} + +\newpage + +Quellcode 2: + +\begin{lstlisting} +/* + * UIO driver fo Humusoft MF624 DAQ card. + * Copyright (C) 2011 Rostislav Lisovy <lisovy@gmail.com>, + * Czech Technical University in Prague + * + * Copyright (C) 2016 Manuel Traut <manut@mecka.net>, + * modified for usage in kernel exams + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <linux/init.h> +#include <linux/module.h> +#include <linux/device.h> +#include <linux/pci.h> +#include <linux/slab.h> +#include <linux/io.h> +#include <linux/kernel.h> +#include <linux/uio_driver.h> + +#define PCI_VENDOR_ID_HUMUSOFT 0x186c +#define PCI_DEVICE_ID_MF624 0x0624 +/* BAR0 Interrupt control/status register */ +#define INTCSR 0x4C +#define INTCSR_ADINT_ENABLE (1 << 0) +#define INTCSR_CTR4INT_ENABLE (1 << 3) +#define INTCSR_PCIINT_ENABLE (1 << 6) +#define INTCSR_ADINT_STATUS (1 << 2) +#define INTCSR_CTR4INT_STATUS (1 << 5) + +enum mf624_interrupt_source {ADC, CTR4, ALL}; + +static void mf624_disable_interrupt(enum mf624_interrupt_source source, + struct uio_info *info) +{ + void __iomem *INTCSR_reg = info->mem[0].internal_addr + INTCSR; + + switch (source) { + case ADC: + iowrite32(ioread32(INTCSR_reg) + & ~(INTCSR_ADINT_ENABLE | INTCSR_PCIINT_ENABLE), + INTCSR_reg); + break; + case CTR4: + default: + iowrite32(ioread32(INTCSR_reg) + & ~(INTCSR_CTR4INT_ENABLE | INTCSR_PCIINT_ENABLE), + INTCSR_reg); + break; + } +} + +static irqreturn_t mf624_irq_handler(int irq, struct uio_info *info) +{ + void __iomem *INTCSR_reg = info->mem[0].internal_addr + INTCSR; + + if ((ioread32(INTCSR_reg) & INTCSR_ADINT_ENABLE) + && (ioread32(INTCSR_reg) & INTCSR_ADINT_STATUS)) { + mf624_disable_interrupt(ADC, info); + return IRQ_HANDLED; + } + + if ((ioread32(INTCSR_reg) & INTCSR_CTR4INT_ENABLE) + && (ioread32(INTCSR_reg) & INTCSR_CTR4INT_STATUS)) { + mf624_disable_interrupt(CTR4, info); + return IRQ_HANDLED; + } + return IRQ_NONE; +} + +static struct uio_info mf624_info = { + .name = "mf624"; + .version = "0.0.1"; +}; + +static int mf624_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) +{ + struct uio_info *info = &mf624_info; + + if (pci_enable_device(dev)) + return -1; + + if (pci_request_regions(dev, "mf624")) + goto out_disable; + + /* BAR0 */ + info->mem[0].name = "PCI chipset, interrupts, status " + "bits, special functions"; + info->mem[0].addr = pci_resource_start(dev, 0); + if (!info->mem[0].addr) + goto out_release; + info->mem[0].size = pci_resource_len(dev, 0); + info->mem[0].memtype = UIO_MEM_PHYS; + info->mem[0].internal_addr = pci_ioremap_bar(dev, 0); + if (!info->mem[0].internal_addr) + goto out_release; + + /* BAR2 */ + info->mem[1].name = "ADC, DAC, DIO"; + info->mem[1].addr = pci_resource_start(dev, 2); + if (!info->mem[1].addr) + goto out_unmap0; + info->mem[1].size = pci_resource_len(dev, 2); + info->mem[1].memtype = UIO_MEM_PHYS; + info->mem[1].internal_addr = pci_ioremap_bar(dev, 2); + if (!info->mem[1].internal_addr) + goto out_unmap0; + + info->irq = dev->irq; + info->irq_flags = IRQF_SHARED; + info->handler = mf624_irq_handler; + + if (uio_register_device(&dev->dev, info)) + goto out_unmap1; + + pci_set_drvdata(dev, info); + return 0; + +out_unmap1: + iounmap(info->mem[1].internal_addr); +out_unmap0: + iounmap(info->mem[0].internal_addr); + +out_release: + pci_release_regions(dev); + +out_disable: + pci_disable_device(dev); + + return -ENODEV; +} + +static void mf624_pci_remove(struct pci_dev *dev) +{ + struct uio_info *info = pci_get_drvdata(dev); + + mf624_disable_interrupt(ALL, info); + + uio_unregister_device(info); + pci_release_regions(dev); + pci_disable_device(dev); + + iounmap(info->mem[0].internal_addr); + iounmap(info->mem[1].internal_addr); + + kfree(info); +} + +static const struct pci_device_id mf624_pci_id[] = { + { PCI_DEVICE(PCI_VENDOR_ID_HUMUSOFT, PCI_DEVICE_ID_MF624) }, + { 0, } +}; + +static struct pci_driver mf624_pci_driver = { + .name = "mf624", + .id_table = mf624_pci_id, + .probe = mf624_pci_probe, + .remove = mf624_pci_remove, +}; +MODULE_DEVICE_TABLE(pci, mf624_pci_id); + +int mf624_init(void) +{ + return pci_driver_register(&mf624_pci_driver); +} + +void mf624_exit(void) +{ + pci_driver_unregister(&mf624_pci_driver); +} + +module_init(mf624_init); +module_exit(mf624_exit); + +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Rostislav Lisovy <lisovy@gmail.com>"); +\end{lstlisting} + + +\end{appendix} +\end{document} @@ -111,35 +111,45 @@ build_master_pres: clean_master_pres rm -f *.out rm -f *.vrb +git:: + mv configpres.tex _configpres.tex + touch configpres.tex + mv tailpres.tex _tailpres.tex + touch tailpres.tex + pdflatex git.tex + rm configpres.tex tailpres.tex + mv _configpres.tex configpres.tex + mv _tailpres.tex tailpres.tex + vorlesung:: mv configpres.tex _configpres.tex touch configpres.tex mv tailpres.tex _tailpres.tex touch tailpres.tex - #pdflatex vorl1.tex - #pdflatex vorl1.tex + pdflatex vorl1.tex + pdflatex vorl1.tex pdflatex vorl2.tex pdflatex vorl2.tex - #pdflatex vorl3.tex - #pdflatex vorl3.tex - #pdflatex vorl4.tex - #pdflatex vorl4.tex - #pdflatex vorl5.tex - #pdflatex vorl5.tex - #pdflatex vorl.tex - #pdflatex vorl.tex + pdflatex vorl3.tex + pdflatex vorl3.tex + pdflatex vorl4.tex + pdflatex vorl4.tex + pdflatex vorl5.tex + pdflatex vorl5.tex + pdflatex vorl.tex + pdflatex vorl.tex rm configpres.tex tailpres.tex mv _configpres.tex configpres.tex mv _tailpres.tex tailpres.tex - mv confighandout.tex _confighandout.tex - touch confighandout.tex - mv tailhandout.tex _tailhandout.tex - touch tailhandout.tex + #mv confighandout.tex _confighandout.tex + #touch confighandout.tex + #mv tailhandout.tex _tailhandout.tex + #touch tailhandout.tex #TEXINPUTS=`pwd`/wise:.:$(TEXINPUTS) pdflatex handout.tex #TEXINPUTS=`pwd`/wise:.:$(TEXINPUTS) pdflatex handout.tex - rm confighandout.tex tailhandout.tex - mv _confighandout.tex confighandout.tex - mv _tailhandout.tex tailhandout.tex + #rm confighandout.tex tailhandout.tex + #mv _confighandout.tex confighandout.tex + #mv _tailhandout.tex tailhandout.tex pres:: diff --git a/confighandout.tex b/confighandout.tex index bb5b65e..5a6eed8 100644 --- a/confighandout.tex +++ b/confighandout.tex @@ -1,3 +1,4 @@ +<<<<<<< Updated upstream \documentclass{lxarticle} \usepackage{german} \usepackage{polyglossia} @@ -11,3 +12,5 @@ \setcounter{secnumdepth}{-1} \input{section} +======= +>>>>>>> Stashed changes diff --git a/configmasterhandout.tex b/configmasterhandout.tex index 285bc00..83cb00a 100644 --- a/configmasterhandout.tex +++ b/configmasterhandout.tex @@ -1,7 +1,8 @@ -\documentclass{book} +\documentclass[unknownkeysallowed]{book} \usepackage{german} \usepackage[utf8]{inputenc} -\usepackage{lxextras} +%\usepackage{lxextras} +\usepackage{listings,color} \lstset{keywordstyle=\color{blue}} \begin{document} diff --git a/configmasterpres.tex b/configmasterpres.tex index 6a687aa..faae542 100644 --- a/configmasterpres.tex +++ b/configmasterpres.tex @@ -1,7 +1,6 @@ -\documentclass{beamer} +\documentclass[unknownkeysallowed]{beamer} \mode<presentation> { - \usetheme{Goettingen} } \usepackage{german} \usepackage[utf8x]{inputenc} @@ -9,10 +8,14 @@ \usepackage{amsmath,amssymb} \usepackage{listings,color} \usepackage{graphicx} -\usepackage{lxextras} +%\usepackage{lxextras} + +\newcommand{\cmd}[1]{\texttt{#1}} + +\institute{RWU - University of Applied Sciences} -\institute{Hochschule Ravensburg-Weingarten} \definecolor{lbcolor}{RGB}{255,210,150} + \lstset{ language=C++, numbers=left, diff --git a/images/kernelversions.png b/images/kernelversions.png Binary files differindex b265076..5eabf22 100644 --- a/images/kernelversions.png +++ b/images/kernelversions.png diff --git a/kernel-devel/kernel-basics/pres_kernel-basics_de.tex b/kernel-devel/kernel-basics/pres_kernel-basics_de.tex index 1e64d25..2ecf9f0 100644 --- a/kernel-devel/kernel-basics/pres_kernel-basics_de.tex +++ b/kernel-devel/kernel-basics/pres_kernel-basics_de.tex @@ -11,54 +11,77 @@ \begin{itemize} \item Freie Software (GPL Version 2) \item Auf vielen Plattformen lauffähig -\item Hohe Skalierbarkeit vom Handy bis zum Supercomputer +\item Hohe Skalierbarkeit vom Microcontroller 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 +\item Hohes Entwicklungstempo +\item Hervorragende Netzwerk-Fähigkeiten +\item Echtzeitfähig \end{itemize} \end{frame} -\subsubsection{Umfang - Linux 4.16-rc5 (16.03.2018)} +\subsubsection{Umfang - Linux 5.6.0-rc5 - 10.03.2020 (4.16-rc5 - 16.03.2018)} + +\begin{frame}[fragile] +\frametitle{Lines of code} +\includegraphics[width=\textwidth]{images/kernel-loc.png} +\end{frame} \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%) +ansic: 18.504.576 - 97.87% (16.686.769 - 97.83%) +asm: 268.051 - 1.42% ( 295.663 - 1.73%) +sh: 59.056 - 0.31% ( 19.168 - 0.11%) +perl: 33.896 - 0.18% ( 26.424 - 0.15%) +python: 27.018 - 0.14% ( 15.685 - 0.09%) +cpp: 6.097 - 0.03% ( 4.919 - 0.03%) +yacc: 4.808 - 0.03% ( 4.600 - 0.03%) +lex: 2.600 - 0.01% ( 2.478 - 0.01%) +awk: 1.060 - 0.01% ( 1.387 - 0.01%) +ruby: 25 - 0.00% +sed: 5 - 0.00% ( 5 - 0.00%) +pascal: ( 231 - 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 + 12.602.748 drivers c=12.591.351 asm= 3.726 +(11.134.588 drivers 66% c=11.124.729 asm= 2.744) + + 1.802.089 arch c= 1.530.033 asm=261.732 +(2.073.368 arch 11% c= 1.778.733 asm=290.614) + + 937.844 fs 5% (869.993) + 914.081 sound 5% (775.712) + 804.064 net 5% (712.404) + 622.102 include 3% (538.568) + 228.445 kernel 2% (191.741) + 128.667 lib 1% (101.006) + 89.903 mm 1% ( 83.858) + 83.684 crypto 1% ( 81.386) + 66.309 security 1% ( 59.271) +\end{verbatim} +\end{frame} + + + +\begin{frame}[fragile] +\frametitle{Lines of code per folder} +\begin{verbatim} + 467.179 tools c= 386.108 + sh= 48.947 + python= 21.365 + perl= 4.576 + +( 286.340 tools 2% c= 253.768 + python= 12.196 + sh= 11.354 + perl= 4.012) \end{verbatim} \end{frame} @@ -222,13 +245,14 @@ Versionssprünge \begin{itemize} \item 05.11: 2.6.39\dots3.0 \item 02.15: 3.19\dots4.0 +\item 03.19: 4.20\dots5.0 \end{itemize} \end{frame} \begin{frame} \includegraphics[height=6cm]{images/kernelversions.png} - Quelle: http://article.sapub.org + Quelle: http://wikipedia.org \end{frame} diff --git a/linux-basics/what-is-linux/handout_what-is-linux_de.tex b/linux-basics/what-is-linux/handout_what-is-linux_de.tex index c793fe6..f85bae4 100644 --- a/linux-basics/what-is-linux/handout_what-is-linux_de.tex +++ b/linux-basics/what-is-linux/handout_what-is-linux_de.tex @@ -4,18 +4,10 @@ \subsubsection{Geschichtlicher Hintergrund} -Fr\"uhe elektronische Rechner, wie der in Abbildung \ref{img:eniac} gezeigte -ENIAC, waren nicht frei programmierbar. Sie wurden f\"ur einen bestimmten +Fr\"uhe elektronische Rechner waren nicht frei programmierbar. Sie wurden f\"ur einen bestimmten Zweck gebaut, der ENIAC beispielsweise zur Berechnung von ballistischen Flugbahnen. -\begin{figure}[h] -\centering -\includegraphics[width=0.5\textwidth]{images/785px-Eniac.jpg} -\caption{ENIAC (1947)} -\label{img:eniac} -\end{figure} - Im Laufe der 50-er und 60-er Jahre entwickelten sich die Rechner schnell weiter, was vor allem durch die Erfindung des Transistors beschleunigt wurde. Mit der freien Programmierbarkeit kam gleichzeitig die Nachfrage nach einem @@ -31,14 +23,13 @@ Anforderungen und wenig durchdachten Konzepten. Die Systeme wurden un\"uberschaubar und f\"ur viele der damaligen Rechner zu gross. Erst das ab 1969 von Ken Thompson und Dennis Ritchie -(Abbildung \ref{img:ken_ritchie}) entwickelte \emph{Unix} konnte sich auf +entwickelte \emph{Unix} konnte sich auf breiter Ebene durchsetzen und zu einem Standard entwickeln. \begin{figure}[h] \centering \includegraphics[width=0.5\textwidth]{images/Thompson-sitting-Richie-standing-PDP11-1972.jpg} \caption{Ken Thompson (sitzend) und Dennis Ritchie an einer PDP11 (1972)} -\label{img:ken_ritchie} \end{figure} In der zweiten H\"alfte der 70-er Jahre ver\"anderte sich der Computer-Markt @@ -51,10 +42,9 @@ zum Massenmarkt. \centering \includegraphics[width=0.3\textwidth]{images/Apple2.jpg} \caption{Apple 2 (1977)} -\label{img:apple2} \end{figure} -Als etwas ausgereiftere Homecomputer wie der Apple 2 (Abbildung \ref{img:apple2}) +Als etwas ausgereiftere Homecomputer wie der Apple 2 zunehmend auch in Betrieben als Erg\"anzung zu den vorhandenen Gro\ss rechnern, beispielsweise als `intelligente' Terminals, eingesetzt wurden, beschloss IBM, Marktf\"uhrer bei Gro\ss rechnern, dem etwas entgegen zu setzen. Man @@ -174,10 +164,8 @@ Authentifizierungsprozess glaubhaft machen. Diesen Vorgang nennt man \label{img:mainframe} \end{figure} -Abbildung \ref{img:mainframe} zeigt die Situation in schematischer Weise. Am -Gro\ss rechner sind mehrere Terminals angeschlossen. Fr\"uher waren dies -Fernschreiber, daher die Bezeichnung tty (von engl. teletype). Auf Abbildung -\ref{img:ken_ritchie} kann man dies sehen -- da gab es noch keine Monitore. +Am Gro\ss rechner sind mehrere Terminals angeschlossen. Fr\"uher waren dies +Fernschreiber, daher die Bezeichnung tty (von engl. teletype). Unter Linux sind dies sogenannte \emph{virtuelle Terminals}. Selbst auf einem Laptop, der an nichts anderes angeschlossen ist, hat man mehrere solcher diff --git a/linux-basics/what-is-linux/pres_what-is-linux_de.tex b/linux-basics/what-is-linux/pres_what-is-linux_de.tex index e3e40a7..914f58b 100644 --- a/linux-basics/what-is-linux/pres_what-is-linux_de.tex +++ b/linux-basics/what-is-linux/pres_what-is-linux_de.tex @@ -169,12 +169,6 @@ Eine klassische Linux Distribution assistiert den Benutzer \end{frame} -\begin{frame} - \includegraphics[height=7cm]{images/distro.png} - - Quelle: http://www.cyberciti.biz -\end{frame} - \subsubsection{Linux im Alltag} diff --git a/pres_master.tex b/pres_master.tex index d402452..89ac222 100644 --- a/pres_master.tex +++ b/pres_master.tex @@ -71,7 +71,7 @@ \input{./flash-memory/ubi/pres_ubi_de.tex} \input{./realtime/section} -\input{./realtime/rt-basics/pres_rt-basics_de.tex} +\input{./realtime/rt-basics/pres_rt-basics_en.tex} \input{./realtime/rt-specialties/pres_rt-specialties_de.tex} \input{./realtime/rt-app-basics/pres_rt-app-basics_en.tex} diff --git a/tailhandout.tex b/tailhandout.tex index 6b47932..e69de29 100644 --- a/tailhandout.tex +++ b/tailhandout.tex @@ -1 +0,0 @@ -\end{document} @@ -13,19 +13,19 @@ \input{./flash-memory/mtd/pres_mtd_en.tex} \input{./flash-memory/ubi/pres_ubi_en.tex} \input{./linux-basics/section} -\input{./linux-basics/boot-process/pres_boot-process_de.tex} +\input{./linux-basics/boot-process/pres_boot-process_en.tex} \input{./linux-basics/fromscratch_vs_debian/pres_fromscatch_vs_debian_en.tex} \input{./application-devel/cross-devel/pres_cross-devel_de.tex} \input{./linux-basics/udev-basics/pres_udev_en.tex} \input{./kernel-devel/section} -\input{./kernel-devel/module-basics/pres_module-basics_de.tex} -\input{./kernel-devel/char-device/pres_char-device_de.tex} +\input{./kernel-devel/module-basics/pres_module-basics_en.tex} +\input{./kernel-devel/char-device/pres_char-device_en.tex} \input{./kernel-devel/kernel-debugging/pres_kernel-debugging_en.tex} \input{./kernel-devel/kernel-tracing/pres_kernel-tracing_en.tex} \input{./kernel-devel/linux-mm-basics/pres_linux-mm-basics_en.tex} \input{./kernel-devel/uio-driver/pres_uio-driver_en.tex} \input{./realtime/section} -\input{./realtime/rt-basics/pres_rt-basics_de.tex} +\input{./realtime/rt-basics/pres_rt-basics_en.tex} \input{./realtime/rt-specialties/pres_rt-specialties_de.tex} \input{./realtime/rt-app-basics/pres_rt-app-basics_en.tex} \input{tailmasterpres} @@ -1,7 +1,6 @@ \input{configmasterpres} \input{./kernel-devel/section} -\input{./kernel-devel/module-basics/pres_module-basics_de.tex} -\input{./kernel-devel/char-device/pres_char-device_de.tex} +\input{./kernel-devel/char-device/pres_char-device_en.tex} \input{./kernel-devel/kernel-debugging/pres_kernel-debugging_en.tex} \input{./kernel-devel/kernel-tracing/pres_kernel-tracing_en.tex} \input{./kernel-devel/kernel-perf/pres_kernel-perf_en.tex} @@ -1,6 +1,6 @@ \input{configmasterpres} \input{./realtime/section} -\input{./realtime/rt-basics/pres_rt-basics_de.tex} +\input{./realtime/rt-basics/pres_rt-basics_en.tex} \input{./realtime/rt-internals/pres_rt-internals_en.tex} \input{./realtime/rt-specialties/pres_rt-specialties_de.tex} \input{./realtime/rt-app-basics/pres_rt-app-basics_en.tex} |
