Treiber Einfache Gerätetreiber

Größe: px
Ab Seite anzeigen:

Download "Treiber Einfache Gerätetreiber"

Transkript

1 Treiber Einfache Gerätetreiber Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2007/2008 Treiber Einfache Gerätetreiber 1/

2 Übersicht Inhalt: Das Geräteprinzip, Registrieren und Entfernen, wichtige Treiberfunktionen: open, release (AKA close), read, write, ioctl, poll. Treiber Einfache Gerätetreiber 2/

3 Das Geräteprinzip Geräte werden durch spezielle Dateien im Dateisystem repräsentiert (Device-Nodes), zwei Arten: Block-Devices und Character-Devices, aus Sicht der Anwendungsprogramme kein (wesentlicher) Unterschied zu Dateien, die von Dateisystem-Interaktionen her bekannten Systemaufrufe können benutzt werden (open(2), read(2) etc.). N.B. Netzwerkgeräte werden nicht auf diese Weise ins Dateisystem integriert! (Kommt später...) Treiber Einfache Gerätetreiber 3/

4 Geräte-Knoten Eigenschaften Jeder Geräte-Knoten trägt Informationen über: den Typ des Geräts (Character oder Block), die Major-Nummer des Geräts, die Minor-Nummer des (Unter-)Geräts, (außerdem die üblichen Inode-Informationen wie Eigentümer, Zugriffsrechte etc.). Siehe auch stat(2). Über die Major-Nummer wird beim Zugriff der zuständige Treiber ausgewählt, die Minor-Nummern kann der Treiber nach eigenen Erfordernissen verwalten (auch ignorieren). Treiber Einfache Gerätetreiber 4/

5 Geräte-Knoten anlegen Anlegen Als root mit mknod(1), z.b.: $ mknod / dev /dhwk c $ l s l / dev /dhwk crw r r 1 r o o t r o o t 240, :55 / dev /dhwk $ (In vielen aktuellen Linux-Distributionen auch automatisch, z.b. durch udev(7).) Treiber Einfache Gerätetreiber 5/

6 Gerät registieren register_chrdev #i n clude <l i n u x / f s. h> i n t r e g i s t e r _ c h r d e v ( unsigned i n t major, const char name, s t r u c t f i l e _ o p e r a t i o n s f o p s ) ; Treiberseitige Anmeldung von Geräten beim IO-Subsystem, typischerweise im Zuge der Modul-Initialisierung, bekanntgeben von Major-Nummer, Gerätenamen und Funktions-Callbacks, Rückgabewert: 0 im Erfolgsfall, negativ im Fehlerfall. Treiber Einfache Gerätetreiber 6/

7 Gerät registieren (2) Wahl der Gerätenummer Effektiv nur unsigned char, Zuordnung durch Kernel-Verantwortliche, frei verfügbare Bereiche: automatische Zuweisung: benutze Nummer 0 bei register_chrdev, Rückgabewert ist dann die vergebene Nummer im Erfolgsfall und 0 im Fehlerfall. Nach erfolgreicher Registrierung steht in /proc/devices Gerätenummer und -name. Treiber Einfache Gerätetreiber 7/

8 Gerät registieren (3) Beispiel s t a t i c s t r u c t f i l e _ o p e r a t i o n s f o p s ; s t a t i c i n t i n i t mod_init ( void ) { i f ( r e g i s t e r _ c h r d e v (240, "DHWK",& f o p s ) == 0) { r e t u r n 0 ; } r e t u r n EIO ; } m o d u l e _ i n i t ( mod_init ) ; Treiber Einfache Gerätetreiber 8/

9 Gerät entfernen unregister_chrdev #i n clude <l i n u x / f s. h> i n t u n r e g i s t e r _ c h r d e v ( unsigned i n t major, const char name ) ; Treiberseitige Abmeldung von Geräten beim IO-Subsystem, typischerweise im Zuge der Modul-Deinitialisierung, Rückgabewert: 0 im Erfolgsfall, negativ im Fehlerfall (meist -EFAULT, nämlich wenn Name oder Nummer ungültig sind). Treiber Einfache Gerätetreiber 9/

10 Gerät entfernen (2) Beispiel s t a t i c void exit mod_exit ( void ) { u n r e g i s t e r _ c h r d e v (240, "DHWK" ) ; } module_exit ( mod_exit ) ; Treiber Einfache Gerätetreiber 10/

11 Treiberfunktionen Aus <linux/fs.h>... s t r u c t f i l e _ o p e r a t i o n s {... s t r u c t module owner ; s s i z e _ t ( r e a d ) ( s t r u c t f i l e, char user, s i z e _ t, l o f f _ t ) ; s s i z e _ t ( w r i t e ) ( s t r u c t f i l e, const char user, s i z e _ t, l o f f _ t ) ; unsigned i n t ( p o l l ) ( s t r u c t f i l e, s t r u c t p o l l _ t a b l e _ s t r u c t ) ; i n t ( i o c t l ) ( s t r u c t i n o d e, s t r u c t f i l e, unsigned i n t, unsigned long ) ; i n t ( open ) ( s t r u c t i n o d e, s t r u c t f i l e ) ; i n t ( r e l e a s e ) ( s t r u c t i n o d e, s t r u c t f i l e ) ;... } ; Treiber Einfache Gerätetreiber 11/

12 Treiberfunktionen (2) Eine Instanz von struct file_operations wird bei der Registrierung des Geräts übergeben, sie muss mit Funktionszeigern auf die Implementationen der Datei-IO-Funktionen des Treibers gefüllt sein, nicht-zugewiesene Funktionen führen i.d.r. dazu, dass der Systemcall eine geeignete Fehlermeldung liefert (-EINVAL), owner sollte ein Zeiger auf die Modulstruktur des Moduls zugewiesen werden; dieser ist über das Makro THIS_MODULE verfügbar. Treiber Einfache Gerätetreiber 12/

13 Treiberfunktionen (3) Instanzen Beim Öffnen eines Geräts durch ein Anwendungsprogramm wird vom Kernel eine Instanz von struct file angelegt. Diese dient dem Treiber dann zur Unterscheidung der Zugriffe. Aus <linux/fs.h>... s t r u c t f i l e {... const s t r u c t f i l e _ o p e r a t i o n s f_op ;... unsigned i n t f _ f l a g s ; mode_t f_mode ; void p r i v a t e _ d a t a ;... } ; Treiber Einfache Gerätetreiber 13/

14 Treiberfunktionen open open i n t d r i v e r _ o p e n ( s t r u c t i n o d e node, s t r u c t f i l e i n s t a n c e ) ; Bekommt Device-Node- und Datei-Struktur übergeben, Zugriffsrechte wurden bereits vom Kern geprüft, muss prüfen, ob aus der Sicht des Treibers ein Zugriff zulässig ist, muss ggf. treiberspezifische Initialisierungen durchführen, Rückgabewert: 0 bei Erfolg, negativer Fehlercode bei Fehler. Treiber Einfache Gerätetreiber 14/

15 Treiberfunktionen open (2) Zugriffsprüfung und Initialiserung Aspekte können, je nach Gerät, u.a. sein: begrenzte Zahl gleichzeitig lesender/schreibender Instanzen, unterschiedliche Behandlung verschiedener Minor-Nummern (Zugriff über das Makro iminor(node)), blockierender vs. nicht blockierender Zugriff,... Treiber Einfache Gerätetreiber 15/

16 Treiberfunktionen open (3) Beispiel s t a t i c i n t dhwk_open ( s t r u c t i n o d e node, s t r u c t f i l e i n s t a n c e ) { i f ( i n s t a n c e >f _ f l a g s&o_rdwr i n s t a n c e >f _ f l a g s&o_wronly) { i f ( w r i t e _ c o u n t > 0) { r e t u r n EBUSY ; } w r i t e _ c o u n t++; } r e t u r n 0 ; } Treiber Einfache Gerätetreiber 16/

17 Treiberfunktionen release release i n t d r i v e r _ c l o s e ( s t r u c t i n o d e node, s t r u c t f i l e i n s t a n c e ) ; Gegenstück zu open, ist dem close(2)-systemcall zugeordnet, muss ggf. die durch das Öffnen belegten Ressourcen wieder freigeben, Rückgabewert: 0 bei Erfolg, negativer Fehlercode sonst. Treiber Einfache Gerätetreiber 17/

18 Treiberfunktionen release (2) Beispiel s t a t i c i n t dhwk_close ( s t r u c t i n o d e node, s t r u c t f i l e i n s t a n c e ) { i f ( i n s t a n c e >f _ f l a g s&o_rdwr i n s t a n c e >f _ f l a g s&o_wronly) { write_count ; } r e t u r n 0 ; } s t a t i c s t r u c t f i l e _ o p e r a t i o n s f o p s = {. owner = THIS_MODULE,. open = dhwk_open,. r e l e a s e = dhwk_close, } ; Treiber Einfache Gerätetreiber 18/

19 API: kmalloc kmalloc #i n clude <l i n u x / s l a b. h> void k m a l l o c ( s i z e _ t s i z e, i n t f l a g s ) ; Allokiert Speicher der Länge size zur Verwendung im Kernel, Flags (vgl. <linux/mm.h>): GFP_KERNEL Kernelthread darf bei zu wenig Speicher schlafen gelegt werden, GFP_USER dito für Treiberinstanz, GFP_ATOMIC blockiert nie, Rückgabewert: Zeiger auf den Speicher im Erfolgsfall, NULL im Fehlerfall. Gegenstück: void kfree(const void *); Treiber Einfache Gerätetreiber 19/

20 API: kmalloc (2) Beispiel s t a t i c i n t dhwk_open ( s t r u c t i n o d e node, s t r u c t f i l e i n s t a n c e ) { i n s t a n c e >p r i v a t e _ d a t a = k m a l l o c ( s i z e o f ( s t r u c t my_data ),GFP_USER ) ; i f ( i n s t a n c e >p r i v a t e _ d a t a == NULL) { r e t u r n ENOMEM; } r e t u r n 0 ; } s t a t i c i n t dhwk_close ( s t r u c t i n o d e node, s t r u c t f i l e i n s t a n c e ) { k f r e e ( i n s t a n c e >p r i v a t e _ d a t a ) ; r e t u r n 0 ; } Treiber Einfache Gerätetreiber 20/

21 Treiberfunktionen read read s s i z e _ t d r i v e r _ r e a d ( s t r u c t f i l e i n s t a n c e, char user b u f f e r, s i z e _ t count, l o f f _ t o f f s e t ) ; Es sollen ab der Position *offset bis zu count Bytes vom Gerät gelesen und nach buffer im Userspace geschrieben werden. Rückgabewert: Anzahl der tatsächlich gelesenen Bytes oder 0, um EOF zu signalisieren oder negativer Fehlercode. Treiber Einfache Gerätetreiber 21/

22 Treiberfunktionen read (2) Beispiel s t a t i c char o u t _ s t r i n g [ ] = " World O H e l l \n" ; s t a t i c s s i z e _ t dhwk_read ( s t r u c t f i l e i n s t a n c e, char user b u f f e r, s i z e _ t count, l o f f _ t o f f s e t ) { } i n t not_copied, to_copy ; to_copy = s t r l e n ( o u t _ s t r i n g )+1; i f ( to_copy > count ) to_copy = count ; not_copied = copy_to_user ( b u f f e r, o u t _ s t r i n g, to_copy ) ; r e t u r n to_copy not_copied ; Treiber Einfache Gerätetreiber 22/

23 API: copy_to_user copy_to_user #i n clude <asm/ u a c c e s s. h> unsigned long copy_to_user ( void to, const void from, unsigned long count ) ; Kopiert count Bytes ab der Speicherstelle from im Kernelspace an die Speicherstelle to im Userspace, prüft Adressbereiche, Rückgabewert: Anzahl der Bytes, die nicht kopiert werden konnten. Treiber Einfache Gerätetreiber 23/

24 (Nicht-)Blockierender Zugriff Blockierend vs. Nicht-Blockierend Wurde die Datei mit dem Flag O_NONBLOCK geöffnet, so muss die read-funktion sofort wieder mit dem Fehlercode -EAGAIN zurückkehren, wenn keine Daten zum Lesen vorhanden sind und das Ende der Datei noch nicht erreicht ist, im blockierenden Modus muss die read-funktion dagegen den aufrufenden Prozess schlafen legen! Treiber Einfache Gerätetreiber 24/

25 Scheduling Treiber Einfache Gerätetreiber 25/

26 API: Scheduling Scheduler-Funktionen #i n c l u d e <l i n u x / sched. h> void s e t _ c u r r e n t _ s t a t e ( i n t s t a t e _ v a l u e ) ; void s c h e d u l e ( void ) ; long s c h e d u l e _ t i m e o u t ( long t i m e o u t ) ; set_current_state setzt den Prozesszustand auf state_value (vgl. vorige Folie), schedule ruft den Scheduler auf, schedule_timeout ruft den Scheduler auf und veranlasst, dass der Prozess nach timout Jiffies wieder in den Zustand TASK_RUNNING versetzt wird; gibt bei Unterbrechung die übrige Wartezeit zurück. Treiber Einfache Gerätetreiber 26/

27 API: Wait-Queues Die Wait-Queue-Funktionen und -Makros vereinfachen den Umgang mit Prozesszuständen für Treiberprogrammierer erheblich. Wait-Queues sind das bevorzugte Mittel, um Prozesse schlafen zu legen und wieder aufzuwecken. init_waitqueue_head #i n c l u d e <l i n u x / w a i t. h> void i n i t _ w a i t q u e u e _ h e a d ( waitqueue_head_t q ) ; Initialisiert das Kopf-Element einer Wait-Queue, muss vor der ersten Verwendung der Wait-Queue aufgerufen werden. Treiber Einfache Gerätetreiber 27/

28 API: Wait-Queues (2) wait_event #i n c l u d e <l i n u x / w a i t. h> void w a i t _ e v e n t ( wait_queue_head_t q, c o n d i t i o n ) ; i n t w a i t _ e v e n t _ i n t e r r u p t i b l e ( wait_queue_head_t q, c o n d i t i o n ) ; Ist condition nicht erfüllt, wartet der Prozess, bis er aufgeweckt wird und condition erfüllt ist, bei der interruptible-variante kann das Warten durch Signale (signal(7)) unterbrochen werden, Rückgabewert (so vorhanden): 0 bei erfüllter Bedingung, ungleich 0 bei Abbruch (typischerweise: -ERESTARTSYS). Treiber Einfache Gerätetreiber 28/

29 API: Wait-Queues (3) wake_up #i n c l u d e <l i n u x / w a i t. h> void wake_up ( wait_queue_head_t q ) ; void w a k e _ u p _ i n t e r r u p t i b l e ( wait_queue_head_t q ) ; Weckt an der Wait-Queue q schlafende Prozesse auf, wake_up weckt alle Prozesse auf, wake_up_interruptible nur Prozesse, die mit wait_event_interruptible warten, Wake-Up-Ereignisse werden nicht gespeichert. Treiber Einfache Gerätetreiber 29/

30 API: Wait-Queues (4) Beispiel s t a t i c wait_queue_head_t read_queue ;... i n i t _ w a i t q u e u e _ h e a d (&read_queue ) ;... i f (! ( i n s t a n c e >f _ f l a g s & O_NONBLOCK) ) { r e t = w a i t _ e v e n t _ i n t e r r u p t i b l e ( read_queue, d a t a _ a v a i l ) ;... i n t ISR (... ) {... d a t a _ a v a i l = 1 ; w a k e _ u p _ i n t e r r u p t i b l e (&read_queue ) ;... Treiber Einfache Gerätetreiber 30/

31 Treiberfunktionen write write s s i z e _ t d r i v e r _ w r i t e ( s t r u c t f i l e i n s t a n c e, const char user b u f f e r, s i z e _ t count, l o f f _ t o f f s e t ) ; Es sollen ab der Position *offset bis zu count Bytes aus buffer auf dem Gerät ausgegeben werden. Rückgabewert: Anzahl der tatsächlich geschriebenen Bytes oder negativer Fehlercode. Treiber Einfache Gerätetreiber 31/

32 Treiberfunktionen write (2) Beispiel s t a t i c s s i z e _ t dhwk_write ( s t r u c t f i l e i n s t a n c e, const char user b u f f e r, s i z e _ t count, l o f f _ t o f f s e t ) { } r e t u r n count ; Treiber Einfache Gerätetreiber 32/

33 API: copy_from_user copy_from_user #i n clude <asm/ u a c c e s s. h> unsigned long copy_from_user ( void to, const void from, unsigned long count ) ; Kopiert count Bytes ab der Speicherstelle from im Userspace an die Speicherstelle to im Kernelspace, prüft Adressbereiche, Rückgabewert: Anzahl der Bytes, die nicht kopiert werden konnten. Treiber Einfache Gerätetreiber 33/

34 API: Stringfunktionen Stringfunktionen #i n clude <l i n u x / s t r i n g. h> char s t r c a t ( char dest, const char s r c ) ; s i z e _ t s t r l c p y ( char dest, char s r c, s i z e _ t count ) ; s i z e _ t s t r l e n ( const char s ) ; char s t r n c a t ( char dest, const char s r c, s i z e _ t maxlen ) ; i n t strncmp ( const char cs, const char ct, s i z e _ t count ) ; char s t r n c p y ( char dest, char s r c, s i z e _ t count ) ; char s t r s t r ( const char s1, const char s2 ) ; Die Funktionen folgen im Wesentlichen ihren gleichnamigen Pendants der C-Bibliothek. Treiber Einfache Gerätetreiber 34/

35 Treiberfunktionen ioctl ioctl i n t d r i v e r _ i o c t l ( s t r u c t i n o d e node, s t r u c t f i l e i n s t a n c e, unsigned i n t command, unsigned long argument ) ; Universelle IO-Kontroll-Funktion, dem Systemaufruf ioctl(2) zugeordnet, command: Befehlsnummer; kann vom implementierenden Treiber prinzipiell beliebig definiert werden (vgl. aber z.b. <asm-i486/ioctls.h>), argument: Befehlsparameter; typischerweise Zeiger auf eine zum Befehl gehörende Datenstruktur (Casting!), Rückgabwert: 0 bei Erfolg, negativer Fehlercode sonst (häufig: -EINVAL bei ungültigem Befehl). Treiber Einfache Gerätetreiber 35/

36 API: Datentransfer User Kernel Datentransfer Bereits vorgestellt: copy_to_user und copy_from_user. Außerdem existieren noch: #i n c l u d e <asm/ u a c c e s s. h> i n t put_user ( datum, d e s t i n a t i o n ) ; i n t g e t _ u s e r ( v a r i a b l e, s o u r c e ) ; Kopieren ein, zwei oder vier Bytes zwischen Kernel- und Userspace, Länge des Datenworts wird aus dem Typ von datum bzw. variable abgeleitet, Adressen werden geprüft, Rückgabewert: 0 bei Erfolg, negativer Fehlercode (-EFAULT) sonst. Treiber Einfache Gerätetreiber 36/

37 API: Datentransfer User Kernel (2) access_ok #i n c l u d e <asm/ u a c c e s s. h> i n t access_ok ( type, addr, s i z e ) ; Prüft, ob der Zugriff type (VERIFY_READ oder VERIFY_WRITE) auf den Speicherbereich der Größe size beginnend bei addr zulässig ist, Rückgabewert: 0, falls der Zugriff nicht möglich ist. Aber: Bei read(2) und write(2) prüft der Kernel schon selbst, ob die Ziel- bzw. Quellbuffer zulässig sind. Treiber Einfache Gerätetreiber 37/

38 API: Datentransfer User Kernel (3) Ungeprüfter Transfer Von den bisher vorgestellten Funktionen/Makros gibt es auch Varianten, die die Gültigkeit der Speicherbereiche nicht prüfen: copy_to_user, copy_from_user, put_user, get_user. Treiber Einfache Gerätetreiber 38/

39 Treiberfunktionen poll poll unsigned i n t d r i v e r _ p o l l ( s t r u c t f i l e i n s t a n c e, p o l l _ t a b l e w a i t ) ; Dient der Überwachung des IO-Kanals, wird von den Systemaufrufen poll(2) und select(2) verwendet, teilt dem Kernel ggf. relevante Wait-Queues mit (vgl. unten), Rückgabewert: veroderte Flags (siehe nächste Folie). Treiber Einfache Gerätetreiber 39/

40 Treiberfunktionen poll (2) Flags Die Flags sagen aus, welche IO-Operationen möglich sind, ohne dass ein auf das poll folgender Aufruf von read oder write blockieren würde. Name POLLIN POLLOUT POLLERR POLLRDNORM POLLWRNORM Bedeutung Daten können ohne zu blockieren gelesen werden, Daten können ohne zu blockieren geschrieben werden, Fehler aufgetreten, Äquivalent zu POLLIN (Kompatibilität!), dito für POLLOUT. Treiber Einfache Gerätetreiber 40/

41 Treiberfunktionen poll (3) Achtung! Greifen mehrere Instanzen auf einen Treiber zu, muss sichergestellt werden, dass genau die Instanz, der durch den Aufruf von poll signalisiert wurde, dass die IO-Operation ohne blockieren möglich ist, bei einem folgenden read/write auch tatsächlich nicht blockiert, auch wenn zwischen dem poll und dem Lese/Schreib-Aufruf eine andere Instanz lesen/schreiben will! Treiber Einfache Gerätetreiber 41/

42 API: poll_wait poll_wait #i n c l u d e <l i n u x / p o l l. h> void p o l l _ w a i t ( s t r u c t f i l e i n s t a n c e, wait_ queue_ head_ t wait_q, p o l l _ t a b l e t a b l e ) ; Gibt dem Kernel innerhalb der Implementation der poll-funktion die Wait-Queue (wait_q) bekannt, auf die sich der Treiber schlafen legt, die übrigen Parameter werden einfach weitergereicht. Treiber Einfache Gerätetreiber 42/

Treiber Einfache Gerätetreiber

Treiber Einfache Gerätetreiber Treiber Einfache Gerätetreiber Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2010/2011 Treiber Einfache Gerätetreiber 1/50

Mehr

Treiber PCI-Subsystem

Treiber PCI-Subsystem Treiber PCI-Subsystem Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2010/2011 Treiber PCI-Subsystem 1/41 2011-04-05 Übersicht

Mehr

Aufbau eines Kernelmoduls

Aufbau eines Kernelmoduls Kernel Module Kernelmodul = ladbare/entfernbare Objektdatei (Dateisystem, Gerätetreiber, Systemeingriffe) Vorteile: Ressourcenverbrauch abhängig vom aktuellen Anforderungen Erweiterung der Kernelfunktionalität

Mehr

Einschub: HW-Zugriff aus dem Userspace

Einschub: HW-Zugriff aus dem Userspace Einschub: HW-Zugriff aus dem Userspace Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2010/2011 Einschub: HW-Zugriff aus dem

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

Systemaufrufe. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2010/2011

Systemaufrufe. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2010/2011 Systemaufrufe Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2010/2011 Systemaufrufe 1/17 2010-09-13 Motivation Am Beispiel

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

Treiber Netzwerktreiber

Treiber Netzwerktreiber Treiber Netzwerktreiber Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2009/2010 Treiber Netzwerktreiber 1/42 2009-10-09 Übersicht

Mehr

Hardware PCI-Bus. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg

Hardware PCI-Bus. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg Hardware PCI-Bus Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2008/2009 Hardware PCI-Bus 1/23 2008-08-06 Übersicht Inhalt:

Mehr

Hardware PCI-Bus. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg

Hardware PCI-Bus. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg Hardware PCI-Bus Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2007/2008 Hardware PCI-Bus 1/23 2007-10-26 Übersicht Inhalt:

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

Praktikum angewandte Systemsoftwaretechnik (PASST)

Praktikum angewandte Systemsoftwaretechnik (PASST) Praktikum angewandte Systemsoftwaretechnik (PASST) Dateisysteme / Aufgabe 6 21. Juni 2018 Stefan Reif, Peter Wägemann, Florian Schmaus, Michael Eischer, Andreas Ziegler, Bernhard Heinloth und Benedict

Mehr

U5 Verzeichnisse und Sortieren

U5 Verzeichnisse und Sortieren U5 Verzeichnisse und Sortieren U5 Verzeichnisse und Sortieren Linux-Benutzerumgebung Fehlerbehandlung POSIX-Verzeichnis-Systemschnittstelle Datei-Attribute in Inodes U5.1 Verzeichnisse öffnen: opendir(3)

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

Filesystemserver. SDI Gruppe Juni Till Schuberth / Victor van Santen. Filesystemserver: Till Schuberth und Victor van Santen SDI6

Filesystemserver. SDI Gruppe Juni Till Schuberth / Victor van Santen. Filesystemserver: Till Schuberth und Victor van Santen SDI6 Filesystemserver SDI Gruppe 6 04. Juni 2009 Till Schuberth / Victor van Santen 1 Überblick Einführung Entwurfsentscheidungen Beschreibung der Server Beispielimplementierungen für L4 Schnittstellenbeschreibung

Mehr

Was machen wir heute? Betriebssysteme Tutorium 10. Frage 10.1.a. Frage 10.1.a

Was machen wir heute? Betriebssysteme Tutorium 10. Frage 10.1.a. Frage 10.1.a Was machen wir heute? Betriebssysteme Tutorium 10 Philipp Kirchhofer philipp.kirchhofer@student.kit.edu http://www.stud.uni-karlsruhe.de/~uxbtt/ Lehrstuhl Systemarchitektur Universität Karlsruhe (TH) 1

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 9 I/O (2) Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät UNIX I/O UNIX I/O: ähnlich wie Standard-I/O, jedoch File-Deskriptoren

Mehr

VHDL Grundelemente. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg

VHDL Grundelemente. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg VHDL Grundelemente Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2009/2010 VHDL Grundelemente 1/15 2009-07-31 Inhalt Folgende

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

Betriebssysteme I SS 2008 Hans-Georg Eßer, Hochschule München Zusammenfassung Seite 1

Betriebssysteme I SS 2008 Hans-Georg Eßer, Hochschule München Zusammenfassung Seite 1 /home/esser/daten/dozent/hs-muenchen-2008/folien/bs-ss2008-esser-14.odp Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]:

Mehr

C/C++-Programmierung

C/C++-Programmierung 1 C/C++-Programmierung Speicherverwaltung, 0, const Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Speicherverwaltung

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

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

Geräteverwaltung: Einführung

Geräteverwaltung: Einführung Geräteverwaltung: Einführung Die Ziele einer Geräteverwaltung sind: Einfache Softwareschnittstelle Gleiche Software Schnittstellen für alle Geräte eines Gerätetyps z.b.: unabhängig vom Soundkartenhersteller

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/ss2014/bs/

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

Informatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1

Informatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Informatik Vorlesung 08 Pointer (Dynamisch) 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Pointer (Zeiger) Dynam. Speicher Bisher: Speicherbedarf muss

Mehr

Hans-Georg Eßer, FH München Betriebssysteme I, WS 2006/07, 2007/01/24 Zusammenfassung (2/2) Folie 2

Hans-Georg Eßer, FH München Betriebssysteme I, WS 2006/07, 2007/01/24 Zusammenfassung (2/2) Folie 2 /home/esser/daten/dozent/folien/bs-esser-24.odp Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep

Mehr

1 Fehler in Bibliotheksfunktionen. 1 Überblick. 2 Ziele der Aufgabe. Besprechung der 1. Aufgabe

1 Fehler in Bibliotheksfunktionen. 1 Überblick. 2 Ziele der Aufgabe. Besprechung der 1. Aufgabe U3 3. Übung U3 3. Übung U3-1 Fehlerbehandlung U3-1 Fehlerbehandlung Besprechung der 1. Aufgabe Fehlerbehandlung Infos zur Aufgabe 3: malloc-implementierung U3.1 Fehler können aus unterschiedlichsten Gründen

Mehr

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 9. Zeiger Arbeitsspeicher / Adressen Der Arbeitsspeicher des Computers (RAM) besteht aus einem Feld von Speicherzellen, beginnend bei Adresse

Mehr

Arrays (Felder/Vektoren)

Arrays (Felder/Vektoren) Arrays (Felder/Vektoren) Zusammenfassung mehrerer Variablen des gleichen Typs unter einem Namen im Speicher direkt hintereinander abgelegt Definition: Typname Arrayname [Größe]; Beispiel: int ar [5]; Zugriff

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

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

6 ZEIGER UND REFERENZEN - ALLGEMEINES

6 ZEIGER UND REFERENZEN - ALLGEMEINES 6 ZEIGER UND REFERENZEN - ALLGEMEINES Leitideen: Zeiger sind Adressen mit zusätzlicher Typinformation über das dort gespeicherte Objekt. Die Vereinbarungssyntax soll der Ausdruckssyntax entsprechen und

Mehr

Prozesse: Prozesskontrollblock, -steuerung, -umschaltung

Prozesse: Prozesskontrollblock, -steuerung, -umschaltung Proseminar: Konzepte von Betriebssystemkomponenten 3.11.03 Prozesse: Prozesskontrollblock, steuerung, umschaltung Überblick Prozesskontrollblock Prozesszustände Prozessumschaltung Prozesskontrollblock

Mehr

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3 Programmieren mit Java Modul 5 Objekte Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Klassen und Objekte 3 2.1 Klassen.................................... 4 2.2 Objektvariablen und Methoden.......................

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

Tag 8 Repetitorium Informatik (Java)

Tag 8 Repetitorium Informatik (Java) Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Tafelübung zu BS 2. Threadsynchronisation

Tafelübung zu BS 2. Threadsynchronisation Tafelübung zu BS 2. Threadsynchronisation 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

Teilprüfung Software- und Internettechnologie Programmierkurs 2 Wintersemester 2004/2005

Teilprüfung Software- und Internettechnologie Programmierkurs 2 Wintersemester 2004/2005 Universität Mannheim Fakultät für Mathematik und Informatik Lehrstuhl für Praktische Informatik IV Prof. Dr. Wolfgang Effelsberg Teilprüfung Software- und Internettechnologie Programmierkurs 2 Wintersemester

Mehr

Zeiger vom Typ void* benötigen weniger Speicher als andere Zeiger, da bei anderen Zeigertypen zusätzlich die Größe gespeichert werden muss.

Zeiger vom Typ void* benötigen weniger Speicher als andere Zeiger, da bei anderen Zeigertypen zusätzlich die Größe gespeichert werden muss. EZS-Test Fragen zur Programmiersprache C Fragen entnommen aus SPiC 1 1. Ein Hauptprogramm und eine Interruptbehandlung greifen nebenläufig auf die Variable uint16_t foo zu. Das Hauptprogramm verwendet

Mehr

K Ergänzungen zur Einführung in C

K Ergänzungen zur Einführung in C K Ergänzungen zur Einführung in C K Ergänzungen zur Einführung in C K.1 Zeiger, Felder und Zeichenketten Zeichenketten sind Felder von Einzelzeichen (char), die in der internen Darstellung durch ein \0

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

Extended Scope. Events und Mailboxen. Florian Franzmann Tobias Klaus Florian Korschin Florian Schmaus Peter Wägemann

Extended Scope. Events und Mailboxen. Florian Franzmann Tobias Klaus Florian Korschin Florian Schmaus Peter Wägemann Extended Scope Events und Mailboxen Florian Franzmann Tobias Klaus Florian Korschin Florian Schmaus Peter Wägemann Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme

Mehr

Dateioperationen Fachhochschule Würzburg-Schweinfurt Prof. Dr. Martin Ochs. Abspeichern und Einlesen von Texten (Strings) in Dateien

Dateioperationen Fachhochschule Würzburg-Schweinfurt Prof. Dr. Martin Ochs. Abspeichern und Einlesen von Texten (Strings) in Dateien Informatik I SS 2003 Dateioperationen 1 Textdateien, Öffnen Abspeichern und Einlesen von Texten (Strings) in Dateien 1. Das Öffnen einer Datei a) Deklaration eines Zeigers auf eine Datei FILE *pfile; b)

Mehr

Linux-Kernel- Programmierung

Linux-Kernel- Programmierung Michael Beck, Harald Böhme, Mirko Dziadzka, Ulrich Kunitz, Robert Magnus, Dirk Verworner, Claus Schröter Linux-Kernel- Programmierung Algorithmen und Strukturen der Version 2.2 5., aktualisierte und erweiterte

Mehr

Übung zu Betriebssystemtechnik

Übung zu Betriebssystemtechnik Übung zu Betriebssystemtechnik Nachrichtenaustausch und Copy-on-Write 11. Juni 28 Andreas Ziegler Bernhard Heinloth Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl

Mehr

Michael Dienert. 8. Dezember 2016

Michael Dienert. 8. Dezember 2016 C für Unverdrossene Michael Dienert 8. Dezember 2016 Vorbemerkung Natürlich könnte ich als erstes C-Programm Hello World nehmen. Um mit dem Kompiler zu spielen, kann man aber auch gleich einen sinnvolleren

Mehr

Beispiel / Übung: Prof. Dr. A. Christidis WS 2012/13

Beispiel / Übung: Prof. Dr. A. Christidis WS 2012/13 Beispiel / Übung: Erstellen Sie ein kurzes, plattform-unabhängiges C-Programm ( Konsolenanwendung ), das sich in die Reihe bereits gestarteter Kopien einordnet, sich nach 20 sec (Rechenzeit) abmeldet und

Mehr

55 Ring-Queue. size. push. clear. get. Reinhard Schiedermeier / Klaus Köhler, Das Java-Praktikum, dpunkt.verlag, ISBN

55 Ring-Queue. size. push. clear. get. Reinhard Schiedermeier / Klaus Köhler, Das Java-Praktikum, dpunkt.verlag, ISBN D3kjd3Di38lk323nnm 394 55 Ring-Queue In dieser Aufgabe wird eine generische Containerklasse definiert. Ihre Kapazität wird beim Erzeugen festgelegt, im Gegensatz zu den Klassen des Collection- Frameworks.

Mehr

Homogene Multi-Core-Prozessor-Architekturen

Homogene Multi-Core-Prozessor-Architekturen Homogene Multi-Core-Prozessor-Architekturen Praktikum Parallele Rechnerarchitekturen Stefan Potyra Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2009

Mehr

4.3 Directories / Filesysteme

4.3 Directories / Filesysteme I-Node H. Weber, FH Wiesbaden WS 2008/09 Systemprogrammierung Kap. 4.3 Seite 1 von 32 Hierfür gibt es eine ganze Reihe von Systemaufrufen und Subroutines. Wir beginnen mit chroot Root Directory ändern

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

Systemnahe Programmierung in C Übungen Jürgen Kleinöder, Michael Stilkerich Universität Erlangen-Nürnberg Informatik 4, 2011 U7.fm

Systemnahe Programmierung in C Übungen Jürgen Kleinöder, Michael Stilkerich Universität Erlangen-Nürnberg Informatik 4, 2011 U7.fm U7 POSIX-Prozesse U7 POSIX-Prozesse Prozesse POSIX-Prozess-Systemfunktionen Aufgabe 7 U7.1 U7-1 Prozesse: Überblick U7-1 Prozesse: Überblick Prozesse sind eine Ausführumgebung für Programme haben eine

Mehr

GERICHTETER GEWICHTETER GRAPH DESIGNDOKUMENT

GERICHTETER GEWICHTETER GRAPH DESIGNDOKUMENT User Requirements GERICHTETER GEWICHTETER GRAPH DESIGNDOKUMENT Softwareentwicklung Praktikum, Übungsbeispiel 1 Gruppe 18 Andreas Hechenblaickner [0430217] Daniela Kejzar [0310129] Andreas Maller [0431289]

Mehr

Ulrich Stein

Ulrich Stein Von C nach MATLAB Einführung in MATLAB für Personen mit C-Kenntnissen Datentypen ähnlich in C und MATLAB, dort aber automatische Typzuweisung möglich double a = 2; Arrays a = double( 2 ); aber auch a =

Mehr

Dateien (1) Datenströme

Dateien (1) Datenströme Dateien (1) Datenströme Standardbibliothek bietet sogenannte Datenströme (engl. Streams) Objekte, in die Informationen geschrieben oder von denen Daten gelesen werden können Zum Arbeiten mit Dateien benötigt

Mehr

Prozesse und Scheduling unter Linux (Kernel 2.4.XX)

Prozesse und Scheduling unter Linux (Kernel 2.4.XX) Prozesse und Scheduling unter Linux (Kernel 2.4.XX) Vorlesung: Dozent: Betriebssysteme Odej Kao Vortragende: Andrè Neubert Alexander Geburzi Überblick 1. Prozesse unter Linux ProcessControlBlock Prozessliste

Mehr

Hydroinformatik I: Referenzen und Zeiger

Hydroinformatik I: Referenzen und Zeiger Hydroinformatik I: Referenzen und Zeiger Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 06. Januar

Mehr

Implementierung eines Dateisystems für den transparenten Zugriff auf ein Versionskontrollsystem

Implementierung eines Dateisystems für den transparenten Zugriff auf ein Versionskontrollsystem eines Dateisystems für den transparenten Zugriff auf ein Versionskontrollsystem Präsentation zur Bachelorarbeit Jens M. Nödler Betreut durch Prof. Dr. Grabowski Institut für Informatik Georg-August-Universität

Mehr

G 5. Übung. G-1 Überblick. Besprechung 3. Aufgabe. Infos zur Aufgabe 5: fork, exec. Rechenzeiterfassung. Ü SoS I G.1

G 5. Übung. G-1 Überblick. Besprechung 3. Aufgabe. Infos zur Aufgabe 5: fork, exec. Rechenzeiterfassung. Ü SoS I G.1 G 5. Übung G 5. Übung G-1 Überblick Besprechung 3. Aufgabe Infos zur Aufgabe 5: fork, exec Rechenzeiterfassung G.1 G-2 Hinweise zur 5. Aufgabe G-2 Hinweise zur 5. Aufgabe Prozesse fork, exec exit wait

Mehr

Dateizugriff unter C

Dateizugriff unter C Begriffe Dateizugriff unter C Datei = sequentielle Ansammlung von Datenbytes, z.b. auf einer Festplatte Auch Bildschirm und Tastatur werden wie Dateien behandelt: Bildschirm ist die Datei stdout Tastatur

Mehr

PThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes

PThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes PThreads Prozesse und Threads Ein Unix-Prozess hat IDs (process,user,group) Umgebungsvariablen Verzeichnis Programmcode Register, Stack, Heap Dateideskriptoren, Signale message queues, pipes, shared memory

Mehr

U7 POSIX-Prozesse U7 POSIX-Prozesse

U7 POSIX-Prozesse U7 POSIX-Prozesse U7 POSIX-Prozesse U7 POSIX-Prozesse Prozesse POSIX-Prozess-Systemfunktionen Aufgabe 6 U7.1 U7-1 Prozesse: Überblick U7-1 Prozesse: Überblick Prozesse sind eine Ausführumgebung für Programme haben eine

Mehr

Treiber Netzwerktreiber

Treiber Netzwerktreiber Treiber Netzwerktreiber Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2010/2011 Treiber Netzwerktreiber 1/43 2010-10-08 Übersicht

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

Pthreads. David Klaftenegger. Seminar: Multicore Programmierung Sommersemester

Pthreads. David Klaftenegger. Seminar: Multicore Programmierung Sommersemester Seminar: Multicore Programmierung Sommersemester 2009 16.07.2009 Inhaltsverzeichnis 1 Speichermodell 2 3 Implementierungsvielfalt Prioritätsinversion 4 Threads Speichermodell Was sind Threads innerhalb

Mehr

Zeiger (1) Allgemeines

Zeiger (1) Allgemeines Zeiger (1) Allgemeines In C häufig verwendet zur Realisierung mancher Programmierkonzepte Sehr enge Verknüpfung von Zeigern und Feldern Vielseitiges Hilfsmittel, birgt allerdings auch Gefahren für Programmierfehler

Mehr

Threads. Netzwerk - Programmierung. Alexander Sczyrba Jan Krüger

Threads. Netzwerk - Programmierung. Alexander Sczyrba Jan Krüger Netzwerk - Programmierung Threads Alexander Sczyrba asczyrba@cebitec.uni-bielefeld.de Jan Krüger jkrueger@cebitec.uni-bielefeld.de Übersicht Probleme mit fork Threads Perl threads API Shared Data Mutexes

Mehr

Klausur Betriebssysteme

Klausur Betriebssysteme Prof. Dr. Michael Jäger FB MNI Klausur Betriebssysteme 5.2.2016 Die Dauer der Klausur beträgt 90 Minuten. Es sind keine Unterlagen und Hilfsmittel erlaubt. Bitte bearbeiten Sie die Aufgaben soweit wie

Mehr

Prozesse: Prozesskontrollblock, -zustände, -umschaltung

Prozesse: Prozesskontrollblock, -zustände, -umschaltung Prozesse: Prozesskontrollblock, -zustände, -umschaltung Vorweg sollte geklärt werden, was Prozess bedeutet, wenn man im Kontext über Betriebssystemen davon redet Ein Prozess ist ein Programm während der

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

I/O: Von der Platte zur Anwendung. Von Igor Engel

I/O: Von der Platte zur Anwendung. Von Igor Engel I/O: Von der Platte zur Anwendung Von Igor Engel 1 Gliederung 1 Einleitung 2 Übersicht 3 Systemaufrufe Beispiel in Unix 4 Dateien 4.1 Dateisysteme 4.2 Transport der Daten 5 Festplattentreiber 6 Festplattenkontroller

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

Ein-/Ausgabe, Dateisystem. Kapitel 9: Ein-/Ausgabe. Programmieren in C für Elektrotechniker. Programmieren in C. Dateisystem. Programmieren in C

Ein-/Ausgabe, Dateisystem. Kapitel 9: Ein-/Ausgabe. Programmieren in C für Elektrotechniker. Programmieren in C. Dateisystem. Programmieren in C für Elektrotechniker Kapitel 9: Dateisystem, Dateisystem E/A-Konzept in UNIX und C UNIX (und damit auch C) verwendet Datenströme (streams) als Konzept zur Verbindung von Programmen mit E/A-Geräten und

Mehr

Proseminar: Konzepte von Betriebsystem-Komponenten (KVBK)

Proseminar: Konzepte von Betriebsystem-Komponenten (KVBK) Proseminar: Konzepte von Betriebsystem-Komponenten (KVBK) Schwerpunkt Linux Interrupts, Softirqs, Tasklets, Bottom Halves Interrupts: Softirqs, Tasklets, Bottom Halves 1 Thomas Engelhardt Übersicht: Klassifizierung

Mehr

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN 3. UNIX/Linux-Dateisysteme und zugehörige Systemaufrufe und Kommandos (Teil I) Wintersemester 206/7 UNIX/Linux-Dateisystem(e) Systemaufrufe zur Dateiarbeit:

Mehr

Praxis der Programmierung

Praxis der Programmierung Funktionen, Header-Dateien, Pointer Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn 1 Organisatorische Bemerkungen 2 Modul Programmierung Pflichtmodul für BSc INF

Mehr

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN UNIX/Linux-Interprozesskommunikation 7. UNIX/Linux Pipes Wintersemester 2016/17 UNIX/Linux-IPC-Mechanismen Nachrichtenbasierter Informationsaustausch: 5. 1.

Mehr

Grundlagen der Informatik 6. Arrays I

Grundlagen der Informatik 6. Arrays I 6. Arrays I Motivation Array (konstante Länge) Speicherbereich Eingabe von Arrays Grundlagen der Informatik (Alex Rempel) 1 Motivation Beispiel: Bildschirmpixel zeichnen Auflösung 800x600, d.h. insgesamt

Mehr

Tafelübung zu BSRvS 1 3. Kreuzung

Tafelübung zu BSRvS 1 3. Kreuzung Tafelübung zu BSRvS 1 3. Kreuzung 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/ss2009/bsrvs1/

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

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

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstante und statische Elemente C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja

Mehr

Speicherklassen (1) Lokale Variablen

Speicherklassen (1) Lokale Variablen Speicherklassen (1) Lokale Variablen Lokale Variablen beschränken sich auf die Funktionen, in denen sie definiert werden Sind in der Funktion gekapselt können also nur in der Funktion verändert werden

Mehr

BACHELORARBEIT. Herr Frederic Ringsleben. Untersuchung programmierbarer Logik zur Unterstützung von Userspace-Programmen

BACHELORARBEIT. Herr Frederic Ringsleben. Untersuchung programmierbarer Logik zur Unterstützung von Userspace-Programmen BACHELORARBEIT Herr Frederic Ringsleben Untersuchung programmierbarer Logik zur Unterstützung von Userspace-Programmen 2013 Fakultät Mathematik/Naturwissenschaften/Informatik BACHELORARBEIT Untersuchung

Mehr

Zugriff auf die Modul-EEPROMs

Zugriff auf die Modul-EEPROMs MAX-P- und P-Bibliotheken EEPROM-Zugriff 1 Zugriff auf die Modul-EEPROMs Jedes X-Bus-Modul verfügt über ein EEPROM, in dem modulspezifische Daten gespeichert werden. Neben einigen Bereichen, die vom Betriebssystem

Mehr

4. Speicherverwaltung

4. Speicherverwaltung Tafelübung zu BSRvS1 4. Speicherverwaltung 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

4. Speicherverwaltung

4. Speicherverwaltung Tafelübung zu BSRvS1 4. Speicherverwaltung 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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung

Mehr

Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Moritz Strübe, Rainer Müller (Lehrstuhl Informatik 4) Sommersemester 2014

Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Moritz Strübe, Rainer Müller (Lehrstuhl Informatik 4) Sommersemester 2014 Übungen zu Systemnahe Programmierung in C (SPiC) Moritz Strübe, Rainer Müller (Lehrstuhl Informatik 4) Sommersemester 2014 Inhalt Prozesse System-Schnittstelle Aufgabe 7 Einlesen von der Standard-Eingabe

Mehr

F Zeiger, Felder und Strukturen in C

F Zeiger, Felder und Strukturen in C F Zeiger, Felder und Strukturen in C F Zeiger, Felder und Strukturen in C F.1 Zeiger(-Variablen) 1 Einordnung Konstante: Bezeichnung für einen Wert a 0110 0001 Variable: Bezeichnung eines Datenobjekts

Mehr

Programmiertechnik 1. Unit 12: Programmiersprache C - Betriebssystemschnittstellen. Andreas Polze 1

Programmiertechnik 1. Unit 12: Programmiersprache C - Betriebssystemschnittstellen. Andreas Polze 1 Programmiertechnik 1 Unit 12: Programmiersprache C - Betriebssystemschnittstellen Andreas Polze 1 Ablauf Zugriff auf Betriebssystemdienste Dateideskriptoren low-level I/O read and write open, creat, close,

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

8. Arbeiten mit Dateien

8. Arbeiten mit Dateien 8. Arbeiten mit Dateien www.c-programme.de Stefan Thiemert Kapitel 8 - Seite 1 von 6 8. 1. Allgemeines Bisher haben wir Daten, die wir in unseren Programmen erzeugt und verarbeitet haben, nur über den

Mehr

Übungen zu Systemnahe Programmierung in C (SPiC)

Übungen zu Systemnahe Programmierung in C (SPiC) Übungen zu Systemnahe Programmierung in C (SPiC) Peter Wägemann, Sebastian Maier, Heiko Janker (Lehrstuhl Informatik 4) Übung 8 Sommersemester 2015 Inhalt POSIX Verzeichnisschnittstelle opendir, closedir,

Mehr