Betriebssystembau (BSB)

Größe: px
Ab Seite anzeigen:

Download "Betriebssystembau (BSB)"

Transkript

1 Betriebssystembau (BSB) 3. Übung Olaf Spinczyk AG Eingebettete Systemsoftware Informatik 12, TU Dortmund

2 Agenda Traps Unterbrechungssynchronisation Aufgabe 2 Was macht startup.asm für uns? Was soll in Teil c) und d) passieren? Wiederholung: Referenzen in C++ Plugbox und Gate Aufgabe 3 Vorstellung Wiederholung: Zeiger in C++ Die (komische?) Queue-Klasse Betriebssystembau: 3. Übung 2

3 Agenda Traps Unterbrechungssynchronisation Aufgabe 2 Was macht startup.asm für uns? Was soll in Teil c) und d) passieren? Wiederholung: Referenzen in C++ Plugbox und Gate Aufgabe 3 Vorstellung Wiederholung: Zeiger in C++ Die (komische?) Queue-Klasse Betriebssystembau: 3. Übung 3

4 Interrupts und Traps Interrupts durch Hardware ausgelöste Ereignisse asynchron zum Programmablauf nicht vorhersagbar unterbrochener Programmablauf wird nach Bearbeitung wieder aufgenommen Traps durch Instruktion (direkt oder indirekt) ausgelöst synchron zum Programmablauf unterbrochener Programmablauf kann wieder aufgenommen oder auch abgebrochen werden Betriebssystembau: 3. Übung 4

5 Traps Überblick Traps werden von der CPU ausgelöst, wenn während der Ausführung der aktuellen Instruktion ein Problem festgestellt wird... Division durch Null Busfehler d.h., ein Programm generiert ungültige Adresse Betriebssystem-Eingriff erforderlich (z.b. Seitenfehler) ungültige Instruktion...oder aber auch, wenn die ausgeführte Instruktion direkt einen Trap hervorrufen soll int 0x80 syscall / sysenter Betriebssystembau: 3. Übung 5

6 (nochmal) i386 IDT: Aufbau IDT Traps Hardware/Software IRQs Einträge 0-31 für Traps (fest) Number Description 0 Divide-by-zero Trap = Ausnahme, die synchron 1 Debug exception 2 Non-Maskable Interrupt (NMI) zum Kontrollfluss auftritt 3 Breakpoint (INT 3) 4 Overflow Division durch 0 5 Bound exception Seitenfehler 6 Invalid Opcode 7 FPU not available Unterbrechungspunkt 8 Double Fault 9 Coprocessor Segment Overrun Invalid TSS 11 Segment not present 12 Stack exception Einträge für 13 General Protection IRQs (variabel) 14 Page fault 15 Reserved Software (INT <nummer>) 16 Floating-point error 17 Alignment Check Hardware (INT-Pin der CPU 18 Machine Check auf HIGH, Nummer auf Reserved By Intel Betriebssystembau: 2. Übung 6 Datenbus)

7 Traps Beispiele Division durch Null 1 int main() { 2 int i, j; 3 4 i=3; 5 j=0; 6 7 return i/j; 8 } $ gdb./divnull (gdb) run Program received signal SIGFPE, Arithmetic exception. 0x b in main () at divnull.c:7 7 return i/j; main: leal andl pushl pushl movl pushl subl movl movl movl movl sarl idivl addl popl popl leal ret 4(%esp), %ecx $-16, %esp -4(%ecx) %ebp %esp, %ebp %ecx $16, %esp $3, -12(%ebp) $0, -8(%ebp) -12(%ebp), %edx %edx, %eax $31, %edx -8(%ebp) $16, %esp %ecx %ebp -4(%ecx), %esp Betriebssystembau: 3. Übung 7

8 Traps Beispiele Schutzverletzung 1 int main() { 2 int *p; 3 4 p = (int *)0; 5 6 return *p; 7 } $ gdb./segfault (gdb) run Program received signal SIGSEGV, Segmentation fault. 0x f in main () at segfault.c:6 6 return *p; main: leal andl pushl pushl movl pushl subl movl movl movl addl popl popl leal ret 4(%esp), %ecx $-16, %esp -4(%ecx) %ebp %esp, %ebp %ecx $16, %esp $0, -8(%ebp) -8(%ebp), %eax (%eax), %eax $16, %esp %ecx %ebp -4(%ecx), %esp Betriebssystembau: 3. Übung 8

9 Agenda Traps Unterbrechungssynchronisation Aufgabe 2 Was macht startup.asm für uns? Was soll in Teil c) und d) passieren? Wiederholung: Referenzen in C++ Plugbox und Gate Aufgabe 3 Vorstellung Wiederholung: Zeiger in C++ Die (komische?) Queue-Klasse Betriebssystembau: 3. Übung 9

10 Race Conditions Wikipedia: A race condition [...] is a flaw in a system or process whereby the output of the process is unexpectedly and critically dependent on the sequence or timing of other events. [ Ursprung des Begriffs im Elektronikentwurf Betriebssystembau: 3. Übung 10

11 Race Conditions in Software Parallel ablaufende Vorgänge (Prozesse, Threads) verwenden gemeinsamen Status Beispiel: zwei gleichzeitig ablaufende Prozesse wollen den (ASCII-)Wert eines Zeichens im Bildschirmspeicher erhöhen. Die Prozesse sehen beide wie folgt aus: 1 int main(void) { 2 volatile unsigned char *p; 3 4 p = (unsigned char *)0xb8000; 5 6 (*p)++; 7 return 0; 8 }??? Betriebssystembau: 3. Übung 11

12 Race Conditions in Software Parallel ablaufende Vorgänge (Prozesse, Threads) verwenden gemeinsamen Status Beispiel: zwei gleichzeitig ablaufende Prozesse wollen den (ASCII-)Wert eines Zeichens im Bildschirmspeicher erhöhen. Die Prozesse sehen beide wie folgt aus: 1 int main(void) { 2 volatile unsigned char *p; 3 4 p = (unsigned char *)0xb8000; 5 6 (*p)++;!!! 7 return 0; 8 } Betriebssystembau: 3. Übung 12

13 Race Conditions in Software Die harmlos aussehende Instruktion *p++ ist nicht atomar! In Assembler sieht das wie folgt aus: main: leal 4(%esp), %ecx andl $-16, %esp pushl -4(%ecx) pushl %ebp movl %esp, %ebp pushl %ecx subl $16, %esp movl $753664, -8(%ebp) movl -8(%ebp), %eax 4 p = (...)0xb8000; movzbl (%eax), %eax leal 1(%eax), %edx 6 *p++; movl -8(%ebp), %eax movb %dl, (%eax) [...] popl %ecx popl %ebp leal -4(%ecx), %esp ret Betriebssystembau: 3. Übung 13 Interrupt und Kontextwechsel

14 Race Conditions in Software movl $753664, -8(%ebp) movl -8(%ebp), %eax movzbl (%eax), %eax leal 1(%eax), %edx movl movb Interrupt, führt zu Kontextwechsel -8(%ebp), %eax %dl, (%eax) 'A' = 0x41 'B' = 0x42 'B' = 0x42 movl $753664, -8(%ebp) movl -8(%ebp), %eax 'A' = 0x41 movzbl (%eax), %eax leal 1(%eax), %edx 'B' = 0x42 movl -8(%ebp), %eax movb %dl, (%eax) Das Resultat ist falsch (erwartet: 'C' = 0x43), weil der Compiler das Zeichen im Bildschirmspeicher in einem Register zwischengespeichert hat. Jeder Prozess ist dann von diesem Wert als aktuell ausgegangen. Wäre der Interrupt zwei Instruktionen vorher oder später aufgetreten, wäre das Ergebnis korrekt! Race Conditions sind schwer zu finden und zu debuggen! Betriebssystembau: 3. Übung 14

15 Konsistenzprobleme bei Interrupts Beispiel 1: Systemzeit hier schlummert möglicherweise ein Fehler... das Lesen von global_time erfolgt nicht notwendigerweise atomar! Beispiele aus der letzten Vorlesung 32-Bit-CPU: mov global_time, %eax 16-Bit-CPU (little endian): mov global_time, %r0; lo lo mov global_time+2, %r1; hi hi kritisch ist eine Unterbrechung zwischen den beiden Leseinstruktionen bei der 16-Bit-CPU Instruktion global_time Resultat hi hi // lo lo r1 r1 // r0 r0? 002A FFFF?? mov global_time, %r0 002A FFFF? FFFF /* /* Inkrementierung */ */ 002B 0000? FFFF mov global_time+2, %r1 002B B FFFF Beispiel 2: Ringpuffer auch die Pufferimplementierung ist kritisch... Ausführung Zustand 'a' 'a'?? char consume() { buf buf [0] [0] [1] [1] [2] [2] occ. occ. nextin nextin nextout int int elements = occupied; // // 1 if if (elements == == 0) 0) return 0; 0; char result = buf[nextout]; //'a' 'a' 'a'?? nextout++; nextout %= %= SIZE; buf buf [0] [0] [1] [1] [2] [2] occ. occ. nextin nextin nextout void produce(char data) { // // 'b' 'b' int int elements = occupied; // // 1! 1! if if (elements == == SIZE) return; buf[nextin] = data; 'a' 'a' 'b' 'b'? nextin++; nextin %= %= SIZE; occupied = elements + 1; 1; // // 2 buf buf [0] [0] [1] [1] [2] [2] occ. occ. nextin nextin nextout } occupied = elements 1; 1; // // 0 'a' 'a' 'b' 'b'? return result; // // 'a' 'a' buf buf [0] [0] [1] [1] [2] [2] occ. occ. nextin nextin nextout } Betriebssystembau: 3. Übung 15

16 Ursache Anwendungskontrollfluss (A) Kontrollflüsse von oben... main() Wir müssen (irgendwie) die Konsistenz sicherstellen. BS-Kern consume() buf[...] produce()... begegnen sich im Kern. handler()...und von unten... Unterbrechungsbehandlung (UB) Betriebssystembau: 3. Übung 16

17 Naiver Lösungsansatz Zweiseitige Synchronisation Zweiseitige Synchronisation funktioniert natürlich nicht! gegenseitiger Ausschluss durch Schlossvariable (Mutex, Spin-Lock,...) wie zwischen zwei Prozessen Anwendungskontrollfluss (A) main() BS-Kern consume() handler() buf[...] produce() Unterbrechungsbehandlung (UB) char consume() { mutex.lock();... char result = buf[nextout++];... mutex.unlock(); return result; } void produce(char data) { mutex.lock();... buf[nextin++] = data;... mutex.unlock(); } Betriebssystembau: 3. Übung 17

18 Besserer Lösungsansatz Einseitige Synchronisation Mit einseitiger Synchronisation funktioniert es... [warum eigentlich?] Unterdrückung der Unterbrechungsbehandlung im Verbraucher Operationen disable_interrupts() / enable_interrupts() (im Folgenden o.b.d.a. in Intel -Schreibweise: cli() / sti()) Anwendungskontrollfluss (A) main() BS-Kern consume() handler() buf[...] produce() Unterbrechungsbehandlung (UB) char consume() { cli();... char result = buf[nextout++];... sti(); return result; } void produce(char data) { // hier nichts zu tun... buf[nextin++] = data;... // hier nichts zu tun } Betriebssystembau: 3. Übung 18

19 Erstes Fazit Konsistenzsicherung zwischen Anwendungskontrollfluss (A) und Unterbrechungsbehandlung (UB) muss anders erfolgen als zwischen Prozessen. Die Beziehung zwischen A und UB ist asymmetrisch Es handelt sich um verschiedene Arten von Kontrollflüssen UB unterbricht Anwendungskontrollfluss implizit, an beliebiger Stelle hat immer Priorität, läuft durch (run-to-completion) A kann UB unterdrücken (besser: verzögern) explizit, mit cli / sti (Grundannahme 5 aus der letzten Vorlesung) Synchronisation / Konsistenzsicherung erfolgt einseitig Diese Tatsachen müssen wir beachten! (Das heißt aber Betriebssystembau: auch: Wir können sie 3. Übung ausnutzen) 19

20 Agenda Traps Unterbrechungssynchronisation Aufgabe 2 Was macht startup.asm für uns? Was soll in Teil c) und d) passieren? Wiederholung: Referenzen in C++ Plugbox und Gate Aufgabe 3 Vorstellung Wiederholung: Zeiger in C++ Die (komische?) Queue-Klasse Betriebssystembau: 3. Übung 20

21 i386 Interrupt-Deskriptortabelle (IDT) maximal 256 Einträge Basisadresse und Größe in IDTR 8 Byte pro Eintrag (Gate) Task-Gate (Hardwaretasks) Trap-Gate (Ausnahmehandler) Interrupt-Gate (Ausnahmehandler + cli) IDTR Betriebssystembau: 3. Übung 21

22 i386 Interrupt-Deskriptortabelle (IDT) maximal 256 Einträge [SECTION.data] ; 'interrupt Basisadresse descriptor und Größe table' in IDTR mit 256 Eintraegen. 8 Byte pro Eintrag (Gate) idt: %macro idt_entry Task-Gate (Hardwaretasks) 1 Trap-Gate dw (wrapper_%1 (Ausnahmehandler) - wrapper_0) & 0xffff dw 0x0008 Interrupt-Gate dw 0x8e00 (Ausnahmehandler + cli) dw ((wrapper_%1 - wrapper_0) & 0xffff0000) >> 16 %endmacro ;... wird automatisch erzeugt. %assign i 0 %rep 256 idt_entry i %assign i i+1 %endrep IDTR idt_descr: dw 256*8-1 ; idt enthaelt 256 Eintraege dd idt Betriebssystembau: 3. Übung 22

23 i386 Interrupt-Deskriptortabelle (IDT) maximal 256 Einträge [SECTION.data] ; 'interrupt Basisadresse descriptor und Größe table' in IDTR mit 256 Eintraegen. 8 Byte pro Eintrag (Gate) idt: %macro idt_entry Task-Gate (Hardwaretasks) 1 Trap-Gate dw (wrapper_%1 (Ausnahmehandler) - wrapper_0) & 0xffff dw 0x0008 Interrupt-Gate dw 0x8e00 (Ausnahmehandler + cli) dw ((wrapper_%1 - wrapper_0) & 0xffff0000) >> 16 %endmacro setup_idt: mov eax,wrapper_0 ; ax: niederwertige 16 Bit ;... wird automatisch erzeugt. mov ebx,eax shr ebx,16 ; bx: hoeherwertige 16 Bit %assign i 0 mov ecx,256 ; Zaehler %rep 256.loop: add [idt+8*ecx+0],ax idt_entry i adc [idt+8*ecx+6],bx %assign i i+1 IDTR dec ecx %endrep jge.loop idt_descr: lidt [idt_descr] dw 256*8-1 ; idt enthaelt 256 Eintraege ret dd idt Betriebssystembau: 3. Übung 23

24 Zustandssicherung Jede CPU besitzt einen internen Status, der nur einmal vorhanden ist repräsentiert als Registerinhalte Bei x86-prozessoren sieht dieser wie folgt aus: Komplette Sicherung (Stack): 14 Register == 56 Bytes! Betriebssystembau: 3. Übung 24

25 Beispiel (Linux arch/i386/kernel/entry.s) Implementation als Makro... wird häufiger benötigt :-) RESTORE_ALL entsprechend 87 #define SAVE_ALL \ 88 cld; \ 89 pushl %es; \ 90 pushl %ds; \ 91 pushl %eax; \ 92 pushl %ebp; \ 93 pushl %edi; \ 94 pushl %esi; \ 95 pushl %edx; \ 96 pushl %ecx; \ 97 pushl %ebx; \ 98 movl $( KERNEL_DS),%edx; \ 99 movl %edx,%ds; \ 100 movl %edx,%es; Betriebssystembau: 3. Übung 25

26 Beispiel (Linux arch/i386/kernel/entry.s) Verwendung z.b. im NMI-Handler: 332 ENTRY(nmi) 333 pushl %eax 334 SAVE_ALL 335 movl %esp,%edx 336 pushl $0 337 pushl %edx 338 call SYMBOL_NAME(do_nmi) 339 addl $8,%esp 340 RESTORE_ALL Betriebssystembau: 3. Übung 26

27 Kontextsicherung: Wer macht was? Kontextsicherung: eflags, cs und eip wurden bereits von der CPU gesichert alle weiteren Register müssen vom IRQ-Handler gesichert werden entweder im Assembler-Teil oder der Compiler generiert bereits entsprechenden Code Kontextsicherung beim Aufruf von Funktionen Lösung 1: Aufrufende Funktion sichert alle Register, die sie später noch braucht Lösung 2: Aufgerufene Funktion sichert alle Register, die sie verändert Lösung 3: Ein Teil der Register wird vom Aufrufer, ein anderer Teil vom Aufgerufenen gesichert Betriebssystembau: 3. Übung 27

28 Kontextsicherung in Hochsprachen In der Praxis wird Lösung 3 verwendet Grundsätzlich hängt das natürlich vom Compiler ab CPU-Hersteller definiert jedoch Konventionen, damit Interoperabilität auf Binärcodeebene sichergestellt ist Register werden in 2 Subsets aufgeteilt Flüchtige Register ( scratch registers ) Compiler geht davon aus, dass Unterprogramm den Inhalt verändert Aufrufer muss Inhalt gegebenenfalls sichern bei x86 sind eax, ecx, edx und eflags als flüchtig definiert Nichtflüchtige Register ( non-scratch registers ) Compiler geht davon aus, dass der Inhalt nicht verändert wird Aufgerufene Funktion muss Inhalt gegebenenfalls sichern bei x86 sind alle sonstigen Register als nicht-flüchtig definiert Interrupt-Handler müssen auch flüchtige Register sichern! Betriebssystembau: 3. Übung 28

29 Zustandssicherung im Wrapper ; Spezifischer Kopf der Unterbrechungsbehandlungsroutinen %macro wrapper 1 wrapper_%1: push eax mov al,%1 jmp wrapper_body %endmacro ;... wird automatisch erzeugt. %assign i 0 %rep 256 wrapper i %assign i i+1 %endrep ; Gemeinsamer Rumpf wrapper_body: cld ; das erwartet der gcc so. push ecx ; Sichern der fluechtigen Register push edx and eax,0xff ; Der generierte Wrapper liefert nur 8 Bits push eax ; Nummer der Unterbrechung uebergeben call guardian add esp,4 ; Parameter vom Stack entfernen pop edx ; fluechtige Register wieder herstellen pop ecx pop eax iret Betriebssystembau: ; fertig! 3. Übung 29

30 Initialisierung der PICs Teil 1 OO-Stubs Einstellung: Master Slave OO-Stubs Einstellung: Master Slave Betriebssystembau: 3. Übung 30

31 Initialisierung der PICs Teil 1 OO-Stubs Einstellung: Master Slave ; Neuprogrammierung der PICs (Programmierbare Interrupt-Controller), ; damit alle 15 Hardware-Interrupts nacheinander in der idt liegen. reprogram_pics: mov al,0x11 ; ICW1: 8086 Modus mit ICW4 out 0x20,al call delay out 0xa0,al call delay OO-Stubs Einstellung: mov al,0x20 ; ICW2 Master: IRQ Master # Offset (32) Slave out 0x21,al call delay mov al,0x28 ; ICW2 Slave: IRQ # Offset (40) out 0xa1,al call delay Betriebssystembau: 3. Übung 31

32 Mapping der HW-IRQs (OO-Stubs) IDT Traps HW <unbenutzt> Standard AT IRQ-Belegung IRQ 0 IRQ 1 IRQ 2 System Timer IRQ 3 COM 2 IRQ 4 COM 1 IRQ 5 Tastatur (Keyboard) PIC Kaskadierung IRQ 6 Floppy IRQ 7 LPT 1 IRQ 8 CMOS Echtzeituhr IRQ 9 (HW-Mapping von IRQ 2) IRQ10 IRQ11 IRQ12 IRQ13 numerischer Coprozessor IRQ14 1. IDE Port Betriebssystembau: 2. Übung 32 IRQ15 2. IDE Port PS/2

33 Initialisierung der PICs Teil 2 OO-Stubs Einstellung: Master Slave OO-Stubs Einstellung: Master Slave Betriebssystembau: 2. Übung 33

34 Initialisierung der PICs Teil 2 OO-Stubs Einstellung: Master Slave... mov al,0x04 ; ICW3 Master: Slaves an IRQs out 0x21,al call delay mov al,0x02 ; ICW3 Slave: Verbunden mit IRQ2 des Masters out 0xa1,al call delay mov al,0x03 ; ICW4: 8086 Modus und automatischer EIO out 0x21,al call delay OO-Stubs Einstellung: out 0xa1,al Master Slave call delay Betriebssystembau: 2. Übung 34

35 Programmierung der PICs Interruptmaske (IMR) schreiben und lesen über Port 0x21 / 0xa Betriebssystembau: 2. Übung 35

36 Programmierung der PICs Interruptmaske (IMR) schreiben und lesen über Port 0x21 / 0xa1... mov al,0xff ; Hardware-Interrupts durch PICs out 0xa1,al ; ausmaskieren. Nur der Interrupt 2, call delay ; der der Kaskadierung der beiden mov al,0xfb ; PICs dient, ist erlaubt. out 0x21,al ret Betriebssystembau: 2. Übung 36

37 Agenda Traps Unterbrechungssynchronisation Aufgabe 2 Was macht startup.asm für uns? Was soll in Teil c) und d) passieren? Wiederholung: Referenzen in C++ Plugbox und Gate Aufgabe 3 Vorstellung Wiederholung: Zeiger in C++ Die (komische?) Queue-Klasse Betriebssystembau: 3. Übung 37

38 Agenda Traps Unterbrechungssynchronisation Aufgabe 2 Was macht startup.asm für uns? Was soll in Teil c) und d) passieren? Wiederholung: Referenzen in C++ Plugbox und Gate Aufgabe 3 Vorstellung Wiederholung: Zeiger in C++ Die (komische?) Queue-Klasse Betriebssystembau: 3. Übung 38

39 Interrupthandler in OO-Stubs // ASSIGN: Einstoepseln einer Behandlungsroutine, die in Form eines Gate- // Objekts angegeben wird. void assign (unsigned int slot, Gate& gate); // REPORT: Abfrage eines eingetragenen Gate Objekts. Gate& report (unsigned int slot); Betriebssystembau: 3. Übung 39

40 Was sind C++ Referenzen? Sprachlich: Aliase für Objekte Technisch: Initialisierte und unveränderliche Zeiger Wenn eine Referenz initialisiert wird, wird automatisch die Adresse des Initialisierers gebildet. Wenn eine Referenz in einem Ausdruck benutzt wird, wird automatisch das referenzierte Objekte benutzt. int v1; int &ref = v1; int v2 = ref; int &f(int &refarg) { refarg = 42; return refarg; } int v1; int *ref = &v1; int v2 = *ref; int *f(int *refarg) { *refarg = 42; return &*refarg; } int v3 = f(v2); int v3 = *f(&v2); technisch äquivalent Betriebssystembau: 3. Übung 40

41 Agenda Traps Unterbrechungssynchronisation Aufgabe 2 Was macht startup.asm für uns? Was soll in Teil c) und d) passieren? Wiederholung: Referenzen in C++ Plugbox und Gate Aufgabe 3 Vorstellung Wiederholung: Zeiger in C++ Die (komische?) Queue-Klasse Betriebssystembau: 3. Übung 41

42 Aufgabe 3: Pro-/Epilog-Modell Die Hauptarbeit steckt in Guard Das Modell wird ausführlich in der kommenden Vorlesung besprochen Betriebssystembau: 3. Übung 42

43 Knifflige Zeiger: Queue in Aufgabe 3 Queue-Elemente erben von Chain Sie erben damit auch einen Zeiger auf das nächste Element Ein Queue-Objekte enthält class Chain { public: Chain* next; }; einen Zeiger auf das erste Element einen Zeiger auf einen Zeiger namens 'tail'!? class Queue { Chain* head; Chain** tail; public: Queue () { head = 0; tail = &head; } void enqueue (Chain* item); Chain* dequeue (); void remove (Chain*); }; Betriebssystembau: 3. Übung 43

44 Knifflige Zeiger: Queue in Aufgabe 3 'tail' ist ein Zeiger auf den 'next' Zeiger im letzten Element Das macht das Anhängen (enqueue) sehr einfach: q.enqueue(&e1) item->next = NULL; q NULL e1 'a' NULL e2 'b'? *tail = item; 'a' NULL 'b'? tail = &item->next; 'a' NULL 'b'? q.enqueue(&e2)... item->next = NULL; *tail = item; tail = &item->next; Betriebssystembau: 3. Übung 44 'a' 'b' NULL

45 Agenda Traps Unterbrechungssynchronisation Aufgabe 2 Was macht startup.asm für uns? Was soll in Teil c) und d) passieren? Wiederholung: Referenzen in C++ Plugbox und Gate Aufgabe 3 Vielen Dank für die Aufmerksamkeit! Vorstellung Wiederholung: Zeiger in C++ Die (komische?) Queue-Klasse Betriebssystembau: 3. Übung 45

Betriebssystembau. 3. Übung. Michael Engel Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund

Betriebssystembau. 3. Übung. Michael Engel Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund Betriebssystembau 3. Übung Michael Engel Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund michael.engel@tu-dortmund.de http://ess.cs.uni-dortmund.de/~me/ 1 Agenda: IRQ-Behandlung

Mehr

Übung zu Betriebssystembau (Ü BS)

Übung zu Betriebssystembau (Ü BS) Übung zu Betriebssystembau (Ü BS) Interruptbehandlung in OOStuBS Wanja Hofer Lehrstuhl für Informatik IV WS 07/08 1 Agenda: IRQ-Behandlung in OOStuBS Interrupts und Traps beim x86 Die Interrupt-Deskriptor-Tabelle

Mehr

Betriebssystembau (BSB)

Betriebssystembau (BSB) Betriebssystembau (BSB) 2. Übung http://ess.cs.tu-dortmund.de/de/teaching/ws2014/bsb/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware Informatik

Mehr

Betriebssysteme BS-V SS 2015. Hans-Georg Eßer. Foliensatz V: Ulix: Interrupts und Faults Ulix: System Calls. Dipl.-Math., Dipl.-Inform.

Betriebssysteme BS-V SS 2015. Hans-Georg Eßer. Foliensatz V: Ulix: Interrupts und Faults Ulix: System Calls. Dipl.-Math., Dipl.-Inform. BS-V Betriebssysteme SS 2015 Dipl.-Math., Dipl.-Inform. Foliensatz V: Ulix: Interrupts und Faults Ulix: System Calls v1.0, 2015/05/28 (klassische Dokumentation) Folie V-1 Übersicht: BS Praxis und BS Theorie

Mehr

Betriebssysteme (BS) Unterbrechungen - Synchronisation - Überblick: Vorlesungen. Agenda. Agenda. Anwendung(en) Hardware. Motivation / Problem

Betriebssysteme (BS) Unterbrechungen - Synchronisation - Überblick: Vorlesungen. Agenda. Agenda. Anwendung(en) Hardware. Motivation / Problem Betriebssysteme (BS) Überblick: Vorlesungen Daniel Lohmann Unterbrechungen - Synchronisation - Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Gerätezugriff (Treiber) Anwendung(en) Kontrollflussabstraktion

Mehr

Vorlesung 5: Interrupts

Vorlesung 5: Interrupts Universität Bielefeld Technische Fakultät AG Rechnernetze und verteilte Systeme Vorlesung 5: Interrupts Peter B. Ladkin Kommunikation über den Bus CPU läuft zu einer Taktfrequenz I/O Geräte laufen zu anderen

Mehr

Software ubiquitärer Systeme

Software ubiquitärer Systeme Software ubiquitärer Systeme 3. Übung Constantin Timm Arbeitsgruppe Entwurfsautomatisierung für Eingebettete Systeme Lehrstuhl für Informatik 12 TU Dortmund constantin.timm@cs.tu-dortmund.de http://ls12-www.cs.tu-dortmund.de/staff/timm/

Mehr

Assembler - Einleitung

Assembler - Einleitung Assembler - Einleitung Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Einleitung 1/19 2008-04-01 Teil 1: Hochsprache

Mehr

Assembler - Adressierungsarten

Assembler - Adressierungsarten Assembler - Adressierungsarten Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Adressierungsarten 1/31 2008-04-01

Mehr

Übung 1 - Betriebssysteme I

Übung 1 - Betriebssysteme I Prof. Dr. Th. Letschert FB MNI 13. März 2002 Aufgabe 0: Basiswissen Rechnerarchitektur: Übung 1 - Betriebssysteme I Aus welchen Komponenten besteht ein Rechner mit Von-Neumann Architektur? Was sind Bits

Mehr

Hinweise 80x86-Architektur

Hinweise 80x86-Architektur Hinweise 80x86-Architektur Rainer Müller Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2014/2015 R. Müller Hinweise 80x86-Architektur

Mehr

Betriebssystembau. 7. Übung. Michael Engel Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund

Betriebssystembau. 7. Übung. Michael Engel Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund Betriebssystembau 7. Übung Michael Engel Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund michael.engel@tu-dortmund.de http://ess.cs.uni-dortmund.de/~me/ 1 Agenda Coroutinen

Mehr

Assembler Unterprogramme

Assembler Unterprogramme Assembler Unterprogramme Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler Unterprogramme 1/43 2008-06-03 Unterprogramme

Mehr

2. Aufgabenblatt Musterlösung

2. Aufgabenblatt Musterlösung 2. Aufgabenblatt Musterlösung Technische Informatik II Sommersemester 2011 Problem 2: Assembler Syntax Register eines 32-bit Intel-Prozessors: 16 bits 8 bits 8 bits general purpose registers EAX Accumulator

Mehr

Aufgabe 1 Entwicklung einer Virtuellen Maschine

Aufgabe 1 Entwicklung einer Virtuellen Maschine Aufgabe 1 Entwicklung einer Virtuellen Maschine Rainer Müller Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2014/2015 R. Müller Entwicklung

Mehr

Aufgabe 2 - Erweiterung um PIC und Interrupts

Aufgabe 2 - Erweiterung um PIC und Interrupts Aufgabe 2 - Erweiterung um PIC und Interrupts Rainer Müller Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2014/2015 R. Müller Erweiterung

Mehr

3.2 Prozessumschaltung

3.2 Prozessumschaltung 3.2 Prozessumschaltung (dispatching) deaktiviert einen Prozess und aktiviert einen anderen. Wann? aktiver Prozess wird vom Prozessor verdrängt zugunsten eines bereiten Prozesses aktiver Prozess blockiert,

Mehr

GCC 3.x Stack Layout. Auswirkungen auf Stack-basierte Exploit-Techniken. Tobias Klein, 2003 tk@trapkit.de Version 1.0

GCC 3.x Stack Layout. Auswirkungen auf Stack-basierte Exploit-Techniken. Tobias Klein, 2003 tk@trapkit.de Version 1.0 1 GCC 3.x Stack Layout Auswirkungen auf Stack-basierte Exploit-Techniken Tobias Klein, 2003 tk@trapkit.de Version 1.0 2 Abstract Eine spezielle Eigenschaft des GNU C Compilers (GCC) der Version 3.x wirkt

Mehr

Karlsruher Institut für Technologie

Karlsruher Institut für Technologie Karlsruher Institut für Technologie Lehrstuhl für Programmierparadigmen Sprachtechnologie und Compiler WS 2010/2011 Dozent: Prof. Dr.-Ing. G. Snelting Übungsleiter: Matthias Braun Lösung zu Übungsblatt

Mehr

Assembler - Variablen

Assembler - Variablen Assembler - Variablen Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Variablen 1/30 2008-04-21 Variablen Variablen

Mehr

Systeme 1. Kapitel 9.2. Interaktion von Hardware und Betriebssystem Linux-Kernel und x86 Systeme

Systeme 1. Kapitel 9.2. Interaktion von Hardware und Betriebssystem Linux-Kernel und x86 Systeme Systeme 1 Kapitel 9.2 Interaktion von Hardware und Betriebssystem Linux-Kernel und x86 Systeme Speicherzugriffe auf x86 Systemen Auf x86 Systemen existieren drei Arten von Speicheradressen Logische Adresse

Mehr

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht Kap.2 Befehlsschnittstelle Prozessoren, externe Sicht 2.1 elementare Datentypen, Operationen 2.2 logische Speicherorganisation 2.3 Maschinenbefehlssatz 2.4 Klassifikation von Befehlssätzen 2.5 Ausnahmesituationen

Mehr

Übungen zur Vorlesung Systemsicherheit

Übungen zur Vorlesung Systemsicherheit Übungen zur Vorlesung Systemsicherheit Address Space Layout Randomization Tilo Müller, Reinhard Tartler, Michael Gernoth Lehrstuhl Informatik 1 + 4 19. Januar 2011 c (Lehrstuhl Informatik 1 + 4) Übungen

Mehr

Aufgabe 2 - Erweiterung um PIC und Interrupts

Aufgabe 2 - Erweiterung um PIC und Interrupts Aufgabe 2 - Erweiterung um PIC und Interrupts Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS2010/2011 Aufgabe 2 - Erweiterung um

Mehr

Einführung. Übungen zur Vorlesung Virtuelle Maschinen. Stefan Potyra. SoSe 2009

Einführung. Übungen zur Vorlesung Virtuelle Maschinen. Stefan Potyra. SoSe 2009 Einführung Übungen zur Vorlesung Virtuelle Maschinen Stefan Potyra Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SoSe 2009 Übungsaufgaben 1 Entwickeln

Mehr

Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note:

Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note: Name: Punkte: Note: Hinweise für das Lösen der Aufgaben: Zeit: 95 min. Name nicht vergessen! Geben Sie alle Blätter ab. Die Reihenfolge der Aufgaben ist unabhängig vom Schwierigkeitsgrad. Erlaubte Hilfsmittel

Mehr

Prozesse vs. Threads

Prozesse vs. Threads Prozesse vs. Threads Verwaltungsaufwand von Threads ist deutlich geringer Effizienzvorteil: bei einem Wechsel von Threads im gleichen Prozessraum ist kein vollständiger Austausch des Prozesskontextes notwendig.

Mehr

Interrupts. Funktionsprinzip. Funktionsprinzip. Beispiel in C

Interrupts. Funktionsprinzip. Funktionsprinzip. Beispiel in C Interrupts Funktionsprinzip Interrupts bei ATmega128 Beispiel in C Funktionsprinzip 1 Was ist ein Interrupt? C muss auf Ereignisse reagieren können, z.b.: - jemand drückt eine Taste - USART hat Daten empfangen

Mehr

Intel x86 Bootstrapping

Intel x86 Bootstrapping Intel x86 Bootstrapping Meine CPU, mein Code! Andreas Galauner SigInt 2010 Democode Es gibt Democode: http://github.com/g33katwork/ SigInt10OSWorkshop git clone git://github.com/g33katwork/ SigInt10OSWorkshop.git

Mehr

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 1 / 53 Inhaltsverzeichnis 1 Einführung 2 Assembler Syntax, Register und Flags 3 Hauptspeicher 4 Stack 5 Assemblerbefehle

Mehr

Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming

Betriebssysteme Ü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

Mehr

Einführung in (Intel) 80x86 Assembler. Einführung in (Intel) 80x86 Assembler Wintersemester 2008/09 1 / 26

Einführung in (Intel) 80x86 Assembler. Einführung in (Intel) 80x86 Assembler Wintersemester 2008/09 1 / 26 Einführung in (Intel) 80x86 Assembler Einführung in (Intel) 80x86 Assembler Wintersemester 2008/09 1 / 26 1 Geschichte 2 Programmiermodell 3 Befehlssatz 4 Konventionen 5 Beispiele 6 SSE 7 Literatur Einführung

Mehr

Mikrocomputertechnik. 6. Exceptionhandling ( Ausnahmebearbeitung)

Mikrocomputertechnik. 6. Exceptionhandling ( Ausnahmebearbeitung) 6. Exceptionhandling ( Ausnahmebearbeitung) Exception: Exception ist eine besondere Situation, auf die der Prozessor mit einem speziellen Programm (Exceptionroutine) reagieren muss. Das gerade ablaufende

Mehr

Systemprogrammierung

Systemprogrammierung Systemprogrammierung Rechnerorganisation: Maschinenprogramme Wolfgang Schröder-Preikschat Lehrstuhl Informatik 4 Ergänzende Materialien c wosch (Lehrstuhl Informatik 4) Systemprogrammierung SP1 # SS 2012

Mehr

System Monitoring mit strace. Systemcall tracing

System Monitoring mit strace. Systemcall tracing System Monitoring mit strace Systemcall tracing 1 Gliederung Einleitung: Was ist strace Grundlagen zu strace Kernel Kernelspace vs. Userspace Systemcalls ptrace Simple strace (Demo) strace die wichtigsten

Mehr

Grundlagen der Informatik III Wintersemester 2010/2011

Grundlagen der Informatik III Wintersemester 2010/2011 Grundlagen der Informatik III Wintersemester 2010/2011 Wolfgang Heenes, Patrik Schmittat 2. Aufgabenblatt mit Lösungsvorschlag 08.11.2010 Hinweis: Der Schnelltest und die Aufgaben sollen in den Übungsgruppen

Mehr

Hobby-Betriebssysteme unter Linux entwickeln

Hobby-Betriebssysteme unter Linux entwickeln Hobby-Betriebssysteme unter Linux entwickeln Hans-Georg Eßer Univ. Erlangen-Nürnberg h.g.esser@cs.fau.de Linux-Infotag 2013 Linux User Group Augsburg 23.03.2013 Was? Und warum? (1/2) Zahlreiche Projekte,

Mehr

Betriebssysteme. Interruptverarbeitung in Betriebssystemen. Sommersemester 2014 Prof. Dr. Peter Mandl. Prof. Dr. Peter Mandl Seite 1.

Betriebssysteme. Interruptverarbeitung in Betriebssystemen. Sommersemester 2014 Prof. Dr. Peter Mandl. Prof. Dr. Peter Mandl Seite 1. Interruptverarbeitung in n Sommersemester 2014 Prof. Dr. Peter Mandl Prof. Dr. Peter Mandl Seite 1 Gesamtüberblick 1. Einführung in 2. Betriebssystemarchitekturen und Betriebsarten 3. Interruptverarbeitung

Mehr

Hardware-Programmierung mit Linux/NASM

Hardware-Programmierung mit Linux/NASM Hardware-Programmierung mit Linux/NASM Daniel Grün 12. Februar 2007 Zusammenfassung Direkte Ansteuerung der Parallel-Schnittstelle mittels NASM unter Linux nur unter Einsatz von reinen Assembler-Routinen

Mehr

Embedded-Linux-Seminare. Linux als Betriebssystem

Embedded-Linux-Seminare. Linux als Betriebssystem Embedded-Linux-Seminare Linux als Betriebssystem http://www.embedded-linux-seminare.de Diplom-Physiker Peter Börner Spandauer Weg 4 37085 Göttingen Tel.: 0551-7703465 Mail: info@embedded-linux-seminare.de

Mehr

Betriebssysteme (BS) IA-32. Überblick. das Programmiermodell der Intel Architektur. Historie der Intel x86 Prozessoren. 8086: Programmiermodell

Betriebssysteme (BS) IA-32. Überblick. das Programmiermodell der Intel Architektur. Historie der Intel x86 Prozessoren. 8086: Programmiermodell Betriebssysteme (BS) alias Betriebssystembau (BSB) IA-32 das Programmiermodell der Intel Architektur Überblick Historie Basisprogrammiermodell Speicherverwaltung und Adressierung Schutz "Tasks" Zusammenfassung

Mehr

U5 Fortgeschrittene AVR-Programmierung

U5 Fortgeschrittene AVR-Programmierung U5 Fortgeschrittene AVR-Programmierung U5 Fortgeschrittene AVR-Programmierung Interrupts Synchronisation mit Unterbrechungsbehandlungen Stromsparmodi des AVR U5.1 U5-1 Externe Interrupts des AVR-μC U5-1

Mehr

x86 Open Source Virtualisierungstechniken Thomas Glanzmann <thomas@glanzmann.de>

x86 Open Source Virtualisierungstechniken Thomas Glanzmann <thomas@glanzmann.de> x86 Open Source Virtualisierungstechniken März 2006 Zu meiner Person Informatik Student an der Universität Erlangen im 9. Semester 4 jährige Mitarbeit an dem Projekt FAUmachine der

Mehr

Inhaltsverzeichnis. 1 Einleitung 2

Inhaltsverzeichnis. 1 Einleitung 2 Inhaltsverzeichnis 1 Einleitung 2 2 Installation 3 2.1 Windows............................................. 3 2.1.1 Yasm per Konsole nutzen............................... 3 2.1.2 Integration mit Visual

Mehr

Betriebssystembau (BSB)

Betriebssystembau (BSB) Betriebssystembau (BSB) Einführung https://ess.cs.tu-dortmund.de/de/teaching/ws2016/bsb/ Horst Schirmeier, Olaf Spinczyk horst.schirmeier@tu-dortmund.de https://ess.cs.tu-dortmund.de/~hsc AG Eingebettete

Mehr

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes Grundlagen der Informatik III Wintersemester 2010/2011 4. Vorlesung Dr.-Ing. Wolfgang Heenes int main() { printf("hello, world!"); return 0; } msg: main:.data.asciiz "Hello, world!".text.globl main la

Mehr

ARM Cortex-M Prozessoren. Referat von Peter Voser Embedded Development GmbH

ARM Cortex-M Prozessoren. Referat von Peter Voser Embedded Development GmbH ARM Cortex-M Prozessoren Referat von Peter Voser Embedded Development GmbH SoC (System-on-Chip) www.embedded-development.ch 2 Instruction Sets ARM, Thumb, Thumb-2 32-bit ARM - verbesserte Rechenleistung

Mehr

Multiprozessoren. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011

Multiprozessoren. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Multiprozessoren Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Multiprozessoren 1/29 2011-06-16 Multiprozessoren Leistungsfähigkeit

Mehr

Einführung in die technische Informatik

Einführung in die technische Informatik Einführung in die technische Informatik Christopher Kruegel chris@auto.tuwien.ac.at http://www.auto.tuwien.ac.at/~chris Betriebssysteme Aufgaben Management von Ressourcen Präsentation einer einheitlichen

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

2

2 TINF Interrupts EDT-Referat Jürgen Schwarzbauer 2ANB 1995/96 Inhalt : Was ist ein Interrupt? Zweck von Interrupts Maskierbare und nicht maskierbare Interrupts Aufruf eines Interrupts Anwendung von Interrupts

Mehr

Effizientes Memory Debugging in C/C++

Effizientes Memory Debugging in C/C++ Effizientes Memory Debugging in C/C++ Adam Szalkowski Embedded Computing Conference 2014 Ursachen/ Symptome Debugging Tools Ursachen / Symptome Was habe ich falsch gemacht? Was kann denn passieren im schlimmsten

Mehr

Betriebssystembau (BSB)

Betriebssystembau (BSB) Betriebssystembau (BSB) 6. Übung http://ess.cs.tu-.de/de/teaching/ws2013/bsb/ Olaf Spinczyk olaf.spinczyk@tu-.de http://ess.cs.tu-.de/~os AG Eingebettete System Informatik 12, TU Dortmund Agenda Vorstellung

Mehr

Technische Informatik 1 Übung 5: Eingabe/Ausgabe (Computerübung) Georgia Giannopoulou, ETZ G & 18.

Technische Informatik 1 Übung 5: Eingabe/Ausgabe (Computerübung) Georgia Giannopoulou, ETZ G & 18. Technische Informatik 1 Übung 5: Eingabe/Ausgabe (Computerübung) Georgia Giannopoulou, ETZ G77 ggeorgia@tik.ee.ethz.ch 17. & 18. November 2016 Inhalt Implementierung von Device-I/O mittels Polling und

Mehr

DHBW Stuttgart Mikrocomputertechnik Labor KEIL Entwicklungsumgebung. Projektstruktur

DHBW Stuttgart Mikrocomputertechnik Labor KEIL Entwicklungsumgebung. Projektstruktur Projektstruktur 25.10.12 K.Kraft D\MCT_Labor_2013\Dokumente\Projektdetails.odt 1 Typischer Aufbau eines 8051 Programms Start Adresse = 0003H External Interrupt 0 ISR Interrupt Service Routinen Start Adresse

Mehr

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg Compiler: Vom Code zum Maschinen-Code C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg Prof. Dr. Jan Dünnweber Zusammenhänge: C und Assembler Hochsprachen

Mehr

Betriebssysteme (BS)

Betriebssysteme (BS) Betriebssysteme (BS) VL 6 IA-32: Das Programmiermodell der Intel-Architektur Daniel Lohmann Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen Nürnberg

Mehr

Daniel Betz Wintersemester 2011/12

Daniel Betz Wintersemester 2011/12 Daniel Betz Wintersemester 2011/12 Digitally signed by daniel.betz@daniel-betz.com Date: 2011.12.04 17:24:40 +01'00' Insgesamt 16 Register von je 16 Bit (=WORD) Breite Untere 8 Register auch als 2 Register

Mehr

Kompatibilitätsmodi: Real Mode: - Segmentregister*16+Offset => Adresse - Keine Segmentdeskriptoren, kein Paging, - ~ 1 MB Adressraum.

Kompatibilitätsmodi: Real Mode: - Segmentregister*16+Offset => Adresse - Keine Segmentdeskriptoren, kein Paging, - ~ 1 MB Adressraum. 15.1.1 Kompatibilitätsmodi: Real Mode: - Segmentregister*16+Offset => Adresse - Keine Segmentdeskriptoren, kein Paging, - ~ 1 MB Adressraum. - 15. Hauptspeicher-Adressierung 15.1 Adressierungsmodi Virtual

Mehr

Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging

Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging Das Beispiel orientiert sich am selben Code, der im Teil 1 der Serie verwendet wurde. Text Styles: Shell Prompt mit

Mehr

Tafelübung zu BSRvS 1 6. Sicherheit

Tafelübung zu BSRvS 1 6. Sicherheit Tafelübung zu BSRvS 1 6. Sicherheit 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

11: Echtzeitbetriebssystem ucos-ii

11: Echtzeitbetriebssystem ucos-ii 11: Echtzeitbetriebssystem ucos-ii Sie lernen anhand aufeinander aufbauender Übungen, welche Möglichkeiten ein Echtzeitbetriebssystem wie das ucosii bietet und wie sich damit MC-Applikationen realisieren

Mehr

Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures

Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Vorbesprechung U8 Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Basistypen Alignment der Basistypen auf deren Grösse Grössen (abhängig

Mehr

Einführung in die Informatik Jumping into Java

Einführung in die Informatik Jumping into Java Einführung in die Informatik Jumping into Java Programme, Modelle, Objekte, Klassen, Methoden Wolfram Burgard Cyrill Stachniss 2.1 Java, eine moderne, objektorientierte Sprache Beispielprogramm: import

Mehr

B1 Stapelspeicher (stack)

B1 Stapelspeicher (stack) B1 Stapelspeicher (stack) Arbeitsweise des LIFO-Stapelspeichers Im Kapitel "Unterprogramme" wurde schon erwähnt, dass Unterprogramme einen so genannten Stapelspeicher (Kellerspeicher, Stapel, stack) benötigen

Mehr

Ein Laufzeitsystem für hochgradig parallele Simulationen

Ein Laufzeitsystem für hochgradig parallele Simulationen Ein Laufzeitsystem für hochgradig parallele Simulationen Luc Bläser ETH Zürich / LBC Informatik Seminar für Verkehrssimulation TU Berlin, 6. Juni 2008 Motivation Parallele Simulation Selbstaktive Agenten

Mehr

Betriebssysteme KU - Einführungstutorium

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

Mehr

U5-2 Register beim AVR-µC

U5-2 Register beim AVR-µC U5 4. Übungsaufgabe U5 4. Übungsaufgabe U5-2 Register beim AVR-µC U5-2 Register beim AVR-mC Grundlegendes zur Übung mit dem AVR-µC 1 Überblick Register Beim AVR µc sind die Register: I/O Ports Interrupts

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013. Vorlesung 9, Dienstag 18.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013. Vorlesung 9, Dienstag 18. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013 Vorlesung 9, Dienstag 18. Dezember 2012 (Performance Tuning, Profiling, Maschinencode) Prof. Dr.

Mehr

Hardware-basierte Virtualisierung

Hardware-basierte Virtualisierung Hardware-basierte Virtualisierung Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2011/2012 Hardware-basierte Virtualisierung 1/22

Mehr

Debuggen mit GDB (Gnu DeBugger) unter Eclipse

Debuggen mit GDB (Gnu DeBugger) unter Eclipse Debuggen mit GDB (Gnu DeBugger) unter Eclipse Boris Budweg, 16.11.2009 Version 0.4 Abstract: Kleine Einführung in die Bedienung des GDB über Eclipse und die Möglichkeiten eines Debuggers. Viele Screenshots

Mehr

Hardware-basierte Virtualisierung

Hardware-basierte Virtualisierung Hardware-basierte Virtualisierung Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2014/2015 V. Sieh Hardware-basierte

Mehr

Einleitung Die Pins alphabetisch Kapitel 1 Programmierung des ATmega8 und des ATmega

Einleitung Die Pins alphabetisch Kapitel 1 Programmierung des ATmega8 und des ATmega Einleitung... 11 Die Pins alphabetisch.... 12 Kapitel 1 Programmierung des ATmega8 und des ATmega328.... 15 1.1 Was Sie auf den nächsten Seiten erwartet... 19 1.2 Was ist eine Micro Controller Unit (MCU)?....

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

GdI2 - Systemnahe Programmierung in C Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2006 U4.fm

GdI2 - Systemnahe Programmierung in C Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2006 U4.fm U4 4. Übungsaufgabe U4 4. Übungsaufgabe Grundlegendes zur Übung mit dem AVR-µC Register I/O Ports Interrupts AVR-Umgebung U4.1 U4-1 Grundlegendes zur Übung mit dem AVR-mC U4-1 Grundlegendes zur Übung mit

Mehr

Welche Informatik-Kenntnisse bringen Sie mit?

Welche Informatik-Kenntnisse bringen Sie mit? Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt

Mehr

Technische Informatik 1

Technische Informatik 1 Technische Informatik 1 7 Prozesse und Threads Lothar Thiele Computer Engineering and Networks Laboratory Betriebssystem 7 2 7 3 Betriebssystem Anwendung Anwendung Anwendung Systemaufruf (syscall) Betriebssystem

Mehr

8. Referenzen und Zeiger

8. 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

Mehr

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems Mitglied der Zürcher Fachhochschule TIn 1: Lecture 4 Data transfer Feedback Laboratories Question: What is the IP? Why do we NEED an IP? Lecture 3: Lernziele Moving data, the why s and wherefores Moving

Mehr

Metaprogrammierung 372

Metaprogrammierung 372 Metaprogrammierung 372 thales$ g++ -c -fpermissive -DLAST=30 Primes.cpp 2>&1 fgrep In instantiation Primes.cpp: In instantiation of void Prime_print::f() [with int i = 29] : Primes.cpp: In instantiation

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

Dateien, die nicht in das Projekt eingebunden sind, werden ohne Syntax highlight dargestellt. MiCoWi und µvision Seite 1 Uwe Wittenfeld

Dateien, die nicht in das Projekt eingebunden sind, werden ohne Syntax highlight dargestellt. MiCoWi und µvision Seite 1 Uwe Wittenfeld C-Programmierung von MiCoWi mit der Keil-Entwicklungsumgebung µvision4 1. Erstellung eines neuen Projektes Menüpunkt: Project New µvision Project Es wird ein komplett neues Projekt in einem beliebigen

Mehr

1.7 Assembler Programmierung

1.7 Assembler Programmierung 1.7 Assembler Programmierung Die nach außen sichtbare Programmierschnittstelle eines Prozessors ist der Befehlscode. Dies ist eine binäre Dateninformation, die vom Prozessor Byte für Byte abgearbeitet

Mehr

Programmunterbrechungen

Programmunterbrechungen BS / Überblick Software/Hardware-Hierarchie, partielle Interpretation..................... 2 Programmunterbrechungen Unterbrechungsarten..................................................... 6 synchrone

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Sicheres C Programmieren in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011

Sicheres C Programmieren in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011 Sicheres C in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011 Dipl. Ing. (FH) Ebrecht Roland, Infineon Technologies AG M.Eng (Electronic Systems) Güller Markus, Infineon Technologies

Mehr

7 Ein einfacher CISC-Prozessor

7 Ein einfacher CISC-Prozessor 7 Ein einfacher CISC-Prozessor In diesem Kapitel wird ein einfacher Prozessor vorgestellt. Die Architektur, die wir implementieren, wurde von R. Bryant und D. O Hallaron entworfen und verwendet eine Untermenge

Mehr

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18 C++ Teil 5 Sven Groß 13. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 13. Mai 2016 1 / 18 Themen der letzten Vorlesung Funktionen Funktionsüberladung, Signatur Rekursion const-deklaration Referenzen

Mehr

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch Die wichtigsten Unterlagen/Tools Für das Praktikum Unterlagen/Kenntnisse/Tools wichtig: Datenblatt des AT80USB1287 µc Schaltplan des im Praktikum verwendeten

Mehr

Grundlagen der Informatik III Wintersemester 2010/2011

Grundlagen der Informatik III Wintersemester 2010/2011 Grundlagen der Informatik III Wintersemester 2010/2011 Wolfgang Heenes, Patrik Schmittat 9. Aufgabenblatt mit Lösungsvorschlag 17.01.2011 Hinweis: Der Schnelltest und die Aufgaben sollen in den Übungsgruppen

Mehr

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at 16.03.2011

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at 16.03.2011 Technische Universität Graz Institut tfür Angewandte Informationsverarbeitung und Kommunikationstechnologie Rechnerorganisation 2 TOY Karl C. Posch Karl.Posch@iaik.tugraz.at co1.ro_2003. 1 Ausblick. Erste

Mehr

1 Organisatorisches. 2 Compilezeit- und Laufzeitfehler. 3 Exceptions. 4 Try-Catch-Finally

1 Organisatorisches. 2 Compilezeit- und Laufzeitfehler. 3 Exceptions. 4 Try-Catch-Finally Themen der Übung CoMa-Übung VI 1 Organisatorisches Compilezeit- und Laufzeitfehler 3 Try-Catch-Finally TU Berlin 8.11.01 Bewertung der OA 5 fehlerhaft, Madeleine arbeitet dran CoMa-Übung VI (TU Berlin)

Mehr

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

C++ Notnagel. Ziel, Inhalt. Programmieren in C++ C++ Notnagel Ziel, Inhalt Ich versuche in diesem Dokument noch einmal die Dinge zu erwähnen, die mir als absolut notwendig für den C++ Unterricht und die Prüfungen erscheinen. C++ Notnagel 1 Ziel, Inhalt

Mehr

Heute nur MIPS-Praxis (4 Aufgaben)

Heute nur MIPS-Praxis (4 Aufgaben) Themen heute Heute nur MIPS-Praxis (4 Aufgaben) Hinweis: Diese Aufgaben findet ihr auf den Übungsblättern zu den Tutorien (bei Aufgabe 4 wurde eine Teilaufgabe und im Tutorium #6 bereits geklärte Wissensfragen

Mehr

C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14

C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14 C++ Teil 6 Sven Groß 27. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 27. Mai 2016 1 / 14 Themen der letzten Vorlesung Musterlösung A2 Wdh.: Zeiger und Felder Kopieren von Feldern Dynamische Speicherverwaltung

Mehr

Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester Lorenz Schauer Mobile & Verteilte Systeme

Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester Lorenz Schauer Mobile & Verteilte Systeme Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester 2016 Lorenz Schauer Mobile & Verteilte Systeme 12. Juli 2016 Agenda heute Grundlagen: Unterprogramme I Call-by-Value (CBV) vs. Call-by-Reference

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

Aufgaben zur IA32-Assembler-Programmierung

Aufgaben zur IA32-Assembler-Programmierung Aufgaben zur IA32-Assembler-Programmierung Prof. Dr. Ralf Möller AG Technische Informatik Technische Fakultät Universität Bielefeld www.ti.uni-bielefeld.de Version 1.15 vom 17. Februar 2011, SS 2011 SS

Mehr