Betriebssystembau. 2. Übung. Olaf Spinczyk und Michael Engel Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund
|
|
- Marie Jaeger
- vor 6 Jahren
- Abrufe
Transkript
1 Betriebssystembau 2. Übung Olaf Spinczyk und Michael Engel Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund 1
2 Überblick Bisher Probleme aufgetreten? C++ Crashkurs (Teil 2) Tastatur-Programmierung Aufgabe 2: Unterbrechungsbehandlung für OO-StubBS Betriebssystembau: 2. Übung 2
3 Überblick Bisher Probleme aufgetreten? C++ Crashkurs (Teil 2) Tastatur-Programmierung Aufgabe 2: Unterbrechungsbehandlung für OO-StubBS Betriebssystembau: 2. Übung 3
4 C++-Konzepte (Crashkurs Teil 2) Übersetzungs- und Bindevorgang Präprozessor Vererbung und Mehrfachvererbung Virtuelle Funktionen Betriebssystembau: 2. Übung 4
5 C++ - Übersetzungsprozess Betriebssystembau: 2. Übung 5
6 Sourcecode - Präprozessor Zwei Dateiendungen:.cc C++ Source Code.h Header Files mit Definitionen von Datentypen, Konstanten, Präprozessor-Makros etc. Die Endungen sind Konvention, aber nicht zwingend oft z.b. auch.cpp,.hpp o.ä. Header-Files werden mit Hilfe des Präprozessors textuell in.cc-files integriert #include Anweisung: - #include <iostream> für System-Headerfiles - #include device.h für eigene Headerfiles Betriebssystembau: 2. Übung 6
7 Sourcecode - Präprozessor Weitere Präprozessorfunktionen: Makrodefinition, z.b. für Konstanten: - #define pi #define VGA_BASE 0xb ohne Semikolon am Ende! Bedingte Compilierung: - #ifdef DEBUG... #endif - #ifndef VGA_BASE #define VGA_BASE 0xb8000 #endif Der Präprozessor expandiert Makros im Source Code, fügt Header-Files ein und erzeugt eine neue Textdatei, die der Compiler vorgesetzt bekommt Betriebssystembau: 2. Übung 7
8 Sourcecode - Präprozessor Wichtige Anwendung für #define und #ifndef: Verhindern von mehrfacher Inklusion von Header- Dateien - Header-Dateien dürfen wiederum Header-Dateien inkludieren -> Ringschluss... #ifndef cgastr_include #define cgastr_include #include "object/o_stream.h" #include "machine/cgascr.h" class CGA_Stream /* Hier muesst ihr selbst Code vervollstaendigen */ { /* Hier muesst ihr selbst Code vervollstaendigen */ }; #endif Betriebssystembau: 2. Übung 8
9 Sourcecode - Compiler Erzeugt aus vom Präprozessor vorverarbeitetem Source Code eine Objektdatei (.o) Diese ist i.a. nicht direkt ausführbar, da noch Referenzen auf Funktionen oder Variablen in anderen Objektdateien enthalten sein können Der Compiler überprüft den Source Code auf Syntaxfehler und erzeugt ggf. Fehlermeldungen (errors) Warnungen (warnings) Eine Objektdatei wird nur bei fehlerfreier Übersetzung erzeugt Warnungen führen nicht zum Abbruch des Übersetzungsvorgangs! Sie sollten aber beachtet werden... Betriebssystembau: 2. Übung 9
10 Sourcecode - Linker Der Linker faßt eine Menge an Objektdateien (.o) sowie bei Bedarf Libraries (.a,.so) zu einem ausführbaren Programm zusammen: Auflösung von Referenzen Sortierung der einzelnen Teile der Objektdateien im Speicherabbild der ausführbaren Datei Normalerweise gibt es zwei Link-Modi: dynamisch Libraries werden erst zur Zeit der Ausführung des Programms zum Objektcode geladen und Referenzen darin aufgelöst statisch Libraries werden zur Link-Zeit in ein komplett ausführbares Programm integriert Vor-/Nachteile beider Ansätze? Welcher davon ist für unsere Systementwicklung geeignet? Betriebssystembau: 2. Übung 10
11 Einfache Vererbung Klasse keyboard_interrupt erbt von Klasse interrupt Vererbungsoperator : (entspricht extends in Java) interrupt.h: keyboard_interrupt.h: class interrupt { #include interrupt.h... class keyboard_interrupt : } public interrupt { public: keyboard_interrupt(); ~keyboard_interrupt(); } Betriebssystembau: 2. Übung 11
12 Mehrfachvererbung Klasse keyboard_interrupt erbt von Klassen interrupt und keys: keyboard_interrupt.h: #include interrupt.h class keyboard_interrupt : public interrupt, public keys { public: keyboard_interrupt(); ~keyboard_interrupt(); } Betriebssystembau: 2. Übung 12
13 Virtuelle Funktionen Virtuelle Funktionen sind Funktionen einer Basisklasse. Eine abgeleitete Klasse kann sie überschreiben und übernimmt damit die Ausführung der Funktion für ihre Klassenmitglieder. das funktioniert auch mit nicht virtuellen Klassen... Das Besondere an virtuellen Funktionen ist, dass das Objekt selbst weiss, zu welcher abgeleiteten Klasse es gehört und seine zugehörige Klassenfunktion ruft. Nicht jede Funktion ist standardmäßig virtuell, es muss explizit das Schlüsselwort virtual verwendet werden! (im Gegensatz zu Java) Betriebssystembau: 2. Übung 13
14 Virtuelle Funktionen Ausgabe: Derived ohne das virtual vor void display(): Base #include <iostream> class base { public: virtual void display() { cout<< \nbase ; } }; class derived : public base { public: void display() { cout<< \nderived ; } }; void main() { base *ptr = new derived(); ptr->display(); } Betriebssystembau: 2. Übung 14
15 Virtuelle Destruktoren Es gibt eine Faustregel, die besagt, dass jede Klasse mit virtuellen Funktionen auch einen virtuellen Destruktor haben soll. Da ein nicht virtueller Destruktor nicht gewährleistet, dass abgeleitete Klassen ordnungsgemäß abgebaut werden, kann ein nicht virtueller Destruktor sogar so interpretiert werden, dass der Autor ein Ableiten seiner Klasse nicht vorgesehen hat und wohl auch nicht empfiehlt. Betriebssystembau: 2. Übung 15
16 Überblick Bisher Probleme aufgetreten? C++ Crashkurs (Teil 2) Tastatur-Programmierung Aufgabe 2: Unterbrechungsbehandlung für OO-StubBS Betriebssystembau: 2. Übung 16
17 PC-Tastatur klassisch: moderner PC: USB-Tastatur USB Legacy Support: Ansteuerung funktioniert immer noch zusätzlich über den Tastaturcontroller (Rückwärtskompatibilität) Betriebssystembau: 2. Übung 17
18 Tastenkodierungen Darstellung im Programm (und im CGA-Speicher!): Zeichencodes (ASCII) Darstellung in der Hardware: Tastencodes T a s t e S c a n - C o d e A 3 0 a 3 0 S 3 1 D 3 2 C u r s o r h o c h 7 2 C u r s o r r u n t e r 8 0 Jede Taste hat eindeutigen Tastencode (Scan-Code) Scan-Code ist 7-Bit Zahl (max. 128 Tasten) Tastaturcontroller sendet zusätzliche Informationen Make-Code beim Drücken / Halten einer Taste Break-Code beim Loslassen Betriebssystembau: 2. Übung 18
19 Make- und Break-Codes Üblicherweise gilt Make-Code (Taste gedrückt) = Scan-Code Break-Code (Taste losgelassen) = Scan-Code (Bit 7) Einige Tasten senden jedoch mehrere Codes z.b. Funktionstasten (F1-F12) aus historischen Gründen (XT-Tastatur) bis zu drei Make/Break-Codes pro Taste Eingebaute Wiederholungsfunktion Hardware sendet zusätzliche Make-Codes, wenn eine Taste länger gehalten wird Dekodierung ist mühsam bei OOStuBS in der Vorgabe enthalten: bool key_decoded() Betriebssystembau: 2. Übung 19
20 Datenaustausch mit der Tastatur Tastaturcontroller wird über zwei E/A-Ports angesprochen Ein-/Ausgaberegister (data_port) 0x60 Steuerregister (ctrl_port) 0x64 Lesen Make-Code Break-Code Status der Tastatur Schreiben Keyboard_Controller set_led: LED ein-/aus data_port set_speed: Wiederholungsrate ctrl_port cpu_reset: Warmstart... Betriebssystembau: 2. Übung 20
21 Status der Tastatur Statusregister stellt folgende Informationen bereit: Betriebssystembau: 2. Übung 21
22 Status der Tastatur - Verwendung Aktive Tastaturabfrage (nicht durch Unterbrechungen): Warten, bis outb in ctrl_port gesetzt ist Make-/Break-Code vom data_port lesen (löscht ctrl_port.outb) Tastatur programmieren (set_led, set_speed) Befehlsbyte in data_port schreiben Tastatur antwortet mit ack (0xfa), ggfs. auf Antwort warten (s.o.) Datenbyte in data_port schreiben (LED-Codes, Repeat-Rate) Tastatur antwortet mit ack, ggfs. auf Antwort warten Betriebssystembau: 2. Übung 22
23 Tastatur programmieren set_led 0xed, <led_mask> in data_port set_speed 0xf3, <config_byte> in data_port Parameter für set_led Befehl: (led_mask) Parameter für set_speed Befehl: (config_byte) Betriebssystembau: 2. Übung 23
24 Überblick Bisher Probleme aufgetreten? C++ Crashkurs (Teil 2) Tastatur-Programmierung Aufgabe 2: Unterbrechungsbehandlung für OO-StubBS Betriebssystembau: 2. Übung 24
25 Hardware-IRQs bei x86 CPUs Bis einschließlich i486 hatten x86 CPUs nur einen Interrupt-Eingang (INT) plus einen NMI Eingang INT kann mit dem IE-Bit im Statuswort maskiert werden - cli-befehl (clear interrupt enable) Interruptverarbeitung sperren - sti-befehl (set interrupt enable) Interruptverarbeitung freigeben NMI kann auf der CPU nicht maskiert werden (sagt ja schon der Name) - beim PC aber trotzdem durch externe Hardware... Externer Controller muss Nummer auf den Bus legen Beim PC ist das der Programmable Interrupt Controller 8259A Datenaustausch zwischen CPU und PIC 8259A erfolgt nach einem festgelegtem Protokoll Betriebssystembau: 2. Übung 25
26 Ablauf eines Hardware IRQ (mit PIC) PIC 8259A CPU (i386) Applikation IDT Handler <n> INT-Pin <interruption> Hardware INTA-Pin <n> (8 Bit, Datenbus) INTA-Pin Software EOI-Befehl (konfigurationsabhängig) <continue> IRET Befehl Betriebssystembau: 2. Übung 26
27 Kaskadierung im PC (15 Interrupts) Betriebssystembau: 2. Übung 27
28 i386 Interrupt-Deskriptortabelle (IDT) maximal 256 Einträge - Basisadresse und Größe in IDTR 8 Byte pro Eintrag (Gate) - Task-Gate (Hardwaretasks) - Trap-Gate (Ausnahmehandler) - Interrupt-Gate (Ausnahmehandler + cli) IDTR Betriebssystembau: 2. Übung 28
29 i386 IDT: Aufbau IDT Traps Hardware/Software IRQs Einträge 0-31 für Traps (fest) Trap = Ausnahme, die synchron zum Kontrollfluss auftritt Number Description 0 Divide-by-zero 1 Debug exception 2 Non-Maskable Interrupt (NMI) 3 Breakpoint (INT 3) 4 Overflow - Division durch 0 5 Bound exception - Seitenfehler 6 Invalid Opcode 7 FPU not available - Unterbrechungspunkt 8 Double Fault 9 Coprocessor Segment Overrun Invalid TSS 11 Segment not present 12 Stack exception Einträge für 13 General Protection IRQs (variabel) - Software (INT <nummer>) 16 Floating-point error - Hardware (INT-Pin der CPU 17 Alignment Check auf HIGH, Nummer auf 18 Machine Check Reserved By Intel Datenbus) Betriebssystembau: 2. Übung Page fault 15 Reserved
30 Zustandssicherung Wenn eine Unterbrechung eintritt, sichert die CPU automatisch einen Teil des Zustands auf dem Stapel condition codes (eflags) aktives Codesegment (cs) Rücksprungadresse (eip) esp eflags cs eip esp - 12 esp - 8 esp - 4 Der automatisch gesichterte Zustand wird bei der Ausführung von iret zurückgesetzt verwendet der Handler weitere Register, so muss er diese selber sichern! Betriebssystembau: 2. Übung 30
31 PIC 8259A Interner Aufbau höchste niedrigste Betriebssystembau: 2. Übung 31
32 Zugriff auf die PICs über IO-Ports Jeder PIC hat zwei Ports, die gelesen/geschrieben werden können Schreibdaten: ICW1-4, OCW1-3 - ICW = Initialization Control Word Initialisierung des PICs - OCW = Operation Control Word Kommandos im Betrieb Lesedaten abhängig von Kommando Lesen IRR ISR Offset IMR <wie Master> Master Port 0x20 Port 0x21 Slave Port 0xa0 Port 0xa1 Schreiben ICW1 (Initialisierung beginnen) OCW2 (EOI,...) OCW3 (IRR lesen, ISR lesen,...) ICW2-4 (Initialisierungsdaten) OCW1 (= IMR) <wie Master> Betriebssystembau: 2. Übung 32
33 Initialisierung der PICs Teil 1 OO-Stubs Einstellung: Master Slave OO-Stubs Einstellung: Master Slave Betriebssystembau: 2. Übung 33
34 Mapping der HW-IRQs (OO-Stubs) IDT Traps HW <unbenutzt> Standard AT IRQ-Belegung IRQ 0 IRQ 1 IRQ 2 System Timer IRQ 3 COM 2 IRQ 4 COM 1 IRQ 5 Tastatur (Keyboard) PIC Kaskadierung IRQ 6 Floppy IRQ 7 LPT 1 IRQ 8 CMOS Echtzeituhr IRQ 9 (HW-Mapping von IRQ 2) IRQ10 IRQ11 IRQ12 PS/2 IRQ13 numerischer Coprozessor IRQ14 1. IDE Port IRQ15 2. IDE Port Betriebssystembau: 2. Übung 34
35 Initialisierung der PICs Teil 2 OO-Stubs Einstellung: Master Slave OO-Stubs Einstellung: Master Slave Betriebssystembau: 2. Übung 35
36 Programmierung der PICs Interruptmaske (IMR) - schreiben und lesen über Port 0x21 / 0xa1 Betriebssystembau: 2. Übung 36
37 Interrupthandler in OO-Stubs Behandlung startet in der Funktion guardian() bekommt die IRQ-Nummer als Parameter: void guardian( unsigned int slot ) {... // IRQ-Handler (Gate) aktivieren } Interrupts sind während der Abarbeitung gesperrt - können mit sti manuell wieder zugelassen werden - werden automatisch wieder zugelassen, wenn guardian() terminiert Die eigentlichen (spezifischen) IRQ-Handler sind Instanzen der Klasse Gate werden an- und abgemeldet über die Klasse Plugbox Betriebssystembau: 2. Übung 37
38 Interrupthandler in OO-Stubs Betriebssystembau: 2. Übung 38
Betriebssystembau (BSB)
Betriebssystembau (BSB) 2. Übung http://ess.cs.tu-dortmund.de/de/teaching/ws2014/bsb/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware Informatik
MehrBetriebssysteme BS-V SS 2015. Hans-Georg Eßer. Foliensatz V: Ulix: Interrupts und Faults Ulix: System Calls. Dipl.-Math., Dipl.-Inform.
BS-V Betriebssysteme SS 2015 Dipl.-Math., Dipl.-Inform. Foliensatz V: Ulix: Interrupts und Faults Ulix: System Calls v1.0, 2015/05/28 (klassische Dokumentation) Folie V-1 Übersicht: BS Praxis und BS Theorie
MehrAufgabe 2 - Erweiterung um PIC und Interrupts
Aufgabe 2 - Erweiterung um PIC und Interrupts Rainer Müller Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2014/2015 R. Müller Erweiterung
MehrAufgabe 2 - Erweiterung um PIC und Interrupts
Aufgabe 2 - Erweiterung um PIC und Interrupts Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS2010/2011 Aufgabe 2 - Erweiterung um
MehrObjektorientierung: Klassen und Objekte
Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen
MehrInterrupts. Funktionsprinzip. Funktionsprinzip. Beispiel in C
Interrupts Funktionsprinzip Interrupts bei ATmega128 Beispiel in C Funktionsprinzip 1 Was ist ein Interrupt? C muss auf Ereignisse reagieren können, z.b.: - jemand drückt eine Taste - USART hat Daten empfangen
MehrDAP2-Programmierpraktikum Einführung in C++ (Teil 1)
DAP2-Programmierpraktikum Einführung in C++ (Teil 1) Carsten Gutwenger 11. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Mein erstes C++-Programm Namensräume
MehrVon Java nach C++ Dr. Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund http://ls7-www.cs.uni-dortmund.de
Von Java nach C++ Dr. Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund http://ls7-www.cs.uni-.de Von Java nach C++, Lehrstuhl Informatik VII, TU Dortmund 1 Übersicht Einleitung Literatur
MehrVon Java nach C++ Frank Weichert, Heinrich Müller Informatik VII Universität Dortmund http://ls7-www.cs.uni-dortmund.de
Von Java nach C++ Frank Weichert, Heinrich Müller Informatik VII Universität Dortmund http://ls7-www.cs.uni-dortmund.de Von Java nach C++, LS VII, Universität Dortmund, SS 2006 1 Übersicht Einleitung Literatur
MehrName: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note:
Name: Punkte: Note: Hinweise für das Lösen der Aufgaben: Zeit: 95 min. Name nicht vergessen! Geben Sie alle Blätter ab. Die Reihenfolge der Aufgaben ist unabhängig vom Schwierigkeitsgrad. Erlaubte Hilfsmittel
MehrSysteme 1. Kapitel 9.2. Interaktion von Hardware und Betriebssystem Linux-Kernel und x86 Systeme
Systeme 1 Kapitel 9.2 Interaktion von Hardware und Betriebssystem Linux-Kernel und x86 Systeme Speicherzugriffe auf x86 Systemen Auf x86 Systemen existieren drei Arten von Speicheradressen Logische Adresse
Mehrmagnum C++ WALTER SAUMWEBER kompakt komplett kompetent
magnum C++ WALTER SAUMWEBER kompakt komplett kompetent Quickview... 5 Liebe Leserin, lieber Leser... 13 Teil 1 Grundlagen... 15 1 Was ist Programmieren?... 17 1.1 Was ist eigentlich ein Computerprogramm?...
MehrCodingstandard. Softwareentwicklung Praktikum Stand: 27.02.2008
I. Einleitung II. Codingstandard Softwareentwicklung Praktikum Stand: 27.02.2008 Wie in der Vorlesung schon ausgeführt wurde, ist die Lesbarkeit und Wartbarkeit des Sourcecodes ein sehr wichtiges Kriterium
MehrARM Cortex-M Prozessoren. Referat von Peter Voser Embedded Development GmbH
ARM Cortex-M Prozessoren Referat von Peter Voser Embedded Development GmbH SoC (System-on-Chip) www.embedded-development.ch 2 Instruction Sets ARM, Thumb, Thumb-2 32-bit ARM - verbesserte Rechenleistung
MehrKurzeinführung in C/C++ Elementare Datentypen in C++
Elementare Datentypen in C++ Anders als in Java sind in C++ die Größen der Elementaren Datentypen maschinenabhängig Die Größe der Datentypen lässt sich mit sizeof ermitteln: int n=sizeof(int) In C++ gilt
MehrC++ Kurs Teil 1. Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen
C++ Kurs Teil 1 "hello world" Vergleich von C++ und Java Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen C++ Spezialitäten Schlüsselwort 'const', Copy Constructor,
MehrMethoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only
Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer
MehrAbend 7 Vererbung und Polymorphie, Abstrakte Klassen
Abend 7 Vererbung und Polymorphie, Abstrakte Klassen Ziel, Inhalt Wir sehen heute weitere Beispiele für Polymorphie und virtuelle Methoden. Wir lernen auch Klassen kennen, von denen man keine Objekte erzeugen
MehrRessourcenübersicht Rack PC 840, Box PC 840
Ressourcenübersicht Rack PC 840, Box PC 840 RESOURCE_Rack840 Seite 1 von 5 Belegung der I/O-Adressen: IO-Adresse Größe Bedeutung (hex) von bis byte Grundfunktion mögliche alternative Funktion 0000 000F
MehrVererbung. Was versteht man unter dem Begriff Vererbung?
Was versteht man unter dem Begriff Vererbung? Elternkonstrukt - Datenelemente - Methoden o Deklaration o Definition Kindkonstrukt... Main... Elternkonstrukt b = new Kindkonstrukt() b.fn() Komponenten &
MehrBeispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging
Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging Das Beispiel orientiert sich am selben Code, der im Teil 1 der Serie verwendet wurde. Text Styles: Shell Prompt mit
MehrZählen von Objekten einer bestimmten Klasse
Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
MehrC++ - Eine Ubersicht fur Java-Programmierer
C++ - Eine Ubersicht fur Java-Programmierer Daniel Wasserrab Lehrstuhl fur Programmierparadigmen Universitat Karlsruhe 23. April 2008 C++ I Entwickelt Anfang der 80er von Bjarne Stroustrup I Beeinut von
MehrJava I Vorlesung Vererbung und Sichtbarkeit
Java I Vorlesung 4 Vererbung und Sichtbarkeit 17.5.2004 Vererbung Überladen, Überschreiben, Verstecken, Verschatten Zugriffskontrolle Statische Members Wiederholung: OOP Programme bestehen aus Klassen.
MehrProgrammentwicklung mit C++ (unter Unix/Linux)
Programmentwicklung mit C++ (unter Unix/Linux) Erste Schritte Der gcc - Compiler & Linker Organisation des Source-Codes & Libraries Automatische Programmgenerierung: Make Birgit Möller & Denis Williams
MehrGetName(), GetName(), GetGeschlecht() und AelterWerden().
11. Vererbung Vererbung ist eine der mächtigsten Funktionalitäten der objektorientierten Programmiersprachen. Man versteht unter Vererbung die Tatsache, dass eine Klasse alle Methoden und Variablen einer
MehrC++-Zusammenfassung. H. Schaudt. August 18, 2005
C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:
Mehr11.3 Virtuelle Methoden
11.3 Virtuelle Methoden Überdeckte Methoden: Betrachten wir noch einmal unsere Klassen Employee und Manager. class Employee void print() const cout
Mehr(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT
Architektur Übersicht (allgemeine) OOP in C++ Polymorphie Virtuelle Funktionen Kompilieren Linken dynamische/statische Bibliotheken Tutorial: vs2008+ogre+(campus modell) Architektur (allgemeine) OOP in
MehrProgrammierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
MehrFachhochschule Kaiserslautern Fachbereich Angewandte Ingenieurwissenschaften WS2010/11. Zeitpunkt der Prüfung: 18.01.2011 Beginn: 10.
Lehrprozessor: Coldfire MCF-5272 Zeitpunkt der Prüfung: 18.01.2011 Beginn: 10.45 Uhr Raum: Aula Bearbeitungszeit: 180 Minuten Erlaubte Hilfsmittel: Gedrucktes Vorlesungsskript von Prof. Neuschwander mit
MehrParallel-IO. Ports am ATmega128
Parallel-IO Ansteuerung Miniprojekt Lauflicht Ports am ATmega128 PortE (PE7...PE0) alternativ, z.b. USART0 (RS232) 1 Pin von PortC Port C (PC7...PC0) 1 Parallel-IO-Port "Sammelsurium" verschiedener Speicher
MehrMicrocontroller Kurs Programmieren. 09.10.11 Microcontroller Kurs/Johannes Fuchs 1
Microcontroller Kurs Programmieren 9.1.11 Microcontroller Kurs/Johannes Fuchs 1 General Purpose Input Output (GPIO) Jeder der Pins der vier I/O Ports kann als Eingabe- oder Ausgabe-leitung benutzt werden.
MehrTheorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
MehrKapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
MehrB Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion
1 Java 1.1 e B Java RMI orientierte Sprache e beschrieben in Klassendefinitionen und andere Datentypen: int, float, boolean, etc. referenzen Verweise auf e keine Zeiger, Adressen o.ä. B.1 B.2 1.1 e (2)
MehrFB Informatik. Fehler. Testplan
Fehler #include int i,n,summe; int summe (int); cout 0) cin>n; i=summme(n); cout
MehrVererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
MehrZiel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind
Templates und Containerklassen Ziel, Inhalt Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen 1 Ziel, Inhalt
MehrJ.5 Die Java Virtual Machine
Java Virtual Machine Die Java Virtual Machine 22 Prof. Dr. Rainer Manthey Informatik II Java-Compiler und Java Virtual Machine Quellcode-Datei class C... javac D.java Java-Compiler - Dateien class class
MehrDLLs (dynamic loaded libraries) mit MingW erstellen
DLLs (dynamic loaded libraries) mit MingW erstellen Autor: Michel D. Schmid Datum: April 2, 2009 Contents 1 Einführung 1 1.1 Open-Source Tools.......................................... 1 2 Beispiel 1:
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
MehrPraxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)"
Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)" Christof Elbrechter Neuroinformatics Group, CITEC April 24, 2014 Christof Elbrechter Praxisorientierte
MehrC# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
MehrProgrammieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Zur Erinnerung.
Vorbemerkungen Zur Erinnerung aktueller Standpunkt: Entwickler von (bibliotheken) jetzt sind wichtig interne Repräsentation der Daten Realisierung der gewünschten Funktionalität Bereitstellung geeigneter
MehrDie Mikroprogrammebene eines Rechners
Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl holen Befehl dekodieren Operanden holen etc.
Mehri2c-bus.de I2C-002 KURZBESCHREIBUNG I 2 C Modul mit PCA8574 8-Bit I/O Port-Expander Dokument NR.: I2C-002-D-01
DA CL Dokument NR.: I2C-002-D-01 I2C-002 KURZBECHREIBUNG I 2 C Modul mit PCA8574 8-Bit I/O Port-Expander P Bitte denken ie an die Umwelt, bevor ie diese Datei ausdrucken DA CL Inhaltsverzeichnis 1. Modul
MehrTCP/IP ASCII Schnittstelle Programmierhandbuch
TCP/IP ASCII Schnittstelle Programmierhandbuch Version 3.0 1. Einleitung Das IRTrans ASCII Format dient der Ansteuerung von IRTrans Modulen (über den irserver oder Ethernetmodule mit IRDB bzw. LAN Controller
MehrBetriebssysteme. Interruptverarbeitung in Betriebssystemen. Sommersemester 2014 Prof. Dr. Peter Mandl. Prof. Dr. Peter Mandl Seite 1.
Interruptverarbeitung in n Sommersemester 2014 Prof. Dr. Peter Mandl Prof. Dr. Peter Mandl Seite 1 Gesamtüberblick 1. Einführung in 2. Betriebssystemarchitekturen und Betriebsarten 3. Interruptverarbeitung
MehrC++-Entwicklung mit Linux
C++-Entwicklung mit Linux Eine Einführung in die Sprache und die wichtigsten Werkzeuge von GCC und XEmacs bis Eclipse Thomas Wieland [Druckvorlage vom 10. August 2004] xiii Inhaltsverzeichnis 1 Programmieren
MehrPraktikum Betriebssysteme 1. Aufgabe (1)
FG TECHNISCHE INFORMATIK U BS 041 01 TH 09 Praktikum Betriebssysteme 1. Aufgabe (1) Es wird ein unter LINUX lauffähiges C++-Programm ptab, mit dem Informationen über die Partitionierung von Festplatten
MehrInterrupt-Programmierung
Interrupt-Programmierung Am Beispiel des ATMEGA16 Microcontrollers Beispiel: Messung der Betriebszeit Die Betriebszeit zeigt an, wie lange der Rechner seit dem Booten läuft Hier: Aktualisierung der Betriebszeit
MehrAK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik
Netzwerk Programmierung Ein großer Teil von dem, was Netzwerkprogramme tun ist ganz simpler input und output: also bytes verschieben von einem System zu einem anderen. Bytes bleiben Bytes. Die Daten zu
MehrEinführung in die C-Programmierung
Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).
MehrStopp-Uhr. Erstellen Sie ein Programm (in Zweier- bzw. Dreier-Gruppen), welches folgende Bedingungen erfüllt:
Inhalt Aufgabenstellung... 1 Lösung... 2 System (Kontextdiagramm)... 2 Zustands-Übergangs-Diagramm... 2 Codeierung... 4 Main-Module... 4 Module-Button... 6 Module Timer... 8 Anhang... 12 Datenflussdiagramm...
MehrÜberschreiben von Methoden
Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra
Mehr10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)
10. Klassen Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Objektorientierte Programmierung!Das Konzept der Klassen!Members!Objekte!Konstruktoren und Destruktoren!this-Pointer!Public und Private
Mehrb) Gegeben sei folgende Enumeration: enum SPRACHE {Deutsch, Englisch, Russisch};
Aufgabe 1: (15 Punkte) Bei den Multiple-Choice-Fragen ist jeweils nur eine richtige Antwort eindeutig anzukreuzen. Auf die richtige Antwort gibt es die angegebene Punktzahl. Wollen Sie eine Multiple-Choice-Antwort
MehrGrundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme
Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Teil 1: Wiederholung C Heutige Agenda Nutzereingaben verarbeiten Teil 2: Grundlagen in C++ Erstes
MehrDeklarationen in C. Prof. Dr. Margarita Esponda
Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.
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
MehrEinführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015
Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
MehrEinführung in C++ mit Microsoft VS
Einführung in C++ mit Microsoft VS Gliederung Allgemeines zu C++ und Unterschiede zu Java Header-Files Zeiger/Strukturen Namespaces Programmierstil Einführung in Microsoft VS Projekte und Solutions Debugger
MehrMicrocontroller Kurs. 08.07.11 Microcontroller Kurs/Johannes Fuchs 1
Microcontroller Kurs 08.07.11 Microcontroller Kurs/Johannes Fuchs 1 Was ist ein Microcontroller Wikipedia: A microcontroller (sometimes abbreviated µc, uc or MCU) is a small computer on a single integrated
MehrDer C++ Crashkurs v1.0
Der C++ Crashkurs v1.0 Daniel Stöckel, M. Sc. October 14, 2013 1 Grundlegendes 1.1 Das erste Programm Wir beginnen mit einem einfachen Hello world Programm. Listing 1: hello world.cpp // Einbinden der
MehrKonzepte von Betriebsystem-Komponenten (KVBK) Schwerpunkt Linux
Konzepte von Betriebsystem-Komponenten (KVBK) Schwerpunkt Linux Interrupts, Softirqs, Tasklets, Bottom Halves Seminar am 10.11.2003, Referent: Thomas Engelhardt 1.) Einleitung Interrupts sind Ereignisse,
MehrInformationsverarbeitung im Bauwesen
1/21 Informationsverarbeitung im Bauwesen Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2010/2011 Vorlesung 8
MehrCompiler und Präprozessor (1) Erstellen eines Projektes
Compiler und Präprozessor (1) Erstellen eines Projektes Projekte bestehen meist aus mehreren Dateien, z.b. Quelldateien, Funktionssammlungen in Bibliotheken Zur Definition eines Projektes sind folgende
MehrEinführung in COM. 04.04.2006 Seite 1
Einführung in COM 04.04.2006 Seite 1 Ziele Sie kennen die Funktion der Registry für COM Sie können die Struktur eines COM-Objekts erklären Sie können erklären, wie ein remote-server gestartet wird 04.04.2006
MehrInhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Interrupts. Inhalt. Interrupts. Synchronisation
Übungen zu Systemnahe Programmierung in C (SPiC) Peter Wägemann, Sebastian Maier, Heiko Janker (Lehrstuhl Informatik 4) Übung 5 Inhalt Synchronisation Stromsparmodi Aufgabe 5: Ampel Hands-on: & Sleep Sommersemester
MehrReferenz. Bluetooth with NXT. Referenz zur Kommunikation mit Bluetooth zwischen mehreren NXT Prozessoren basierend auf NXC. Zelglistrasse 42 8122 Binz
Referenz Bluetooth with NXT Referenz zur Kommunikation mit Bluetooth zwischen mehreren NXT Prozessoren basierend auf NXC Veröffentlicht von: Martin Stypinski Zelglistrasse 42 8122
Mehr13. Vererbung. Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012)
13. Vererbung Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012) Vererbung Konzept Protected Section Virtuelle Mitgliedsfunktionen Verwendung von Vererbung Vererbung Vererbung ist ein Mechanismus,
MehrGrundlagen. Kapitel 1
Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die
MehrEinführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)
Wintersemester 2006/07 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl
MehrMakros sind Textersetzungen, welche vom Präprozessor aufgelöst werden. Dies Passiert bevor der Compiler die Datein verarbeitet.
U4 4. Übung U4 4. Übung Besprechung Aufgabe 2 Makros Register I/O-Ports U4.1 U4-1 Makros U4-1 Makros Makros sind Textersetzungen, welche vom Präprozessor aufgelöst werden. Dies Passiert bevor der Compiler
MehrTag 2 Eingabe und Interrupts
Tag 2 Eingabe und Interrupts 08/30/10 Fachbereich Physik Institut für Kernphysik Bastian Löher, Martin Konrad 1 Taster Direkt an Portpin angeschlossen (etwa PINB0, PIND3) Pull-Up-Widerstände einschalten!
MehrTurbo Assembler TASM. Man findet den TASM auf meiner Homepage in folgendem Verzeichnis. Informationstechnik speziell Systemsoftware
Turbo Assembler TASM Man findet den TASM auf meiner Homepage in folgendem Verzeichnis Informationstechnik speziell Systemsoftware 1 Disk1, Disk2 und Disk3 alle in ein Verzeichnis kopieren. Dann install.exe
Mehrautomation technologies GmbH PAD-Card Benutzerhandbuch
automation technologies GmbH PAD-Card Benutzerhandbuch PAD-Card Benutzerhandbuch Einschränkung der Gewährleistung: Die Angaben und Hinweise in diesem Handbuch sind sorgfältig geprüft und entsprechen den
MehrMultiuser Client/Server Systeme
Multiuser /Server Systeme Christoph Nießner Seminar: 3D im Web Universität Paderborn Wintersemester 02/03 Übersicht Was sind /Server Systeme Wie sehen Architekturen aus Verteilung der Anwendung Protokolle
Mehr1. Vom Sourcecode zum Programm
1. Vom Sourcecode zum Programm 1.1 Programmablauf source1.cpp source2.cpp header.h makefile Compiler Präprozessor Übersetzer Assembler object.obj object.obj Linker library.dll programm.exe Abbildung: Erstellung
MehrEinführung in C++ Vererbung und Polymorphismus
Einführung in C++ Vererbung und Polymorphismus Ablauf Grundlegende Eigenschaften der Vererbung in C++ Redefinition und Namensauflösung Eine einfache Klassenhierarchie in Java und C++ Redefinition von virtuellen
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22
Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften
MehrPropädeutikum. Dipl.-Inf. Frank Güttler
Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) guettler@informatik.uni-leipzig.de Universität Leipzig Institut für Informatik Technische Informatik
MehrGrundlagen der Informatik - 6. Praktikum
Grundlagen der Informatik - 6. Praktikum In diesem Praktikum soll es neben der Anwendung von Funktionsdefinitionen auch um einfache Prinzipien der verteilten Quelltext-Strukturierung gehen. Diese spielt
MehrProf. W. Henrich Seite 1
Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse
MehrJava Einführung VARIABLEN und DATENTYPEN Kapitel 2
Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen
MehrBetriebssystembau. 7. Übung. Michael Engel Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund
Betriebssystembau 7. Übung Michael Engel Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund michael.engel@tu-dortmund.de http://ess.cs.uni-dortmund.de/~me/ 1 Agenda Coroutinen
MehrWillkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java
Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen
MehrEin- Ausgabeeinheiten
Kapitel 5 - Ein- Ausgabeeinheiten Seite 121 Kapitel 5 Ein- Ausgabeeinheiten Am gemeinsamen Bus einer CPU hängt neben dem Hauptspeicher die Peripherie des Rechners: d. h. sein Massenspeicher und die Ein-
MehrKapitel 3: Kommunikation mit der Karte
Kapitel 3: Kommunikation mit der Karte Relevanter Standard: ISO 7816-4 Kartenleser/Terminal: Master, Smartcard: Slave APDU = Application Protocol Data Unit: Folge von Bytes Terminal Karte: Command APDU
MehrJava Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung
Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung Ludwig-Maximilians-Universität München Institut für Informatik Programmierung und Softwaretechnik (PST) Prof. Wirsing 6. Mai 2009 1 Der Name Java
MehrÜbersicht. C Modularisierung. Präprozessor, Compiler, Linker. Präprozessor, Compiler, Linker. Präprozessor, Compiler und und Linker Linker
Übersicht Präprozessor, Compiler und und Linker Linker Befehle des Präprozessors C Modularisierung Bedingte Kompilierung Modulare Programmierung Prinzipien der Modularisierung 1 2 Präprozessor, Compiler,
MehrModulare Programmierung und Bibliotheken
Modulare Programmierung und Bibliotheken Proseminar-Vortrag am 24.06.2011 von Ludwig Eisenblätter Ludwig Eisenblätter 1 von 25 Modulare Programmierung und Bibliotheken Inhaltsübersicht Motivation / Einleitung
Mehr12. Vererbung. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)
12. Vererbung Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Vererbung Konzept!Protected Section!Virtuelle Mitgliedsfunktionen!Verwendung von Vererbung Copyright: M. Gross, ETHZ, 2003 2 Vererbung!
MehrBetriebssysteme KU - Einführungstutorium
Betriebssysteme KU - Einführungstutorium SWEB-Tutoren irc://irc.at.euirc.net/bs Teamwork Arbeitsaufteilung? Zeiteinteilung? Codeeinteilung? Kommunikation! Kommunikation Kommunikation mit dem Team Gruppentreffen
MehrBerner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi 06.09.10 1
Kapitel 1 Einstieg in Java Dr. Elham Firouzi 06.09.10 1 1 : Einstieg in Java Einleitung Ein erstes Beispiel Berner Fachhochschule Entwicklung von Java-Programmen Applikationen Applets Vor und Nachteile
MehrDie Programmiersprache C Eine Einführung
Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert
Mehr