EZStubs Entwicklungsumgebung. Intention

Größe: px
Ab Seite anzeigen:

Download "EZStubs Entwicklungsumgebung. Intention"

Transkript

1 Überblick EZStubs Entwicklungsumgebung Einführung Peter Ulbrich, Martin Hoffmann Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme) www4.informatik.uni-erlangen.de 25. Oktober 2010 Allgemein Vorbereitung SVN-Repository Verzeichnisstruktur Makefiles Startup Scheduler Ablaufkontrolle Tutorial F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 1 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 2 / 47 Intention Allgemein Vorbereitung SVN-Repository Initialisierung des SVN-Repositories Familie von Echtzeitbetriebssystemen etwas komplexere Klassenhierarchie trotzdem: Fokus eher auf Verständlichkeit denn auf Effizienz Entwickelt für diese Übungen Verfügbar für Lego RCX (H8/3297) Gameboy Advance (ARM7) Nintendo DS Lite (ARM9) hat noch die ein oder andere Schwäche Hinweis ergänzende Informationen findet man hier: 1. Das Repository auschecken: faui48a :~> svn co https : / / www4. informatik. uni erlangen. de :8088/ i4ezs / gruppe0 / ezstubs A ezstubs / branches A ezstubs / tags Checked out r e v i s i o n In das Verzeichnis ezstubs/trunk/aufgabe1 (Ü) bzw. ezstubs/branches/time_triggered (EÜ) wechseln faui48a :~> cd ezstubs / trunk / aufgabe1 / faui48a : ~ / ezstubs / t r u n k / aufgabe1 > 3. Die Datei gu_vorgabe_1.tar.gz (Ü) bzw. vorgabe_1.tar.gz (EÜ) entpacken: faui48a : ~ / ezstubs / trunk / aufgabe1> tar xzf gu_vorgabe1. tar. gz F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 3 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 4 / 47

2 Vorbereitung SVN-Repository Initialisierung des SVN-Repositories (Forts.) Vorbereitung Verzeichnisstruktur Das Verzeichnis ezstubs enthält folgende Unterverzeichnisse: 4. Dateien dem Repository hinzufügen: Hinweis faui48a : ~ / ezstubs / t r u n k / aufgabe1 > svn s t a t u s.? debug / arch_testing. h faui48a : ~ / ezstubs / t r u n k / aufgabe1 > svn add A debug / arch_testing. h faui48a : ~ / ezstubs / trunk / aufgabe1> svn commit. m Dateien aus vorgabe_1. tar. gz Adding debug / arch_testing. h T r a n s m i t t i n g f i l e data.. Committed r e v i s i o n 2. faui48a : ~ / ezstubs / t r u n k / aufgabe1 > Detaillierte Informationen zum Umgang mit SVN findet man unter: Name debug devices gen infra interrupt make object shutdown startup tests thread Beschreibung Bibliothek zum Schreiben von n. Enthält z.b. Makros und Funktionen zum gezielten Auslösen von Unterbrechungen, zur Zeitmessung oder um eine bestimmte Zeitspanne zu warten. Gerätetreiber. Hier finden sich alle Gerätetreiber, sowohl abstrakte Geräte, die eine einheitliche Schnittstelle zur Anwendung ermöglichen, als auch die Abbildung von real existierender Peripherie auf Software-Konstrukte. In diesem Verzeichnis landet alles, was in durch einen Aufruf von make erzeugt wird - Objektdateien, Doxygen-Dokumentation... Typdefinitionen für EZStubs und andere kleine Helfer, die in den sdateien von EZStubs verwendet werden, sich aber nicht sinnvoll zu anderen Modulen zuordnen lassen. Unterbrechungsbehandlung und. Alles was nötig ist, um EZStubs zu bauen. Eine kleine Hilfsbiblothek für EZStubs, enthält z.b. eine verkettete Liste. Alles was EZStubs herunterfährt. Alles was EZStubs zum starten benötigt. Der Thread-Abstraction-Layer. Hier findet man die Fadenimplementierung, den Dispatcher, den Scheduler... F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 5 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 6 / 47 Vorbereitung Makefiles Pfade in den Makefiles überprüfen/anpassen Vorbereitung Makefiles EZStubs administrative Targets In den Makefiles müssen drei Pfade korrekt gesetzt sein. Die passenden Werte für den CIP-Pool sind: Dateiname Variable Wert make/variables_arm.mk TOOL_PATH /proj/i4ezs/tools/gnuarm make/variables_arm_nds.mk GBA_DIR /proj/i4ezs/tools/gba make/variables_arm_nds.mk DESMUME_DIR /proj/i4ezs/tools/desmume Das EZStubs-Makefile implementiert folgende administrative Targets: Target Beschreibung help Gibt die verfügbaren Make-Targets zusammen mit einer Erläuterung auf der Konsole aus (entspricht in etwa dieser Tabelle). all Übersetzt den Quelltext von EZStubs und erzeugt die EZStubs- Bibliothek. abgabe Eine Aufgabe abgeben - die Aufgabe wird durch die Variable EXERCISE = aufgabex, x = 1,2,3,4,5 bestimmt. doxygen Erzeugt die HTML-Quelltext-Dokumentation. showtests Zeigt die verfügbaren an. buildtests Übersetzt und bindet alle verfügbaren. F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 7 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 8 / 47

3 Startup Startup Allgemein Scheduler set up Stack Pointer set up Interrupt Handler initialize data & bss invoke global constructors guard.enter() user_main() start Scheduler invoke global destructors Assembler main() start() 1. SP Register initialisieren: Interrupt Stack & System Stack Startup: nutzt den Interrupt Stack 2. bss & data initialisieren bss mit 0 beschreiben initialisierte Variablen kopieren 3. globale Konstruktoren ausführen 4. kritischen Abschnitt betreten 5. benutzerdefinierte main-funktion 6. Scheduler starten 7. globale Destruktoren ausführen 8. Ende (z.b. warten oder reset) Der Scheduler... verwaltet das Betriebsmittel CPU kann verschiedene Strategien bzw. Verfahren verwenden zeit-/ereignisgesteuert deterministisch/probabilistisch muss vom System aktiviert werden (sog. Points of Rescheduling) diese entscheiden über die Verdrängbarkeit von Fäden hat (in EZStubs) zwei verschiedene Schnittstellen Benutzerschnittstelle Systemschnittstelle stop(); F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 9 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 10 / 47 Benutzerschnittstelle Scheduler Warum? hängt von der konkreten des Schedulers ab z.b. Schedule_Table_Scheduler Ablauftabelle setzen Ablauftabelle wechseln z.b. Multilevel_Queue_Scheduler Faden aktivieren Faden beenden Kontrolle über den Prozessor abgeben Hinweis Die Systemschnittstelle ist Thema in Aufgabe 1 Unterbrechungen (nicht Traps!) treten asynchron auf sind nicht vorhersagbar in Häufigkeit und Zeitpunkt Problem: Wie soll der Zugriff auf gemeinsame Daten stattfinden? Beispiel: verkettete Liste: Queue Chain Chain Chain head tail F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 11 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 12 / 47

4 Verkettete Liste Verkettete Liste - enqueue() überlappt enqueue() Klasse Chain, Klasse Queue class Chain Chain ; class Queue protected : Chain head ; Chain t a i l ; Queue ( ) head = 0; t a i l = &head ; void enq ( Chain item ) ; Chain deq ( ) ; void Queue : : enq ( Chain item ) item > = 0; t a i l = item ; t a i l = &( item > ) ; Chain Queue : : deq ( ) Chain item ; item = head ; i f ( item ) head = item > ; i f (! head ) t a i l = &head ; else item > = 0; return item ; unterbrochenes Programm item > = 0; *tail = item; Unterbrechung tail = &( item >); Unterbrechungs behandlung item > = 0; *tail = item; tail = &( item >); Queue Chain Chain head tail Queue Chain Chain head tail Queue Chain Chain head tail Queue Chain Chain head tail F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 13 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 14 / 47 ISR-/DSR-Synchronisation Unterbrechungsbehandlung Klasse Gate: Grundlage für die Lösung: Aufteilung der Unterbrechungsbehandlung ISR (Interrupt Service Routine) werden asynchron zum Programm ausgeführt dürfen keine gemeinsamen Datenstrukturen modifizieren können die Ausführung einer DSR anfordern DSR (Deferred Service Routine) werden synchron zum Programm ausgeführt dürfen gemeinsame Datenstrukturen modifizieren Ausführung der DSRs kann verhindert/verzögert werden Klasse Gate class Gate / / ISR / / Rueckgabewert t r u e : fuehre DSR aus / / Rueckgabewert f a l s e : fuehre DSR n i c h t aus v i r t u a l bool i s r ( ) = 0; / / DSR v i r t u a l void dsr ( ) = 0; / / Setze I n t e r r u p t Quelle zurueck v i r t u a l void acknowledge ( ) = 0; F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 15 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 16 / 47

5 Synchronisation Synchronisation - Scoped Locking Klasse Guard sichert kritische Abschnitte Klasse Guard class Guard / / Aufrufe von enter ( ) und leave ( ) muessen / / immer paarweise e r f o l g e n / / Betrete einen k r i t i s c h e n A b s c h n i t t / / unterbinde Ausfuehrung von DSRs void enter ( ) ; / / Verlasse einen k r i t i s c h e n A b s c h n i t t / / Fuehre anstehende DSRs aus void leave ( ) ; Klasse Secure class Secure Secure ( ) guard. enter ( ) ; ~Secure ( ) guard. leave ( ) ; Verwendung void d o _ s o m e t h i n g _ c r i t i t i c a l ( ) Secure secure ; / / do c r i t i c a l s t u f f F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 17 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 18 / 47 Unterbrechung - Ablauf Unterbrechung - Ablauf (secured) Handler Gate::isr() Guard::relay(Gate*) Handler Guard::enter() OS Guard::leave() Gate::isr() Guard::relay(Gate*) Gate::dsr() wrapper() guardian() Guard::enter() OS wrapper() guardian() Guard::leave() Handler App Gate::dsr() Guard::enter() OS Guard::leave() OS App F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 19 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 20 / 47

6 Warum? Wie? Wann? Wo? Was ist ein Testfall? Funktioniert das Programm? Testen andere Verifikationsmethoden (formal, ) sind einfach! feingranular testen nur eine Funktion eure unterstützen den Entwickler stehen bald zur Verfügung sind hierarchisch strukturiert unsere sind Abnahmetests Testen das fertige Produkt sind u.u. relativ komplex Ein Testfall ist eine kleine Anwendung für das EZStubs-Betriebssystem ist eine Ansammlung von Funktionen, die vom Betriebssystem aufgerufen werden: die Methode void action() eines Fadens die Methoden bool isr() und void dsr() einer Unterbrechungsbehandlung Callback-Funktionen von Alarmen beginnt immer in der Funktion user_main() F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 21 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 22 / 47 Beispiel Beispiel (Forts.) / / e v t l. benoetigte Header werden eingebunden # include " thread / guarded_scheduler. h " #include " thread / thread. h " #include " debug / t e s t i n g. h " #include " thread / schedule_table. h " / / Aufzeichnung des V e r laufs wird i n i t i a l i s i e r t char test_sequence [ 4 ] ; const char right_sequence = " aba " ; v o l a t i l e i n t counter = 0; / / Fadenimplementierung f u e r den T e s t f a l l, e n t h a e l t / / die Anwendungslogik des T e s t f a l l s class MyThread : public Thread private : char thread_char ; MyThread ( char c ) : thread_char ( c ) void a c t i o n ( ) test_sequence [ counter ++] = thread_char ; scheduler. e x i t ( ) ; F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 23 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 24 / 47

7 Beispiel (Forts.) Beispiel (Forts.) / / der Checker_Thread ueberprueft abschliessend die Sequenz class CheckerThread : public Thread CheckerThread ( ) void a c t i o n ( ) i f (! check_sequence ( right_sequence, test_sequence ) ) Panic ( " Test f a i l e d! " ) ; else TestOK ( " Test successful! " ) ; scheduler. e x i t ( ) ; / / Stack a l l o k i e r e n, A b l a u f t a b e l l e und Faeden anlegen s t a t i c unsigned i n t stack [ ] ; Schedule_Table <4> t a b l e (& stack [ ], ) ; MyThread T1 ( a ) ; MyThread T2 ( b ) ; CheckerThread Tchecker ; / / Faeden hinzufuegen, Tabelle uebergeben und Scheduler s t a r t e n void user_main ( ) init_ sequence ( right_sequence, test_sequence ) ; t a b l e. add ( 0, &T1 ) ; t a b l e. add (1000, &T2 ) ; t a b l e. add (2000, &T1 ) ; t a b l e. add (3000, &Tchecker ) ; scheduler. set_schedule_table (& t a b l e ) ; F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 25 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 26 / 47 Wann ist ein Test erfolgreich? Ablaufkontrolle Verlauf protokollieren Ablaufkontrolle Testfall erfolgreich: TestOK("Message"); alle API-Aufrufe haben sich wie erwartet Verhalten (Seiteneffekte, Rückgabewerte, ). bei mehrfädigen n entspricht der tatsächliche dem vorgesehenen Ablauf. Testfall fehlgeschlagen: Panic("Message"); falscher Rückgabewert fehlender oder nicht-erwarteter Seiteneffekt falscher Verlauf des Testfalls Idee: Vergleiche Sollsequenz gegen eine aufgezeichnete Sequenz Aufzeichnen der Sequenz: const char right_sequence = " abcd " ; / / Sollsequenz char sequence [ 4 ] ; / / aufgezeichnete Sequenz v o l a t i l e i n t counter = 0; / / wohin kommt der Buchstabe / / i n der Sequenz sequence [ counter ++] = a ; / / Sequenz aufzeichnen i f (! check_sequence ( right_sequence, sequence ) ) / / Sequenz Panic ( " Wrong sequence! " ) ; / / ueberpruefen TestOK ( " Test successful f i n i s h e d! " ) ; F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 27 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 28 / 47

8 Verlauf protokollieren (Forts.) Ablaufkontrolle Achtung: Jede Abweichung vom vorgesehenen Ablauf muss sich in der Sequenz bemerkbar machen: Ablaufkontrolle Testfall übersetzen und ausführen Das EZStubs-Makefile implementiert folgende Targets: const char right_sequence = " abcd " ; / / Sollsequenz char sequence [ 4 ] ; / / aufgezeichnete Sequenz void MyThread1 : : a c t i o n ( ) sequence [ counter ++] = a ; / / Sequenz aufzeichnen scheduler. e x i t ( ) ; / / dieses Statement s o l l t e nie e r r e i c h t werden sequence [ counter ++] = x ; oder anderweitig erkannt werden: void MyThread1 : : a c t i o n ( ) scheduler. e x i t ( ) ; Panic ( " Should not come here! " ) ; Target <test>.elf <test>.clean <test>.sim_exec <test>.sim_gdb <test>.sim_ddd <test>.target_exec <test>.target_debug checkalltests_sim Beschreibung Übersetzt und bindet den Testfall <test>. Räumt den Testfall <test> auf. Führt den Testfall <test> auf dem DeSmuME aus. Startet den DeSmuME, startet den GDB-Debugger und lädt den Testfall <test> in den DeSmuME. Startet den DeSmuME, startet den DDD-Debugger und lädt den Testfall <test> in den DeSmuME. Lädt den Testfall <test> auf den Nintendo DS Lite und führt in dort aus (diese Option steht für den Nintendo DS Lite leider nicht zur Verfügung). Startet den DDD-Debugger und lädt den Testfall <test> in den Nintendo DS Lite (diese Option steht für den Nintendo DS Lite leider nicht zur Verfügung). Übersetzt und bindet alle und führt sie anschließend auf dem Simulator aus. Die Testfallergebnisse werden protokolliert und angezeigt. F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 29 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 30 / 47 Überblick Klasse Gate + isr() : bool + dsr() TM_0 Interrupt_ + period() : us_type + period(period : us_type) : us_type + trigger_single() + trigger_periodical() + cancel() TM_1 TM + tick() : ns_type + tick(tick : ns_type) : ns_type + value() : tick_type + max_value() : tick_type + start() + stop() + start_time() + stop_time() + get_time() : us_type TM_2 TM_3 auf dem NDS 4 TM_0,1,2,3 für den ARM7 4 TM_0,1,2,3 für den ARM9 alle sind identisch 16 bit Zählerregister kaskadierbar zu 32, 48 und 64 bit Unterbrechung beim Überlauf Klasse Zeitmessung Klasse Interrupt_ Eieruhr Erzeugung von Unterbrechungen single-shot oder zyklisch ns_type tick() und ns_type tick(ns_type) Dauer eines Zählschritts wie lange dauert es, bis das Zählerregister inkrementiert wird nicht alle Zeitspannen darstellbar Rückgabewert invalidiert us_type period(us_type) tick_type value() und tick_type max_value() aktuellen/maximal möglichen Wert des Zählerregisters abfragen void start() und void stop() Zählvorgang starten und stoppen void start_time() und void stop_time() Zeitmessung starten und stoppen us_type get_time() Ergebnis der letzten Zeitmessung abfragen F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 31 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 32 / 47

9 Klasse Interrupt_ Beispiel: Verwendung des Interrupt s us_type period() und us_type period(us_type) Dauer bis zur nächsten Unterbrechung ab dem nächsten Aufruf von trigger_ single, periodical () nicht alle Zeitspannen darstellbar Rückgabewert es darf keine Unterbrechung erzeugt werden vorher cancel() invalidiert ns_type tick (ns_type) void trigger_single() Erzeugen einer Unterbrechung void trigger_periodical() Periodisches Erzeugen von Unterbrechungen void cancel() das Erzeugen der Unterbrechungen wird gestoppt der wird angehalten class My : public TM_2 bool i s r ( ) acknowledge ( ) ; dosomething = true ; return false ; / / Keine DSR void dsr ( ) / / B l e i b t l e e r My t e s t _ t i m e r ; / / anlegen void user_main ( ) / / Z u f a e l l i g e Periode generieren und k o n f i g u r i e r e n random_init ( ) ; us_type rand = random ( ) % ; t e s t t i m e r. period ( rand ) ; t e s t t i m e r. t r i g g e r _ s i n g l e ( ) ; / / Einmalige Ausloesung nach rand F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 33 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 34 / 47 Beispiel: Zeitmessung Den Testfall im Debugger (DDD) ausführen My t e s t _ t i m e r ; / / anlegen class MyThread : public Thread bool a c t i o n ( ) t e s t _ t i m e r. stop_time ( ) ; / / Zeitmessung stoppen kout << " Zeitmessung : " << t e s t _ t i m e r. get_time ( ) ; scheduler. e x i t ( ) ; MyThread T1 ; void user_main ( ) t e s t _ t i m e r. t i c k (5000) ; / / Z a e h l e r i n t e r v a l l f e s t l e g e n t e s t _ t i m e r. s t a r t ( ) ; / / Zaehler s t a r t e n schedule_table. add (500, &T1 ) ; t e s t _ t i m e r. s t a r t _ t i m e ( ) ; / / Zeitmessung s t a r t e n Debugger starten und den Testfall laden: make t e s t s / thread / Scheduler / RoundRobin / t e s t 1 / t e s t 1. sim_ddd die Ausführung des Testfalls starten: Cont-Button klicken auf der GDB-Konsole folgendes eingeben: ( gdb ) cont Achtung Der Run-Button bzw. ( gdb ) run wird nicht funktionieren! F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 35 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 36 / 47

10 Den Testfall neu starten ohne den DDD zu beenden zunächst muss man die Verbindung zum GDB-Stub trennen ( gdb ) detach erneut eine Verbindung aufbauen (<PORT> steht in der Ausgabe von make) Debugger neu starten Manchmal kann es vorkommen, dass der GDB-Stub bzw. der desmume sich komisch verhält. Man hat dann drei Möglichkeiten: 1. DDD beenden und den Testfall erneut laden Breakpoints und Watches gehen verloren 2. nur den GDB beenden den arm-elf-gdb beenden ( gdb ) t a r g e t remote l o c a l h o s t : <PORT> k i l l a l l arm e l f gdb das Testfallprogramm laden DDD wird das bemerken und folgender Dialog erscheint load das hat einige Vorteile: Breakpoints und Watches bleiben erhalten auf den Restart GDB -Button klicken F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 37 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 38 / 47 Debugger neu starten 3. den kompletten DDD neu starten aus dem Menü File die Option Restart auswählen Breakpoints setzen durch einen Doppelklick ins Quelltextfenster auf der GDB-Konsole für eine bestimmte Funktion ( gdb ) break <function_name > ( gdb ) break <file_name >: < l i n e > Achtung Auf eingebettete Funktionen kann man keinen Breakpoint setzen! F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 39 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 40 / 47

11 Bedingungen für Breakpoints Bevor das Programm an einem Breakpoint tatsächlich angehalten wird, kann man (a) den Breakpoint n-mal ignorieren (b) auf die Erfüllung einer Bedingung warten. aus dem Quelltextfenster heraus Bedingungen für Breakpoints (Forts.) Achtung bedingte Breakpoints können Ein-/Ausgabe-Operationen zur Folge haben, die das Laufzeitverhalten des Programms beeinflussen können. auf der GDB-Konsole ( gdb ) ignore <breakpoint_ nr > <n> # ( a ) ( gdb ) c o n d i t i o n <breakpoint_nr > runs == 7 # ( b ) F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 41 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 42 / 47 Sinnvolle Stellen für Breakpoints Weitere Möglichkeiten, das Programm zu kontrollieren Warum wird mein DSR nicht ausgeführt? Breakpoint auf 1. wrapper_body Wurde ein IRQ ausgelöst? 2. void guardian(unsigned int) Welches Gerät? 3. den isr() Wurde ein DSR aktiviert? 4. void Guard::leave() Welchen Wert hat lock? Warum wird der Scheduler nicht aktiviert? Breakpoint auf 1. void Guard::leave() Welchen Wert hat lock? 2. reschedule() Wurde der Scheduler aktiviert? 3. Thread* schedule() Welcher Faden kommt als nächstes? Achtung Break Anhalten des Programms von außen. normalerweise per Ctrl-C in der GDB-Konsole Watchpoints ( gdb ) watch xyz 1. Ein Debugger ersetzt nicht das Verständnis des Programms! 2. Ohne sinnvolle Annahmen kann man keine Breakpoints setzen! Programm anhalten wenn Variable xyz ihren Wert ändert F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 43 / 47 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 44 / 47

12 Werte von Variablen beobachten Speicherstellen beobachten globale Variablen und Objekte ( gdb ) # Achtung : v o l l q u a l i f i z i e r t e r Name! ( gdb ) graph d i s p l a y Test_Thread : : runs Menü Data Memory lokale Variablen und Argumente Menü Data Display Local Variables Display Arguments Beobachtung problematisch: Speicherstellen/Register werden vom GCC wiederverwendet passende Debug-Information wird (noch) nicht erzeugt Var Tracking Assignments [VTA] ab GCC 4.5 F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 45 / 47 Parameter (a) Wie viele Bytes, Half Words, Words, (b) Hexadezimal, Oktal, (c) Bytes, Half Words (2 Bytes), Words (4 bytes), (d) Startadresse Hilfreich zum Kontrollieren von I/O-Registern F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 46 / 47 Tutorial Tutorial 1. die Datei tutorial.tar.gz entpacken 2. Makefiles anpassen 3. EZStubs-Bibliothek und übersetzen und binden 4. Doxygen-Dokumentation erzeugen 5. auf dem Simulator ausführen 6. mit Hilfe des DDD debuggen Breakpoints setzen (siehe Folie 45) dort das Programm schrittweise ausführen und die Abläufe auf den Folien 13,21, 21 und?? nachvollziehen 7. Selbst ein, zwei schreiben einen Interrupt-Handler implementieren (die Klasse Test_Interrupt_0 steht zur Verfügung). im Interrupt-Handler einen Faden aktivieren F. Scheler, P. Ulbrich, M. Hoffmann (Inf 4) EZStubs Entwicklungsumgebung WS 2010/11 47 / 47

EZStubs Entwicklungsumgebung

EZStubs Entwicklungsumgebung EZStubs Entwicklungsumgebung Einführung Fabian Scheler, Peter Ulbrich, Niko Böhm Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme) www4.informatik.uni-erlangen.de

Mehr

EZS Handwerkszeug. Übung zur Vorlesung EZS. Florian Franzmann Martin Hoffmann Tobias Klaus Peter Wägemann

EZS Handwerkszeug. Übung zur Vorlesung EZS. Florian Franzmann Martin Hoffmann Tobias Klaus Peter Wägemann EZS Handwerkszeug Übung zur Vorlesung EZS Florian Franzmann Martin Hoffmann Tobias Klaus Peter Wägemann Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme)

Mehr

EZS Handwerkszeug. Interaktion mit dem System Beobachtung. Interaktion mit dem System Beeinflussung. Hardware. Hardware. Simulator.

EZS Handwerkszeug. Interaktion mit dem System Beobachtung. Interaktion mit dem System Beeinflussung. Hardware. Hardware. Simulator. 1 Überblick EZS Handwerkszeug Übung zur Vorlesung EZS Martin Hoffmann, Florian Franzmann, Tobias Klaus 1 Handwerkszeug Zeitmessungen libezs ecos Unterbrechungsbehandlung Friedrich-Alexander-Universität

Mehr

EZS Handwerkszeug. Implementierung der Übungsaufgaben. Programmieren in C/C++

EZS Handwerkszeug. Implementierung der Übungsaufgaben. Programmieren in C/C++ 1 Überblick EZS Handwerkszeug Übung zur Vorlesung EZS Florian Franzmann, Martin Hoffmann, Isabella Stilkerich Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 Verteilte Systeme

Mehr

Aufgabe 2: Aperiodic Task Support

Aufgabe 2: Aperiodic Task Support Einleitung Erweiterung des Quadrokopter-Kontrollsystems Aufgabe 2: Aperiodic Task Support Echtzeitsysteme - Übungen zur Vorlesung Peter Ulbrich, Martin Hoffmann Friedrich-Alexander-Universität Erlangen-Nürnberg

Mehr

Aufgabe 3. Aufgabe 4.

Aufgabe 3. Aufgabe 4. 3. AUFGABENBLOCK Aufgabe 3. Bubble-Sort für Rechtecke mit Operator Overloading Ändern Sie die Aufgabe 2 derart ab, dass Sie bisherige Methoden oder Algorithmen als überladene Operatoren implementieren:

Mehr

Übung zu Betriebssysteme

Übung zu Betriebssysteme Übung zu Betriebssysteme Interruptsynchronisation 22. & 24. November 2017 Andreas Ziegler Bernhard Heinloth Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl für Verteilte

Mehr

µversion 2 Einführung

µversion 2 Einführung µversion 2 Einführung V1.0 F. Wolf Graz, September 2002 Inhaltsverzeichnis 1 Keil Mikroprozessor-Entwicklungsumgebung 1 2 Menübeschreibung 1 2.1 Hauptmenü 2 2.2 Compilermenü 2 2.3 Debugermenü 2 3 Projekt

Mehr

Ein-Ausgabefunktionen in C (letzter Abschnitt Vorlesungsstoff ab C.110)

Ein-Ausgabefunktionen in C (letzter Abschnitt Vorlesungsstoff ab C.110) U2 2. Übung U2 2. Übung U2-1 Überblick Ein-Ausgabefunktionen in C (letzter Abschnitt Vorlesungsstoff ab C.110) Aufgabe 2: qsort Debugger Übersetzen von Projekten mit "make" U2.1 B-2 Aufgabe 2: Sortieren

Mehr

C++ Templates - eine kleine Einführung

C++ Templates - eine kleine Einführung C++ Templates - eine kleine Einführung Peter Ulbrich, Martin Hoffmann Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme) www4.informatik.uni-erlangen.de

Mehr

Hilfsblatt für C++ Prüfungen im 5. Semester

Hilfsblatt für C++ Prüfungen im 5. Semester Hilfsblatt für C++ Prüfungen im 5. Semester Hilfsblatt für C++ Prüfungen im 5. Semester 1 Klassen 2 Win-32 Programmierung 3 Handles 3 Dateien, Files 3 Threads 3 Events 4 Funktionen 5 Einfache Funktionen

Mehr

Einführung in die Programmiersprache C

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

Mehr

Überblick. Verlässliche Echtzeitsysteme. Anmeldung an Gerrit I. Gerrit. Übungen zur Vorlesung. Isabella Stilkerich, Florian Franzmann, Martin Hoffmann

Überblick. Verlässliche Echtzeitsysteme. Anmeldung an Gerrit I. Gerrit. Übungen zur Vorlesung. Isabella Stilkerich, Florian Franzmann, Martin Hoffmann Überblick Verlässliche Echtzeitsysteme Übungen zur Vorlesung 1 Versionsverwaltung mit Gerrit Isabella Stilkerich, Florian Franzmann, Martin Hoffmann Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl

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

Einführung in die Programmiersprache C

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

Mehr

Eclipse Tutorial.doc

Eclipse Tutorial.doc Berner Fachhochschule Hochschule für Technik und Informatik, HTI Fachbereich Elektro- und Kommunikationstechnik Labor für Technische Informatik Eclipse Tutorial 2005, HTI Burgdorf R. Weber Dateiname: Eclipse

Mehr

Übung zu Betriebssysteme

Übung zu Betriebssysteme Übung zu Betriebssysteme Threadumschaltung 6. & 8. Dezember 2017 Andreas Ziegler Bernhard Heinloth Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl für Verteilte Systeme

Mehr

Echtzeitsysteme. Übungen zur Vorlesung. Fabian Scheler, Peter Ulbrich, Niko Böhm

Echtzeitsysteme. Übungen zur Vorlesung. Fabian Scheler, Peter Ulbrich, Niko Böhm Echtzeitsysteme Übungen zur Vorlesung Fabian Scheler, Peter Ulbrich, Niko Böhm Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme) www4.informatik.uni-erlangen.de

Mehr

Simple Scope. ecos-vertiefung. Florian Franzmann Tobias Klaus Peter Wägemann

Simple Scope. ecos-vertiefung. Florian Franzmann Tobias Klaus Peter Wägemann Simple Scope ecos-vertiefung Florian Franzmann Tobias Klaus Peter Wägemann Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme) http://www4.cs.fau.de

Mehr

Technische Informatik für Ingenieure Winter 2005/2006 Übungsblatt Nr. 3

Technische Informatik für Ingenieure Winter 2005/2006 Übungsblatt Nr. 3 Technische Informatik für Ingenieure Winter 2005/2006 Übungsblatt Nr. 3 Dr. Ekkart Kindler FG Softwaretechnik Institut für Informatik Übungsgruppenleiter: M.-R. Brojerdi H. Selke M. Meyer M.Tichy E. Münch

Mehr

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

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

Mehr

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

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

Mehr

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

2Binden 3. und Bibliotheken

2Binden 3. und Bibliotheken 3 Vom C-Programm zum laufenden Prozess 3.1 Übersetzen - Objektmodule 1Übersetzen 3. - Objektmodule (2) Teil III 3Vom C-Programm zum laufenden Prozess 2. Schritt: Compilieren übersetzt C-Code in Assembler

Mehr

DAP2 Praktikum Blatt 2

DAP2 Praktikum Blatt 2 Fakultät für Informatik Lehrstuhl 11 / Algorithm Engineering Prof. Dr. Petra Mutzel, Carsten Gutwenger Sommersemester 2009 DAP2 Praktikum Blatt 2 Ausgabe: 28. April Abgabe: 13. 15. Mai Langaufgabe 2.1

Mehr

1.1 Abstrakte Datentypen 1.2 Lineare Strukturen 1.3 Bäume 1.4 Prioritätsschlangen 1.5 Graphen

1.1 Abstrakte Datentypen 1.2 Lineare Strukturen 1.3 Bäume 1.4 Prioritätsschlangen 1.5 Graphen 1 Datenstrukturen 1.1 Abstrakte Datentypen 1.2 Lineare Strukturen 1.3 Bäume 1.4 Prioritätsschlangen 1.5 Graphen 1 Abstrakte Datentypen Spezifizieren Form und Funktionalität der zu verarbeitenden Daten

Mehr

M I K R O P R O Z E SS O R P R A K T I K U M SS2018. Termin1. C-Programmierung für eingebettete Systeme

M I K R O P R O Z E SS O R P R A K T I K U M SS2018. Termin1. C-Programmierung für eingebettete Systeme Mikroprozessorpraktikum Termin1 SS2018 Technische Fachgruppe C-Programmierung für eingebettete M I K R O P R O Z E SS O R P R A K T I K U M SS2018 Termin1 C-Programmierung für eingebettete Name, Vorname

Mehr

Konzepte von Betriebssystem- Komponenten Ausnahme- / Unterbrechungsbehandlung

Konzepte von Betriebssystem- Komponenten Ausnahme- / Unterbrechungsbehandlung Konzepte von Betriebssystem- Komponenten Ausnahme- / Unterbrechungsbehandlung Sommersemester 2005 Uni Erlangen Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebsysteme Tarek Gasmi Tarek.Gasmi@informatik.stud.uni-erlangen.de

Mehr

Prozesszustände (1a)

Prozesszustände (1a) Prozesszustände (1a) NOT EXISTING DELETED CREATED Meta-Zustand (Theoretische Bedeutung) Prozesszustände Multiuser Umfeld (1c) Hintergrund-Prozess - der Prozess startet im Hintergrund - my-commandbin &

Mehr

U3-1 Organisatorisches

U3-1 Organisatorisches U3 3. Übung U3 3. Übung Organisatorisches SP-Abgabesystem: Team-Arbeit Aufgabe 3: malloc-implementierung U3.1 U3-1 Organisatorisches U3-1 Organisatorisches In der Woche vom 30.5. bis 3.6. finden keine

Mehr

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 19. 25. Februar 2003 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()

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

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

ecos Embedded Configurable Operating System

ecos Embedded Configurable Operating System Prozessorvielfalt in der Echtzeitwelt Anwendungsentwicklung mit Ecos Übungen zur Vorlesung Florian Franzmann, Martin Hoffmann, Tobias Klaus Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik

Mehr

C++ Templates - eine kleine Einführung. Funktionstemplates. Fabian Scheler, Peter Ulbrich, Niko Böhm. 20. Oktober 2008

C++ Templates - eine kleine Einführung. Funktionstemplates. Fabian Scheler, Peter Ulbrich, Niko Böhm. 20. Oktober 2008 Überblick 1 Allgemein C++ Templates - eine kleine Einführung Fabian Scheler, Peter Ulbrich, Niko Böhm Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme)

Mehr

7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1 Kontrollfragen Rekursion Was bedeutet Rekursion? Geben Sie Beispiele

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

Teil I Debuggen mit gdb

Teil I Debuggen mit gdb Teil I Debuggen mit gdb Wer kennt das nicht? $./a.out Segmentation fault Was tun dagegen? printf()s in den Code einfügen? Besser (und professioneller): Einen Debugger verwenden Wer kennt das nicht? $./a.out

Mehr

Testen nebenläufiger Objekte

Testen nebenläufiger Objekte Testen nebenläufiger Objekte Threads in Java Julian Lambertz Seminar Tests in Informatik und Statistik im SS 2004 Universität Ulm J.L., Juni 2004 1 Themenüberblick Einleitung Begriff der Nebenläufigkeit

Mehr

U1 3. Übung U1 3. Übung. Die Kommandos auf den folgenden Folien dienen der Veranschaulichung. Sind nicht direkt auf die Übungsaufgabe übertragbar

U1 3. Übung U1 3. Übung. Die Kommandos auf den folgenden Folien dienen der Veranschaulichung. Sind nicht direkt auf die Übungsaufgabe übertragbar U1 3. Übung U1 3. Übung Besprechung Aufgabe 0 Make und Makefiles Aufgabe 2 U1-1 Hinweise Die Kommandos auf den folgenden Folien dienen der Veranschaulichung Sind nicht direkt auf die Übungsaufgabe übertragbar

Mehr

Rechnernetze und Organisation

Rechnernetze und Organisation Framework für Assignment A2 1 Übersicht Framework für Assignment A2 WH: Aufgabenstellung Klassen und Methoden Getting started Erste Instruktion aus Testdaten dekodieren 2 Aufgabenstellung Instruction-Set

Mehr

Dynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren

Dynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Dynamische Datentypen Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Probleme mit Feldern (variabler Länge) man kann sie nicht direkt kopieren und zuweisen Probleme mit

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Betriebssysteme. Vorlesung im Herbstsemester 2010 Universität Mannheim. Kapitel 6: Speicherbasierte Prozessinteraktion

Betriebssysteme. Vorlesung im Herbstsemester 2010 Universität Mannheim. Kapitel 6: Speicherbasierte Prozessinteraktion Betriebssysteme Vorlesung im Herbstsemester 2010 Universität Mannheim Kapitel 6: Speicherbasierte Prozessinteraktion Felix C. Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung

Mehr

(Ausnahmebehandlung)

(Ausnahmebehandlung) 16. Exceptions (Ausnahmebehandlung) 16-1 Objektorientierte Programmierung (Winter 2010/2011) Kapitel 16: Exceptions (Ausnahmebehandlung) Motivation Throw und Catch 16. Exceptions (Ausnahmebehandlung) 16-2

Mehr

Programmieren Vorkurs

Programmieren Vorkurs Programmieren Vorkurs Tag 4 - Schleifen und Git Nils-André Forjahn, 11.10.2018 Über mich Nils-André Forjahn Studiere Informatik Java-HiWi am Institut für Softwaretechnik und Fahrzeuginformatik Lehr-HiWi

Mehr

Systemprogrammierung

Systemprogrammierung Systemprogrammierung 3Vom C-Programm zum laufenden Prozess 6. November 2008 Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2008 SS 2006 SOS 1 (03-Pro.fm 2008-11-06 08.52) 3 Vom C-Programm

Mehr

Entwicklungsumgebung

Entwicklungsumgebung Entwicklungsumgebung Echtzeitsysteme 2 Vorlesung/Übung Fabian Scheler Lehrstuhl für Informatik IV Verteilte Systeme und Betriebssysteme Friedrich-Alexander Universität Erlangen-Nürnberg http://www4.cs.fau.de/~scheler

Mehr

Bedienungshinweise für XEmacs, make und GNU Debugger

Bedienungshinweise für XEmacs, make und GNU Debugger Bedienungshinweise für XEmacs, make und GNU Debugger Labor Rechnerorganisation Berufsakademie Stuttgart Fachrichtung Nachrichtentechnik 2000 2007 Ingo Phleps Stand 1. Februar 2007 http://home.ntz.de/phleps/programming/werkzeuge.pdf

Mehr

Martin Gräfe. С und Linux. Die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen HANSER

Martin Gräfe. С und Linux. Die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen HANSER Martin Gräfe С und Linux Die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen HANSER Inhaltsverzeichnis Vorwort 9 1 Einführung 11 1.1 Warum gerade C"? 11 1.2 Die Werkzeuge 12 1.2.1 Der Editor

Mehr

Übung zu Betriebssysteme

Übung zu Betriebssysteme Übung zu Betriebssysteme Zeitscheibenscheduling 20. & 22. Dezember 2017 Andreas Ziegler Bernhard Heinloth Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl für Verteilte

Mehr

Ziele sind das Arbeiten mit Funktionen (Modularisierung, Parameterübergabe), sowie - Reihentyp (Array)

Ziele sind das Arbeiten mit Funktionen (Modularisierung, Parameterübergabe), sowie - Reihentyp (Array) Ziele sind das Arbeiten mit Funktionen (Modularisierung, Parameterübergabe), sowie - Aufgabe 3: Diese Aufgabe baut auf der 2. Aufgabe auf und erweitert diese. Die Funktionalität der 2. Aufgabe wird also

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

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine

Mehr

Informatik für Elektrotechnik und Informationstechnik

Informatik für Elektrotechnik und Informationstechnik Informatik für Elektrotechnik und Informationstechnik Praktikum 1 Wintersemester 2013/14 1 Kennenlernen der Entwicklungsumgebung Netbeans Netbeans ist eine moderne Entwicklungsumgebung für mehrere Programmiersprachen,

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

Code Composer Studio 4.x

Code Composer Studio 4.x Code Composer Studio 4.x Hands-on Session Sebastian Meisner, sebastian.meisner@upb.de Fachgebiet Technische Informatik 1 Inhalt der Hands-on Sesion Präsentation Code Composer Studio (CCS) Aufgaben 2 Einleitung

Mehr

Übungen zu Systemprogrammierung 1

Übungen zu Systemprogrammierung 1 Übungen zu Systemprogrammierung 1 Ü1-2 Speicherverwaltung Sommersemester 2018 Christian Eichler, Jürgen Kleinöder Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl

Mehr

Übungen zu Systemprogrammierung 1 (SP1)

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

Mehr

Anwendung (2. Versuch:-) Entkopplung der Locks

Anwendung (2. Versuch:-) Entkopplung der Locks Gut gemeint aber leider fehlerhaft... Jeder Producer benötigt zwei Locks gleichzeitig, um zu produzieren: 1. dasjenige für den Puffer; 2. dasjenige für einen Semaphor. Musser fürden Semaphor einwait()

Mehr

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr. Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 12 Pkt.) Was liefert

Mehr

Praktische Informatik 1

Praktische Informatik 1 Praktische Informatik 1 Imperative Programmierung und Objektorientierung Karsten Hölscher und Jan Peleska Wintersemester 2011/2012 Session 2 Programmierung Begriffe C/C++ Compiler: übersetzt Quellcode

Mehr

Algorithmen und Datenstrukturen Sommersemester Übung Abgabe bis , 10:00 Uhr

Algorithmen und Datenstrukturen Sommersemester Übung Abgabe bis , 10:00 Uhr 4. Übung Abgabe bis 24.05.2010, 10:00 Uhr Aufgabe 4.1: Referenzen Geben Sie Ihre Lösung als Referenzen.pdf ab. 16 Punkte a) Führen Sie einen Schreibtischlauf des folgenden Java-Programms durch. Es werden

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

Informatik II Übung 05. Benjamin Hepp 3 April 2017

Informatik II Übung 05. Benjamin Hepp 3 April 2017 Informatik II Übung 05 Benjamin Hepp benjamin.hepp@inf.ethz.ch 3 April 2017 Java package Hierarchie import.. nur noetig um Klassen aus anderen Packeten zu importieren Es kann auch immer der vollstaendige

Mehr

ADT: Verkettete Listen

ADT: Verkettete Listen ADT: Verkettete Listen Abstrakter typ - Definition public class Bruch{ int zaehler, nenner; public Bruch(int zaehler, int nenner) { this.zaehler = zaehler; this.nenner = nenner; Konstruktor zum Initialisieren

Mehr

Fakultät IV Elektrotechnik/Informatik

Fakultät IV Elektrotechnik/Informatik Fakultät IV Elektrotechnik/Informatik Probeklausur Einführung in die Informatik I Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der Teilleistung TL 2 (Programmiertest)

Mehr

Tag 7 Repetitorium Informatik (Java)

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

Mehr

Software Engineering in der Praxis

Software Engineering in der Praxis Software Engineering in der Praxis Praktische Übungen Josef Adersberger Marc Spisländer Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg 19. Januar 2009 Inhalt Versionskontrolle

Mehr

Prinzipien der objektorientierten Programmierung (OOP)

Prinzipien der objektorientierten Programmierung (OOP) Die Ziele der OOP sind: - bessere Warbarkeit - Wiederverwendbarkeit 1.) Datenkapselung Prinzipien der objektorientierten Programmierung (OOP) Komplexe Datenstrukturen (wie zb ein Stack) werden vom Anwendungsprogramm

Mehr

Übungen zu Grundlagen der systemnahen Programmierung in C (GSPiC) im Sommersemester 2018

Übungen zu Grundlagen der systemnahen Programmierung in C (GSPiC) im Sommersemester 2018 Übungen zu Grundlagen der systemnahen Programmierung in C (GSPiC) im Sommersemester 2018 2018-05-29 Bernhard Heinloth Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl

Mehr

Programmieren von Java Smartcards

Programmieren von Java Smartcards Programmieren von Java Smartcards Aufgabe 0: Zur Einführung in die Programmierung von Giesecke und Devrient Java Smartcards soll ein neues Kartenapplet erstellt, im Simulator getestet sowie anschließend

Mehr

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Exkurs: ANONYME KLASSEN Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Anonyme Klassen Eigenschaften 1 Häufigste Anwendung lokaler Klassen: anonyme Definition. Klasse erhält keinen eigenen

Mehr

Parallele Prozesse. Prozeß wartet

Parallele Prozesse. Prozeß wartet Parallele Prozesse B-66 Prozeß: Ausführung eines Programmes in seinem Adressraum (zugeordneter Speicher) Parallele Prozesse: gleichzeitig auf mehreren Prozessoren laufende Prozesse p1 p2 verzahnte Prozesse:

Mehr

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Anonyme Klassen

Mehr

C und Linux HANSER. Martin Gräfe. Die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen. Z., erweiterte Auflage

C und Linux HANSER. Martin Gräfe. Die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen. Z., erweiterte Auflage 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Martin Gräfe C und Linux Die Möglichkeiten des Betriebssystems mit

Mehr

Programmierung mit C Modularisierung von Programmen. Präprozessor-Anweisungen nutzen.

Programmierung mit C Modularisierung von Programmen. Präprozessor-Anweisungen nutzen. Programmierung mit C Modularisierung von Programmen. Präprozessor-Anweisungen nutzen. Modularisierung Zerlegung eines Programms in überschaubare Einheiten Die einzelnen Einheiten werden als Modul bezeichnet.

Mehr

Lock-free Datenstrukturen

Lock-free Datenstrukturen Lock-free Datenstrukturen Eine Einführung in die lock-free Programmierung Burak Ok Friedrich-Alexander Universität Erlangen-Nürnberg (FAU) 24. Januar 2017 burak.ok@fau.de Lock-free Datenstrukturen (24.

Mehr

hue13 January 30, 2017

hue13 January 30, 2017 hue13 January 30, 2017 1 Abgabehinweise Beachten Sie unbedingt diese Hinweise, sonst erhalten Sie keine Punkte aus dieser Abgabe! Für Details siehe z.b. Folien der nullten Zentralübung 1.1 Namen und Matrikelnummern

Mehr

Dezentrale Kontrolle: Aktive Objekte. Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread

Dezentrale Kontrolle: Aktive Objekte. Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread Dezentrale Kontrolle: Aktive Objekte Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread Passive Objekte Bieten Dienste auf Abruf an: - eine Zahl von der Konsole

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

A practical guide to C++

A practical guide to C++ A practical guide to Janis Fehr fehr@informatik.uni-freiburg.de SommerCampus2004 Janis Fehr A practical guide to Kapitel 2 Start Kurstag 2: Agenda Wiederholung der Themen von Tag 1 Codeoptimierung Namespace

Mehr

Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab...

Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab... 0 1 2 0 2 1 1 2 0 2 1 0 Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab... 0 1 2 0 1 2 1 1 3 2 2 3 212 Um solche Tabellen leicht implementieren zu können, stellt Java das switch-statement

Mehr

Informatik II Übung 5

Informatik II Übung 5 Informatik II Übung 5 Florian Scheidegger florsche@student.ethz.ch Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer gabor.soros@inf.ethz.ch, simon.mayer@inf.ethz.ch 27.03.2013

Mehr

Rechnerarchitektur, Einführung in die Laborübungen

Rechnerarchitektur, Einführung in die Laborübungen G. Kemnitz Institut für Informatik, TU Clausthal (RA-LabEinf.pdf) 20. Dezember 2017 1/18 Rechnerarchitektur, Einführung in die Laborübungen G. Kemnitz Institut für Informatik, TU Clausthal (RA-LabEinf.pdf)

Mehr

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 16. Java: Threads für Animationen 1 Motivation

Mehr

Übungen zu Softwaresysteme I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2004 E-Uebung3.fm

Übungen zu Softwaresysteme I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2004 E-Uebung3.fm E 3. Übung E 3. Übung Besprechung 1. Aufgabe Aufgabe 3: malloc Debugger gdb E.1 1. Include, Deklarationen #include #include void append_element(int value); int remove_element(void);

Mehr

Unterlagen. CPP-Uebungen-08/

Unterlagen.  CPP-Uebungen-08/ Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen

Mehr

Echtzeit-Multitasking

Echtzeit-Multitasking Technische Informatik Klaus-Dieter Thies Echtzeit-Multitasking Memory Management und System Design im Protected Mode der x86/pentium-architektur. Shaker Verlag Aachen 2002 Die Deutsche Bibliothek - CIP-Einheitsaufnahme

Mehr

Echtzeit-Multitasking

Echtzeit-Multitasking Technische Informatik Klaus-Dieter Thies Echtzeit-Multitasking Memory Management und System Design im Protected Mode der x86/pentium-architektur. Shaker Verlag Aachen 2002 Die Deutsche Bibliothek - CIP-Einheitsaufnahme

Mehr

Soll die Programm-Ausführung nicht beendet werden, muss der Fehler abgefangen werden. NumberFormatException

Soll die Programm-Ausführung nicht beendet werden, muss der Fehler abgefangen werden. NumberFormatException Soll die Programm-Ausführung nicht beendet werden, muss der Fehler abgefangen werden. Beispiel: NumberFormatException public class Adding extends MiniJava { public static void main(string[] args) { int

Mehr

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Buildsysteme

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Buildsysteme Grundkurs C++ Buildsysteme Buildsysteme Beispielhaftes Übersetzungsszenario: Verzeichnis tutorial7/ main.cpp, lcdrange.cpp, lcdrange.h *.cpp Kompilieren *.o *.h Grundkurs C++ 2 Headerdateien //blackbox.h

Mehr

Übungen zu Grundlagen der systemnahen Programmierung in C (GSPiC) im Wintersemester 2017/18

Übungen zu Grundlagen der systemnahen Programmierung in C (GSPiC) im Wintersemester 2017/18 Übungen zu Grundlagen der systemnahen Programmierung in C (GSPiC) im Wintersemester 2017/18 2017-11-21 Bernhard Heinloth Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl

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

Benutzung von Microsoft Visual Studio 2017

Benutzung von Microsoft Visual Studio 2017 Benutzung von Microsoft Visual Studio 2017 Hier am Beispiel der deutschen Version Beim Erstellen eines Projektes für eine Konsolenanwendung ist es ein klein wenig anders als bei früheren Versionen, wenn

Mehr

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr 3. Übung Abgabe bis 10.11.2015, 10:00 Uhr Aufgabe 3.1: Java-Synchronisation a) An welchen Stellen im Code kann das Schlüsselwort synchronized verwendet werden? b) Wie nennt sich die Synchronisations-Art,

Mehr