Treiber Einfache Gerätetreiber
|
|
- Ilse Kruse
- vor 5 Jahren
- Abrufe
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 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
MehrTreiber 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
MehrAufbau eines Kernelmoduls
Kernel Module Kernelmodul = ladbare/entfernbare Objektdatei (Dateisystem, Gerätetreiber, Systemeingriffe) Vorteile: Ressourcenverbrauch abhängig vom aktuellen Anforderungen Erweiterung der Kernelfunktionalität
MehrEinschub: 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
MehrKonzepte 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
MehrSystemaufrufe. 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
MehrRechnerarchitektur 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
MehrTreiber 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
MehrHardware 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:
MehrHardware 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:
MehrKernel 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
MehrPraktikum 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
MehrU5 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)
MehrGerä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
MehrFilesystemserver. 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
MehrWas 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
MehrEinfü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
MehrVHDL 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
MehrTafelü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/
MehrBetriebssysteme 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]:
MehrC/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
MehrMMC/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
MehrProgrammiertechnik. 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
MehrGerä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
MehrTafelü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/
MehrKernel 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
MehrInformatik. 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
MehrHans-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
Mehr1 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
MehrProgrammiersprache 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
MehrArrays (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
MehrPROGRAMMIEREN 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!)
MehrProgrammierung 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
Mehr6 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
MehrProzesse: Prozesskontrollblock, -steuerung, -umschaltung
Proseminar: Konzepte von Betriebssystemkomponenten 3.11.03 Prozesse: Prozesskontrollblock, steuerung, umschaltung Überblick Prozesskontrollblock Prozesszustände Prozessumschaltung Prozesskontrollblock
MehrObjekte. 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.......................
MehrLinux-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:
MehrTag 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
MehrTafelü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/
MehrTeilprü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
MehrZeiger 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
MehrK 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
MehrIm 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
MehrExtended 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
MehrDateioperationen 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)
MehrLinux-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 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
MehrMichael 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
MehrBeispiel / Ü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
Mehr55 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.
MehrHomogene 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
Mehr4.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
MehrU23 - 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
MehrSystemnahe 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
MehrGERICHTETER GEWICHTETER GRAPH DESIGNDOKUMENT
User Requirements GERICHTETER GEWICHTETER GRAPH DESIGNDOKUMENT Softwareentwicklung Praktikum, Übungsbeispiel 1 Gruppe 18 Andreas Hechenblaickner [0430217] Daniela Kejzar [0310129] Andreas Maller [0431289]
MehrUlrich 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 =
MehrDateien (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
MehrProzesse 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
MehrHydroinformatik 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
MehrImplementierung 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
MehrG 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
MehrDateizugriff 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
MehrPThreads. 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
MehrU7 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
MehrTreiber 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
MehrProgrammiersprachen 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
MehrPthreads. 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
MehrZeiger (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
MehrThreads. 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
MehrKlausur 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
MehrProzesse: 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
MehrEinfü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:
MehrI/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
MehrEinfü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:
MehrEin-/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
MehrProseminar: 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
MehrPROGRAMMIEREN 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:
MehrPraxis 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
MehrPROGRAMMIEREN 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.
MehrGrundlagen 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
MehrTafelü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/
MehrLinux 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
MehrEin- 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
MehrC++ - 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
MehrSpeicherklassen (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
MehrBACHELORARBEIT. 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
MehrZugriff 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
Mehr4. 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/
Mehr4. 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/
MehrEinstieg 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) Moritz Strübe, Rainer Müller (Lehrstuhl Informatik 4) Sommersemester 2014 Inhalt Prozesse System-Schnittstelle Aufgabe 7 Einlesen von der Standard-Eingabe
MehrF 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
MehrProgrammiertechnik 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,
MehrEinfü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
Mehr8. 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) Peter Wägemann, Sebastian Maier, Heiko Janker (Lehrstuhl Informatik 4) Übung 8 Sommersemester 2015 Inhalt POSIX Verzeichnisschnittstelle opendir, closedir,
Mehr