Aufbau eines Kernelmoduls

Größe: px
Ab Seite anzeigen:

Download "Aufbau eines Kernelmoduls"

Transkript

1 Kernel Module Kernelmodul = ladbare/entfernbare Objektdatei (Dateisystem, Gerätetreiber, Systemeingriffe) Vorteile: Ressourcenverbrauch abhängig vom aktuellen Anforderungen Erweiterung der Kernelfunktionalität durch extern entwickelte Komponenten Einschränkungen Kernelstrukturen können nicht verändert werden Kernelmodule benötigen Schnittstellen (z.b. Tabelle der Systemaufrufe, Registrierungsfunktionen) Aufbau eines Kernelmoduls Initialisierungsfunktion int init_module() { printk( I m born! ); Aufruf bei Installation des Kernelmoduls Rückgabewert!= 0 signalisiert Fehler Aufräumfunktion void cleanup_module() { printk( Thanks for the fish! ); Aufruf vor dem Entfernen (Entfernen lässt sich nicht verhindern) 1

2 Header-Dateien Kompilation eines Kernelmoduls Zu importierende Dateien Linux/kernel.h Linux/module.h #if CONFIG_MODVERSION==1 #define MODVERSIONS #include <linux/modversions.h> #endif Definition folgender Symbole MODULE KERNEL Modul läuft im Kernel. LINUX gcc DMODULE D KERNEL -DLINUX c module.c Installation/Entfernen von Kernelmodulen Installation: insmod mymodule.o Entfernen: rmmod mymodule Auflisten aller aktuell installierten Module: lsmod 2

3 Zeichenorientierte Gerätetreiber Zeichenorientierte Geräte unterstützen Lesen von Zeichenströmen Schreiben von Zeichenströmen Ausführen von Komandos (ioctl) Implementierung i.a. als Kernelmodule Identifikation über (Major,Minor) Tupel Einbettung als Spezialdatei (s. /dev/*) Zugriff mit Standarddateifunktionen Generierung mit mknod file_name c major minor Im folgenden: Beispieltreiber, der Nachricht ausgibt (Quellcode im Web) Initialisierung des Gerätetreibers int init_module() { int ret; /* Register the character device (atleast try) */ ret = devfs_register_chrdev(my_major, DEVICE_NAME, &Fops); /* Negative values signify an error */ if (ret < 0) { printk ( error %d\n,ret); return ret; printk ( Now: mknod %s c %d <minor>\n", DEVICE_NAME, MY_MAJOR); return 0; 3

4 Die Dateioperationen für den Treiber struct file_operations Fops = { NULL, // Owner-Module NULL, /* seek */ device_read, device_write, NULL, /* readdir */ NULL, /* poll */ NULL, /* ioctl, leicht zu implementieren */ NULL, /* mmap */ device_open, NULL, /* flush */ device_release, /* a.k.a. close */ NULL,NULL,NULL,NULL,NULL,NULL,NULL // diverses ; Öffnen des Gerätes static int device_open(struct inode *inode, struct file *file) { static int counter = 0; printk("device: %d.%d\n", // major, minor number inode->i_rdev >> 8, inode->i_rdev & 0xFF); /* nur 1 Prozess gleichzeitig bedienen */ if (Device_Open) return -EBUSY; // Generiere Nachricht Device_Open++; sprintf(message, Opened %d times\n", counter++); Message_Ptr = Message; /* stelle sicher, dass Modul nicht entfernt wird, falls es geöffnet ist. */ MOD_INC_USE_COUNT; return 0; // kein Fehler 4

5 Schliessen des Gerätes static int device_release(struct inode *inode, struct file *file) { /* We re now ready for our next caller */ Device_Open --; /* Erniedrigen des Benutzungszählers, so dass das Modul entfernt werden kann. */ MOD_DEC_USE_COUNT; return 0; Lesen vom Gerät static ssize_t device_read(struct file *file, char *buffer, /* The buffer to fill with data */ size_t length, /* The length of the buffer */ loff_t *offset) /* Our offset in the file */ { int bytes_read = 0; /* Am Ende der Nachricht 0 (EOF)zurückgeben. */ if (*Message_Ptr == 0) return 0; /* Kopieren der Nachricht*/ while (length && *Message_Ptr) { put_user(*(message_ptr++), buffer++); // UML-Bug? length --; bytes_read ++; /* Rückgabe der Anzahl der gelesenen Bytes */ return bytes_read; 5

6 Schreiben auf das Gerät static ssize_t device_write(struct file *file, const char *buffer, /* The buffer */ size_t length, /* The length of the buffer */ loff_t *offset) /* Our offset in the file */ { // nicht unterstützt return -EINVAL; Installation und Anlegen des Gerätes Kopie der Modulobjektdatei in UML-VM Installieren des Moduls insmod mydev.o Anlegen des Gerätes (MAJOR=250) cd /dev mknod mydev c Überprüfen in /proc/devices Lesen vom Gerät cat /dev/mydev 6

Linux Prinzipien und Programmierung

Linux Prinzipien und Programmierung Linux Prinzipien und Programmierung Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2012/2013 1 / 15 Kernel Module 2 / 15 Laden von Kernelmodulen Linux unterstützt die Auslagerung von Kernel Code

Mehr

Linux Prinzipien und Programmierung

Linux Prinzipien und Programmierung Linux Prinzipien und Programmierung Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2010/2011 1 / 24 VFS Memory Management Kernel Module 2 / 24 Das Virtuelle File System Linux unterstützt eine Vielzahl

Mehr

Konzepte von Betriebssystemkomponenten. Gerätetreiber. Mario Körner

Konzepte von Betriebssystemkomponenten. Gerätetreiber. Mario Körner Konzepte von Betriebssystemkomponenten Gerätetreiber Mario Körner 26.01.2004 Übersicht Einordnung in die Betriebssystemarchitektur Schnittstelle zur Hardware Schnittstelle zum Betriebssystem am Beispiel

Mehr

Praktikum Treiber. Frühlingssemester 2015 M. Thaler, A. Schmid

Praktikum Treiber. Frühlingssemester 2015 M. Thaler, A. Schmid Praktikum Treiber Frühlingssemester 2015 M. Thaler, A. Schmid Inhaltsverzeichnis 1 Einleitung 2 1.1 Ziele.................................. 2 1.2 Aufbau des Praktikums........................ 2 1.3 Durchführung

Mehr

Linux Kernel-Module. Boguslaw Sylla und Patrick Schorn. Systemprogrammierung WS2008/09

Linux Kernel-Module. Boguslaw Sylla und Patrick Schorn. Systemprogrammierung WS2008/09 Linux Kernel-Module Boguslaw Sylla und Patrick Schorn Systemprogrammierung WS2008/09 Inhaltsverzeichnis 1 Was ist ein Kernel-Modul?...2 1.1 Unterschiede zwischen Kernel-Modulen und normalen Programmen...4

Mehr

Praktikum Betriebssysteme 1. Aufgabe (1)

Praktikum Betriebssysteme 1. Aufgabe (1) FG TECHNISCHE INFORMATIK U BS 041 01 TH 09 Praktikum Betriebssysteme 1. Aufgabe (1) Es wird ein unter LINUX lauffähiges C++-Programm ptab, mit dem Informationen über die Partitionierung von Festplatten

Mehr

U23 - Shellcode. Twix Chaos Computer Club Cologne. Motivation Einstieg Der erste Shellcode Nullbytes, NOP Slides

U23 - Shellcode. Twix Chaos Computer Club Cologne.  Motivation Einstieg Der erste Shellcode Nullbytes, NOP Slides Twix e.v. http://koeln.ccc.de 2016-11-28 Überblick 1 Motivation Was ist Shellcode? Beispiel 2 Einstieg Erzeugen, Testen von Shellcode 3 Der erste Shellcode Strings in Shellcode 4 Nullbytes, NOP Slides

Mehr

Linux-Kernel-Programmierung

Linux-Kernel-Programmierung Linux-Kernel-Programmierung Übungsaufgaben Jürgen Quade Linux-Kernel-Programmierung: Übungsaufgaben von Jürgen Quade Versionsgeschichte Version $Revision: 1.5 $ Do 9. Jul 21:25:13 CEST 2009 Geändert durch:

Mehr

Praktikum Betriebssysteme

Praktikum Betriebssysteme Praktikum Betriebssysteme Projekt : Programmierung eines Treibers für die digitale I/O-Karte PCI-1750 der Firma Advantech 1 Inhaltsverzeichnis Einleitung und Aufgabenstellung... 3 Was ist PCI?... 4 PCI-Configuration-Header

Mehr

Betriebssysteme 7. Geräteverwaltung. Peter Altenbernd Geräteverwaltung Betriebssysteme WS 2010/11 Hochschule Darmstadt

Betriebssysteme 7. Geräteverwaltung. Peter Altenbernd Geräteverwaltung Betriebssysteme WS 2010/11 Hochschule Darmstadt Betriebssysteme 7. Geräteverwaltung 1 Übersicht 1. Ziel des Kapitels 2. Motivation und Aufgaben 3. Einleitung 4. E/A-Schichtenmodell 5. E/A mit Plattenspeichern 6. Uhren 7. Terminals und Graphische Benutzeroberflächen

Mehr

Kernel Programmierung unter Linux Teil II Programmierung von Kernelmodulen

Kernel Programmierung unter Linux Teil II Programmierung von Kernelmodulen Kernel Programmierung unter Linux Teil II Programmierung von Kernelmodulen Referent Klaus Ruhwinkel Module, Built-In-Treiber, Treiber Ein Modul kann alles sein Ein Treiber hat I/O Aufgaben und unterscheidet

Mehr

Geräte Treiber unter Unix/Linux

Geräte Treiber unter Unix/Linux Geräte Treiber unter Unix/Linux Martin Schäf 7. Oktober 2004 1 Einleitung Die Programmierung von Geräte Treibern unter Linux ist ein sehr populäres Thema, da für viele Geräte keine, oder nur sehr primitive

Mehr

Linux Treiberentwicklung

Linux Treiberentwicklung Einführung in die Linux Treiberentwicklung 12. Dezember 2012 Autor: Martin Züger Dozent: Urs Graf Modul: Ingenieurinformatik III Kurs: Betriebssysteme Semester: HS 2012 N ä h e r d r a n a m S y s t e

Mehr

Lehrstuhl Netzarchitekturen und Netzdienste Institut für Informatik Technische Universität München. Linux Rootkits. Referent: Clemens Paul

Lehrstuhl Netzarchitekturen und Netzdienste Institut für Informatik Technische Universität München. Linux Rootkits. Referent: Clemens Paul Lehrstuhl Netzarchitekturen und Netzdienste Institut für Informatik Technische Universität München Linux Rootkits Referent: Clemens Paul Betreuer: Simon Stauber / Holger Kinkelin 12.04.2013 Linux Rootkits

Mehr

E.1 Allgemeine Konzepte (3) E.1 Allgemeine Konzepte (2) E.1 Allgemeine Konzepte. Datei. Einordnung. Katalog / Verzeichnis

E.1 Allgemeine Konzepte (3) E.1 Allgemeine Konzepte (2) E.1 Allgemeine Konzepte. Datei. Einordnung. Katalog / Verzeichnis E Dateisysteme E Dateisysteme (3) Einordnung Prozessor (CPU, Central processing unit) Datei speichert Daten oder Programme Katalog Verzeichnis erlaubt Benennung der Dateien enthält Zusatzinformationen

Mehr

C und Linux. Martin Gräfe. Die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen ISBN 3-446-22973-6. Leseprobe

C und Linux. Martin Gräfe. Die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen ISBN 3-446-22973-6. Leseprobe C und Linux Martin Gräfe Die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen ISBN 3-446-22973-6 Leseprobe Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-22973-6

Mehr

Einführung in die Linux Treiberentwicklung. Ingenieurinformatik III Betriebssysteme Urs Graf, Andreas Kalberer, Martin Züger

Einführung in die Linux Treiberentwicklung. Ingenieurinformatik III Betriebssysteme Urs Graf, Andreas Kalberer, Martin Züger Einführung in die Linux Treiberentwicklung Modul: Kurs: Autoren: Ingenieurinformatik III Betriebssysteme Urs Graf, Andreas Kalberer, Martin Züger Änderungen: Rev. Datum Autor Änderung 0.1 21.05.2010 M.

Mehr

Proseminar Konzepte von Betriebssystemkomponenten

Proseminar Konzepte von Betriebssystemkomponenten Proseminar Konzepte von Betriebssystemkomponenten Thema: Module von Michael Balda am 02.02.2004 1 Allgemeines zum Modulkonzept 1.1 Was sind Module? Wozu dient das Modulkonzept? Module sind Codeelemente,

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 10: Arbeiten mit Prof. Dr. Gliederung Programmiersprachen 1. Von der Maschinensprache zu C 2. Die Struktur von C-Programmen 3. Variable und Datentypen in C 4. Bildschirm

Mehr

Im Windows Betriebssystem sind Dateien eindeutig gekennzeichnet durch ihren Pfad, Dateinamen und nach einem Punkt die Dateierweiterung.

Im Windows Betriebssystem sind Dateien eindeutig gekennzeichnet durch ihren Pfad, Dateinamen und nach einem Punkt die Dateierweiterung. Dateioperationen Seite 1 von 12 Im Windows Betriebssystem sind Dateien eindeutig gekennzeichnet durch ihren Pfad, Dateinamen und nach einem Punkt die Dateierweiterung. z.b.: c:\testdateien\text.dat //Datendatei

Mehr

Tafelübung zu BS 4. Dateioperationen

Tafelübung zu BS 4. Dateioperationen Tafelübung zu BS 4. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2013/bs/

Mehr

OSUE. Bernhard Frömel <froemel@vmars.tuwien.ac.at> Institut für Technische Informatik Technische Universität Wien - 182.709 Betriebssysteme UE SS15

OSUE. Bernhard Frömel <froemel@vmars.tuwien.ac.at> Institut für Technische Informatik Technische Universität Wien - 182.709 Betriebssysteme UE SS15 OSUE Bernhard Institut für Technische Informatik Technische Universität Wien - 182.709 Betriebssysteme UE SS15 Mai 2015 Motivation Linux ist erweiterbar beispielsweise per

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:

Mehr

Treiber Kernel und Module bauen

Treiber Kernel und Module bauen Treiber Kernel und Module bauen Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2010/2011 Treiber Kernel und Module bauen 1/17

Mehr

Gerätetreiber unter Linux

Gerätetreiber unter Linux Gerätetreiber unter Linux Rolf Freitag 6.5.2005 Einführung Ein Gerätetreiber ist eine Programmschnittstelle zwischen System- oder Anwendungssoftware und der Hardware. Sie dienen auch zum Abstrahieren/Vereinfachen;

Mehr

Ein- und Ausgabe mit Dateien

Ein- und Ausgabe mit Dateien Ein- und Ausgabe mit Dateien Edouard Lamboray Informatik I für D-ITET (2004) Ein- und Ausgabekonzepte in C und C++ fstream header Streamobjekt Files schreiben und lesen Argumente von main Vorbemerkungen

Mehr

File I/O. Persistieren von Daten. Gastvorlesung Ralph Erdt erdt (bei) informatik.fh-wiesbaden.de

File I/O. Persistieren von Daten. Gastvorlesung Ralph Erdt erdt (bei) informatik.fh-wiesbaden.de File I/O, Ralph Erdt, erdt (bei) informatik.fh-wiesbaden.de Seite 1 File I/O Persistieren von Daten Gastvorlesung - 18.01.10 Ralph Erdt erdt (bei) informatik.fh-wiesbaden.de File I/O, Ralph Erdt, erdt

Mehr

Christian Hirsch Mai 2016

Christian Hirsch Mai 2016 1 OSUE OSUE basierend auf Slides von Bernhard Frömel - Institut für Technische Informatik Technische Universität Wien - 182.709 Betriebssysteme UE SS16 Mai 2016 2 OSUE Motivation

Mehr

Dienstspezifikation nach RFC 2396 193

Dienstspezifikation nach RFC 2396 193 Dienstspezifikation nach RFC 2396 193 Für die Kombination aus Rechnernamen (oder alternativ einer IP-Adresse) und einer Portnummer gibt es mit RFC 2396 einen Standard: hostport host [ : port ] host hostname

Mehr

1.1.Grundstruktur von Linux...3. 1.2.Gerätetreiber...14. 1.3.Systemprogrammierung...16. 1.3.1.Kontrollfluss...16

1.1.Grundstruktur von Linux...3. 1.2.Gerätetreiber...14. 1.3.Systemprogrammierung...16. 1.3.1.Kontrollfluss...16 Ein-/Ausgabe Dieser Teil beschreibt die Verwaltung von Ein-/Ausgabegeräten. Wir werden E/A am Beispiel von Linux diskutieren und sehen, wie Gerätetreiber programmiert werden. Inhalt 1.Grundlagen...3 1.1.Grundstruktur

Mehr

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind

Mehr

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN 10. UNIX/Linux: Reaktion auf Fehler Wintersemester 2016/17 Reaktion auf Fehler: Übersicht Systemaufrufe: 1. Rückkehrwert: in den meisten (aber nicht in allen!)

Mehr

FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren

FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren Prof. Dr. M. Zeller Datum, Zeit Aufgabenblätter erreichbare Punktzahl zugelassene Hilfsmittel, 0800 1000 Uhr (120 min) 16 Seiten (einschl. Deckblatt)

Mehr

6.4 Fallstudie: PC-Bussysteme (9)

6.4 Fallstudie: PC-Bussysteme (9) 6.4 Fallstudie: PC-Bussysteme (9) Plug & Play: beim Booten liest BIOS den 256- Byte Konfigurationsblock jeder PCI-Karte mit: Code für Hersteller und Gerätenummer Code für Gerätetyp Zeitparameter BIOS konfiguriert

Mehr

Connecting Android. Externe Hardware mit dem grünen Roboter verbinden. Alexander Dahmen Dominik Helleberg

Connecting Android. Externe Hardware mit dem grünen Roboter verbinden. Alexander Dahmen Dominik Helleberg Connecting Android Externe Hardware mit dem grünen Roboter verbinden Alexander Dahmen Dominik Helleberg Speaker Dominik Helleberg Mobile Development Android / Embedded Tools http://dominik-helleberg.de/+

Mehr

Ein- und Ausgabe mit Dateien

Ein- und Ausgabe mit Dateien Ein- und Ausgabe mit Dateien Edouard Lamboray Informatik I für D-ITET (2004) Ein- und Ausgabekonzepte in C und C++ fstream header Streamobjekt Files schreiben und lesen Argumente von main 2 Vorbemerkungen

Mehr

C-Kurs 2010 Pointer. 16. September v2.7.3

C-Kurs 2010 Pointer. 16. September v2.7.3 C-Kurs 2010 Pointer Sebastian@Pipping.org 16. September 2010 v2.7.3 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. C-Kurs Mi Konzepte, Syntax,... printf, scanf Next

Mehr

4. Linux-Treiber. System Architektur

4. Linux-Treiber. System Architektur 4. Linux-Treiber Rubini, Alessandro: Linux Device Drivers, O Reilly, 2nd Edition, 2001. M. Beck, & al.: Linux Kernelprogrammierung Algorithmen & Strukturen der Version 2.4, Addison-Wesley, 6. Auflage,

Mehr

Organisatorisches. Übungsleiter: Karsten Otto Homepage: Aufgaben

Organisatorisches. Übungsleiter: Karsten Otto Homepage:  Aufgaben Organisatorisches Übungsleiter: Karsten Otto (otto@inf.fu-berlin.de) Homepage: http://www.inf.fu-berlin.de/lehre/ss04/sysi/ Aufgaben Montags im Netz Vorbesprechung Dienstag/Mittwoch in den Übungen Abgabe

Mehr

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder

Mehr

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes Variablen Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes v ist Stück im Speicher, der 4 Bytes lang ist Speicherzugriff? Über Adressen!

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

Mehr

Einführung in die Programmierung mit C++

Einführung in die Programmierung mit C++ 1 Seite 1 Einführung in die Programmierung mit C++ Teil IV - Weiterführende Themen 11. Ausnahmebehandlung Vor-Ort Fehlerbehandlung Seite 2 Struktur (benötigt iostream und fstream header) std::ifstream

Mehr

Tafelübung zu BS 4. Interprozesskommunikation

Tafelübung zu BS 4. Interprozesskommunikation Tafelübung zu BS 4. Interprozesskommunikation Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/

Mehr

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11 C++ Teil 12 Sven Groß 18. Jan 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 12 18. Jan 2016 1 / 11 Themen der letzten Vorlesung Wiederholung aller bisherigen Themen: Datentypen und Variablen Operatoren Kontrollstrukturen

Mehr

MMC/SD FAT 16 mit AVR und C

MMC/SD FAT 16 mit AVR und C MMC/SD FAT 16 mit AVR und C Die Bibliothek von Roland Riegel enthält einen kompletten FAT16 Zugriff auf MMC/SD Karten über den SPI eines µc. Anforderungen: - SPI oder 5 freie PINs am Controller - Für den

Mehr

Angewandte IT-Sicherheit

Angewandte IT-Sicherheit Angewandte IT-Sicherheit Johannes Stüttgen Lehrstuhl für praktische Informatik I 30.11.2010 Lehrstuhl für praktische Informatik I Angewandte IT-Sicherheit 1 / 28 Aufgabe 1 Betrachten sie folgendes Programm:

Mehr

Linux. Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm. FB Automatisierung und Informatik.

Linux. Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm. FB Automatisierung und Informatik. Linux Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de http://www.miwilhelm.de Raum 2.202 Tel. 03943 / 659 338 FB Automatisierung und Informatik:

Mehr

Linux. Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm. Hochschule Harz. FB Automatisierung und Informatik.

Linux. Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm. Hochschule Harz. FB Automatisierung und Informatik. Linux Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de http://www.miwilhelm.de Raum 2.202 Tel. 03943 / 659 338 FB Automatisierung und Informatik:

Mehr

Einleitung Aufbau und Struktur Kommunikation Ein einfacher Treiber. Linux - Der Kernel. Daniela Staritzbichler, Felix Wolfersberger, Bernhard Schauer

Einleitung Aufbau und Struktur Kommunikation Ein einfacher Treiber. Linux - Der Kernel. Daniela Staritzbichler, Felix Wolfersberger, Bernhard Schauer Daniela Staritzbichler, Felix Wolfersberger, Bernhard Schauer 18. Jänner 2008 Übersicht 1 Einleitung Was ist Linux? 2 Aufbau und Struktur Mikro/Monolithischer Kern Der Linux Kernel VFS 3 Kommunikation

Mehr

Rechnerarchitektur und Betriebssysteme (CS201): Frühe Betriebssysteme, geschützte CPU-Befehle, CPU-Modus

Rechnerarchitektur und Betriebssysteme (CS201): Frühe Betriebssysteme, geschützte CPU-Befehle, CPU-Modus Rechnerarchitektur und Betriebssysteme (CS201): Frühe Betriebssysteme, geschützte CPU-Befehle, CPU-Modus 2. November 2012 Prof. Dr. Christian Tschudin Departement Mathematik und Informatik, Universität

Mehr

Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller

Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller Datum, Zeit, 08:00 09:30 Uhr (90 min) Aufgabenblätter 14 Seiten (einschl. Deckblatt) erreichbare Punktzahl 54 zugelassene

Mehr

Übungen zu Systemprogrammierung 1 (SP1)

Übungen zu Systemprogrammierung 1 (SP1) Übungen zu Systemprogrammierung 1 (SP1) Ü1-2 Speicherverwaltung Andreas Ziegler, Stefan Reif, Jürgen Kleinöder Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität

Mehr

Softwarekonzepte für wiederverwendbare Bildverarbeitungsmethoden am Beispiel der Automatisierung eines Befüllroboters

Softwarekonzepte für wiederverwendbare Bildverarbeitungsmethoden am Beispiel der Automatisierung eines Befüllroboters Vision Systems Prof. Dr.-Ing. Rolf-Rainer Grigat Softwarekonzepte für wiederverwendbare Bildverarbeitungsmethoden am Beispiel der Automatisierung eines Befüllroboters Diplomarbeit Marco Budde Dezember

Mehr

ESP als Webserver für richtige Webseiten

ESP als Webserver für richtige Webseiten ESP als Webserver für richtige Webseiten Probleme: 1. Der ESP8266-12E hat nur 64kB RAM, viele Webseiten enthalten aber Dateien, die viel grösser sind. 2. Der ESP kann immer nur eine Verbindung aufrecht

Mehr

Crashkurs C++ Wiederholung

Crashkurs C++ Wiederholung Crashkurs C++ Wiederholung #include int main(void) { int i, j; bool is_prime; for (j = 1; j < 1000; j += 2) { is_prime = true; for (i = 3; i

Mehr

www.heimetli.ch Heimetli Software AG HSWModule ... Senden und Empfangen von SMS-Meldungen mit einem GSM-Modul Version 1.01 5.

www.heimetli.ch Heimetli Software AG HSWModule ... Senden und Empfangen von SMS-Meldungen mit einem GSM-Modul Version 1.01 5. www.heimetli.ch. Heimetli Software AG HSWModule........ Senden und Empfangen von SMS-Meldungen mit einem GSM-Modul Version 1.01 5. August 2005 Inhaltsverzeichnis Was ist HSWModule?... 1 Installation...

Mehr

Fuse. Filesystem in Userspace PRÄSENTATION VON TIM WELGE

Fuse. Filesystem in Userspace PRÄSENTATION VON TIM WELGE Fuse Filesystem in Userspace PRÄSENTATION VON TIM WELGE 1 INHALTSVERZEICHNIS Einführung Was ist ein Dateisystem Was ist der Userspace FUSE Andere Schlüssel Funktionen Beispiele Wie funktioniert FUSE Schreiben

Mehr

5. Dateioperationen. Tafelübung zu BSRvS1. Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund

5. Dateioperationen. Tafelübung zu BSRvS1. Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund Tafelübung zu BSRvS1 5. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/exercises/

Mehr

10 Die Programmiersprache C99: Zusammenfassung

10 Die Programmiersprache C99: Zusammenfassung 10 Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 25. September 2014, 18:40 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html

Mehr

Operating Systems Principles. Event Queue

Operating Systems Principles. Event Queue Humboldt University Computer Science Department Operating Systems Principles Event Queue 1. Aufgabe 3 Wochen Zeit zum Lösen der Aufgaben Aufgabenstellung auf der SAR Website Abgabe über GOYA Abgabefrist:

Mehr

Installationsanleitung

Installationsanleitung 1. C Installationsanleitung C-Programmierung mit Hilfe von Eclipse unter Windows XP mit dem GNU C-Compiler (GCC) 2. Inhaltsverzeichnis 1. Einleitung... 3 2. Cygwin... 3 2.1 Cygwin-Installation... 3 2.2

Mehr

Microcontroller / C-Programmierung Selbststudium Semesterwoche 5

Microcontroller / C-Programmierung Selbststudium Semesterwoche 5 Microcontroller / C-Programmierung Selbststudium Semesterwoche 5 Diese Übungen hier lehnen an die Übungen im Leitprogramm (Binärbäume) aus Modul PRG2 (Programmieren 2) an. Entsprechend finden Sie dort

Mehr

U4-1 Aufgabe 3: einfache malloc-implementierung

U4-1 Aufgabe 3: einfache malloc-implementierung U4 3. Übung U4 3. Übung Besprechung der Aufgabe 2: wsort Aufgabe 3: malloc-implementierung Ziele der Aufgabe Zusammenhang zwischen "nacktem Speicher" und typisierten bereichen verstehen Funktion aus der

Mehr

Propädeutikum. Dipl.-Inf. Frank Güttler

Propädeutikum. Dipl.-Inf. Frank Güttler Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) guettler@informatik.uni-leipzig.de Universität Leipzig Institut für Informatik Technische Informatik

Mehr

[Strukturen] Vereinbarung Verwendung Operationen mit struct Zeiger auf struct Strukturen auf dem Heap Datenstrukturen gebildet mit struct union

[Strukturen] Vereinbarung Verwendung Operationen mit struct Zeiger auf struct Strukturen auf dem Heap Datenstrukturen gebildet mit struct union Vereinbarung Verwendung Operationen mit struct Zeiger auf struct Strukturen auf dem Heap Datenstrukturen gebildet mit struct union Vereinbarung struct name typ komponente1; typ komponente2;... typ komponenten;

Mehr

Übung aus Systemprogrammierung & Systemnaher Programmierung

Übung aus Systemprogrammierung & Systemnaher Programmierung UNIX Devices Übung aus Systemprogrammierung & Systemnaher Programmierung Armin Wasicek WS 2010/11 UNIX Devices 1 Inhalt UNIX Kernel Dateisystemverwaltung Geräteverwaltung Networking 2 UNIX Kernel Struktur

Mehr

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff Programmieren in C Rekursive Strukturen Prof. Dr. Nikolaus Wulff Rekursive Strukturen Häufig müssen effizient Mengen von Daten oder Objekten im Speicher verwaltet werden. Meist werden für diese Mengen

Mehr

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1 Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1 Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Das C++ Typsystem simple structured integral enum

Mehr

Hardware. Heimo Schön 4/2002 Seite 1/22

Hardware. Heimo Schön 4/2002 Seite 1/22 Hardware Heimo Schön 4/2002 Seite 1/22 /dev Geräte befinden sich im Directory /dev Gerätetypen: Unterscheidung durch Dateityp (erste Spalte von ls -al) b Block Devices (Disk, Floppy, etc.) c character

Mehr

Die Programmiersprache C99: Zusammenfassung

Die Programmiersprache C99: Zusammenfassung Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach

Mehr

Grundlagen der Programmierung. Kapitel 10: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei

Grundlagen der Programmierung. Kapitel 10: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei Ziele dieses Kapitels Grundlagen der ierung Dr. Christian Herzog Technische Universität München! Sie verstehen das Konzept der Ströme Sie können n wie,, Input und Output benutzen.! Sie können in Java Dateien

Mehr

Grundlagen der Programmierung. Kapitel 11: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei

Grundlagen der Programmierung. Kapitel 11: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei Ziele dieses Kapitels Grundlagen der ierung Dr. Christian Herzog Technische Universität München! Sie verstehen das Konzept der Ströme Sie können n wie,, Input und Output benutzen.! Sie können in Java Dateien

Mehr

Grundlagen der Programmierung. Kapitel 11: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei

Grundlagen der Programmierung. Kapitel 11: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei Ziele dieses Kapitels Grundlagen der ierung Dr. Christian Herzog Technische Universität München! Sie verstehen das Konzept der Ströme Sie können n wie,, Input und Output benutzen.! Sie können in Java Dateien

Mehr

USBCAN.DLL. Manual. Microcomputersysteme. Version 1.2

USBCAN.DLL. Manual. Microcomputersysteme. Version 1.2 USBCAN.DLL Microcomputersysteme Manual Version 1.2 August 2004 Die in diesem Manual verwendeten Beschreibungen für Erzeugnisse, die ein eingetragenes Warenzeichen darstellen können, wurden nicht separat

Mehr

Tafelübung zu BS 5. Dateioperationen

Tafelübung zu BS 5. Dateioperationen Tafelübung zu BS 5. Dateioperationen Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2012/bs/

Mehr

Interprozesskommunikation

Interprozesskommunikation Interprozesskommunikation Inhalt 1. Überblick... 2 2. Pipes... 5 3. Fifo...22 3.1. Übung IPC-2...39 Unix für Entwickler: Interprozesskommunikation Prof Dr. Alois Schütte 1/40 1. Überblick Hier werden die

Mehr

Kommunikationsnetze. 2. Direkte TCP/IP-Verbindungen 2.1 Höhere Programmiersprachen

Kommunikationsnetze. 2. Direkte TCP/IP-Verbindungen 2.1 Höhere Programmiersprachen Kommunikationsnetze Gliederung 1. Socket-Programmierung unter C 2. Socket-Programmierung unter Java Gliederung Berkeley Sockets (Erste freie TCP/IP-Implementierung in Berkeley UNIX): SOCKET: Erzeugen eines

Mehr

RFID RC522. Ausgabe Copyright by Joy-IT 1

RFID RC522. Ausgabe Copyright by Joy-IT 1 3 3 RFID RC522 Ausgabe 28.09.2016 Copyright by Joy-IT 1 3 RFID RC522 Index 1. Verwendung mit einem Arduino 1.1 Anschließen des Moduls 1.2 Installation des Moduls 2. Verwendung mit einem Raspberry Pi 2.1

Mehr

FILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam

FILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam Aktuelle Fileposition ermitteln long pos; pos=ftell(fp); //aktuelle Bytenummer Filelaenge in Bytes fseek(fp,0,seek_end); pos=ftell(fp); Fileendeerkennung int rc; rc = feof (fp) //!= 0 bei Fileende // ==

Mehr

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen Leibniz Universität IT Services Anja Aue Modularisierung Logische Gliederung von Programmteilen mit Hilfe von Namensräumen. Aufteilung

Mehr

1.4. Funktionen. Objektorientierte Programmierung mit C++

1.4. Funktionen. Objektorientierte Programmierung mit C++ mehrfache Deklarationen sind erlaubt für jede Funktion muss es (GENAU) eine Definition geben, ansonsten linker error [the one definition rule ODR] Deklarationen in *.h - Files, Definitionen in *.cpp -

Mehr

PVFS (Parallel Virtual File System)

PVFS (Parallel Virtual File System) Management grosser Datenmengen PVFS (Parallel Virtual File System) Thorsten Schütt thorsten.schuett@zib.de Management grosser Datenmengen p.1/?? Inhalt Einführung in verteilte Dateisysteme Architektur

Mehr

RO-Tutorien 15 und 16

RO-Tutorien 15 und 16 Tutorien zur Vorlesung Rechnerorganisation Tutorienwoche 2 am 04.05.2011 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft

Mehr

Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.

Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe. Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende

Mehr

Kernel Programmierung unter Linux. Programmierung von Kernelmodulen. Referent Klaus Ruhwinkel

Kernel Programmierung unter Linux. Programmierung von Kernelmodulen. Referent Klaus Ruhwinkel Kernel Programmierung unter Linux Programmierung von Kernelmodulen Referent Klaus Ruhwinkel Das Betriebssystem Aufbau des Betriebssystem: Es besteht aus den Betriebssystemkern und den sonstigen Betriebssystemkomponenten

Mehr

Heimautomation unter Linux mit pvbrowser und C-CONTROL Station

Heimautomation unter Linux mit pvbrowser und C-CONTROL Station Heimautomation unter Linux mit pvbrowser und C-CONTROL Station Einleitung pvbrowser ist eine Prozessvisualisierung, die Open Source (GPL Lizenz) ist und unter http://pvbrowser.org heruntergeladen werden

Mehr

Advanced Programming in C

Advanced Programming in C Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer

Mehr

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **

Mehr

Praxis der Programmierung

Praxis der Programmierung Dynamische Datentypen Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Dynamische Datentypen 2 Dynamische Datentypen

Mehr

Systempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom Foliensatz 2

Systempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom Foliensatz 2 Systempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom 29.10. Foliensatz 2 Modularisierung (T) Eigene Headerdateien und Bibliotheken (P) Arten der Parameterübergabe (P) Arrays und Strukturen

Mehr

Betriebssysteme, Rechnernetze und verteilte Systeme 1. Crashkurs C (2)

Betriebssysteme, Rechnernetze und verteilte Systeme 1. Crashkurs C (2) Betriebssysteme, Rechnernetze und verteilte Systeme 1 Crashkurs C (2) Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 11 Was bisher verschwiegen wurde Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Type qualifier Typen können mit folgenden

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 11 Was bisher verschwiegen wurde Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Type qualifier Typen können mit folgenden

Mehr

I/O-Hardware Grundlagen. Ein- und Ausgabe. Memory-Mapped I/O. Device Controller

I/O-Hardware Grundlagen. Ein- und Ausgabe. Memory-Mapped I/O. Device Controller I/O-Hardware Grundlagen Grundlagen von Ein-/Ausgabe-Hardware und Software I/O-Software-Schichten Wir betrachten I/O-Hardware wie Hard Disks, Bildschirme, Drucker etc. hier eigentlich als Blackbox, die

Mehr

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Generic Programming without Generics from JAVA5 Motivation Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Ein Bespiel: sie haben bereits eine Klasse zur Multiplikation von Matrizen

Mehr

Betriebssysteme KU - Einführungstutorium

Betriebssysteme KU - Einführungstutorium Betriebssysteme KU - Einführungstutorium SWEB-Tutoren irc://irc.at.euirc.net/bs Teamwork Arbeitsaufteilung? Zeiteinteilung? Codeeinteilung? Kommunikation! Kommunikation Kommunikation mit dem Team Gruppentreffen

Mehr