EZStubs Entwicklungsumgebung. Intention
|
|
- Bella Heidrich
- vor 5 Jahren
- Abrufe
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 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
MehrEZS 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)
MehrEZS 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
MehrEZS 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
MehrAufgabe 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
MehrAufgabe 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 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 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
MehrEin-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
MehrC++ 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
MehrHilfsblatt 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
MehrEinführung in die Programmiersprache C
Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:
MehrÜ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
MehrSoftware 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/
MehrEinführung in die Programmiersprache C
Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:
MehrEclipse 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 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
MehrEchtzeitsysteme. Ü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
MehrSimple 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
MehrTechnische 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
MehrThreads. Netzwerk - Programmierung. Alexander Sczyrba Jan Krüger
Netzwerk - Programmierung Threads Alexander Sczyrba asczyrba@cebitec.uni-bielefeld.de Jan Krüger jkrueger@cebitec.uni-bielefeld.de Übersicht Probleme mit fork Threads Perl threads API Shared Data Mutexes
MehrC++ 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
MehrBetriebssysteme Übung 2. Tutorium System Calls & Multiprogramming
Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming Task Wiederholung 1 System SysCalls (1) Wozu? Sicherheit Stabilität Erfordert verschiedene modes of execution: user mode privileged mode
Mehr2Binden 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
MehrDAP2 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
Mehr1.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
MehrM 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
MehrKonzepte 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
MehrProzesszustä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 &
MehrU3-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
MehrEinfü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()
MehrU5-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
MehrAssembler - 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
Mehrecos 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
MehrC++ 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)
Mehr7. 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
MehrGdI2 - 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
MehrTeil 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
MehrTesten 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
MehrU1 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
MehrRechnernetze 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
MehrDynamische 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
Mehr12 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,
MehrBetriebssysteme. 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)
16. Exceptions (Ausnahmebehandlung) 16-1 Objektorientierte Programmierung (Winter 2010/2011) Kapitel 16: Exceptions (Ausnahmebehandlung) Motivation Throw und Catch 16. Exceptions (Ausnahmebehandlung) 16-2
MehrProgrammieren 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
MehrSystemprogrammierung
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
MehrEntwicklungsumgebung
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
MehrBedienungshinweise 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
MehrMartin 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 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
MehrZiele 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
MehrMicrocontroller 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
MehrVerschlü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
MehrInformatik 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,
MehrPThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes
PThreads Prozesse und Threads Ein Unix-Prozess hat IDs (process,user,group) Umgebungsvariablen Verzeichnis Programmcode Register, Stack, Heap Dateideskriptoren, Signale message queues, pipes, shared memory
MehrCode 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 Ü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) Ü1-2 Speicherverwaltung Andreas Ziegler, Stefan Reif, Jürgen Kleinöder Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität
MehrAnwendung (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()
MehrKlausur: 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
MehrPraktische 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
MehrAlgorithmen 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
MehrEinfü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
MehrInformatik 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
MehrADT: 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
MehrFakultä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)
MehrTag 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
MehrSoftware 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
MehrPrinzipien 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 2018-05-29 Bernhard Heinloth Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl
MehrProgrammieren 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
MehrExkurs: 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
MehrParallele 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:
MehrProf. 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
MehrC 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
MehrProgrammierung 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.
MehrLock-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.
Mehrhue13 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
MehrDezentrale 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
Mehr3.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,
MehrA 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
MehrOffenbar 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
MehrInformatik 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
MehrRechnerarchitektur, 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)
MehrVorlesung 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
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);
MehrUnterlagen. 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
MehrEchtzeit-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
MehrEchtzeit-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
MehrSoll 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
MehrLehrstuhl 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 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) 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
MehrBenutzung 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
MehrParallele 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