Treiber Einfache Gerätetreiber
|
|
- Britta Huber
- 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 2010/2011 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 $ Treiber Einfache Gerätetreiber 5/
6 Exkurs: Geräteknoten-Verwaltung Problem Wer legt wann und mit welchen Meta-Daten die für meine Hardware nötigen Geräteknoten an? Lösungsmöglichkeiten statisch alle möglichen Geräteknoten werden einmal angelegt und bleiben erhalten, dynamisch Geräteknoten werden genau dann angelegt, wenn eine HW-Komponente erkannt wird. Treiber Einfache Gerätetreiber 6/
7 Exkurs: Geräteknoten-Verwaltung (2) Statische Geräteknoten Vorteil auf einfache Weise volle Kontrolle über Zuordnung Gerätenummer Knoten und Metadaten, Nachteile unflexibel bei neuartigen Geräten, unpraktisch bei Hot-Plugging, (zu) große Zahl möglicher Geräte. Treiber Einfache Gerätetreiber 7/
8 Exkurs: Geräteknoten-Verwaltung (3) Dynamische Geräteknoten Erkenntnis: Kernel weiß bereits, welche Geräte es gibt. Kernel kann das Anlegen von Geräteknoten veranlassen. Früher: devfs: spezielles Dateisystem Erzeugung findet nur im Kernelspace statt. Nachteile: Zuordnung Gerätenummer Knoten willkürlich, Benennung/Pfad kann vom Benutzer nicht ohne weiteres geändert werden, Zugriffsberechtigungen oft nicht passend. heute: udev(7). Treiber Einfache Gerätetreiber 8/
9 Exkurs: Geräteknoten-Verwaltung (4) udev udevd(8) läuft im Userspace, registriert sich beim Kernel, erhält Hot-Plug-Events, sobald der Kernel erkennt, dass Hardware zum System hinzugefügt wurde, aus dem System entfernt wurde, sich in ihren Eigenschaften geändert hat, benutzt sysfs (gemountet unter /sys) für weitere Informationen über das Gerät, durch Konfigurationsdateien unter /etc/udev/rules.d frei konfigurierbar. Treiber Einfache Gerätetreiber 9/
10 Exkurs: Geräteknoten-Verwaltung (5) Beispiel: udev-regeln KERNEL=="mouse[0-9]*", NAME="input/%k" KERNEL=="sr[0-9]*", ACTION=="add change", \ IMPORT{program}="cdrom_id --export $tempnode" SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", \ ATTR{address}=="00:19:99:2c:de:f2", \ ATTR{type}=="1", KERNEL=="eth*", \ NAME="eth0" Treiber Einfache Gerätetreiber 10/
11 Exkurs: Geräteknoten-Verwaltung (6) sysfs Bietet Informationen über: geladene Module, Geräteklassen, Bussysteme/Subsysteme, Geräte, orientiert sich an der Struktur der Kernel-Subsysteme (und somit an der Busstruktur). Treiber Einfache Gerätetreiber 11/
12 Gerät registieren register_chrdev #include <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 12/
13 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 13/
14 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 dhwk_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 ( dhwk_init ) ; Treiber Einfache Gerätetreiber 14/
15 Gerät entfernen unregister_chrdev #include <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 15/
16 Gerät entfernen (2) Beispiel s t a t i c void exit dhwk_exit ( void ) { u n r e g i s t e r _ c h r d e v (240, "DHWK" ) ; } module_exit ( dhwk_exit ) ; Treiber Einfache Gerätetreiber 16/
17 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 17/
18 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 18/
19 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 19/
20 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 20/
21 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 21/
22 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_ACCMODE) == O_RDWR ( i n s t a n c e >f _ f l a g s & O_ACCMODE) == 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 22/
23 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 23/
24 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_ACCMODE) == O_RDWR ( i n s t a n c e >f _ f l a g s & O_ACCMODE) == 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 24/
25 API: kmalloc kmalloc #include <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 25/
26 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 26/
27 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 27/
28 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 28/
29 API: copy_to_user copy_to_user #include <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 29/
30 (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 30/
31 Scheduling Treiber Einfache Gerätetreiber 31/
32 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 32/
33 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 33/
34 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 vent ( 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 ) ; i n t w a i t _ e v e n t _ k i l l a 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 34/
35 API: Wait-Queues (3) wait_event (2) #i n c l u d e <l i n u x / w a i t. h> void wait_event_timeout ( wait_queue_head_t q, c o n d i t i o n, long t i m e o u t ) ; 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 _ t i m e o u t ( wait_queue_head_t q, c o n d i t i o n, long t i m e o u t ) ; Wartet bis condition erfüllt oder timeout abgelaufen ist, Rückgabewert: 0 bei abgelaufenem Timer, verbleibende Restwartezeit bei erfüllter Bedingung, ggf. negativen Wert bei Abbruch/Fehler (typischerweise: -ERESTARTSYS). Treiber Einfache Gerätetreiber 35/
36 API: Wait-Queues (4) 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 36/
37 API: Wait-Queues (5) Beispiel s t a t i c i n t d a t a _ a v a i l ; s t a t i c wait_queue_head_t read_queue ;... d a t a _ a v a i l = 0 ; 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 37/
38 Treiberfunktionen und Signale Unterbrechung durch Signal Situation Systemcall (read(2), write(2), ioctl(2),... ; siehe signal(7)) wartet unterbrechbar. Problem Was passiert, wenn der Systemcall von einem Signal unterbrochen wird? Vorgehen wait-funktion kehrt mit -ERESTARTSYS zurück, kann der Systemcall identisch wiederholt werden, bzw. ein Zustand hergestellt werden, in dem das möglich ist, kehrt die Treiberfunktion mit -ERESTARTSYS zurück, wurden (bei Lese-/Schreib-Aufrufen) bereits Daten transferiert, kehrt die Treiberfunktion mit der Zahl der übertragenen Bytes zurück, Betriebssystem sorgt dann dafür, dass die Funktion ggf. erneut aufgerufen wird. Treiber Einfache Gerätetreiber 38/
39 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 39/
40 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 40/
41 API: copy_from_user copy_from_user #include <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 41/
42 API: Stringfunktionen Stringfunktionen #include <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 42/
43 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. ioctl_list(2)), 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 43/
44 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 44/
45 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 45/
46 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 46/
47 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 47/
48 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 48/
49 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 49/
50 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 50/
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 2007/2008 Treiber Einfache Gerätetreiber 1/42
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
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
MehrAufbau eines Kernelmoduls
Kernel Module Kernelmodul = ladbare/entfernbare Objektdatei (Dateisystem, Gerätetreiber, Systemeingriffe) Vorteile: Ressourcenverbrauch abhängig vom aktuellen Anforderungen Erweiterung der Kernelfunktionalität
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
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
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
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
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:
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
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
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)
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
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
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
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]:
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/
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
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
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/
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
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
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
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
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
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
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
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
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
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/
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
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
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
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
MehrSingle- und Multitasking
Single- und Multitasking Peter B. Ladkin ladkin@rvs.uni-bielefeld.de Peter B. Ladkin Command Interpreter (ComInt) läuft wartet auf Tastatur-Eingabe "liest" (parst) die Eingabe (für Prog-Name) Macht "Lookup"
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
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
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
MehrKonzepte und Methoden der Systemsoftware. Aufgabe 1: Polling vs Interrupts. SoSe bis P
SoSe 2014 Konzepte und Methoden der Systemsoftware Universität Paderborn Fachgebiet Rechnernetze Präsenzübung 3(Musterlösung) 2014-05-05 bis 2014-05-09 Aufgabe 1: Polling vs Interrupts (a) Erläutern Sie
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.
MehrProzesse: Prozesskontrollblock, -steuerung, -umschaltung
Proseminar: Konzepte von Betriebssystemkomponenten 3.11.03 Prozesse: Prozesskontrollblock, steuerung, umschaltung Überblick Prozesskontrollblock Prozesszustände Prozessumschaltung Prozesskontrollblock
MehrSequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden )
Threads Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden ) Ein thread bearbeitet eine sequentielle Teilaufgabe innerhalb eines Prozesses Mehrere nebenläufige
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
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:
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
MehrDateisystem. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2009
Dateisystem Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2009 Dateisystem 1/45 2009-05-11 Inhalt Platten (Hardware) Partitionen
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
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
Mehre) Welche Aussage zu Speicherzuteilungsverfahren ist falsch?
Aufgabe 1: (1) Bei den Multiple-Choice-Fragen ist jeweils nur eine richtige Antwort eindeutig anzukreuzen. Auf die richtige Antwort gibt es die angegebene Punktzahl. Wollen Sie eine Multiple-Choice-Antwort
MehrC++ - Objektorientierte Programmierung Konstruktoren und Destruktoren
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue
MehrU3 UNIX-Signale U3 UNIX-Signale
U3 UNIX-Signale U3 UNIX-Signale Besprechung der Aufgabe 2: sister Nebenläufigkeit durch Signale Aktives Warten auf Ereignisse Probleme beim passiven Warten (auf Signale) Nachtrag zur Signalbehandlungsschnittstelle
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
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
MehrAssignment #2. Virtueller Speicher Virtual Memory WS 2012/2013 IAIK 1
Assignment #2 Virtueller Speicher Virtual Memory WS 2012/2013 IAIK 1 Organisatorisches:Termine Ab Montag Tutorien 10.12.-14.12. Designdiskussionen 18.12. Abgabe Designdokument 18.1. Abgabe Implementierung
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
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
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
MehrBetriebssysteme Übung 2. Tutorium System Calls & Multiprogramming
Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming Task Wiederholung 1 System SysCalls (1) Wozu? Sicherheit Stabilität Erfordert verschiedene modes of execution: user mode privileged mode
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
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
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
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.......................
MehrProseminar Konzepte von Betriebssystemkomponenten
Proseminar Konzepte von Betriebssystemkomponenten Thema: Module von Michael Balda am 02.02.2004 1 Allgemeines zum Modulkonzept 1.1 Was sind Module? Wozu dient das Modulkonzept? Module sind Codeelemente,
Mehr(a) Wie unterscheiden sich synchrone und asynchrone Unterbrechungen? (b) In welchen drei Schritten wird auf Unterbrechungen reagiert?
SoSe 2014 Konzepte und Methoden der Systemsoftware Universität Paderborn Fachgebiet Rechnernetze Präsenzübung 2 2014-04-28 bis 2014-05-02 Aufgabe 1: Unterbrechungen (a) Wie unterscheiden sich synchrone
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:
MehrRepetitorium Programmieren I + II
Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 24. September 2012 Agenda 1 Funktionen Aufbau und Anwendung Call by Value Call by Reference Überladen von Funktionen Default
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
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!)
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
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 =
MehrC- Kurs 09 Dynamische Datenstrukturen
C- Kurs 09 Dynamische Datenstrukturen Dipl.- Inf. Jörn Hoffmann jhoffmann@informaak.uni- leipzig.de Universität Leipzig InsAtut für InformaAk Technische InformaAk Flexible Datenstrukturen Institut für
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
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,
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)
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
Mehr11. Die PC-Schnittstelle
PC-Schnittstelle Funktion -1. Die PC-Schnittstelle.1. Funktion Die folgenden Angaben gelten ohne Einschränkung für den PC, PC-XT, PC-AT, AT-386, AT-486 und kompatible Rechner. Sie sind nur für jene interessant,
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
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
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
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.
MehrVersionsverwaltung. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2009
Versionsverwaltung Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2009 Versionsverwaltung 1/22 2009-06-03 Inhalt Motivation
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
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
Mehr8. Referenzen und Zeiger
8. Referenzen und Zeiger Motivation Variable werden in C++ an speziellen Positionen im Speicher abgelegt. An jeder Position befindet sich 1 Byte. Sie sind durchnummeriert beginnend bei 0. Diese Positionen
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
MehrRepetitorium Programmieren I + II
Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case
MehrFILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam
Aktuelle Fileposition ermitteln long pos; pos=ftell(fp); //aktuelle Bytenummer Filelaenge in Bytes fseek(fp,0,seek_end); pos=ftell(fp); Fileendeerkennung int rc; rc = feof (fp) //!= 0 bei Fileende // ==
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
Mehr9. Dateisysteme. Betriebssysteme Harald Kosch Seite 164
9. Dateisysteme Eine Datei ist eine Abstraktion für ein Aggregat von Informationen (muß nicht eine Plattendatei sein). Aufbau eines Dateisystems: Katalog (Directory) Einzelne Dateien (Files) Zwei Aspekte
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/
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
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen 3.2 Auswahl an Stringfunktionen W. Tasin, M.Sc. Fakultät 04 tasin@hm.edu Allgemeines (1) Die ANSI-Norm definiert auch nützliche Funktionen zur ASCIIZ-Stringbearbeitung.
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, 08. Januar
MehrC- Kurs 08 Zeiger. Dipl.- Inf. Jörn Hoffmann leipzig.de. Universität Leipzig Ins?tut für Informa?k Technische Informa?
C- Kurs 08 Dipl.- Inf. Jörn Hoffmann jhoffmann@informa?k.uni- leipzig.de Universität Leipzig Ins?tut für Informa?k Technische Informa?k Überblick Datentyp zur Verwaltung von Adressen (auf Speicherplätze)
Mehr