Grundlagen der Informatik III

Größe: px
Ab Seite anzeigen:

Download "Grundlagen der Informatik III"

Transkript

1 Grundlagen der Informatik III WS 2009 / 2010 [Folien basierend auf VL von Prof. Eckert, WS 07/08, und von Prof. Fellner WS 08/09] Prof. Dr. rer. nat. Frederik Armknecht Sascha Müller Daniel Mäurer Fachbereich Informatik / CASED Mornewegstraße Darmstadt

2 Gliederung der Vorlesung GdI 3 1. Einführung 2. Assemblerprogrammierung 3. Leistungsbewertung 4. Speicherhierarchie 5. Assembler, Binder, Lader 6. Betriebssysteme und Ein-/Ausgabe (Grundlagen) 7. Rechnernetze (Grundlagen) 8. Compiler (Grundlagen) Fachbereich Informatik Prof. Dr. Frederik Armknecht 2

3 Gliederung dieses Kapitels 5.0 Überblick 5.1 Assembleraufgaben 5.2 Phasen eines Assemblers 5.3 Binder 5.4 Klassen von Bindern 5.5 Lader (loader) Fachbereich Informatik Prof. Dr. Frederik Armknecht 3

4 5.0 Überblick Compiler Frontend: Parsen der Syntax Kompilieren in Zwischencode Compiler Backend und Assembler Zwischencode -> Native Code Platzhalter für imports & exports Linker: Erzeugen eines executable file Loader: Platzieren des Executables im Speicher I.d.R. Bestandteil des BS EXE Datei Loader App1.cpp App2.cpp Compiler Objekt datei Linker Image in MEM Incl.h Objekt datei Fachbereich Informatik Prof. Dr. Frederik Armknecht 4

5 5.1 Assembler Bem: hier nur allgemeine Assembler-Aufgaben, Details hängen stark von der zugrunde liegenden Maschinensprache ab Definition Assembler Ein Assembler ist ein Programm, das die Aufgabe hat, Assemblerbefehle in Maschinencode zu transformieren, und dabei (1) symbolischen Namen (z.b. Labels) Maschinenadressen zu zuweisen, (2) und eine oder mehrere Objektdatei(en) zu erzeugen. Fachbereich Informatik Prof. Dr. Frederik Armknecht 5

6 5.1 Assembleraufgaben Assembler übersetzt Datei in Assemblersprache in Datei mit binären Maschineninstruktionen in zwei Schritten: 1a. Auffinden von Speicherpositionen mit Marken, so dass Beziehungen zwischen symbolischen Namen und Adressen bei Übersetzung von Instruktionen bekannt sind. 1b. Übersetzung jedes Assemblerprogrammbefehls durch Kombination der numerischen Äquivalente der opcodes, Registerbezeichner und Marken in eine legale Instruktion. (2) Assembler erzeugt ein oder mehrere Objektdateien, die Maschinen-Instruktionen, Daten und Verwaltungs-Informationen enthält. Eine Objektdatei ist meist nicht ausführbar, da i.allg. auf Prozeduren oder Daten in anderen Dateien verwiesen wird. Fachbereich Informatik Prof. Dr. Frederik Armknecht 6

7 5.1 Assembleraufgaben Marken sind extern (global), falls das markierte Datum von außen referenziert werden kann. Marken sind intern (lokal), falls diese nur innerhalb einer Datei referenzierbar sind. Der Assembler bearbeitet jede Datei eines Programms separat, d.h. er kennt nur Adressen lokaler Marken. Erst mit dem Binder (Linker) werden (mehrere) Objekt-Dateien und Bibliotheken zu einem ausführbaren Programm gebunden durch die Behandlung externer Marken. Fachbereich Informatik Prof. Dr. Frederik Armknecht 7

8 5.1 Beispiel: Interne und externe Referenzen Ref to external symbol exit (defined in libc.so) m.c int e=7; int main() { int r = a(); exit(0); } Ref to external symbol a Def of local symbol ep a.c extern int e; int *ep=&e; int x=15; int y; int a() { return *ep+x+y; } Def of local symbol a Refs of local symbols ep,x,y Ref to external symbol e Defs of local symbols x and y Fachbereich Informatik Prof. Dr. Frederik Armknecht 8

9 5.1 Assembleraufgaben Problem bei Aufgabe 1: Nutzen von Marken bevor sie definiert sind Konsequenz: Abarbeiten des Programms Zeile für Zeile Befehle können Vorwärts-Referenzen enthalten, z.b. bnez $t0, ELSE # Vorwärts-Referenz auf ELSE. ELSE:... Problem: Adresse von ELSE ist beim ersten Auftreten unbekannt Konsequenz: korrekter Code kann nicht erzeugt werden Lösung: Assembler macht 2 Läufe (Two-pass) über das Programm 1-ter Lauf (Phase): Zuordnen von Maschinenadressen 2-ter Lauf (Phase): Erzeugen des Codes Fachbereich Informatik Prof. Dr. Frederik Armknecht 9

10 5.1 Assembleraufgaben Problem bei Aufgabe 2: Erzeugen der zu ladenden Objektdatei, z.b..o-datei Fall 1. Assembler verwendet absolute Maschinenadressen und eine Objektdatei (Objektprogramm): dann ist das Laden unmittelbar möglich, ABER: absolut adressiert, d.h. Speicherort muss vorher bekannt sein, Verschieben des Programms im Speicher ist nicht möglich. Fall 2. Assembler verwendet relative Adressen und als Eingabe mehrere Programm-Segmente, Assembler-Ausgabe: 1 Objekt-Dateien Fachbereich Informatik Prof. Dr. Frederik Armknecht 10

11 5.1 Assembleraufgaben Fall 2 (Forts.) Adressen werden relativ zu den einzelnen Objektdateien vergeben, Konsequenz: weitere Transformationsschritte sind notwendig, das ist die Aufgabe des Binder/Laders Binder/Lader: Objektdateien zu einem Lademodul zusammenfügen, Speicherplatz anfordern, Adressen umrechnen und Objekt-Code laden Frage: woher weiß Binder/Lader was zu tun ist? Antwort: Assembler muss Informationen dafür bereit stellen Objekt-Datei enthält Klassen von Einträgen (records), die unterschiedliche Informationen für den Binder/Lader zur Verfügung stellen Fachbereich Informatik Prof. Dr. Frederik Armknecht 11

12 5.2 Phasen eines Assemblers Datenstrukturen des Assemblers Ein Assembler benötigt im wesentlichen 2 Tabellen: 1. Tabelle, die eine Zuordnung zwischen Maschinencode und Assemblerbefehl enthält (OCT), statische Tabelle 2. Symboltabelle (SYMT), die eine Zuordnung zwischen symbolischen Namen und Maschinenadressen enthält Für jedes Programm-Segment führt der Assembler 2 Läufe durch: Schritte für Phase 1 eines sehr einfachen Assemblers: 1. Initialisiere Zähler mit Startadresse, falls angegeben, sonst mit 0 2. Ersetze Assemblerbefehl durch seinen Maschinencode unter Verwendung von OCT, z.b. lw durch (35) 10 Fachbereich Informatik Prof. Dr. Frederik Armknecht 12

13 5.2 Phasen eines Assemblers 3. Trage symbolischen Namen, der im Befehl auftritt, in Symboltabelle SYMT ein, falls noch nicht in Tabelle 4. Falls eine Marke definierend auftritt: z.b. ELSE:... falls Name noch nicht in SYMT: Erzeuge SYMT-Eintrag mit Zählerstand, Zählerstand: Adresse der Marke relativ zum Segmentanfang falls Marke ohne Zählerstand schon in SYMT: Eintrag des Zählerstands, d.h. Marken-Name ist als Vorwärts-Referenz bereits eingetragen falls Marke mit Zählerstand schon in SYMT: Fehler: doppelte Namensvereinbarung 5. Erhöhe Zähler um Länge der Instruktion 6. Falls nicht EOF, lies nächste Zeile und gehe zu Schritt 2 Ergebnis von Phase 1: Programm liegt in einer Zwischenform vor. Fachbereich Informatik Prof. Dr. Frederik Armknecht 13

14 5.2 Phasen eines Assemblers Phase 2 Erstellung eines Objekt-Programms für jedes Segment 1. Erzeuge Header-Eintrag und schreibe ihn in Objekt-Programm 2. Initialisiere ersten Text-Eintrag 3. Gehe Zeile für Zeile durch Programm-Segment (= Ergebnis aus Phase 1) 4. Falls symbolischer Name im Befehl auftritt: suche Name in SYMT, ersetze Name durch Adresse in SYMT falls Name nicht gefunden: trage 0 als Adresse ein und setze Flag: undefined Symbol (nicht aufgelöste Referenz) 5. Erstelle Maschinenbefehl-Code, füge Code dem Text-Eintrag hinzu 6. Falls noch nicht EOF: lies nächste Zeile des Eingabe-Programms und führe Schritte 3 5 durch 7. schreibe letzten Text-Eintrag in Objekt-Programm und 8. schreibe End-Eintrag in Objekt-Programm Fachbereich Informatik Prof. Dr. Frederik Armknecht 14

15 5.2 Phasen eines Assemblers Umgang mit externen Referenzen: Extern definierte Symbole müssen als importierte Symbole definiert werden, falls sie in einem Segment genutzt werden Assembler erzeugt anhand dieser Informationen spezielle Einträge in den Objekt-Dateien: Für zu exportierende Symbole: ein Eintrag (z.b. als (=define)), der den Namen und relative Adresse des Symbols im exportierenden Segment umfasst. ein Define-Eintrag enthält beispielsweise folgende Infos: Kennung D, exportiertes Symbol, relative Segment-Adresse Für zu importierende Symbole: ein Eintrag (z.b. als R (=Refer)): Name des importierten Symbols Fachbereich Informatik Prof. Dr. Frederik Armknecht 15

16 5.2 Phasen eines Assemblers Refer-Eintrag enthält beispielsweise folgende Infos: Kennung R, Name des importierten Symbols Findet der Assembler eine externe Referenz, so trägt er in dem erzeugten Code die Adresse 0 ein und erzeugt einen Modifikations-Eintrag (z.b. als M (=modify)) im Objekt-Programm Angabe, welches Auftreten der Referenz zu modifizieren (korrekte Adresse nachtragen) ist und Name des externen Symbols Modifikations-Eintrag enthält im Wesentlichen folgendes: Kennung M, zu modifizierende Adresse, importiertes Symbol Fachbereich Informatik Prof. Dr. Frederik Armknecht 16

17 5.2 Phasen eines Assemblers Beispiel: Assembler: Erzeugen von Objekt-Dateien (1) Erzeugen von Maschinencode (2) Erzeugen von Informationen für Binder/Lader (3) idr relativ adressierte Objekt-Datei (pro Eingabe-Segment) Segment 1 Addr. 1: bnez $t0, ELSE. Addr. 2: ELSE: Addr. 3: jal SUB Symboltabelle SYMT (Phase 1) Symbol Adresse rel. zum Segmentanfang. ELSE (Addr. 1,2) Addr. 2 (in Phase 2) SUB (Addr. 3) 0 undefined Symb. Fachbereich Informatik Prof. Dr. Frederik Armknecht 17

18 5.2 Phasen eines Assemblers Symboltabelle SYMT (Phase 1) Addr. 1: bnez $t0, ELSE Symbol Adresse rel. zum. Segmentanfang Addr. 2: ELSE:. ELSE Addr. 2 (in Schritt 2) Addr. 3: jal SUB SUB 0 undefined Symb. Phase 2: Code-Erzeugung d.h. erzeugen von Text-Segmenten mit Maschinenbefehlen Auflösen von Referenzen soweit möglich, z.b. bnez $t0, Addr. 2. SUB ist externe Referenz: importiertes Symbol in Segment 1 Assembler erzeugt: jal 0 und M-Eintrag im Objektprogramm: M Addr. 3 + SUB d.h. addiere an relativer Adresse Addr. 3 (jal-befehl) zum Sprungziel 0 die Adresse von SUB (wenn nach dem Binden bekannt) externe Referenz Fachbereich Informatik Prof. Dr. Frederik Armknecht 18

19 5.2 Format von Objekt-Dateien (Unix) 1. Object file header beschreibt Größe und Position der übrigen Abschnitte der Datei. 2. Text segment enthält Programmtext in Maschinensprache, ist u.u. wegen nicht aufgelöster Referenzen nicht ausführbar. 3. Data segment enthält binäre Darstellung der Daten der Quelldatei, u.u. wegen nicht aufgelöster Referenzen nicht vollständig. 4. Relocation information identifiziert Instruktionen und Daten-Worte, die von absoluten Adressen abhängen. Diese Referenzen müssen verändert werden, wenn Teile des Programms im Speicher verschoben (relocated) werden. Fachbereich Informatik Prof. Dr. Frederik Armknecht 19

20 5.3 Binder (linker) Definition Binder Der Binder (engl. linker) hat die Aufgabe, aus einer Menge von einzelnen Modulen ein ausführfähiges Objektprogramm zu erzeugen, indem die noch offenen externen Referenzen aufgelöst werden. Ausführfähig heißt ausführbar vom Lader (siehe 5.5) Definition Lader Ein Lader (engl. loader) ist ein Systemprogramm, das die Aufgabe hat, Objektprogramme in den Speicher zu laden und ggf. deren Ausführung anzustoßen. Viele Lader beinhalten gleichzeitig Binde-Funktion: Binder/Lader Fachbereich Informatik Prof. Dr. Frederik Armknecht 21

21 5.3 Binder (linker) Binder-Aufgaben: Kombination aller Objekt-Dateien (Objekt-Module) aller Programmteile und aller benötigten Programm-Bibliotheken zu einem ausführbaren Programm, dem Lademodul dazu werden die Code- und Datensegment im Speicher verschoben, (relocation) d.h. die Adressbezüge auf Code- und Datenbereiche in den Objekt-Dateien müssen angepasst (resolve) werden Externe Namensbezüge werden aufgelöst: ersetzen der nicht aufgelösten Referenzen in der Symboltabelle einer Objekt-Datei durch die Adresse der Symbol-Definition evtl. existierende Bezüge zu Shared-Libaries werden aber erst zur Ladezeit vom Loader aufgelöst: Link-Loader Fachbereich Informatik Prof. Dr. Frederik Armknecht 22

22 Einordnung des Binders (hier: binden von drei Objekt-Dateien) Fachbereich Informatik Prof. Dr. Frederik Armknecht 23 Linker durchsucht eine Reihe von Object-Dateien und Programm-Bibliotheken nach der Verwendung von nicht lokalen Routinen, verbindet diese zu einer einzigen, ausführbaren Datei und löst Referenzen zwischen Routinen in unterschiedlichen Dateien auf.

23 5.3 Binder Datenstrukturen und Schritte eines Binders/Laders Binder benötigt Tabelle (ESTAB), um externe Referenzen aufzulösen: ein Tabelleneintrag enthält u.a. folgende Infos: Symbol, Adresse, (evtl. in welchem Modul definiert) PADR: Startadresse für Programm im Speicher i.d.r. durch das Betriebssystem ermittelt und dem Lader mitgeteilt CSADR (control section adr): Startadresse des jeweils bearbeiteten Moduls Fachbereich Informatik Prof. Dr. Frederik Armknecht 24

24 5.3 Aufgabe des Binders (noch einmal am Beispiel) Relocatable Object Files Executable Object File system code system data.text.data 0 headers system code main().text m.o a.o main() int e = 7 a() int *ep = &e int x = 15 int y.text.data.text.data.bss a() more system code system data int e = 7 int *ep = &e int x = 15 uninitialized data.symtab.debug.data.bss Fachbereich Informatik Prof. Dr. Frederik Armknecht 25

25 5.3 Aufgabe des Binders Algorithmus zum Lauf 1 des Binders Jedes Modul wie folgt bearbeiten: 1. Header-Eintrag lesen: Modulname und Startadr. (=CSADR) in ESTAB eintragen, beim ersten Modul gilt: PADR=CSADR 2. Lesen von Export-Einträgen: alle auftretenden Symbole in ESTAB eintragen, ESTAB-Eintrag: Name, Adresse = CSADR + Relativadr 3. Wenn END-Eintrag erreicht: CSADR := CSADR + Länge des Moduls Nach Lauf 1: ESTAB enthält alle externen Symbole und deren Adresse. Fachbereich Informatik Prof. Dr. Frederik Armknecht 26

26 5.3 Aufgabe des Binders ESTAB m.o main() int e = 7 Import a Symbol main Adresse PADR a() Export a a.o int *ep = &e int x = 15 int y a CSADR + 0 Fachbereich Informatik Prof. Dr. Frederik Armknecht 27

27 5.3 Aufgabe des Binders Algorithmus zum Lauf 2 Laden, Verschieben, Binden 1. Lesen der Text-Einträge aus Objekt-Programm: Abspeichern des Codes an: CSADR + Relativadresse (aus Eintrag) 2. bei Modifikations-Eintrag: suche für Namen die zugehörige Adresse in ESTAB 3. END-Eintrag: Sprung zum Programmstart (z.b. PADR), starten Alternative: Benutzer muss mit einem Execute-Befehle (exec) explizit die Ausführung starten Bem.: Nutzung von Bibliotheksroutinen einfach möglich Routinen als externe Referenzen deklarieren Binder/Lader lädt gewünschtes Modul aus der Bibliothek Fachbereich Informatik Prof. Dr. Frederik Armknecht 28

28 ESTAB m.o main() int e = 7 Import a M-Eintrag für a Symbol main Adresse PADR a() Export a a.o int *ep = &e int x = 15 int y a CSADR + 0 Text-Eintrag: Befehle aus PADR ff main() speichern unter in main: externe Referenz auf a: M-Eintrag beschreibt Stelle im Objekt-Programm, die zu modifizieren ist, Eintragen der absoluten Adresse von a: CSADR Fachbereich Informatik Prof. Dr. Frederik Armknecht 29

29 5.3 Executable and Linkable Format (ELF) (Standardformat für Object-Programme) Elf header Magic number, type (.o, exec,.so), machine, byte ordering, etc. Program header table Page size, virtual addresses memory segments (sections), segment sizes..text section Code.data section Initialized (static) data.bss section Block Started by Symbol Groups data that is not initialized Doesn t take up space only tells how much space is needed Space is allocated when program is loaded Fachbereich Informatik Prof. Dr. Frederik Armknecht 30 ELF header Program header table (required for executables).text section.data section.bss section.symtab.rel.txt.rel.data.debug Section header table (required for relocatables) 0

30 5.3 Executable and Linkable Format (ELF).symtab section Symbol table Procedure and static variable names Section names and locations.rel.text section Relocation info for.text section Addresses of instructions that will need to be modified in the executable Instructions for modifying..rel.data section Relocation info for.data section Addresses of pointer data that will need to be modified in the merged executable.debug section Info for symbolic debugging (gcc -g) ELF header Program header table (required for executables).text section.data section.bss section.symtab.rel.text.rel.data.debug Section header table (required for relocatables) 0 Fachbereich Informatik Prof. Dr. Frederik Armknecht 31

31 5.3 Häufig genutzte Bibliotheken libc.a (the C standard library) Ca 1400 Objektdateien (Größe: unter 3 MB), mit ca 200 Standard-(ANSI-) C-Funktionen. Alles andere sind Erweiterungen der GNU C Library wie Netzwerkfunktionen, Systemfunktionen und sogar Kryptographie. I/O, memory allocation, signal handling, string handling, data and time, random numbers, integer math libm.a (the C math library): 401 Dateien, <500kB floating point math (sin, cos, tan, log, exp, sqrt, ) % ar -t /usr/lib/libc.a sort fork.o fprintf.o fpu_control.o fputc.o freopen.o fscanf.o fseek.o fstab.o % ar -t /usr/lib/libm.a sort e_acos.o e_acosf.o e_acosh.o e_acoshf.o e_acoshl.o e_acosl.o e_asin.o e_asinf.o e_asinl.o

32 5.4 Klassen von Bindern Binden zur Ladezeit: wie beschrieben Binden vor der Ladezeit: Linkage Editor Binden während der Ausführungszeit: dynamisches Binden Linkage Editor Erzeugen eines gebundenen Programms, das Lademodul, oder Executable Image (executable) Lademodul wird in einer Datei gespeichert Zur Ausführung eines Lademoduls: einfacher Lader reicht aus: aktuelle Startadresse muss nur zu den Relativ-Adressen im Modul addiert werden Fachbereich Informatik Prof. Dr. Frederik Armknecht 33

33 5.4 Klassen von Bindern Dynamisches Binden Ziel: Binden von Unterprogrammen erst zur Laufzeit, beim erstmaligen Aufruf: laden und zum Programm hinzubinden Vorteile: Referenzauflösung on-demand, kein Vorab-Binden einer vollständigen Kopie z.b. einer Bibliothek nötig. Unterstützung des Code-Sharings: ausführfähige Programme nutzen eine einzige Kopie gemeinsam Beispiele: Routinen für die Laufzeit-Unterstützung von C-Programmen in dynamic link library Windows: Dynamic Link Libraries (DLL), laden der DLL on-demand Fachbereich Informatik Prof. Dr. Frederik Armknecht 34

34 Dynamisch gebundene Shared Libraries m.c a.c Translators (cc1, as) Translators (cc1,as) m.o a.o Linker (ld) Partially linked executable p (on disk) p libc.so Shared library of dynamically relocatable object files Fully linked executable p (in memory) Loader/Dynamic Linker (ld-linux.so) P libc.so functions called by m.c and a.c are loaded, linked, and (potentially) shared among processes. Fachbereich Informatik Prof. Dr. Frederik Armknecht 35

35 5.5 Lader (loader) Aufgabe des Laders: Laden eines assemblierten und vom Linker vorbereiteten Objektprogramms vom Sekundärspeicher in den Hauptspeicher Starten der Ausführung (durch Laden des Program Counters mit der Anfangsadresse des Programms) Vier Teilschritte: Allokation (Zuweisung) von Speicherplatz für das Programm (bzw. eines Anfangsstücks bei Paging) ggf. Binden, d.h. Ersetzen logischer Programm-Adressen durch physikalische Hauptspeicher-Adressen Relokation, d.h. Anpassung der adressabhängigen Referenzen an deren aktuelle Position im Hauptspeicher Laden des Programms in den dafür reservierten Bereich Fachbereich Informatik Prof. Dr. Frederik Armknecht 36

36 5.5 Lader (loader) Executable object file ELF header Program header table (required for executables).text section 0 Process image init and shared lib segments Virtual addr 0x080483e0.data section.bss section.symtab.text segment (r/o) 0x rel.text.rel.data.data segment (initialized r/w) 0x0804a010.debug Section header table (required for relocatables).bss segment (uninitialized r/w) 0x0804a3b0 Fachbereich Informatik Prof. Dr. Frederik Armknecht 37

37 5.5 Lader (loader) Varianten: Assemble-and-Go: erweiterter Assembler, der generierten Code direkt im Hauptspeicher ablegt und am Ende von Phase 2 die Ausführung des Codes initiiert Nachteile: Speicherverwaltung mit Segmentierung kann nicht verwendet werden. Programm muss vor jeder Ausführung assembliert werden. Absolutprogramm-Lader: erwartet ein bereits gebundenes Programm, das ab einer vom Programmierer anzugebenden (absoluten) Startadresse in den Hauptspeicher geladen wird. Binden muss vor Aktivität des Laders abgeschlossen sein. Fachbereich Informatik Prof. Dr. Frederik Armknecht 38

38 5.5 Lader (loader) Relativprogramm-Lader: legt Programm nicht ab einer festen, sondern ab einer aktuell verfügbaren Adresse im Hauptspeicher ab. Voraussetzung: Alle Programmadressen sind relativ zum Programmanfang gehalten. Der Lader ersetzt diese dann durch ihren jeweils endgültigen Wert. Relokations-Bits (durch Assembler erzeugt) an Maschinenbefehlen: Lader erkennt daran, dass Befehl zu bearbeiten ist. Dynamischer Lader: steht im Zusammenhang mit dem Paging durch Paging ändert sich i.allg. die Anfangsadresse, d.h. relative Programmadressen müssen über Basis-Register an aktuelle Anfangsadresse angepasst werden. Binden erfolgt also zur Laufzeit. Fachbereich Informatik Prof. Dr. Frederik Armknecht 39

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

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

Mehr

Maschinencode Dateiformat und Stackframes

Maschinencode Dateiformat und Stackframes Maschinencode Dateiformat und Stackframes Proseminar C-Programmierung - Grundlagen und Konzepte Julian M. Kunkel julian.martin.kunkel@informatik.uni-hamburg.de Wissenschaftliches Rechnen Fachbereich Informatik

Mehr

Teil 1: Prozessorstrukturen

Teil 1: Prozessorstrukturen Teil 1: Prozessorstrukturen Inhalt: Mikroprogrammierung Assemblerprogrammierung Motorola 6809: ein einfacher 8-Bit Mikroprozessor Mikrocontroller Koprozessoren CISC- und RISC-Prozessoren Intel Pentium

Mehr

Betriebssysteme I: Speicherverwaltung (Teil A: Adress-Bindung)

Betriebssysteme I: Speicherverwaltung (Teil A: Adress-Bindung) Betriebssysteme I: Speicherverwaltung (Teil A: Adress-Bindung) Mühlbacher BS: Speicherverwaltung TeilA Adressbindung,Loader, Linker 1 Ausgangssituation Programm ist auf einem Massenspeicher als binary

Mehr

Technische Informatik 1 - Übung 3 3. & 4. November Philipp Miedl

Technische Informatik 1 - Übung 3 3. & 4. November Philipp Miedl Technische Informatik 1 - Übung 3 3. & 4. November 2016 Philipp Miedl Philipp Miedl 3. 11. 2016 1 Ziele der Übungen Aufgabe 1 Philipp Miedl 3. 11. 2016 2 Ziele der Übungen Aufgabe 1 Aufbau von Objekt-Dateien

Mehr

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung Version 21.12.2016 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen

Mehr

Betriebssysteme Teil 4: Übersetzung von C-Programmen

Betriebssysteme Teil 4: Übersetzung von C-Programmen Betriebssysteme Teil 4: Übersetzung von C-Programmen 18.10.13 1 Übersicht Übersetzungsprozess gcc(i) als Steuerprogramm Assembler Binder Hauptprogramme in C In dieser Einheit werden nur die Grundprinzipien

Mehr

Einführung in die Systemprogrammierung

Einführung in die Systemprogrammierung Einführung in die Systemprogrammierung Der Binder Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 28. Mai 2015 Herausforderungen durch große Programme Große Programme: die meisten

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

Linker: Adreßräume verknüpfen. Informationen über einen Prozeß. Prozeß-Erzeugung: Verwandtschaft

Linker: Adreßräume verknüpfen. Informationen über einen Prozeß. Prozeß-Erzeugung: Verwandtschaft Prozeß: drei häufigste Zustände Prozeß: anatomische Betrachtung jeder Prozeß verfügt über seinen eigenen Adreßraum Sourcecode enthält Anweisungen und Variablen Compiler überträgt in Assembler bzw. Binärcode

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

Echtzeitbetriebssysteme

Echtzeitbetriebssysteme Speicherverwaltung (Memory Management) Aufgaben der Memory-Management-Unit ist l der Speicherschutz und l die Adressumsetzung Wird durch Hardware unterstützt l Memory Management Unit (MMU) l MMU wird vom

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

Technische Informatik 2 Software

Technische Informatik 2 Software Technische Informatik 2 Software Prof. Dr. Miroslaw Malek Sommersemester 2005 www.informatik.hu-berlin.de/rok/ca Thema heute Evolution der Software Schichten Lader (Manuell, Bootstrap, Programm im ROM)

Mehr

- dynamisches Laden -

- dynamisches Laden - - - Fachbereich Technik Department Elektrotechnik und Informatik 21. Juni 2012 1/23 2/23 s dynamisch Code kann von mehreren Programmen genutzt werden => kleinere Programme einzelne Teile eines Programms

Mehr

1.7 Assembler Programmierung

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

Mehr

Übung 1 - Betriebssysteme I

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

Mehr

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

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

Mehr

Kapitel VI. Speicherverwaltung. Speicherverwaltung

Kapitel VI. Speicherverwaltung. Speicherverwaltung Kapitel VI Speicherverwaltung 1 Speicherverwaltung Computer exekutiert Programme (mit Daten) im Hauptspeicher. Hauptspeicher: Großes Array von Wörtern (1 oder mehrere Bytes) Jedes Wort hat eine eigene

Mehr

Definition Compiler. Bekannte Compiler

Definition Compiler. Bekannte Compiler Compiler Inhalt: Definition Compiler / bekannte Compiler Klassifikationen von Compilern Analyse-Synthese-Modell der Kompilierung Analyse des Quellprogramms Synthesephase Die Phasen eines Compilers Symboltabellenverwaltung

Mehr

Übersicht. Übersetzungsprozess gcc(i) als Steuerprogramm Assembler Binder Hauptprogramme in C

Übersicht. Übersetzungsprozess gcc(i) als Steuerprogramm Assembler Binder Hauptprogramme in C Übersicht Übersetzungsprozess gcc(i) als Steuerprogramm Assembler Binder Hauptprogramme in C In dieser Einheit werden nur die Grundprinzipien dargestellt, dies ist keine Beschreibung konkreter Formate

Mehr

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung Version 11.01.2017 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, historische Entwicklung, unterschiedliche Arten von Betriebssystemen

Mehr

DLLs (dynamic loaded libraries) mit MingW erstellen

DLLs (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:

Mehr

Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software

Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software Jens Döbler 2003 "Computer in der Chemie", WS 2003-04, Humboldt-Universität VL3 Folie 1 Grundlagen Software steuert Computersysteme

Mehr

Motivation und Überblick

Motivation und Überblick Motivation und Überblick Drei große Bereiche der Vorlesung: Darstellung von Zahlen in Rechnern Verarbeitung von Binärdaten auf der Ebene digitaler Schaltungen Programmierung auf Maschinenebene und relativ

Mehr

Klausur zum Kurs Betriebssysteme (1802) am 19. September 2009

Klausur zum Kurs Betriebssysteme (1802) am 19. September 2009 Fakultät für Mathematik und Informatik Lehrgebiet Kooperative Systeme Prof. Dr. Jörg M. Haake FernUniversität in Hagen 58084 Hagen Vorname Name Straße Hausnr. Informatikzentrum Universitätsstr. 1 58084

Mehr

Praxisorientierte 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) 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

Mehr

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung Version 13.01.2015 1 Klausur Termin: 10. März 2016, 13:00 Uhr Raum: Audimax, KG 2 4 ECTS Punkte 3 Klausuranmeldung Anmeldefrist: 31.01.2016 (Ausnahme:

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

Deklarationen in C. Prof. Dr. Margarita Esponda

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

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 11 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Technische Informatik 1 - HS 2015

Technische Informatik 1 - HS 2015 Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik 1 - HS 2015 Übung 3 Datum: 29. 30. 10. 2015 Einleitung Das Ziel dieser Übung ist, den Compilations-Vorgang

Mehr

Modulare Programmierung und Bibliotheken

Modulare 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

Mehr

Kapitel 1: Einführung

Kapitel 1: Einführung 10 Kapitel 1: Einführung 1.1 Was ist eine Programmiersprache? 1.2 Details zu C++ 1.3 Phasen der Programmierung 1.4 Ein erstes Programm: Hello World! 1.5 Addition zweier Zahlen 1.6 Entscheidungen 1.1 Was

Mehr

Entwicklung mit mehreren Dateien

Entwicklung mit mehreren Dateien Frühjahrsemester 2011 CS104 Programmieren II Teil II: C++ Programmierung Kapitel 9: Entwicklungsprozess in C++ H. Schuldt Entwicklung mit mehreren Dateien In C++ ist es üblich, den Quelltext in mehreren

Mehr

Lösungsvorschlag zu 1. Übung

Lösungsvorschlag zu 1. Übung Prof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 09/10 Lösungsvorschlag zu 1. Übung 1 Präsenzübungen 1.1 Schnelltest a) Welche der Aussagen treffen auf jeden

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

Übersicht zur Programmentwicklung unter UNIX

Übersicht zur Programmentwicklung unter UNIX Fachhochschule Wiesbaden Fachbereich Informatik Prof. Dr. Reinhold Kröger Übersicht zur Programmentwicklung unter UNIX Auf den folgenden Seiten werden die wesentlichen Aspekte und üblichen Techniken zur

Mehr

Inhaltsverzeichnis. 9.1 Aufgaben von Linker und Lader 9.2 Der Linker. 9.3 Der Lader

Inhaltsverzeichnis. 9.1 Aufgaben von Linker und Lader 9.2 Der Linker. 9.3 Der Lader Inhaltsverzeichnis /2 9 ufgaben von Linker und Lader 92 Der Linker - Der Linkage-Editor - Beispielaufbau eines Moduls - Beispiel eines Bindevorgangs 93 Der Lader 9 ufgaben von Linker und Lader 2/2 Programme

Mehr

DHBW Stuttgart Mikrocomputertechnik Labor KEIL Entwicklungsumgebung. Projektstruktur

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

Mehr

Grundlagen der Informatik Vorlesungsskript

Grundlagen der Informatik Vorlesungsskript Grundlagen der Informatik Vorlesungsskript Prof. Dr. T. Gervens, Prof. Dr.-Ing. B. Lang, Prof. Dr. F.M. Thiesing, Prof. Dr.-Ing. C. Westerkamp 16 AUTOMATISCHES ÜBERSETZEN VON PROGRAMMEN MIT MAKE... 2 16.1

Mehr

Einführung in die C-Programmierung

Einfü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).

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition

Mehr

Technische Informatik II Rechnerarchitektur

Technische Informatik II Rechnerarchitektur Technische Informatik II Rechnerarchitektur 3.Unterprogramme in MMIX Matthias Dräger E-Mail: www: mdraeger@mi.fu-berlin.de www.matthias-draeger.info/lehre/sose2010ti2/ tinyurl.com/sose2010ti2 Zuletzt bearbeitet:

Mehr

Definitionen zum Verschnitt

Definitionen zum Verschnitt Definitionen zum Verschnitt Die absoluten Größen haben eine Einheit. Beim Bilden der Verhältnisgrößen wird die Einheit gekürzt. Man kann bei den Verhältnisgrößen die Größe durch die Anzahl vorgegebener

Mehr

Bibliotheks-basierte Virtualisierung

Bibliotheks-basierte Virtualisierung Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2015/2016 V. Sieh Bibliotheks-basierte Virtualisierung (WS15/16)

Mehr

68000 Assembler. WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren.

68000 Assembler. WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren. WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren. Ein Programm liegt der CPU in binärer Form vor und wird durch den Assembler in einer primitiven

Mehr

Memory Management. Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at

Memory Management. Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at Memory Management Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1 Speicherverwaltung Effektive Aufteilung und Verwaltung des Arbeitsspeichers für BS und Programme Anforderungen

Mehr

J.5 Die Java Virtual Machine

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

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 1: Von der Maschinensprache zu C Prof. Dr. Maschinensprache: MIPS R2000 Was bewirkt folgendes Programm: 00100111101111011111111111100000 10101111101111110000000000010100

Mehr

Kapitel 6 Speicherverwaltung Seite 1 zum Teil nach: Silberschatz&Galbin, Operating System Concepts, Addison-Wesley)

Kapitel 6 Speicherverwaltung Seite 1 zum Teil nach: Silberschatz&Galbin, Operating System Concepts, Addison-Wesley) Kapitel 6 Speicherverwaltung Seite 1 6 Speicherverwaltung 6.1 Hintergrund Ein Programm muß zur Ausführung in den Hauptspeicher gebracht werden und in die Prozeßstruktur eingefügt werden. Dabei ist es in

Mehr

Assembler Programmierung Motivation. Informatik II SS 2004 Teil 4: Assembler Programmierung. Assembler vs. Maschinensprache

Assembler Programmierung Motivation. Informatik II SS 2004 Teil 4: Assembler Programmierung. Assembler vs. Maschinensprache Assembler Programmierung Motivation Informatik II SS 2004 Teil 4: Assembler Programmierung Was ist ein Programm? Eine Reihe von Befehlen, die der Ausführung einer Aufgabe dient Dazu wird das Programm sequentiell

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C Marcel Arndt arndt@ins.uni-bonn.de Institut für Numerische Simulation Universität Bonn Der Anfang Ein einfaches Programm, das Hello World! ausgibt: #include

Mehr

Programmiersprachen und Übersetzer

Programmiersprachen und Übersetzer Programmiersprachen und Übersetzer Sommersemester 2009 5. April 2009 Vorteile bei der Verwendung höherer Programmiersprachen Vorteile bei der Verwendung höherer Programmiersprachen 1. Einfache Notation

Mehr

Unterprogramme. Unterprogramme

Unterprogramme. Unterprogramme Unterprogramme Unterprogramme wichtiges Hilfsmittel für mehrfach benötigte Programmabschnitte spielen in höheren Programmiersprachen eine wesentliche Rolle in Assembler sind bestimmte Konventionen nötig

Mehr

Programm in Source-Files aufteilen Erhöht Lesbarkeit Aufteilung orientier t sich an logischer Struktur des Programms Getrenntes Übersetzen möglich:

Programm in Source-Files aufteilen Erhöht Lesbarkeit Aufteilung orientier t sich an logischer Struktur des Programms Getrenntes Übersetzen möglich: Source-Files Programm == Source-File nicht sinnvoll Unübersichtlich Bei jeder kleinen Änderung gesamtes File neu übersetzen Übersetzen dauert lange Keine Gruppenarbeit möglich Programm in Source-Files

Mehr

Beispiel einer Übersetzung

Beispiel einer Übersetzung Beispiel einer Übersetzung Ausdruck in C aktuelle_zeit = Startzeit + vergangene_minuten*60 + vergangene_sekunden; Ausdruck im Instruktionssatz des R10000 LW r1,minuten LW r1,sekunden ADDI r2,r0,60 ADD

Mehr

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Grundlagen. Die Komponenten eines C Programms. Das erste Programm Grundlagen 1. Die Komponenten eines C Programms 2. Ein Programm erzeugen und übersetzen 3. Variablen Deklarieren und Werte zuweisen 4. Zahlen eingeben mit der Tastatur 5. Arithmetische Ausdrücke und Berechnungen

Mehr

Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker

Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 Was sind Programme? In dieser Vorlesung: Python,

Mehr

U5-2 Erstellen von C-Funktionsbibliotheken

U5-2 Erstellen von C-Funktionsbibliotheken U5 5. Übung U5 5. Übung U5-1 Überblick Besprechung 3. Aufgabe (mini_sh) Fragen zur Aufgabe 4 (malloc)??? Erstellen von C-Funktionsbibliotheken RCS U5.1 1 Überblick statische Bibliotheken Archiv, in dem

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

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr

(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT

(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

Mehr

Repetitorium Informatik (Java)

Repetitorium 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

Mehr

Programmentwicklung ohne BlueJ

Programmentwicklung ohne BlueJ Objektorientierte Programmierung in - Eine praxisnahe Einführung mit Bluej Programmentwicklung BlueJ 1.0 Ein BlueJ-Projekt Ein BlueJ-Projekt ist der Inhalt eines Verzeichnisses. das Projektname heißt wie

Mehr

I.1 Die Parrot Assemblersprache

I.1 Die Parrot Assemblersprache I.1 Die Parrot Assemblersprache Die virtuelle CPU Parrot ermöglicht die Verarbeitung der Parrot Assemblersprache (PASM). Zum Einstieg soll ein erstes Beispiel die Ausführung einer PASM-Datei zeigen. Legen

Mehr

Agenda. Informatik I WS05/06 Folien von Tobias Dezulian

Agenda. Informatik I WS05/06 Folien von Tobias Dezulian 15.12.2005 Agenda Geltungsbereich (Scope) von Variablen Blöcke Der Call-Stack Einschub: Debugging unter Eclipse Der Heap Lebensdauer von Objekten Müllabfuhr: Garbage Collection Exceptions Geltungsbereich

Mehr

Assembler - Adressierungsarten

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

Mehr

Benutzerprogramme und Benutzer-Adressraum

Benutzerprogramme und Benutzer-Adressraum Benutzerprogramme und Benutzer-Adressraum Prof. Dr. Margarita Esponda Freie Universität Berlin WS 2011/2012 1 Benutzerprogramme Prozess src1.c Compiler cc src1.s Assembler as src1.o ELF Executable and

Mehr

Betriebssysteme Vorstellung

Betriebssysteme Vorstellung Am Anfang war die Betriebssysteme Vorstellung CPU Ringvorlesung SE/W WS 08/09 1 2 Monitor CPU Komponenten eines einfachen PCs Bus Holt Instruktion aus Speicher und führt ihn aus Befehlssatz Einfache Operationen

Mehr

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - ! 1. Grundelemente der Programmierung! 2. Objekte, Klassen und Methoden! 3. Rekursion und dynamische Datenstrukturen! 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

Inhalte. Einführung. Algorithmus, Programmiersprache, Compiler und Linker. Kontrollstrukturen. Präprozessoranweisungen. Libraries

Inhalte. Einführung. Algorithmus, Programmiersprache, Compiler und Linker. Kontrollstrukturen. Präprozessoranweisungen. Libraries INFAS.1 Informatik I Einführung Algorithmus, Programmiersprache, Compiler und Linker Datentypen Attribute, Speicherklassen und Namensbereiche Kontrollstrukturen Präprozessoranweisungen Libraries Funktionen

Mehr

FACHHOCHSCHULE MANNHEIM

FACHHOCHSCHULE MANNHEIM für Java-Programmierer Der Präprozessor Prof. Dr. Wolfgang Schramm FACHHOCHSCHULE MANNHEIM Hochschule für Technik und Gestaltung Präprozessor Ist dem Compiler vorgeschaltet ( Prä -). Spezielle Anweisungen

Mehr

Grundlagen der Programmentwicklung

Grundlagen der Programmentwicklung Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Über C++ Über C++ C++ ist eine in der Industrie

Mehr

Das Prinzip an einem alltäglichen Beispiel

Das Prinzip an einem alltäglichen Beispiel 3.2 Pipelining Ziel: Performanzsteigerung é Prinzip der Fließbandverarbeitung é Probleme bei Fließbandverarbeitung BB TI I 3.2/1 Das Prinzip an einem alltäglichen Beispiel é Sie kommen aus dem Urlaub und

Mehr

Werner Achte rt DATA BECKER

Werner Achte rt DATA BECKER Werner Achte rt. DATA BECKER Inhaltsverzeichnis 1. Einführung 21 1.1 Entwurf von Anwendungssystemen 23 1.2 Entwicklung eines Programms 25 1.3 Objektorientierte Programmierung 29 1.4 Darstellung objektorientierter

Mehr

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes Variablen Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes v ist Stück im Speicher, der 4 Bytes lang ist Speicherzugriff? Über Adressen!

Mehr

Datenpfad einer einfachen MIPS CPU

Datenpfad einer einfachen MIPS CPU Datenpfad einer einfachen MIPS CPU Zugriff auf den Datenspeicher Grundlagen der Rechnerarchitektur Prozessor 19 Betrachten nun Load und Store Word Erinnerung, Instruktionen lw und sw sind vom I Typ Format:

Mehr

U5 5. Übung. U5-1 Überblick. Besprechung 3. Aufgabe (mini_sh) Fragen zur Aufgabe 4 (malloc)??? Erstellen von C-Funktionsbibliotheken. SoS I - Ü U5.

U5 5. Übung. U5-1 Überblick. Besprechung 3. Aufgabe (mini_sh) Fragen zur Aufgabe 4 (malloc)??? Erstellen von C-Funktionsbibliotheken. SoS I - Ü U5. U5 5. Übung U5 5. Übung U5-1 Überblick Besprechung 3. Aufgabe (mini_sh) Fragen zur Aufgabe 4 (malloc)??? Erstellen von C-Funktionsbibliotheken RCS U5.1 U5-2 Erstellen von C-Funktionsbibliotheken U5-2 Erstellen

Mehr

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13 UNIVERSITÄT LEIPZIG Enterprise Computing Einführung in das Betriebssystem z/os Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13 Verarbeitungsgrundlagen Teil 2 Virtual Storage el0100 copyright

Mehr

Grundlagen der Rechnerarchitektur

Grundlagen der Rechnerarchitektur Grundlagen der Rechnerarchitektur Einführung Unsere erste Amtshandlung: Wir schrauben einen Rechner auf Grundlagen der Rechnerarchitektur Einführung 2 Vorlesungsinhalte Binäre Arithmetik MIPS Assembler

Mehr

Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009

Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009 Fachgebiet Rechnerarchitektur Fachbereich Informatik Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009 Aufgabe 9.1: Dinatos-Algorithmus-Analyse Die folgenden Verilog-Zeilen

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

5 Speicherverwaltung. bs-5.1 1

5 Speicherverwaltung. bs-5.1 1 5 Speicherverwaltung bs-5.1 1 Pufferspeicher (cache) realer Speicher Primärspeicher/Arbeitsspeicher (memory) Sekundärspeicher/Hintergrundspeicher (backing store) (Tertiärspeicher/Archivspeicher) versus

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 8 Das Konfigurationswerkzeug make...8-2 8.1 Modularisierung...8-2 8.2 Modulübersetzung...8-4 8.3 Konfigurationswerkzeug make und Aufbau eines Makefiles...8-8 8.3.1 Abhängigkeiten und Kommandos...

Mehr

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A 2.4.6. Kontrollstrukturen if-anweisung: Bedingte Ausführung (Verzweigung) 2 Varianten: if (Bedingung) Anweisung (Anweisung = einzelne Anweisung oder Block) Bedeutung: die Anweisung wird nur ausgeführt,

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4

Mehr

Werkzeuge zur Programmentwicklung

Werkzeuge zur Programmentwicklung Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul

Mehr

Speicherverwaltung (Swapping und Paging)

Speicherverwaltung (Swapping und Paging) Speicherverwaltung (Swapping und Paging) Rückblick: Segmentierung Feste Einteilung des Speichers in einzelne Segmente 750k 0 Rückblick: Segmentierung Feste Einteilung des Speichers in einzelne Segmente

Mehr

Technische Informatik II Wintersemester 2002/03 Sommersemester 2001. Heiko Holtkamp Heiko@rvs.uni-bielefeld.de

Technische Informatik II Wintersemester 2002/03 Sommersemester 2001. Heiko Holtkamp Heiko@rvs.uni-bielefeld.de Technische Informatik II Wintersemester 2002/03 Sommersemester 2001 Heiko Holtkamp Heiko@rvs.uni-bielefeld.de Speicher ist eine wichtige Ressource, die sorgfältig verwaltet werden muss. In der Vorlesung

Mehr

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH 1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH Die Umgebungsvariable CLASSPATH kann im Hamster-Simulator sowohl für Compiler als auch für die Ausführung des Hamster-Programms gesetzt werden: Hierdurch

Mehr

C++ - Variablen: Gültigkeit - Sichtbarkeit

C++ - Variablen: Gültigkeit - Sichtbarkeit C++ - Variablen: Gültigkeit - Sichtbarkeit Reiner Nitsch 8417 r.nitsch@fbi.h-da.de Attribute von Variablen und Funktionen Attribute von Variablen sind Name (name), Typ (type), Wert (value) Attribute von

Mehr

Phasen der Codegenerierung

Phasen der Codegenerierung Phasen der Codegenerierung 1. Vorverarbeitung Semantik basierte Optimierungen Basis: Zwischencode (abstrakter Syntaxbaum) 2. eigentliche (proper) Codegenerierung Erzeugung des Zielcodes (mit Optimierung)

Mehr

Eigene Java- Klassen in Intrexx

Eigene Java- Klassen in Intrexx T E C H N I S C H E D O K U M E N T A T I O N Eigene Java- Klassen in Intrexx Intrexx 6 1. Einführung: Velocity ist ein Open-Source Projekt der Jakarta Projektgruppe und birgt seine Hauptvorteile bei der

Mehr

Informatik I (D-MAVT)

Informatik I (D-MAVT) Informatik I (D-MAVT) Übungsstunde 1 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich kurze Stunden mit Stoffueberblick -> mehr Zeit fuer Fragen This semester s menu... Imperative Programmierung

Mehr

Algorithmen zur Datenanalyse in C++

Algorithmen zur Datenanalyse in C++ Algorithmen zur Datenanalyse in C++ Hartmut Stadie 16.04.2012 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 1/ 39 Einführung Datentypen Operatoren Anweisungssyntax Algorithmen zur Datenanalyse in

Mehr

Informatik für den Satellitenbau. Toolchains und Crosscompiler

Informatik für den Satellitenbau. Toolchains und Crosscompiler Informatik für den Satellitenbau Toolchains und Crosscompiler Folie 1 Inhalt GNU-Toolchain Crosscompiler Zusammenfassung Folie 2 GNU Toolchain GNU Make GNU Compiler Collection (GCC) GNU Binutils GNU Debugger

Mehr

Linux Paging, Caching und Swapping

Linux Paging, Caching und Swapping Linux Paging, Caching und Swapping Inhalte Paging Das Virtuelle Speichermodell Die Page Table im Detail Page Allocation und Page Deallocation Memory Mapping & Demand Paging Caching Die verschiedenen Caches

Mehr

Was machen wir heute? Betriebssysteme Tutorium 10. Frage 10.1.a. Frage 10.1.a

Was machen wir heute? Betriebssysteme Tutorium 10. Frage 10.1.a. Frage 10.1.a Was machen wir heute? Betriebssysteme Tutorium 10 Philipp Kirchhofer philipp.kirchhofer@student.kit.edu http://www.stud.uni-karlsruhe.de/~uxbtt/ Lehrstuhl Systemarchitektur Universität Karlsruhe (TH) 1

Mehr