Informatik II - Institute of Computer Science, Göttingen

Werbung
1. Organisatorisches und Überblick
Informatik II
„
Vorlesung: 4 Semesterwochenstunden
Dienstag, 14:15-15:45 Uhr, MN67
Freitag, 14:15-15:45 Uhr, MN67
Informatik II
„
Übung zur Vorlesung: 2 Semesterwochenstunden
Dienstag, 16:00-17:30 Uhr, MN67
SS 2004
„
Teil 1: Einführung
theoretische/praktische Tutorenstunden:
2 Semesterwochenstunden, Raum/Zeit je nach Gruppe
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
Lehrstuhl für Telematik
Institut für Informatik
Übersicht
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
1. Organisatorisches und Überblick
1. Organisatorisches und Überblick
Verantwortliche Personen
„
Webseiten
Vorlesung: Dipl.-Inform. Michael Ebner
„
Vorlesungsseite:
http://user.informatik.uni-goettingen.de/~info2/SS2004/
„
Forum: http://www.in-vent.info/forum/index.php
„
Univis: http://univis.uni-goettingen.de
(Vorlesungsverzeichnis -> Mathematische Fakultät -> ZFI ->
Pflichtblöcke -> Informatik)
„
Bachelor/Master Studiengang Informatik:
http://www.informatik.uni-goettingen.de
Email: [email protected]
Telefon: (0551) 39-14409
„
1.2
Übung/Tutorien: Dipl.-Inf. René Soltwisch
Email: [email protected]
Telefon: (0551) 39-14413
„
Übung/Tutorien: Dipl.-Inform. Kerstin Richter
Email: [email protected]
Telefon: (0551) 39-14408
„
Gemeinsame email Adressen:
…
…
…
[email protected]: Ebner, Soltwisch, Richter
v_info2_1@, ..., v_info2_7@: Jeweiliger Tutor
v_info2_all@: Dozenten und Tutoren
Übersicht
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
1.3
Übersicht
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
1.4
1. Organisatorisches und Überblick
1. Organisatorisches und Überblick
Tutorien
„
„
„
„
„
Einteilung über verteilte Tutorenliste
Gruppenwechsel sind in eigener Regie vorzunehmen und sind mit
den Tutoren abzustimmen
Wechsel zwischen theoretischer und praktischer Tutorenstunde
entscheidet Tutor bzw. Gruppe
NAM Computer-Account ist notwendig
Termine
…
…
…
…
…
„
Übungszettel I
„
Ausgabe: Vor der Übung am Dienstag
…
…
Montag 16-18Uhr und 18-20Uhr
Dienstag 18-20Uhr
Mittwoch 18-20Uhr
Donnerstag 14-16Uhr und 18-20Uhr
Freitag 11-13Uhr
Tutorien beginnen ab dem 19. April
Erste Ausgabe am 20. April
Übungszettel gibt es nur in Papierform!
„
Rückgabe: Dienstag, bis 12:55 Uhr, Info II Kästen in der NAM
„
Voraussichtlich 11 Übungszettel á 100 Punkte
„
max. zwei Studierende können einen Übungszettel gemeinsam
abgeben (Gemeinsame Abgabe ist erwünscht!)
„
50% der Gesamtpunktzahl sind zum Bestehen der Übungszettel
hinreichend
Übersicht
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
1.5
Übersicht
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
1. Organisatorisches und Überblick
1. Organisatorisches und Überblick
Übungszettel II
„
Klausur
Sollten wir anhand der gemachten Fehler erkennen, dass
Übungszettel abgeschrieben worden sind, erkennen wir diese nicht
an. Korrekt abgeschriebene Lösungen helfen Ihnen nicht, Ihr
Wissen zu überprüfen und zu intensivieren und helfen uns nicht
missverständliche Vorlesungsinhalte zu erkennen und ggf. zu
verbessern bzw. zu wiederholen.
„
Schriftliche Klausur über gesamten Stoff der Vorlesung
…
…
…
„
…
„
Klausurdauer: 90 Minuten
Klausurtermin: voraussichtlich 26. oder 27. Juli
Kreditpunkte: 9 ECTS
Anmeldung
…
MUNOPAG/WOPAG für BScInf, WiInf,WiPäd, etc.
Ansonsten erfolgt die Anmeldung über eine Liste im Sekretariat des
Lehrstuhls für Telematik
Leistungszertifikate und Scheine können nur über das Bestehen der
Klausur erstanden werden
…
Für Nebenfächler werden wahlweise benotete und unbenotete Scheine
ausgestellt
Übersicht
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
1.6
1.7
Übersicht
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
1.8
1. Organisatorisches und Überblick
1. Organisatorisches und Überblick
Literatur
„
„
Überblick I
1. Einführung
Rechenberg & Pomberger: „Informatik-Handbuch“, Hanser Verlag,
ISBN 3-446-21842-4
Walter Oberschelp & Gottfried Vossen: „Rechneraufbau und
Rechnerstrukturen“, Oldenbourg Verlag, ISBN 3-486-27206-3
„
J. Kurose & K. Ross: „Computernetze: Ein Top-Down-Ansatz mit
Schwerpunkt Internet“, Addison-Wesley Verlag
„
Weitere Literaturangaben werden im Laufe der Vorlesung bekannt
gegeben
…
…
…
Vorstellung der beteiligten Personen
Ablauf der Übungen
Inhalt der Vorlesung
2. Zahlen und logische Schaltungen
…
…
…
…
…
Nachrichten, Information, Daten
Zahlensysteme und –darstellung
Rechnerarithmetik
logische Schaltungen
boolesche Algebra
3. Von-Neumann-Rechner
…
Rechnermodell
4. Grundlagen der maschinenorientierten Programmierung
…
…
Assemblerprogrammierung
Bezug zu Betriebssysteme
Übersicht
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
1.9
1. Organisatorisches und Überblick
Übersicht
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
1.10
1. Organisatorisches und Überblick
Zusammenhang der Vorlesungsinhalte
Überblick II
Compilerbau (Kapitel 6)
5. Grundlagen von verteilten Systemen
…
…
…
OSI Schichtenmodell
Funktionsweisen von Rechnernetzen
Internet
Betriebssysteme (Kapitel 5)
6. Compilerbau (*)
…
…
Aufbau und Funktionsweise von Compilern
Lexer und Parser
Maschinenorientierte Programmierung (Kapitel 4)
7. Automaten und formale Sprachen (*)
…
…
Chomsky-Hierarchie
deterministische und nicht deterministische Automaten
von-Neumann-Rechner (Kapitel 3)
Speicher
Zahlen und logische Schaltungen (Kapitel 2)
„
(*) sind noch in Bearbeitung, weswegen die Inhalte noch nicht
endgültig festgelegt sind
Kommunikation (Kapitel 7)
von-Neumann-Rechner
Übersicht
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
1.11
Übersicht
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
1.12
1. Organisatorisches und Überblick
1. Organisatorisches und Überblick
Wie funktioniert ein Computer?
Architektur und Programmierung
Application (Netscape…)
„
Networks
Operating System
Compiler (Unix, Linux,
Assembler Windows…)
Automata
& formal
language
Software
Hardware
Processor Memory I/O system
…
…
…
Instruction Set
Architecture
…
…
…
Grundidee: Ebenen der Abstraktion
…
…
Verberge unnötige Implementierungsdetails
… Hilft zur Beherrschung realer, komplexer Systeme
1.13
1. Organisatorisches und Überblick
Zusammenfassung
Informatik II studiert die Funktionsweise von Rechnern
…
…
„
…
…
„
Grundlegende Hardwarekomponenten: Datenpfad, Speicher,
Eingabe/Ausgabe Geräte und Kontrolle; sowie die darunterliegende
digitale Schaltungen/Logik
Prinzipien von Software: Betriebssysteme, Kommunikationssysteme,
Compiler; Automaten und formale Sprachen
Prinzipien der Abstraktion sind wichtig zum Verstehen und Bauen
von geschichteten Systemen
…
Datenrepräsentation ist wichtig für die Leistung des Systems,
Verwendung von Ressourcen und besseren Genauigkeit.
Abstraktion und hierarchisches Design sind fundamentale Konzepte zur
Handhabung von Komplexität
Rohe Daten (Bitmuster) können alles bedeuten (integer, float, char,
etc.). Erst ein Programm legt die Bedeutung fest
Wissen über Rechnersysteme hilft beim Programmieren und beim
Software-Engineering
Übersicht
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Jeder Rechner hat 5 klassische Komponenten
Compiler können optimierten Code für einen Prozessor erzeugen
Betriebssysteme verwalten Ressourcen
Gutes Eingabe/Ausgabe Verhalten ist für Datenbanken und Netzwerke
wichtig
Verwaltung der eigenen Daten/Code im Speicher
Übersicht
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
„
Wo und wie Daten abgelegt werden macht einen großen Unterschied.
Schon das Umordnen von Statements kann hilfreich sein.
Softwareentwicklung erfordert oftmals wissen über Rechnersysteme
…
Informatik II
Was passiert beim Übersetzen des Quellcodes?
Warum ist Rechnerarithmetik manchmal falsch?
Was ist ein Busfehler oder Speicherzugriffsfehler?
Wie kann schneller ausführbarer Code erstellt werden?
…
„
transistors, IC layout
„
„
…
Datapath & Control
Digital Logic
Circuit Design
Das Wissen über die Rechnerarchitektur hilft das Design von
Programmiersprachen zu verstehen
1.15
Übersicht
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
1.14
2. Zahlen und logische Schaltungen
Überblick
Information und Informationsdarstellung
Zahlensysteme
Rechnerarithmetik
Boolesche Algebra und Gatter
Schaltwerke
Informatik II
SS 2004
Teil 2: Zahlen und logische Schaltungen
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
Lehrstuhl für Telematik
Institut für Informatik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Nachricht, Daten, Information (1)
Nachricht, Daten, Information (2)
Gleiche Informationen sind in verschiedenen Codierungen möglich
Für verschiedene Empfänger hat die gleiche Information oft unterschiedliche
Bedeutung
Information muss für den Empfänger nicht neu sein, evtl. ist der
Informationsgehalt auch leer
Nachricht
„Zeichen oder Kontinuierliche Funktion, die zum Zwecke der
Weitergabe Information aufgrund bekannter oder unterstellter
Abmachungen darstellen.“ (DIN 44300)
Daten
„Zeichen oder Kontinuierliche Funktion, die zum Zwecke der
Verarbeitung Information aufgrund bekannter oder unterstellter
Abmachungen darstellen.“ (DIN 44300)
Information
Information
„Inhalt von Nachrichten oder Daten“
Nachricht
Daten
Information
Codierung Information
Codierung Information
Weitergabe
Verarbeitung
Bedeutung/Inhalt
Codierung
2.3
Interpretation
Zweck
Nachricht
‘5 Grad’
menschliche
Sprache
Duden
Weitergabe der Information in
einem Gespräch
Datum
‘5 Grad’
1011’0101
0010’0000
1100’0111
1111’0010
0110’0001
0110’0100
ASCII
Weiterverarbeitung in einem
Textverarbeitungsprogramm
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.2
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.4
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Informationsdarstellung
Analoge Daten & Digitale Daten
Zur Übertragung von Nachrichten/Daten müssen diese in Signale
umgesetzt werden.
Analoge Daten
Physikalische Prozesse werden im Allgemeinen durch kontinuierliche
Funktionen beschrieben. Diese liefern im Prinzip unendlich viele Werte,
wobei sich diese aufgrund der Unschärferelation nicht unbedingt
unterscheiden lassen.
Wo begegnen uns analoge Daten?
Signal: physikalische Darstellung von Nachrichten/Daten
Signaltypen: Radiowellen, Rauchsignale, Stromfluss, Schallwellen,
usw.
Quecksilberthermometer, Uhren, Schallplatten, Audio-Kassetten, Waagen
Digitale Daten
Signalparameter: Ausprägung eines Signals mit dessen Hilfe
Nachrichten/Daten dargestellt werden.
Parameterarten: Frequenz, Farbe, Form, Spannung, Lautstärke, usw.
Signal
Quantisierung, d.h. der eventuell unendliche Wertebereich wird auf
endlich viele Werte abgebildet
Wo begegnen uns digitale Daten?
DVD, CD, Computerdisketten, digitale Uhren, digitale Thermometer
Information/Wissen
Nachricht/Daten
Informationsdarstellung
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.5
2. Zahlen und logische Schaltungen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.6
2. Zahlen und logische Schaltungen
Vorteile von digitalen Daten
Wie kommt man in einer ‘analogen‘ Welt zu digitalen Daten?
Auswahl diskreter Werte zur digitalen Interpretation erleichtert die
rechnergestützte Verarbeitung und kann auch die Genauigkeit
erhöhen
Daten werden in Rechnern praktisch ausschließlich in digitaler
Form dargestellt/verarbeitet. Meist in Form von „binären“ Signalen
Binäre Signale: Signale, die nur zwei Zustände annehmen können.
Beispiel: Digitalisierung von Sprache
Analoge Telephonie basiert auf der “Ähnlichkeit” von elektronischen Wellen und
Schallwellen
Sprachübertragung in der analogen Telephonie (‘analog‘ ≅ ‘ähnlich‘)
Zustand
1
0
Zeit
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.7
Anmerkung: Prinzip gilt auch für die Digitalisierung von Musik (z.B. MP3), erfordert
aber eigene Annahmen.
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.8
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Sprach- und Signalisierungsübertragung
Digitalisierung: Prinzip (1/3)
„digital“ ≅ „ziffernmäßig“
Beispiel:
Zusätzlich zur Nutzinformation werden Signalinformationen
übertragen.
Menge von Kartoffeln in einem Sack lässt sich durch zählen oder
wiegen beschreiben.
100 kg lässt sich durch die Folge 1-0-0 im Dezimalsystem beschreiben
Digitaltechnik: binärer Zeichenvorrat, d.h. 0 und 1
10010 ≅ 11001002
Ähnlich lassen sich elektrische Wellen in einem Telefon und der
Telefonleitung beschreiben.
Fazit: Elektrische Welle wird in regelmäßigen Abständen
“abgehorcht” und der dann aktuelle Wert wird notiert
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.9
2. Zahlen und logische Schaltungen
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.10
2. Zahlen und logische Schaltungen
Digitalisierung (2/3)
Digitalisierung (3/3)
Abtasttheorem
Ein Signal muss mindestens mit einer (Abtast-) Frequenz abgetastet
werden, die doppelt so hoch ist wie die höchste im Signal enthaltene
Frequenz. Andernfalls kann das Signal nicht originalgetreu reproduziert
werden.
Abtastfrequenz = 1/(Abstand zwischen zwei Abtastpunkten)
•Filter für Frequenzen
>3400Hz
Telephonie:
Frequenzen (Töne):
Abtastfrequenz:
Tiefpass:
300 Hz bis 3400 Hz
8000 Hz
Filter für Frequenzen > 3400 Hz
•(------------ Hüllkurve
angedeutet)
Durch Abtastung entsteht eine Folge von Impulsen (Werten). Hüllkurve
dieser Abtastwerte ergibt wieder das alte Signal.
Verfahren: Pulsamplitudenmodulation (PAM)
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.11
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.12
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Quantisierung (1/2)
Quantisierung (2/2)
Impulse sind ja immer noch analog, d.h. die gemessenen Werte sind
für die digitale Repräsentation u.U. noch zu genau. Sie müssen zu
digitalen Signalen verarbeitet werden. (⇒ Einschränkung auf eine
darstellbare endliche Wertemenge)
Maximal mögliche Amplitudenwert wird in eine endliche Anzahl von
Amplitudenstufen unterteilt (=quantisiert)
Je mehr Stufen (Quantisierungsschritte) benutzt werden, desto genauer
wird das Originalsignal abgetastet und desto originalgetreuer kann es
wieder gewonnen werden.
Telekom-Netzbetreiber verwenden
28 = 256 Quantisierungsschritte (mit 8Bit darstellbar)
Bitrate eines Fernsprechkanals?
Abtastfrequenz: 8000Hz = 8000/s
8Bit * 8000/s = 64000 Bit/s = 64 kBit/s
Informationsdarstellung
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.13
2. Zahlen und logische Schaltungen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.14
2. Zahlen und logische Schaltungen
Zeitmultiplexverfahren
Datenaufbewahrung
Physikalische Prozesse mit deren Hilfe sich Signale und
Informationen aufbewahren und wiederherstellen lassen
Je nach Anwendung kann man zwischen RAM und ROM
unterscheiden:
Speichermedium
ROM
RAM
2.15
Wert 1
Webstuhl-Brettchen
Bohrung
Keine Bohrung
Lochstreifen/Lochkarte
Lochung
Keine Lochung
Kippschalter
Kontakt
zu
Kontakt offen
Magnetschicht
↑H
↓H
Transistor
0,5 V
4,5 V
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Wert 0
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.16
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Codierung - Grundlagen
Codierung - Codes (1/2)
Alphabet (Zeichenvorrat):
Code:
Endliche Menge von Zeichen, die zur Darstellung von Informationen benutzt wird
Beispiele:
Ziffern:
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Alphanumerisches Alphabet: {a,...,z, A,...,Z, 0,...,9}
Binärzeichen:
{0, 1}
zwei Zeichenvorräte: Urbildmenge und Bildmenge
eindeutige Abbildung von der Urbildmenge auf die Bildmenge
Binärcode:
Code, bei dem jedes Zeichen der Bildmenge ein Wort aus Binärzeichen
(Binärcode) ist.
Wort:
Folge von Zeichen, die in einem bestimmten Kontext als Einheit betrachtet
werden
Beispiele:
Zahlwörter:
Schreibwörter:
Binärwörter:
105, 75, 73, 15, ...
Kohlkopf, Hunger, Hund
001, 10010010, 1, 0, ...
Bemerkungen zum Kontext:
in Englisch hat das Wort ‘Kohlkopf’ keine Bedeutung
‘010’ kann von Rechner mit Wortlänge 8 nicht verarbeitet werden
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.17
2. Zahlen und logische Schaltungen
Alphanumerische Codes
Sind zur gemeinsamen Darstellung von Zahlen und Buchstaben in
Texten notwendig.
Alphabet:
Beispiel: Codierung der Zahlen 0 ... 9 als Binärwörter
Abkürzungen
BCD:
Binary Coded Decimal
EBCDIC: Extended Binary Decimal Interchange Code
ASCII:
American Standard Code for Information Interchange
BCD
EBCDIC
(Dualzahl)
0
1
2
3
4
5
6
7
8
9
+
-
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
ASCII
(P: Paritätsbit)
1111’0000
1111’0001
1111’0010
1111’0011
1111’0100
1111’0101
1111’0110
1111’0111
1111’1000
1111’1001
P011’0000
P011’0001
P011’0010
P011’0011
P011’0100
P011’0101
P011’0110
P011’0111
P011’1000
P011’1001
P010’1011
P010’1101
26
Großbuchstaben
(A ... Z)
26
Kleinbuchstaben
(a ... z)
10
Zahlen
(0 ... 9)
62
Zeichen
62 Zeichen lassen sich in einem Binärwort der Länge 6 codieren (26
= 64).
Was ist mit nationalen Sonderzeichen und Satzzeichen?
Zum Beispiel: Ä Ü Ö , ; : - + ( )
Man benutzt daher einen 7 Bit Code mit dem sich 128 Zeichen (27
Zeichen) codieren lassen.
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.18
2. Zahlen und logische Schaltungen
Codierung - Codes (2/2)
Dezimalzahl
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.19
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.20
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Bits
P000
76543210
Codierung - ASCII Code (1/2)
ASCII: American Standard Code for Information Interchange
8 - Bit Code:
7 Bit zur Codierung von Zeichen
1 Bit Paritätsbit
P001 P010 P011 P100 P101 P110 P111
0000
NULL
DC0
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
SOM
EOA
EOM
EOT
WRU
RU
BELL
FE
HT/SK
LF
DC1
DC2
DC3
DC4
ERR
SYNC
LEM
S0
S1
S2
!
„
#
$
%
&
‘
(
)
*
1011
V/TAB
S3
1100
1101
1110
1111
FF
CR
SO
SI
S4
S5
S6
S7
0
@
P
‘
p
1
2
3
4
5
6
7
8
9
:
A
B
C
D
E
F
G
H
I
J
Q
R
S
T
U
V
W
X
Y
Z
a
b
c
d
e
f
g
h
i
j
q
r
s
t
u
v
w
x
y
z
+
;
K
,
.
/
<
=
>
?
L
M
N
O
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.21
2. Zahlen und logische Schaltungen
↑
←
l
m
n
o
ACK
UC
ESC
DEL
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.22
2. Zahlen und logische Schaltungen
Codierung - ASCII Code (2/2)
Der Unicode-Standard (1/4)
Die meisten Computer arbeiten jedoch mit einer 8 Bit Codierung
ohne Paritätsbit, d.h. anstelle von 27 (=128) Zeichen werden 28 (=
256) Zeichen kodiert. Man spricht dann von “Extended Character
Sets“.
Extended Character Sets werden z.B. benutzt um
Linienzeichnungen (z.B. ⎤ oder ⎝) und andere wichtige Zeichen zu
kodieren (z.B. ☺ oder ).
Natürlich auch zur Berücksichtigung von nationalen Varianten (z.B.
ß, ü, Ü, ö, Ö, ä, Ä, û, ú, ù, Æ, æ, è, é, Ó).
Typischerweise reichen 256 Zeichen jedoch nur aus um eine
nationale Variante zu unterstützen, wodurch es dann wieder viele
verschiedene nationale Extended Character Sets gibt.
Ein Ausweg aus diesem Chaos soll der Unicode sein, einer 16 Bit
Kodierung von Zeichen, bei der die ersten 128 Kodierungen der
normalen 7 Bit ASCII entsprechen.
Allgemeines
Universeller Standard zur Zeichencodierung
Teilmenge von ISO/IEC 10646-1 second edition: Information
Technology Universal Multiple- Octet Coded Character Set (UCS)-Part
1: Architecture and Basic Multilingual Plane
Ziele:
Codierung multilingualer Texte
Einfacher Austausch von Textdateien über nationale Grenzen hinweg
Einbeziehung mathematischer und technischer Symbole
Unicode ist Standardcodierung bei Java
Unterstützung in C++ durch Datentyp wchar_t und Klassenbibliotheken
wie QT
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
k
\
2.23
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.24
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Der Unicode-Standard (2/4)
Der Unicode-Standard (3/4)
Zeichenumfang
Zeichencodierung
Jedes Zeichen ist eindeutig einem 16-Bit-Codewert zugewiesen
≈ 65.500 Zeichen; ausreichend für die Codierung aller Zeichen aller
geschriebenen Sprachen
Aktuelle Codierung: Alphabetics, Symbols
10.236
CJK Ideographs
27.786
Hangul Syllables
11.172
Private Use
6.400
Surrogates
2.048
Controls
65
Unicode entspricht in Not Characters
den unteren
128 Werten
dem ASCII-Code
Total assigned 16-bit code values
2
57.709
Unassigned 16-bit code values
Unterstützte Sprachen:
Latein, Griechisch, Chinesisch/Japanisch/Koreanisch, Kyrillisch,
Arabisch, Bengalisch, Gujarati,...
Zusammengesetzte Zeichen (z. B. Umlaute) können wahlweise
dargestellt werden:
durch „vorkomponierte“ Zeichen (aus Kompatibilität), z. B. ä, oder
durch Kombination von Grundzeichen und Diakritika (vorteilhaft bei
Sortierung), z. B. a“
Änderung der Schreibrichtung kann durch spezielle Zeichen eingeleitet
werden, z. B. beim Wechsel zwischen Englisch und Arabisch
Unicode legt nicht das Aussehen (glyph) von Zeichen fest; statt dessen
Zuweisung eines Namens, z. B.
„LATIN CAPITAL LETTER A“
7.826
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.25
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Der Unicode-Standard (4/4)
Codierung - Schichtenmodell
Quellen
Schichtenmodell als Gedankenmodell
Unicode Consortium (http://www.unicode.org)
The Unicode Standard, Version 3.0, Addison Wesley, 2000 (mit
Korrekturen für Version 3.0)
C3
C2
C1
C0
Beispiel:
Codierungen sind häufig geschachtelt. D.h. eine
höhere Schicht stützt sich auf die nächst tiefere
ab. Die höhere Schicht nimmt Zeichen entgegen,
ignoriert aber deren tiefere Codierung.
C++ – Schlüsselwörter
Großbuchstaben ISO
ISO 7-Bit
8-Bit Bytes
Binärstellen, Bits
Schaltzustände
Elektronenebene
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.26
2.27
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.28
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Rückblick: Information und Informationsdarstellung
Überblick
Signal, Daten, Nachricht, Information
Analoge Daten & digitale Daten
Codierungen
Information und Informationsdarstellung
Zahlensysteme
Rechnerarithmetik
Boolesche Algebra und Gatter
Schaltwerke
Zahlencodes
alphanumerische Codes
Codes
BCD Code
EBCDIC Code
ASCII Code
Unicode
Schichtung von Codierungen
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.29
2. Zahlen und logische Schaltungen
Polyadische Zahlensysteme (2/2)
Potenzen zu einer Basis B als Stellenwert
n = ∑ai * Bi
z.B. Codierung von 198510
BCD (kein polyadisches Zahlensystem):
0001
1001
1000
0101
(B, ai ∈ N0, B > 1)
i=0
1
9
8
= ((...(aN-1 * B) + aN-2) * B + ...)*B + a1) *B + a0
(Horner Schema)
besagt das <ZAHL> einen Wert im Zahlensystem mit der Basis <Basis> beschreibt.
123 im Dezimalsystem,
z.B.
12310
11102 1110 im Dualsystem
Dualsystem (Basis 2):
111110000012
= 1*210 + 1*29 + 1*28 + 1*27 + 1*26 + 0*25 + 0*24 + 0*23 + 0*22 + 0*21 + 0*20
=(((((((((1*2 + 1)*2 + 1)*2 + 1)*2 + 1)*2 + 0)*2 + 0)*2 + 0)*2+ 0)*2+ 0)*2+ 1
=198510
Zahlensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5
Dezimalsystem (Basis 10):
198510 = 1 * 103+9 * 102 +8 * 101 + 5 * 100
= ((1 * 10) + 9) * 10 + 8) *10 + 5
= aN-1 * BN-1 + aN-2 * BN-2 + ... + a1 * B1 + a0
Konvention:
<ZAHL><BASIS>
2.30
2. Zahlen und logische Schaltungen
Polyadische Zahlensysteme (1/2)
N-1
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.31
Zahlensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.32
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Zahlensysteme mit Zweierpotenz als Basis
Umrechnung zwischen Zahlensystemen
Binärsystem (Basis 2)
Vierersystem (Basis 4)
Oktalsystem (Basis 8)
Hexadezimalsystem (Basis 16) (Zeichenvorrat: 0...9, A...F)
Einfache Umrechnung: „Umgruppieren der Binärstellen“
Beispiel:
146310 = 101101101112
=
01
01
10
11
01
11
1
1
2
3
1
3
=
=
010
110
110
111
2
6
6
7
0101
1011
0111
5
B
7
Im allgemeinen reicht es nicht aus einfach nur die Binärstellen
umzugruppieren.
Empfehlung für die manuelle Umrechnung:
I. Darstellung mit Basis B1
Multiplikative
Umrechnung im
Zielsystem
(hier Basis 10)
(1)
*
II. Darstellung mit Basis 10
= 1123134
Dividierende
Umrechnung im
Quellsystem
(hier Basis 10)
(2)
/
=26678
III. Darstellung mit Basis B2
=5B716
Zahlensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.33
2. Zahlen und logische Schaltungen
Beispiel für manuelle Umrechnung (2/3)
DB716 = ???7
(1) Multiplikative Umrechnung mit Basis 10
(2)
D16 * 16102
+ B16 * 16101
+
716 * 16100
= D16 * 25610
+
B16 * 1610
+
716
= 1310 * 25610
+ 1110 * 1610
+
710
=
+
+
710
332810
=
17610
351110
oder entsprechend dem Horner Schema
DB716
Dividierende Umrechnung im Quellsystem
(Quellsystem: Basis 10, Zielsystem: Basis 7)
(Einfaches ‘Ausmultiplizieren’)
=
2.34
2. Zahlen und logische Schaltungen
Beispiel für manuelle Umrechnung (1/3)
DB716
Zahlensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
351110
/
7
=
501
Rest 4
=
a0
501
/
7
=
71
Rest 4
=
a1
71
/
7
=
10
Rest 1
=
a2
10
/
7
=
1
Rest 3
=
a3
1
/
7
=
0
Rest 1
=
a4
0
/
7
=
0
Rest 0
=
a5
...
/
7
=
0
Rest 0
=
a6
=
((D16 * 1610) + B16) * 1610 + 716
=
((1310 * 1610) + 1110) * 1610 + 710
...
...
...
...
...
... ...
...
...
=
(20810 + 1110) * 1610 + 710
...
...
...
...
...
... 0
=
an
=
350410 + 710
=
351110
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
(a4a3a2a1a0)7 = 131447
Zahlensysteme
2.35
Zahlensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.36
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Empfehlung für manuelle Umrechnung zwischen Zahlensystemen
(Zusammenfassung)
Beispiel für manuelle Umrechnung (3/3)
Beispiel: DB716 = ???7
Also:
I. Darstellung mit Basis B1
(1)
Multiplikative
Umrechnung im
Zielsystem
(hier Basis 10)
*
DB716
=
351110
=
131447
Schritt (1)
Schritt (2)
(Multiplikation)
(Division)
DB716 = ((D16 * 16) + B16) * 16 + 716
= ((13 * 16) + 11)*16 +7
= (208 + 11) * 16 + 7
= 219 * 16 + 7
= 3504 + 7
= 351110
II. Darstellung mit Basis 10
(2)
Dividierende
Umrechnung im
Quellsystem
(hier Basis 10)
/
3511
501
71
10
1
:7
:7
:7
:7
:7
= 501
= 71
= 10
= 1 Rest
= 0 Rest
Zahlensysteme
2.37
2. Zahlen und logische Schaltungen
Zahlensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.38
2. Zahlen und logische Schaltungen
Direkte Umrechnung einer Zahlendarstellung mit Basis B1 in eine
Zahlendarstellung mit der Basis B2 (1/2)
Direkte Umrechnung einer Zahlendarstellung mit Basis B1 in eine
Zahlendarstellung mit der Basis B2 (2/2)
Dividierende Umrechnung im Quellsystem
Multiplikative Umrechnung im Zielsystem
Beispiel: DB716 = ???7
Beispiel: DB716 = ???7
Einfaches ‘Ausmultiplizieren’
DB716
4 = a0
4 = a1
1 = a2
= a3
= a4
DB716 = 351110 = 131447
III. Darstellung mit Basis B2
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Rest
Rest
Rest
3
1
=
=
=
=
D16 * 5147
167 * 5147
124637
131447
( 1610 = 1016 = 227,
16102= 25610 = 5147)
+
+
+
B16 * 227
147 * 227
3417
+
+
+
716
107
107
DB716
/
716
= 1F516
1F516
/
716
=
4716
/
716
A16
/
116
/
Rest 4
= a0
4716
Rest 4
= a1
=
A16
Rest 1
= a2
716
=
116
Rest 3
= a3
716
=
016
Rest 1 = a4
oder entsprechend dem Horner Schema
DB716
=
=
=
=
=
((D16 * 227) + B16) * 227 + 716
((167 * 227) + 147) * 227 + 107
(4157 + 147) * 227 + 107
131347 + 107
131447
a4 a3 a2 a1 a0 = 131447
Zahlensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.39
Zahlensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.40
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Darstellung von Brüchen
Handhabung von unechten Brüchen
Brüche werden als negative Potenzen der Basis dargestellt.
zB =
-N
∑ai *
Vor dem Komma anfallende Ziffern entsprechen dem Rest bei der
Division im Quellsystem (vgl. Folie 2-35).
(B, ai ∈ N0, B > 1, ai<B)
Bi
i=-1
Für Umrechnung Aufspalten in
Horner Schema:
z=
1 (a +
-1
B
1 (a-2 +
B
1 (a-3 + ... +
B
1 (a-N+1 +
B
ganze Zahl und
echter Bruch.
1 a-N) ... )
B
zB = 0 , a-1 a-2 a-3 a-4 ... a-N
Darstellung:
Wiederholte Multiplikation mit der Basis B bringt die Ziffern ai vor das
Komma: -N
-N
zB * B = a-1 + ∑ai * Bi
(wobei immer gilt : ∑ai * Bi < 1)
i=-2
z=
a-1 +
i=-2
1 (a +
-2
B
1
B
(a-3 + ... +
1 (a
-N+1 +
B
1 a ) ... )
-N
B
z.B.: 0.5310 * 1010 = 5,310
Zahlensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.41
2. Zahlen und logische Schaltungen
2.42
2. Zahlen und logische Schaltungen
Umrechnung im Quellsystem
Beispiel: Umrechnung im Quellsystem (1/2)
Beispiel: 12,023 = ??,??2
Ganzahliger Anteil:
123 = 1012
Echter Bruch:
0,023 = 0,???2
Zahlensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
0,023 = 0,???2
(Bemerkung: 123 = 510)
Dividierende Umrechnung im Quellsystem (vgl. Folie
2-35) bedeutet sukzessive Division durch 1/B
(Division mit Bruch = Multiplikation mit Kehrwert des Bruches)
Sukzessive Division durch 1/B entspricht einer
Sukzessiven Multiplikation mit der Basis B.
Der ganzzahlige Anteil bei den Multiplikationsschritten bildet die ai im Zielsystem.
Zahlensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.43
Zahlensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.44
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
0,023
*
23
=
0,113
a-1
=
0
0,113
*
23
=
0,223
a-2
=
0
0,223
*
23
=
1,213
a-3
=
1
Beispiel: Umrechnung im Quellsystem (2/2)
Ergebnis:
12,023
Periode
0,213
*
23
=
1,123
a-4
=
1
0,123
*
23
=
1,013
a-5
=
1
0,013
*
23
=
0,023
a-6
=
0
0,023
*
23
=
0,113
a-6
=
0
0,113
~ 5,2221710
5,210
Darstellung von Brüchen in unterschiedlichen Zahlensystemen kann
zu Ungenauigkeiten führen.
Zahlensysteme
3
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.45
2. Zahlen und logische Schaltungen
wg. Darstellung als negativer Exponent der Basis heißt das
Division
Division nach Horner mit Anschreiben der Ziffern in umgekehrter
Reihenfolge
5
1
7
1
* (3 + 71 * (6 + 7 5)))
1
1
= ((( 7 + 6) * 7 + 3) * 7 + 4) *
1
7
510
:
710
=
0,714310
6, 714310
:
710
=
0,959210
3, 959210
:
710
=
0,565610
4, 565610 :
710
=
0,652210
0, 4 3 6 5
7
Zahlensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.46
Umrechnen im Zielsystem (2/2)
z.B. 0.43657 ???10
(Erinnerung: multiplikative Umrechnung, vgl. Folie 2-34)
* (4 +
Zahlensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2. Zahlen und logische Schaltungen
Umrechnen im Zielsystem (1/2)
1
7
101,0011102
d.h. 0,023=0,0011102
0,22
0,43657 =
=
2.47
0, 6 5 2 2 10
Zahlensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.48
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Überblick
Zahlendarstellung und Rechnen im Dualsystem (1/3)
Information und Informationsdarstellung
Zahlensysteme
Rechnerarithmetik
Logische Schaltungen
Boolesche Algebra
Kombinierte logische Schaltungen
Durch N Bits lassen sich 2N Zahlenwerte codieren
Nur positive Zahlen, Wertebereich: 0 ... (2N–1)
Positive und negative Zahlen:
(N-1) - Bit Zahl mit Vorzeichen
darstellbarer Wertebereich: [-2N-1 ... 0 ... 2N-1-1]
„Most significant“ Bit als Vorzeichencodierung
7
↑
N=8
N= 16
6
5
4
3
2
1
0
„most significant bit“
0
= positive Zahl
1
= negative Zahl
Wertebereich: 0 ... 255 oder -128 ... +127
Wertebereich: 0 ... 65535 oder -32768 ... +32767
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.49
2. Zahlen und logische Schaltungen
2.50
2. Zahlen und logische Schaltungen
Zahlendarstellung und Rechnen im Dualsystem (2/3)
Zahlendarstellung und Rechnen im Dualsystem (3/3)
N Bits erlauben 2N Möglichkeiten zur Zahlendarstellung, d.h. nur
eine Darstellung mit endlicher Genauigkeit.
Was macht man?
man führt Operationen auf einem Zahlenring durch
Darstellung (Codierung) der Zahlen als Binärworte
Bei positiven Zahlen:
Zahlen n und n + BN sind nicht unterscheidbar
(höchstwertige Bit geht verloren)
Bei positiven und negativen Zahlen:
Additionsüberlauf kann zu negativen Ergebnissen führen
Beispiel:
0 1001110
78
+ 0 1011000
1 0100110
|
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
+
88
166
> 128
-38
negatives Vorzeichen
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.51
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.52
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
3 Darstellungsformen für Zahlen
1.
2.
3.
Darstellung mit Vorzeichen und Betrag (1/2)
Vorzeichen und Betrag (engl. Sign-/Magnitude)
Stellenkomplement
Basiskomplement
Wortlänge N
N-1 Bits beschreiben den Betrag der Zahl
1 Bit beschreibt das Vorzeichen der Zahl
zwei Darstellungen für die NULL
engl. ‘Sign-/Magnitude Representation‘
Die Vorzeichen und Betrag Darstellung entspricht dem was man so
kennt.
Warum 3 Darstellungsformen?
Ziel: möglichst einfache ALU
(CPU Baustein, der Rechenoperationen durchführt)
Wie macht man das?
Subtraktion wird auf die Addition zurückgeführt
Multiplikation wird auf die Addition zurückgeführt
Division wird auf die Multiplikation (d.h. Addition) zurückgeführt
Rechnerarithmetik
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.53
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Darstellung mit Vorzeichen und Betrag (2/2)
0
Nachteile der Betrag-/Vorzeichen-Darstellung
Man benötigt Addier- und Subtrahierwerk in der ALU
Man benötigt spezielle Logik um zu bestimmen, ob addiert oder
subtrahiert werden soll
Beispiel: die Operanden x und y sollen addiert werden
011...1
100...0
111...1
-0 +0
111...1
10...0
00...0
es sind folgende Fälle zu unterscheiden:
011...1
Fall
Beispiel für diese Darstellung:
Dezimal
Vorzeichen Betrag
+
92
0000 0101 1100
-
92
1000 0101 1100
Operanden
2.55
+x
⇒ x≥0
–x ⇒ x < 0
+y
⇒ y≥0
–y ⇒ y < 0
Auszuführende Operation
1
+x +y
(zwei positive Operanden)
Addition
2
-x-y
(zwei negative Operanden)
Addition -(x + y)
3
|positiver Operand| ≥ |negativer Operand|
+x, -y, |x| ≥ |y| bzw. +y, -x, |y| ≥ |x|
Subtraktion
x – y bzw. y – x
4
|negativer Operand| ≥ |positiver Operand|
+x, -y, |x| < |y| bzw. +y, -x, |y| < |x|
Subtraktion
–(|y| – |x|) bzw. – (|x| – |y|)
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.54
x+y
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.56
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Komplementdarstellungen
1.
2.
Stellenkomplement (1/2)
C für das Stellenkomplement: N-1 C = BN – 1
Darstellung einer Zahl a: n = ∑ai * Bi
i=0
Komplementbildung:
Stellenkomplement (B-1 Komplement)
Basiskomplement
N-1
a= C–a=
Ziel: Rückführung der Subtraktionen auf die Addition
(BN-1) -
ai * Bi
i=0
Komplementbildung: b = C – b (für geeignetes C)
Subtraktion durch Addition des Komplements:
a+b =
a–b+C
⇔ a–b =
a+b–C
N-1
=
N-1
Bi+1 -
N-1
Bi
i=0
-
i=0
ai * Bi
i=0
|
BN – 1
N-1
=
d.h. wenn
(1.) das Komplement leicht zu bilden ist
und
(2.) die Reduktion mod C einfach ist,
dann kann die Subtraktion auf eine Addition des Komplements
zurückgeführt werden
((B – 1) – ai)
* Bi
i=0
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.57
2. Zahlen und logische Schaltungen
((B – 1) – ai) bedeutet:
(B-1)-Komplement kann für jede Stelle (= Stellenkomplement) gebildet werden.
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.58
2. Zahlen und logische Schaltungen
Stellenkomplement für die Basis 2
Stellenkomplement und andere Basen
N-1
N-1
Wie funktioniert die (B-1)-Komplementbildung für die Basis 2?
einsetzen
in die bekannten Formeln:
N-1
a = ∑ai * 2i
Formeln: a = ∑ai * Bi;
a = ∑ ((2 – 1) - ai ) * 2i
Man kann das Stellenkomplement auch auf andere Zahlensysteme
(neben dem Dualsystem) anwenden,
z.B. Dezimalsystem (d.h. B = 10):
i=0
i=0
N-1
i=0
(1 – ai ) d.h. Invertierung jeder Stelle der Dualzahl
→
→
→
→
→
→
x5 = 1 – x5 = 1 – 0 = 1
x4 = 1 – x4 = 1 – 1 = 0
x3 = 1 – x3 = 1 – 0 = 1
x2 = 1 – x2 = 1 – 0 = 1
x1 = 1 – x1 = 1 – 1 = 0
x0 = 1 – x0 = 1 – 0 = 1
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
i=0
x=357
Beispiel: x = x5 x4 x3 x2 x1 x0 = 0 1 0 0 1 0
x5 = 0
x4 = 1
x3 = 0
x2 = 0
x1 = 1
x0 = 0
((B – 1) – ai) * Bi
im Dualsystem: Komplementbildung ≅ „Bits stellenweise invertieren“
i=0
N-1
= ∑ (1 - ai ) * 2i
a=
x=101101
x2 = 3
→
x2 = (10 – 1) – x2 = 9 – 3 = 6
x1 = 5
→
x1 = (10 – 1) – x1 = 9 – 5 = 4
x0 = 7
→
x0 = (10 – 1) – x0 = 9 – 7 = 2
x=642
Rechnerarithmetik
2.59
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.60
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Eigenschaften Stellenkomplement (Dualsystem)
Zahlenring im Stellenkomplement
Im Rechner werden die negativen Zahlen als Komplemente der
positiven Zahlen dargestellt.
Das „most significant Bit“ beschreibt das Vorzeichen der
repräsentierten Zahl:
-7
8
1000
positive
Zahlen
-3
12
1100
1 1 1 ... 1
0101
4
3
-2
13
1101
2
+-
-1
14
1110
+(½ * BN – 1)
0110
5
negative
Zahlen
-4
11
1011
Zwei Darstellungen der Null
Darstellbarer Zahlenbereich
–(½ * BN – 1)
...
6
-5
10
1010
1 ⇒ –
Und
0111
-6
9
1001
0 ⇒ +
0 0 0 ... 0
7
0
1
0100
0011
0010
0001
0000
1111
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.61
2. Zahlen und logische Schaltungen
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.62
2. Zahlen und logische Schaltungen
Stellenkomplement: Reduktion mod C (1/7)
Stellenkomplement: Reduktion mod C (2/7)
1. Fall: a, b > 0 ; a > b ⇒ d > 0
Erinnerung: Stellenkomplement ist nur sinnvoll, wenn
Abschätzung:
BN ≤ a + b < 2*BN
d.h.: Es tritt ein Überlauf von 1 in die (nicht existierende) (N+1).te Stelle
auf.
Warum?
C
– b)
a+b=
a+(
Komplementbildung einfach ist
(Stellenweise invertieren)
Reduktion mod C einfach ist
|
Reduktion mod C: d = a – b = a + b –C
Es sind 3 Fälle zu unterscheiden:
=
=
a+(
a–b
BN – 1
– 1 + BN
– b)
|
0 < d < BN
1. Fall (zwei positive Zahlen)
a, b > 0 ; a > b
⇒
d>0
2. Fall (zwei positive Zahlen)
a, b > 0 ; a ≤ b
⇒
d≤0
3. Fall (zwei negative Zahlen)
d = –a – b < 0 ; |d| = a + b
Ignorieren des Übertrags entspricht einer Subtraktion von BN
Aufaddieren einer 1 entspricht dann einer Subtraktion von C = BN – 1
d.h. man muß den Überlauf addieren um zum richtigen Ergebnis zu
gelangen.
Stichwort: “Einserrücklauf“
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.63
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.64
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Stellenkomplement: Reduktion mod C (3/7)
Stellenkomplement: Reduktion mod C (4/7)
1. Fall: 3 Beispiele
1. Fall: 3 Beispiele
I. Dezimalsystem (N = 3)
a–b
65
– 43
III. Dualsystem (N = 5)
Dezimal
a+b–1
14
01110
–
0
+ 11111
1 01101
1
14
01110
a+b–1
065
+
956
1
021
Komplementbildung
43 = 999 – 043 = 956
1
022
22
II. Dualsystem (N = 5)
a–b
01110
⇒
–00111
a+b–1
01110
+
11000
1
00110
1
00111
Bemerkung 1:
00000 = 11111
Bemerkung 2:
„negative Null stört nicht“
Dezimal
(Komplement)
–
⇒
14
7
7
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.65
2. Zahlen und logische Schaltungen
Stellenkomplement: Reduktion mod C (6/7)
2. Fall: a, b > 0 ; a ≤ b ⇒ d ≤ 0
3. Fall: d = –a – b < 0 ; |d| = a + b
Differenz d = a – b ist negativ, d.h. d muß selbst in der
Komplementdarstellung vorliegen: d ⇒ C – |d|
d in Komplementdarstellung d = C - |d| ist erwünscht
a + b = (C – a) + (C – b)
= (C – (a + b))
+ C
= (C – |d|)
+ C
=
|d|
+ (BN – 1)
d = – |d| = a + b – C ⇔
C – |d| = a + b
≤ C = BN – 1
verschwindet
durch
ignorieren des Überlaufs
und Einserrücklauf
d.h. die Addition des Komplements liefert bereits d in der richtigen
Darstellung!
Es tritt kein Überlauf in die (N+1).te Stelle auf, weil: a + b ≤ BN – 1
Beispiel:
5
– 7
– 2
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.66
2. Zahlen und logische Schaltungen
Stellenkomplement: Reduktion mod C (5/7)
dezimal
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
a+b
dual
– 00101
00111
Gewünschte Ergebnis
⇒
+ 00101
11000
11101
Rechnerarithmetik
2.67
Überlauf in die (N+1).te Stelle und Einserrücklauf liefern |d| in
Komplementdarstellung (d.h. das gewünschte Ergebnis)
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.68
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Stellenkomplement: Reduktion mod C (7/7)
Basiskomplement (B-Komplement)
3. Fall: d = –a – b < 0 ; |d| = a + b
C für das Basiskomplement: C = BN
Komplementbildung:
N-1
N-1
Ba = BN –
ai * Bi = (BN-1) – (
ai * Bi ) + 1
Beispiel:
– 7
–
5
Dual
1100
+
0
1101
0
1 1001
0
=
B-1a
i=0
i=0
+1
d.h. die Komplementbildung ist für das Basiskomplement etwas
aufwendiger
(B–1)–Komplement bilden
Aufaddieren einer 1
Beispiel:
– 1
2
1
10011
(12 ≅ 0 1 1 0 0)
(B-1)-Komplement:
5
≅
00101
B–15
≅
11010
Aufaddieren von 1:
+
≅
B5
1
11011
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.69
2. Zahlen und logische Schaltungen
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2. Zahlen und logische Schaltungen
Eigenschaften Basiskomplement (Dualsystem)
Zahlenring im Basiskomplement
-8
1000
Negative Zahlen werden als Komplemente der positiven Zahlen
dargestellt.
Das „most significant Bit“ beschreibt das Vorzeichen der Zahl.
-7
9
1001
8
0111
6
-5
11
1011
1 ⇒ –
Es gibt nur eine Null
Bemerkung: Komplement der Null liegt beim Basiskomplement, anders als
beim Stellenkomplement, nicht mehr im darstellbaren Zahlenbereich
(Übertrag in die (n+1).te Stelle).
negative
Zahlen
-4
12
1100
positive
Zahlen
+(½ *
– 1)
3
2
-1
15
1111
2.71
0101
4
-3
13
1101
-2
14
1110
BN
0110
5
0
0000
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7
-6
10
1010
0 ⇒ +
Darstellbarer Zahlenbereich
–(½ * BN )
...
2.70
1
0100
0011
0010
0001
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.72
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Reduktion mod C im Basiskomplement (1/2)
Reduktion mod C im Basiskomplement (1/2)
einfach, da C = BN,
d.h. Überlauf in die (N+1).te Stelle ignorieren entspricht bereits der
Subtraktion von BN ⇒ „kein Einserrücklauf“
Beispiele:
Dezimalsystem (N=3)
065
– 043
B043
= 956 + 1
⇒
022
Beispiele:
Dualsystem (N=5)
dezimal
5
–
065
+ 957
1 022
⇓
022
Dual
7
–2
00101
+
11001
11110
(≅ B2)
Fall d < 0: Ergebnis ist bereits in Komplementdarstellung
Dualsystem (N=5)
dezimal
–
Dual
14
01110
7
+ 11001
7
1 00111
(≅ B7)
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.73
2. Zahlen und logische Schaltungen
Stellen- und Basiskomplement (2/2)
Überschreiten des zulässigen Zahlenbereichs
Fall 1: a, b > 0
Bei Operanden mit ungleichem Vorzeichen ist ein Überschreiten des zulässigen
Zahlenbereichs nicht möglich:
oder
|a – b| ≤ |b|
Ein Fehler entsteht dann, wenn gilt a + b ≥ BN-1
Das vorderste (‚most significant‘) Bit wird gesetzt und als falsches
Resultat entsteht eine negative Zahl.
Es gibt jedoch keinen Überlauf in die (N+1).te Stelle.
Fall 2:
Überschreitung möglich, wenn:
a, b < 0
a, b < 0
Ein Fehler entsteht dann, wenn gilt
|a| + |b| >
BN-1
(Basiskomplement)
(Stellenkomplement)
≥
BN-1
Das Vorzeichenbit wird dann zurückgesetzt, es gibt einen Überlauf in
die (N+1).te Stelle und es entsteht ein falsches ‚positives‘ Resultat.
Beim Stellenkomplement führt dieses normalerweise zum
Einserrücklauf
oder a, b > 0
da das oberste Bit das Vorzeichen repräsentiert, kann bei Überschreitung des
Zahlenbereichs das Vorzeichen wechseln.
In so einem Fall muß:
- ein Überlauf angezeigt werden,
- eine arithmetische Fehlerbedingung aktiviert werden
- „Overflow error“ angezeigt werden,
- ....
- usw.
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.74
2. Zahlen und logische Schaltungen
Stellen- und Basiskomplement (1/2)
|a – b| ≤ |a|
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.75
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.76
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Gegenüberstellung der 3 Zahlencodierungen
Rechenwerk
Multiplikation und Division (1/2)
Negation
Einserrücklauf
Vorzeichen-/ Betrag Add / Sub
Vorzeichen invertieren
Stellenkomplement Add
Ziffern komplementieren Ja
Basiskomplement
Stellenkomplement+ 1
Add
Nein
Nein
zurückführen auf Addition (bzw. Subtraktion)
Multiplikation:
Wiederholtes Verschieben (Shift-Operationen) und Addieren im
Dualsystem
010110101 * 0 1 0
0 0 0
0 1
0
Stellenkomplement:
Verzögerung beim Rechnen wg. Einserrücklauf
Zwei Darstellungen der NULL
+
Basiskomplement
Mehraufwand beim Herstellen des Komplements
Verzögerung beim Negieren
1
0
0
0
0
1
0
1
0
1
0
0
0 0 0 0
1 0 1 0 1
0 0 0 0 0 0
0 1 1 0 1 0
1 0 1 1 0 1
0 0 0 0 0 0
0 0 1 1 1 1 1 0 0 0 1
Shift-Operationen
1
0 1
0 0 0
1 1 0
Praxis: heute fast nur noch Basiskomplement
(Genügend Wortbreite für das Resultat angenommen)
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.77
2. Zahlen und logische Schaltungen
BCD–Darstellung & BCD–Arithmetik (1/4)
Division:
–
1
1
0
0
0
1
0
0
0
0
0
0
1
– 1
1 0 0 1
1
1
0
0
1
0
1
0
0
0
1
1
0
0
: 10010
4.te Alternative zur Darstellung und zum Rechnen mit ganzen
Zahlen
BCD–Darstellung und BCD–Arithmetik wird von verschiedenen
Mikroprozessoren direkt unterstützt
BCD–Codierung:
= 10111
Rest: 1 0 1 1
0
0
0 1
1 0
1 1
010
110
210
310
410
510
610
710
810
910
Wiederholtes Verschieben und Subtrahieren im Dualsystem
Schwierig bei negativem Divisor
eine Lösung: rechnen mit absoluten Beträgen und anschließend
Vorzeichenrechnung
Fehlermeldung für Divisor = 0
(„Zerodivide“)
≅
≅
≅
≅
≅
≅
≅
≅
≅
≅
0000BCD
0001BCD
0010BCD
0011BCD
0100BCD
0101BCD
0110BCD
0111BCD
1000BCD
1001BCD
‘+‘
≅
1010
‘-‘
≅
1011
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.78
2. Zahlen und logische Schaltungen
Multiplikation und Division (2/2)
1 1 0
–1 0 0
1 0
–
1
1
–
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.79
1100
1101
1110
ungenutzte
Werte
6 Codierungen, die
nicht zur Zahlendarstellung benutzt
werden
1111
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.80
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
BCD–Darstellung & BCD–Arithmetik (2/4)
Beispiel 1:
dezimal
BCD–Darstellung & BCD–Arithmetik (3/4)
Beispiel 3: 4739 + 1287 = 6026
BCD –Darstellung
23
0010
0011
0100
0111
0011
1001
+14
0001
0100
0001
0010
1000
0111
1
37
0011
0111
normale Dualzahlenaddition liefert hier das korrekte Ergebnis
Beispiel 2:
dezimal
BCD –Darstellung
29
0010
1001
+14
0001
0100
3?
(6)
0011
1101
0110
43
0100
1
→ ungültiger BCD Code
→ Korrektur
0011
Bei Überträgen und beim Erreichen von ungültigen BCD-Codierungen
liefert die Addition von 610 (= 0110BCD) das richtige Ergebnis
0101
1001
1100
0000
0110
→ Übertrag
→+6
0101
1001
1100
0110
→ ungültiger BCD Code
1
0110
0101
1010
0010
1
0110
0110
0000
0010
0110
⇓
0
⇓
2
⇓
6
⇓
6
→+6
0110
→ ungültiger BCD Code
→+6
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.81
2. Zahlen und logische Schaltungen
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.82
2. Zahlen und logische Schaltungen
BCD–Darstellung & BCD–Arithmetik (4/4)
Gleitkommazahlen: Motivation
Häufig berichteter Fehler in GCC (GNU Compiler Collection)
Abschließende Bemerkungen:
Der BCD-Code erlaubt auch das Rechnen mit Festzahlen, d.h. Zahlen
bei denen die Anzahl der Stellen hinter dem Komma festliegt
Wenn der Ablauf „Zahleneingabe, Arithmetik, Zahlenausgabe“ ohne
Umwandlung ins Binärsystem erfolgen soll, wird der BCD-Code
bevorzugt.
Der BCD-Code wird vorwiegend im technischen Bereichen verwendet,
z.B. für 7-Segment-Anzeigen zur Darstellung von Zahlen.
Quelle: http://gcc.gnu.org/bugs.html#known (Stand 19. April 2004)
Non-bugs: „The following are not actually bugs, but are reported often
enough to warrant a mention here.“
Inkorrekte Handhabung von Gleitkommazahlen, z.B.:
#include <iostream>
int main() {
double a = 0.5;
double b = 0.01;
std::cout << (int)(a / b) << std::endl;
return 0;
}
In Abhängigkeit von der verwendeten Genauigkeit und Rundung wird
als Ergebnis 50 (korrekt) oder 49 (falsch) geliefert.
Kein Fehler des Compilers, sondern Einschränkung von
Gleitkommazahlen
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.83
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.84
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Gleitkommazahlen: „Floating Point Numbers“ (1/3)
Gleitkommazahlen: „Floating Point Numbers“ (2/3)
Rechner speichert die Position des Dezimalpunktes
z.B. 0.473 * 1015 oder 0.3715 * 10-7
Allgemein: X = m * Be
(m: Mantisse, B: Basis, e: Exponent)
Bit-Darstellung:
Darstellung negativer Exponenten:
bereits bekannte Möglichkeiten:
Vorzeichen-/Betragdarstellung
Komplementdarstellung (Stellen- oder Basiskomplement)
aber, die allgemein übliche Form ist die Darstellung mittels einer
sog. Charakteristik
ch = e + K
Mantisse (z.B. 23 Bit)
z.B. mit K = BN/2 (sog. BIAS) (bei N-stelligen Exponenten)
Exponent (z.B. 8 Bit)
d.h. anstelle des Exponenten wird die Charakteristik dargestellt
Vorzeichen (1 Bit)
Speziell: X
Exponent wird meist zur Basis 2, 10 oder 16 angegeben.
Führende Nullen der Mantisse sollten möglichst vermieden werden
(‚Normalisieren‘)
= m * Bch
(m: Mantisse, B: Basis, ch: Charakteristik)
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.85
2. Zahlen und logische Schaltungen
Gleitkommadarstellung nach IEEE Standard 754 (1/5)
Beispiel: +26.625 soll als 32 Bit Gleitkommazahl dargestellt werden
Format: 1 Bit Vorzeichen,
8 Bit Exponent (Charakteristik),
23 Bit Mantisse
Schritt: Dezimalzahl
31
S
Schritt: Normalisieren (Anpassen der Mantisse m, 1/B ≤ m < 1)
(11010.101)2 * 20 = (0.11010101)2 * 25
3.
Normenvorschlag der IEEE Computer Society, der von fast allen
Mikrocomputer-Herstellern übernommen worden ist (z.B. Intel
80X86, Motorola 680X0)
32 Bit Format:
Dualzahl
+(26,625)10 = +(11010.101)2
2.
30
23
22
Charak. E
0
Mantisse M
Schritt: Charakteristik berechnen:
X = (-1)S * 2E-127 * (1.M)2
N=8
Mantisse ist normiert: 1.M, d.h.
K = 27 = 128
ch = e + K = 510 + 12810
(101)2 + (10000000)2 = (10000101)2
31
30
0
10000101
11010101000000000000000
ch
M
Vorz
23
=
22
(Basis 2)
mit 0 < E < 255, Bias = 127
führende 1 wird nicht dargestellt
Erhöhung der Genauigkeit um eine Stelle
0
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.86
2. Zahlen und logische Schaltungen
Gleitkommazahlen: „Floating Point Numbers“ (3/3)
1.
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.87
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.88
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Gleitkommadarstellung nach IEEE Standard 754 (2/5)
Gleitkommadarstellung nach IEEE Standard 754 (3/5)
Zahlenbereiche
Beispiel: x= -1.5
x = (-1)S * 2E-127 * (1.M)2
1 * 2-126 ≤ |x| ≤ (2 – 2-23) * 2127
mit 0 < E < 255
oder dezimal umgerechnet
1.18 * 10-38 ≤ |x| ≤ 3.40 * 1038
Bias = 127
darstellbare
negative Zahlen
31
30
1
S
01111111
Charakteristik E
(-1)1
-1
23
2127-127
*
* 20
22
0
darstellbare
positive Zahlen
negativer
Überlauf
1 0 0 0 ..................................... 0
Mantisse M
positiver
Überlauf
0
-(2 – 2-23) * 2127
* (1.1)2 =
* (1.1)2 =
-(1.1)2 = -1.510
-1.0 * 2-126
Rechnerarithmetik
2.89
2. Zahlen und logische Schaltungen
Abschließende Bemerkungen:
Not-a-Number: Darstellung „ungültiger“ Zahlen, z.B. Division durch 0,
Wurzel aus negativer Zahl.
Überlauf wird als unendlich dargestellt, d.h. es kann mit unendlich (∞)
weitergerechnet werden.
Unterlauf kann denormalisiert dargestellt werden, d.h. es kann mit
geringerer Genauigkeit weitergerechnet werden.
Null: eigene Darstellung
E
M
x
Erklärung
255
≠0
=0
NaN
Not a Number
beliebig
≠0
=0
0
(-1)S ∗ ∞
±∞
(-1)S∗2E-127∗(1.M)2
(-1)S∗2126∗(0.M)2
(-1)S ∗ 0
Normalbereich
Neben dem 32-Bit Format existieren noch 64- und 80-Bit Formate. Sie
erlauben das Rechnen mit größerer Genauigkeit, aber prinzipiell folgt
die Darstellung dem vorgestellten Mechanismus.
Die Norm geht davon aus, dass zuerst mit beliebiger Genauigkeit
gerechnet wird und danach auf das jeweilige Zielformat gerundet wird.
Daher verwenden die meisten Implementierungen eine höhere
Genauigkeit für interne Berechnungen.
Moderne Gleitkommarecheneinheiten ermöglichen z.B. auch
trigonometrische und logarithmische Operationen.
Links zu Demonstrationswerkzeugen und weitergehende Informationen
über IEEE 754 sind auf der Vorlesungsseite angegeben.
Denormalisiert
0
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.90
Gleitkommadarstellung nach IEEE Standard 754 (5/5)
Besonderheiten des IEEE Formats
0
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2. Zahlen und logische Schaltungen
Gleitkommadarstellung nach IEEE Standard 754 (4/5)
0 < E < 255
(2 – 2-23) * 2127
Es existiert eine Lücke im Bereich der darstellbaren Zahlen, die
insbesondere die 'NULL' enthält.
Man benötigt eine eigene Darstellung der 'NULL'
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
255
1.0 * 2-126
2.91
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.92
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Gleitkommaarithmetik: Multiplikation
Gleitkommaarithmetik: Addition und Subtraktion
Z = X ∗ Y = (m[X] ∗ m[Y]) ∗ Be[X]+e[Y]
Z = X + Y = (m[X] * Be[X]-e[Y] + m[Y]) ∗ Be[Y]
m[X]: Mantisse von X, m[Y]: Mantisse von Y
e[X]: Exponent von X, e[Y]: Exponent von Y
Multiplikation der Mantissen
Addition der Charakteristiken (- Bias)
für: e[x] ≤ e [y]
m[X]: Mantisse von X, m[Y]: Mantisse von Y
e[X]: Exponent von X, e[Y]: Exponent von Y
1.
2.
VX
CHX
MX
∗
3.
VY
CHY
4.
=
- Bias (127)
=
MY
VZ
CHZ
MZ
⊕
+
Berechne e[X] – e[Y]
Skalieren: Angleichen der Mantisse des kleineren Exponenten
Addition der Mantissen
gegebenenfalls Normalisieren
=
Gegebenenfalls normalisieren
Division entsprechend
Sonderregeln für 0 als Operand
Subtraktion entsprechend
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.93
2. Zahlen und logische Schaltungen
2.94
2. Zahlen und logische Schaltungen
Gleitkommaarithmetik: Beispiel für Addition
Überblick
Basis = 10, vierstellige Mantisse
Z = X + Y; X = 0.5320 ∗ 10-2; Y = 0.4162 ∗ 101
Berechne e[X] – e[Y]:
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Information und Informationsdarstellung
Zahlensysteme
Rechnerarithmetik
Boolesche Algebra und Gatter
Schaltwerke
-2 – 1 = -3
Skalieren von m[X]:
0.5320 * 10-3 = 0.0005320 * 100
(Verschieben um 3 Stellen nach Rechts, evtl. mit Genauigkeitsverlust)
Addition der Mantissen: Übernahme des größeren Exponenten
+
0.4162
0.0005
0.4167
∗
∗
∗
101
101
101
Normalisieren entfällt
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.95
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.96
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Ziel: Rechnerarithmetik implementieren
Darstellung binärer Größen
Bitweise logische Operationen
E
E=A?B
In digitalen Systemen werden Informationen in binärer Form dargestellt.
Binäre Größen können von jedem Baustein dargestellt werden, der nur 2
Operationszustände besitzt.
= x"34" ? x"1C"
Beispiel: Schalter. Zuweisung der Zustände 0 für offen und 1 für geschlossen
ermöglicht die Darstellung binärer Werte.
Typischerweise werden folgende Spannungen zugewiesen:
? ... beliebige logische Verknüpfung
a5 a4 a3 a2 a1 a0
Operand A
1
1
0
1
0
0
Operand A
b5 b4 b3 b2 b1 b0
Operand B
0
1
1
1
0
0
Operand B
e5 e4 e3 e2 e1 e0
Ergebnis E
1
0
0
0
0
0
Ergebnis E
Binäre 1: Eine beliebige Spannung zwischen 2V und 5V
Binäre 0: Eine beliebige Spannung zwischen 0V und 0.8V
Spannungen zwischen 0.8V und 2V werden nicht genutzt und können zu
Beschädigungen führen.
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.97
2. Zahlen und logische Schaltungen
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2. Zahlen und logische Schaltungen
Boolesche Algebra (1/2)
Boolesche Algebra (2/2)
Boolesche Algebra:
Definition der Booleschen Algebra
Die Booleschen Algebra (speziell die Aussagenlogik) ist ein
Formalismus zur Beschreibung der Funktion digitaler Komponenten.
Binäre oder Boolesche Variable (BV):
Variable, die nur zwei Werte annehmen können. Diese Werte werden
mit
L - H , wahr - falsch oder 0 - 1 bezeichnet. Boolesche Variable sind
logische Variable.
Boolesche Operatoren:
Auf Boolesche Variable können Boolesche Operatoren angewendet
werden: NOT, OR, AND,XOR, ...
Boolesche Ausdrücke, Boolesche Funktionen:
Boolesche Ausdrücke oder Boolesche Funktionen ergeben sich durch
Verknüpfung von Boolesche Variable mit Booleschen Operatoren.
Die Booleschen Algebra ist eine algebraische Struktur. Sie besteht aus
einer Menge M = {e1, e2, …}, den Operatoren ψ und φ, Axiomen und
wichtigen Sätzen. Eine spezielle Boolesche Algebra ist die
Aussagenlogik. Sie wird charakterisiert durch folgende Eigenschaften:
M: {0,1}
e: 1
wahr
n: 0
falsch
ψ: ∧
zweistellige Operation
φ: ∨
zweistellige Operation
Die Boolesche Algebra wurde von George Boole um 1850
entwickelt
Claude Shannon verwendete um 1937 die Boolesche Algebra als
erster für den Schaltungsentwurf
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.98
2.99
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.100
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Operation
Wahrheitstabellen
Eingaben Funktion
x1,..,xn
f(x)
Darstellung der Abhängigkeiten zwischen der Eingabe und Ausgabe
Alle möglichen Kombinationen der Eingabe (A,B) werden mit der
korrespondierenden Ausgabe (X) angegeben.
Beispiel:
Ausgabe
y
Eingabe
Funktion von n Eingangsvariablen:
Ausgabe
?
A
B
Nur vom gegenwärtigen Wert der Eingänge anhängig, kein "Gedächtnis"
y = f(x) = f(xn, ... ,x3,x2,x1), xi ∈ {0,1}
Für n Eingangsvariablen gibt es 2n Wertekombinationen.
Die Wertekombinationen heißen auch die Belegungen Xj der Eingangsvariablen
Logische Operationen können auf zwei, sinngemäß gleiche Wege
dargestellt werden:
B
0
0
1
1
X
Boolesche Algebra und Gatter
2.101
2. Zahlen und logische Schaltungen
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.102
2. Zahlen und logische Schaltungen
UND-Operator
ODER-Operator
Name
UND (AND)
Tabelle
b
0
0
1
1
Schriftlich
X
0
0
0
1
Die Ausgabe ist nur 1, wenn beide Eingaben 1 sind.
Boolescher Ausdruck: endlich, aber nicht eindeutig
Wahrheitstabelle: endlich und eindeutig
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
A
0
1
0
1
a
0
1
0
1
y
0
0
0
1
UND wird verwendet, um Bits gezielt auf 0 zu
setzen. Dazu hat die Maske an allen Bitpositionen,
die übernommen werden sollen, eine 1 und an den
Stellen, die rückgesetzt werden sollen, eine 0.
y = a ∧ b oder
= ab
oder
=a*b
Name
ODER (OR)
Tabelle
b
0
0
1
1
x“14“ = x"34" ∧ x"1C"
1
1
0
1
0
0
Operand A
0
1
1
1
0
0
Operand B
Schriftlich
Gatter
&
a
0
1
0
1
y
0
1
1
1
OR wird verwendet, um Bits gezielt auf 1 zu
setzen. Dazu hat die Maske an allen Bitpositionen,
die übernommen werden sollen, eine 0 und an den
Stellen, die gesetzt werden sollen, eine 1.
y = a ∨ b oder
=a+b
x“3C“ = x"34“ ∨ x"1C"
1
1
0
1
0
0
Operand A
0
1
1
1
0
0
Operand B
1
1
1
1
0
0
Ergebnis E
≥1
Gatter
0
1
0
1
0
0
Ergebnis E
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.103
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.104
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
NICHT-Operator
Gängige logische Operationen: XOR
Name
NICHT (NOT)
Tabelle
a
0
1
NICHT wird auch als Inverses oder Komplement
bezeichnet.
y
1
0
Name
XOR
Tabelle
b
0
0
1
1
x“0B“ = ~x"34"
Schriftlich
y=a
1
1
0
1
0
0
Operand A
0
0
1
0
1
1
Ergebnis E
Schriftlich
1
Gatter
a
0
1
0
1
y
0
1
1
0
XOR wird verwendet, um Bits gezielt zu
invertieren. Dazu hat die Maske an allen
Bitpositionen, die invertiert werden
sollen, eine 1 und an allen sonstigen
Stellen eine 0.
x“28“ = x"34" x"1C"
y = a b oder
=a⊕b
Sprache "C"
1
1
0
1
0
0
Operand A
0
1
1
1
0
0
Operand B
1
0
1
0
0
0
Ergebnis E
y=a^b
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.105
2. Zahlen und logische Schaltungen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.106
2. Zahlen und logische Schaltungen
Gatter (1/2)
Gatter (2/2)
Funktion
Elektrische Realisierung mittels Schalter:
Relais, Knipser, Röhren, bipolare Transistoren,
Feldeffekt – Transistoren (MOS-FET)
Funktion
Realisierung
Knipser
Realisierung
NOT
Knipser
MOS-FET
L
a
Gatter
Q=ā
a
Gatter
MOS-FET
_
a
a
+
+
AND
Q
A
b
a
Q
b
&
Q
B
Q
a
b
NAND
A
&
Q
B
+
+
OR
A
a
b
a
Q
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
b
>=1
Q
Q
B
NOR
2.107
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
a
b
A
>=1
Q
B
+
2.108
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
10 Regeln für logische Operationen
Boolesche
Variablen a, b
Elemente aus {0,1}
a∨0=a
a∧0=0
R1
a∨1=1
a∧1=a
R2
a∨a=a
a∧a=a
R3
a∨a=1
a∧a=0
R4
a=a
a ∧ (b ∧ c) =
(a ∧ b) ∧ c =
a∧b ∧c
R6
Kommutativgesetz
a∨b=b∨a
a∧b=b∧a
R7
Distributivgesetz
a ∨ (b ∧ c) =
(a ∨ b) ∧ (a ∨ c)
a ∧ (b ∨ c) =
(a ∧ b) ∨ (a ∧ c)
R8
Absorptionsgesetz
a ∨ (a ∧ b) = a
a ∧ (a ∨ b) = a
R9
De Morgan'sches
Gesetz
Vereinfachung von Ausdrücken
Beispiel 1:
Y = A ∧ B ∧ C ∧ D ∨ A ∧ B ∨ ( B ∨ (A ∧ A) ) R4
= A ∧ B ∧ C ∧ D ∨ A ∧ B ∨ ( B ∨ 0) )
R1
...
=A∧B∧C∧D∨A∧B∨B
=A∧B∧C∧D∨B
=B
R5
a ∨ (b ∨ c) =
(a ∨ b) ∨ c =
a∨b ∨c
Assoziativgesetz
Anwendung der Regeln
(a ∨ b) = a ∧ b
(a ∧ b) = a ∨ b
Beispiel 2:
R5:
De Morgan:
R10
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.109
2. Zahlen und logische Schaltungen
(a ∨ b) = a ∧ b
(a ∨ b)
Q
NOR
B
A
&
Q
1
Alternative NOR Darstellung
A
a∧b
A
NAND
&
(a ∧ b)
Q
B
1
&
1
B
>=1
Q
a∨b
1
A
B
>=1
Q
Name
NAND
Tabelle
b
0
0
1
1
Schriftlich
y=a∧b
Das NAND-Symbol ist abgesehen von dem kleinen
Kreis am Ausgang identisch mit dem AND-Symbol.
Der kleine Kreis stellt die Invertierung dar.
a
0
1
0
1
y
1
1
1
0
1
1
0
1
0
0
Operand A
0
1
1
1
0
0
Operand B
1
0
1
0
1
1
Ergebnis E
&
Alternative NAND Darstellung
Q
B
2.110
NAND-Operator
(a ∧ b) = a ∨ b
B
A
a∧b
>=1
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2. Zahlen und logische Schaltungen
Implikationen aus dem De Morgan'schen Gesetz
A
Y=(A∧B∧C) +(D∧E∧F)
Y = ( A ∧ B ∧ C ) + (D ∧ E ∧ F )
Y = ( A ∧ B ∧ C ) ∧ (D ∧ E ∧ F )
Gatter
a∨b
Invertieren
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.111
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.112
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
NOR-Operator
Name
NOR
Tabelle
b
0
0
1
1
Schriftlich
a
0
1
0
1
Alternative Darstellung von Gattern
Das NOR-Symbol ist abgesehen von dem kleinen
Kreis am Ausgang identisch mit dem OR-Symbol.
Der kleine Kreis stellt die Invertierung dar.
Für die Gatter UND, ODER, NICHT, NAND und NOR gibt es eine
Alternative Darstellung
Invertiere jeden Eingang und Ausgang des Standardsymbols
Ändere das Operationssymbol von UND zu ODER, oder von ODER zu
UND
y
1
0
0
0
1
y=a∨b
1
0
1
0
0
Die alternative Darstellung repräsentiert den gleichen
physikalischen Baustein.
Beispiele:
Operand A
A
Gatter
0
≥1
1
1
1
0
0
NOR
Operand B
Invertieren
0
0
0
0
1
1
Ergebnis E
Q
B
A
NAND
A
>=1
&
Q
>=1
Q
B
&
A
Q
B
B
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.113
2. Zahlen und logische Schaltungen
Normalformen (1/2)
Ein vollständiges Operatorensystem erlaubt die Darstellung aller
möglichen Funktionen
Es gibt keinen eindeutigen booleschen Ausdruck für eine boolesche
Funktion
Bei zweistelligen, booleschen Funktionen sind dies 16 Möglichkeiten
Die folgenden Systeme sind u.a. vollständig:
Beschränkung auf ein vollständiges Operatorensystem reicht nicht für
Eindeutigkeit
Die Normalformen dienen dazu, anhand von Zustandstabellen
Schaltungen zu entwickeln. Dabei werden logische Funktionen in
Schaltkreise umgesetzt.
UND, ODER, NICHT
UND, NICHT
ODER, NICHT
NAND
NOR
Randbedingungen:
die Zahl der Schaltkreise sollte möglichst gering sein
die einzelnen Bauelemente sollten möglichst gleich sein
Beispiel für NAND:
Standarddarstellung im Operatorensystem UND/ODER/NICHT
a∧a
(a∧b)∧(a∧b)
(a∧a)∧(b∧b)
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.114
2. Zahlen und logische Schaltungen
Vollständige Operatorensysteme
NICHT:
UND:
ODER
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.115
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.116
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Normalform (2/2)
Übersetzungsregel für disjunktive Normalform
Disjunktive Normalform (DNF)
Man geht von der Einsstellenmenge aus.
disjunktive Verknüpfung von Konjunktionen
Konjunktionen müssen alle Variablen enthalten (bejaht oder negiert)
Konjunktionsterme werden Minterme genannt
In der DNF werden alle UND – Verknüpfungen (Konjunktionen)
disjunktiv verknüpft (ODER- verknüpft), deren Ausgangsvariablen den
Wert „1“ annehmen.
amerikanischer Ausdruck: “sum of products“ (SOP)
Für jede Belegung ersetzt man
die 1 durch eine bejahte Variable
die 0 durch eine negierte Variable
und bildet eine UND Verknüpfung (Minterm).
Konjunktive Normalform (KNF)
Konjunktive Verknüpfung von Disjunktionen
Disjunktionen müssen alle Variablen enthalten (bejaht oder negiert)
Disjunktionsterme werden Maxterme genannt
In der KNF werden alle ODER – Verknüpfungen (Disjunktionen)
konjunktiv verknüpft (UND- verknüpft), deren Ausgangsvariablen den
Wert „0“ annehmen.
Die Maxterme werden ODER verknüpft
“Disjunktive Normalform“ DNF
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.117
2. Zahlen und logische Schaltungen
2.118
2. Zahlen und logische Schaltungen
DNF Übersetzung
Übersetzungsregel für konjunktive Normalform
Man geht von der Nullstellenmenge aus.
Für jede Belegung ersetzt man
die 0 durch eine bejahte Variable
die 1 durch eine negierte Variable
und bildet eine ODER Verknüpfung (Maxterm).
Die Maxterme werden UND verknüpft
“Konjunktive Normalform“ KNF
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.119
Oktal Index
(x4,x3,x2,x1) f -> y
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
0,0,0,0
0,0,0,1
0,0,1,0
0,0,1,1
0,1,0,0
0,1,0,1
0,1,1,0
0,1,1,1
1,0,0,0
1,0,0,1
1,0,1,0
1,0,1,1
1,1,0,0
1,1,0,1
1,1,1,0
1,1,1,1
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
0
0
0
1
0
0
1
0
0
1
-
Beispiel: Durch 3 teilbare BCD Ziffern
Logische 1 für:
x4 = 0, x3 = 0, x2 = 1, x1 = 1
x4 x3 x2 x1
Logische 1 für:
x4 = 0, x3 = 1, x2 = 1, x1 = 0
x4 x3 x2 x1
Logische 1 für:
x4 = 1, x3 = 0, x2 = 0, x1 = 1
x4 x3 x2 x1
E = {3, 6, 11}
3 (0,0,1,1)
6 (0,1,1,0)
11 (1,0,0,1)
y=
x4 x3 x2 x1
∨ x4 x3 x2 x1
∨ x4 x3 x2 x1
2.120
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Übersetzung DNF Gleichung in Hardware
Beschreibung von logischen Schaltnetze
Jede Gleichung läßt sich 1:1 in Hardware umsetzen
Logische Schaltnetze können mit den grundlegenden logischen
Verknüpfungen UND, ODER und NICHT beschrieben werden:
y = x4 x3 x2 x1 ∨ x4 x3 x2 x1 ∨ x4 x3 x2 x1
1.
x4
1
x3
1
x2
1
x1
1
2.
3.
&
&
>1
y
&
x = AB ∨ C
x = (A ∨ B) C
x = (A ∨ B) C ∨ A
Die Verwendung nur eines Gattertyps erleichtert die technische
Realisierung, weswegen NAND oder NOR basierte Systeme
oftmals verwendet werden.
Logische Schaltnetze können durch die Minimierung der logischen
Verknüpfung minimiert werden
In vielen Fällen sind einfachere Schaltungen schneller
Weniger Gatter reduziert die Kosten
Es wird weniger Energie benötigt
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.121
2. Zahlen und logische Schaltungen
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.122
2. Zahlen und logische Schaltungen
Minimierung
Minimierungsverfahren
DNF liefert relativ aufwendige Lösungen
Es gibt 3 Arten von Minimierungsverfahren
Baut auf den Mintermen auf
Jedes UND Gatter enthält alle Eingangsvariablen
Nicht praktikabel in „echten“ Anwendungen
Die Suche nach einer einfacheren Lösung ist Ziel der Optimierung
(Minimierung).
Voraussetzung jeder Optimierung: Kostenfunktion beschreibt Ziel.
In unserem Fall: Möglichst wenige, möglichst kleine Gatter
Genauer: Die Anzahl der Eingänge in alle Gatter soll minimal werden.
In einer Gleichung ist dann die Anzahl der Variablen aller Terme plus die
Anzahl der Terme (Länge) minimal.
_ _
_
Y = (D C B A) ∨ (D C B) ∨ (E C) => L = 4+3+2+3 = 12
algebraische Verfahren
graphische Verfahren (z.B. KV-Diagramme)
tabellarische/algorithmische Verfahren (z.B. Quine/McCluskeyVerfahren)
Algebraische Verfahren werden praktisch nicht verwendet
Graphische Verfahren sind für bis zu 6 Variablen handhabbar
Tabellarische Verfahren sind auch für mehr als 6 Variablen geeignet
Wie erzielen wir möglichst kleine Gatter? Wir versuchen, durch Anwendung
der Rechenregeln, die einzelnen Terme kürzer zu machen.
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.123
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.124
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Algebraische Minimierung
Blöcke
Zwei Belegungen, die sich nur in einer Komponente unterscheiden,
heißen benachbart.
Vereinfachung durch Ausklammern und Anwendung der Regeln:
_
_ _
_
_ _
_
Bsp: y = c b a ∨ c b a = c a (b ∨ b) = c a 1 = c a
Die identischen Komponenten heißen "gebundene", die
unterschiedlichen "freie" Komponenten.
In Belegungsschreibweise
c b a
y
_
c b a
0 1 1 -> 1
_ _
c b a
0 0 1 -> 1
Die freien Komponenten werden durch einen "-" gekennzeichnet.
Es entsteht ein (Belegungs-) Block.
Ein Block mit r freien Komponenten enthält ("überdeckt") 2r
Belegungen.
Wir suchen Belegungen, die
Beispiel:
Einsstellen sind und
sich nur in einer Komponente unterscheiden
(benachbart sind)
4 (0,1,0,0)
(0,1,0,-)
5 (0,1,0,1)
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.125
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Minimierung über Nachbarschaftsbeziehungen
Oktal Index
0
1
2
3
4
5
6
7
(x3,x2,x1)
f ->
y
0,0,0
0,0,1
0,1,0
0,1,1
1,0,0
1,0,1
1,1,0
1,1,1
->
->
->
->
->
->
->
->
0
0
0
0
1
1
0
1
Bildung größerer Blöcke
Zugehörige DNF:
Oktal Index
0
1
2
3
4
5
6
7
y = (x3 x2 x1)
∨ (x3 x2 x1)
∨ (x3 x2 x1)
Benachbarte Belegungen:
Minimierte Gleichung:
4:
5:
Block:
y = (x3 x2)
∨ (x3 x2 x1)
1, 0, 0
1, 0, 1
1, 0, -
(x3,x2,x1)
f ->
y
0,0,0
0,0,1
0,1,0
0,1,1
1,0,0
1,0,1
1,1,0
1,1,1
->
->
->
->
->
->
->
->
0
0
0
0
1
1
1
1
Benachbarte Belegungen:
4: 1, 0, 0
5: 1, 0, 1
Block: 1, 0, 1, 0, 1, 1, 6: 1, 1, 0
Block: 1, -, 7: 1, 1, 1
Block: 1, 1, -
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.126
2.127
Zugehörige DNF:
y = (x3 x2 x1)
∨ (x3 x2 x1)
∨ (x3 x2 x1)
∨ (x3 x2 x1)
Minimierte Gleichung:
y = x3
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.128
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Blockbildung bei komplizierteren Funktionen
Oktal Index
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
(x4,x3,x2,x1)
f ->
0,0,0,0
0,0,0,1
0,0,1,0
0,0,1,1
0,1,0,0
0,1,0,1
0,1,1,0
0,1,1,1
1,0,0,0
1,0,0,1
1,0,1,0
1,0,1,1
1,1,0,0
1,1,0,1
1,1,1,0
1,1,1,1
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->
Minimierte Gleichung:
y
Zusammenfassung Blockbildung
Mögliche Blöcke:
Die Bildung von Blöcken kann zur Minimierung herangezogen
werden.
1
0/2: 00-0
0
2/6: 0-10
1
2/12: -010
0
5/7: 01-1
0
5/15: -101
1
5/7/15/17: -1-1
6/7: 0111
6/16: -110 6/7/16/17: -111
0
7/17: -111 2/12/6/16: --10
1
11/15: 1-01
1
12/16: 1-10
0
15/17: 11-1
0
16/17: 1111
1
1
_ _ _
_
_
y = x4x3x1 ∨ x4x2x1 ∨ x3x1 ∨ x2x1
Betrachtet werden nur die Einsstellen
Benachbarte Belegungen werden zu Blöcken zusammengefasst.
Benachbarte Blöcke können zu größeren Blöcken
zusammengefasst werden
es gelten dieselben Regeln.
Blöcke bestehen immer aus 2r Belegungen (r = Anzahl der Striche)
Ein Block, der sich nicht mehr vergrößern lässt, heißt "Primblock"
Gesucht ist die minimale Anzahl von möglichst großen Blöcken, die
alle Einsstellen überdeckt.
Übergang zur disjunktiven Form
Für Blöcke gelten dieselben Übersetzungsregeln, aber
freie Komponenten ("Striche") werden ignoriert.
Ein aus einem Primblock entstehender Term heißt "Primimplikant"
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.129
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Minimierung per KV-Diagramm
Karnaugh-Veitch-Diagramme
Erstellung durch wechselweise horizontales und vertikales Spiegeln
x1
KV-Diagramme bieten einen graphischen Weg zur Minimierung
Es können minimale konjunktive oder disjunktive Formen gebildet
werden
0
KV-Diagramm:
0
1
2
3
x1
x2
0
1
5
4
2
3
7
6
x1
x2
Boolesche Algebra und Gatter
2.131
Koordinatendarstellung der Funktionstabelle
Jede Zelle entspricht einer Belegung
(Achtung: Zahlen sind im Oktalsystem
angegeben)
1
x1
x2
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.130
x5
x3
x1
x1
0
1
5
4
0
1
5
4
24
25
21
20
2
3
7
6
2
3
7
6
26
27
23
22
12
13
17
16
12
13
17
16
36
37
33
32
10
11
15
14
10
11
15
14
34
35
31
30
x3
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
x2
x4
x4
x3
Boolesche Algebra und Gatter
2.132
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
KV-Diagramm
Minimierung per KV-Diagramm
x5
x2
x2
Eintragung in das KV-Diagramm
x1
x1
0
1
5
4
24
2
3
7
6
26
25
27
2
3
21
20
23
22
33
32
12
13
17
16
36
10
11
15
14
34
35
31
30
50
51
55
54
74
75
71
70
52
53
57
56
76
77
73
72
42
43
47
46
66
67
63
62
40
41
45
44
64
65
61
60
37
Oktal Index
0
1
2
3
4
5
6
7
x4
(x3,x2,x1)
f ->
y
0,0,0
0,0,1
0,1,0
0,1,1
1,0,0
1,0,1
1,1,0
1,1,1
->
->
->
->
->
->
->
->
0
0
0
0
1
1
0
1
__ __
x3 x2
__ x1 ∨
x3 x2 x1 ∨
x3 x2 x1
x6
x1
x2
x3
2.133
x2
x1
0
0
0
0
0
x2
0
0
0
x2
0
0
0
0
1
0
0
0
x3
x1
0
__ __
x3 x2 x1
0
1
0
x3 x2 x1
0
x2
0
0
0
1
0
0
x3
0
x3
x1
Darstellung der DNF
einer Schaltfunktion
x2
0
1
1
0
__
__
x3 x2 x1
x3
x1
0
1
0
0
1
x3
__ __
x3 x2 x1
__ __
x3 x2 x1 ∨
x3 x2 __
x1 ∨
__
x3 x2
__ x1
__ ∨
x3 x2 x1
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
0
0
1
0
Boolesche Algebra und Gatter
2.134
Blockbildung im KV-Diagramm
x1
0
1
2. Zahlen und logische Schaltungen
Interpretation eines KV-Diagramms
1
1
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2. Zahlen und logische Schaltungen
0
0
x3
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
0
2.135
Fall
D C B A Z
0
0 0 0 0 1
1
0 0 0 1 1
2
0 0 1 0 1
3
0 0 1 1 1
4
0 1 0 0 0
5
0 1 0 1 0
6
0 1 1 0 0
7
0 1 1 1 0
10
1 0 0 0 0
11
1 0 0 1 1
12
1 0 1 0 0
13
1 0 1 1 1
14
1 1 0 0 0
15
1 1 0 1 0
16
1 1 1 0 0
17
1 1 1 1 0
A
1
B
1
0
1
1
2
1
12
0
3
10
__ _ _
0
13
7
0
17
11
1
4
0
0
1
0
5
0
6
16
0
15
D
14
0
0
C
__ _
_
_ _
__
DNF: Z = A B C D ∨ A B C D ∨ A B C D ∨ A B C D
Minterme: 0: 0000
1: 0001
13: 1011
00-0
(Blöcke) 2: 0010
3: 0011 00-1 11: 100110-1
_ _ _
__
_
Minimierte Gleichung: Z = A C D ∨ A C D ∨ ACD
Primblöcke: 00-- -0-1
__
_
Minimierte Gleichung mit Primtermen: Z = C D ∨ A C
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Boolesche Algebra und Gatter
2.136
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Beispiel für Blockbildung in KV-Diagrammen
x1
x2
Blockbildung bei unvollständig definierten Schaltfunktionen
x1
1
0
0
1
1
0
0
1
x2
x3
x1
1
0
0
1
1
0
0
1
x3
Vorläufige Blöcke. Es
entfällt je x3.
x2
1
0
0
1
1
0
0
1
Freistellen (do not care Stellen) können 0 oder 1 sein.
Festlegung derart, dass maximal große Blöcke entstehen.
x3
Endgültiger Block. Es
entfällt x2.
x1
Kann ein vorläufiger Block nicht mehr durch einen weiteren, symmetrisch
gelegenen gleich großen Block vergrößert werden, so erhält man den
maximal großen Block:
Primblock
Der zugehörige Term heißt
Primterm.
x2
x1
0
1
-
0
0
1
-
-
x2
0
1
0
1
x1
-
0
=1
=0
=1
x3
-
x3
x2
0
1
0
1
-
0
=1
=0
=1
-
x3
Jede vollständige Blocküberdeckung ist eine gültige Darstellung einer Funktion.
Vollständig: Jede Einsstelle wird von einem Block überdeckt.
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.137
2. Zahlen und logische Schaltungen
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2. Zahlen und logische Schaltungen
Minimierung per KV-Diagramm
Minimierung per KV-Diagramm (1/3)
Minimierungsverfahren
Minimierungsverfahren
1. Spezifikation der Funktion durch Terme
2. Eintragung in das KV-Diagramm
3. Bestimmen der Primblöcke
Beispiel
Sukzessive Bildung von Blöcken mit 2, dann 4, dann 8 Belegungen, usw.
Verfolgung aller möglichen Kombinationen
Wenn Blockbildung abbricht, sind alle Primblöcke gefunden.
Bereits erledigt:
1. Spezifikation der Funktion durch Terme
2. Eintragung in das KV-Diagramm
Ergebnis:
4. Auswahl der kleinsten Anzahl Primblöcke, die zur vollständigen
Überdeckung nötig sind
x1
Identifikation der Kerne: Markierung aller Primblöcke, welche alleine eine
Funktionsstelle überdecken.
Falls diese bereits alle Stellen überdecken, ist minimale Lösung erreicht.
Reichen diese nicht zur Überdeckung aller Stellen aus, müssen weitere
Primblöcke hinzugenommen werden.
5. Bildung eines kürzesten Ausdrucks (DMF: disjunktive Minimalform)
0 1 1 0
x2
0 0 1 1
0 0 1 -
1 0 0
x3
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.138
2.139
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
x4
Boolesche Algebra und Gatter
2.140
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Minimierung per KV-Diagramm (2/3)
Minimierung per KV-Diagramm Beispiel (3/3) x1
Beispiel
4. Auswahl der kleinsten Anzahl
Primblöcke, die zur vollständigen
Überdeckung nötig sind
•
Identifikation der Kerne:
Markierung aller Primblöcke,
welche alleine eine Funktionsstelle
überdecken.
•
Falls diese bereits alle Stellen
überdecken, ist minimale Lösung
erreicht.
•
Reichen diese nicht zur
Überdeckung aller Stellen aus,
müssen weitere Primblöcke
hinzugenommen werden.
3. Bestimmen der Primblöcke
•
Sukzessive Bildung von Blöcken mit 2, dann 4, dann 8
Belegungen, usw.
•
Verfolgung aller möglichen Kombinationen
•
Wenn Blockbildung abbricht, sind alle Primblöcke gefunden.
w2
x1
w4
Primimplikanten:
0
x2
1
1
w3
0
0
0
1
1
0
0
1
-
-
1
0
0
w1 = x3 x2
__ __
w2 = x4 x2 x1
__
w3 = x4 x3 x1
__ __
w4 = x3 x2 x1
__ __
w5 = x4 x3 x2
w1
=>
x4
w5
x3
Grau gekennzeichnete Blöcke: Primblöcke
x2
x2
2. Zahlen und logische Schaltungen
0
1
2
3
4
5
6
7
Blöcke:
10–
1-1
(x3,x2,x1)
f ->
y
0,0,0
0,0,1
0,1,0
0,1,1
1,0,0
1,0,1
1,1,0
1,1,1
->
->
->
->
->
->
->
->
0
0
0
0
1
1
0
1
Kern-Blöcke:
101-1
0
0
0
1
1
0
0
1
-
-
1
0
0
x4
x3
0
1
1
0
0
0
1
1
0
0
1
-
-
1
0
0
x4
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.142
2. Zahlen und logische Schaltungen
Minimierung mittels KV-Diagramm
Oktal Index
1
x3
Boolesche Algebra und Gatter
2.141
1
x1
5. Bildung eines kürzesten Ausdrucks
(DMF: disjunktive Minimalform)
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
0
Minimierung in der konjunktiven Form
x1
0
x2
0
0
2
0
0
1
3
1
1
5
7
1
0
4
6
x3
••
•
>1
••
•
>1
&
y
••
•
••
•
Minimierte Gleichung:
__
y = x3 x2 ∨ x3 x1
>1
z.B.
_
_
y= (a ∨ b ∨ c) (a ∨ b ∨ c)
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.143
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.144
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Ermittlung der Maxterme
Beispiel
Durch 3 teilbare BCD Ziffern
Bei BCD kodierten Ziffern können
nur Werte von 0 bis 9 vorkommen:
Das Verhalten der Schaltung bei
Eingangswerten > 9 (118) ist
gleichgültig.
R = { 12,13,14,15,16,17}
E = { 3,6,11}
N = {0,1,2,4,5,7,10}
Oktal Index
(x4,x3,x2,x1) f -> y
Oktal Index
(x4,x3,x2,x1) f -> y
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
0,0,0,0
0,0,0,1
0,0,1,0
0,0,1,1
0,1,0,0
0,1,0,1
0,1,1,0
0,1,1,1
1,0,0,0
1,0,0,1
1,0,1,0
1,0,1,1
1,1,0,0
1,1,0,1
1,1,1,0
1,1,1,1
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
0,0,0,0
0,0,0,1
0,0,1,0
0,0,1,1
0,1,0,0
0,1,0,1
0,1,1,0
0,1,1,1
1,0,0,0
1,0,0,1
1,0,1,0
1,0,1,1
1,1,0,0
1,1,0,1
1,1,1,0
1,1,1,1
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->
0
0
0
1
0
0
1
0
0
1
-
2.145
2 (0,0,1,0)
4 (0,1,0,0)
5 (0,1,0,1)
7 (0,1,1,1)
10 (1,0,0,0)
x4 ∨ x3 ∨ x2 ∨ x1 = 0
•
••
••
•
Logische 0 für:
_
x4 ∨ x3 ∨ x2 ∨ x1 = 0
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.146
Minimierung mit KV-Diagramm
x1
y=
0
1 (0,0,0,1)
Logische 0 für:
2. Zahlen und logische Schaltungen
KNF für Beispiel
0 (0,0,0,0)
0
0
0
1
0
0
1
0
0
1
-
Boolesche Algebra und Gatter
2. Zahlen und logische Schaltungen
N = {0,1,2,4,5,7,10}
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->
->
(x4 ∨ x3 ∨ x2 ∨ x1)
_
∧ (x4 ∨ x3 ∨ x2 ∨ x1)
_
∧ (x4 ∨ x3 ∨ x2 ∨ x1)
_
∧ (x4 ∨ x3 ∨ x2 ∨ x1)
_
_
∧ (x4 ∨ x3 ∨ x2 ∨ x1)
_
_
_
∧ (x4 ∨ x3 ∨ x2 ∨ x1)
_
∧ (x4 ∨ x3 ∨ x2 ∨ x1)
x2
0
0
2
12
-
0
1
1
5
3
0
4
0
0
7
13
-
17
-
10 11
0
1
15
-
1
6
16
14
-
x4
x3
y = (x2 ∨ x4)
∧ (x1 ∨ x3)
_
_
∧ (x3 ∨ x1)
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.147
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.148
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Kombinatorische Schaltelemente (Schaltnetze)
Multiplexer (1/2)
A
Spezielle Verknüpfungselemente für Computer
2:1
Mux
B
Signalauswahl:
A
y
B
S
Registerauswahl:
Dekoder
y
0
A
1
B
_
SA ∨ SB
Werte vergleichen
Vergleicher
Addierer
Arithmetisch-Logische Einheit (ALU)
2. Zahlen und logische Schaltungen
S1
S0
E
S1,S0 y
(S1 S0
__ B) ∨
(S1 S0 C) ∨
(S1 S0 D)
H
S2
S1
S0
2.150
B
A
8:1
Mux
A
B
C
D
E
F
G
H
Boolesche Algebra und Gatter
A
y
B
y1
y2
y3
y4
2 bit
Dekoder
F
S2
S1
S0
0, 0, 0
0, 0, 1
0, 1, 0
0, 1, 1
1, 0, 0
1, 0, 1
1, 1, 0
1, 1, 1
G
Dekoder/Demultiplexer
C
H
S2,S1,S0 y
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
B
G
y
8:1
Mux
F
A
E
C
2. Zahlen und logische Schaltungen
Multiplexer (2/2)
D
B
D
Boolesche Algebra und Gatter
2.149
y
D
0, 0
A
0, 1
B
1, 0
C
1,
1
D
Si .. Selektionseingänge __ __
(S1
__ S0 A) ∨
Addieren
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4:1
Mux
C
S
Multiplexer
Demultiplexer
A
C
3 bit
Dekoder
y1
y2
y3
y4
y5
y6
y7
y8
S2,S1,S0 y
B, A
y4,y3,y2,y1
C,B,A
y8,y7,y6,y5,y4,y3,y2,y1
0, 0, 0
0, 0, 1
0, 1, 0
0, 1, 1
1, 0, 0
1, 0, 1
1, 1, 0
1, 1, 1
0,
0,
1,
1,
0,
0,
0,
1,
0, 0, 0
0, 0, 1
0, 1, 0
0, 1, 1
1, 0, 0
1, 0, 1
1, 1, 0
1, 1, 1
0,
0,
0,
0,
0,
0,
0,
1,
A
B
C
D
E
F
G
H
0
1
0
1
0,
0,
1,
0,
0,
1,
0,
0,
1
0
0
0
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.151
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
0,
1
0
0
0
0
0
0
0
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.152
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Vergleicher
A3
A2
A1
A0
B3
B2
B1
B0
A
B
Addierer (1/4)
A=B B, A
s
A
HA
B
c
B, A
s, c
0,
0,
1,
1,
0,
1,
1,
0,
0
1
0
1
Mehrstelliger Addierer
0
0
0
1
A0
B0
s0
HA
c
A3,B3, A2,B2, A1,B1, A0,B0, A>B,A=B,A<B A>B,A=B,A<B
4
>
<
=
=
=
=
=
=
=
=
=
A>B
A=B
A<B
4
A>B
A=B
A<B
0
1
B≠A
B=A
4 bit
Identität
Halbaddierer
A=B
4 bit
Größe
>
<
=
=
=
=
=
=
=
>
<
=
=
=
=
=
>
<
=
=
=
1
0
1
0
0
0
1
1,
0,
1,
0,
1,
0,
1,
0,
0,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0
1
0
1
0
1
0
1
0
0
1
2.153
2. Zahlen und logische Schaltungen
ci-1
Ai
Bi
HA
s
HA
VA
c
B1
si
c
s2
≥1
A2
ci
B2
c
VA
c
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.154
2. Zahlen und logische Schaltungen
Addierer (2/4)
Addierer (3/4)
Einstelliger Addierer für Addition zweier Binärzahlen A und B,
Ergebnis Summe S und Übertrag (Carry) C
B
0
1
0
1
Volladdierer
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
A
0
0
1
1
s1
A1
S
0
1
1
0
C
0
0
0
1
A
=1
„Serienaddierer“: ökonomisch, aber langsam
A0
S
B0
B
Mehrstellige Additionsaufgabe
Beispiel: 5 + 7
(5) 0101
(7) 0111
.. 1 1 1 <- Übertrag (Carry)
1100
&
C
c1
s1
A1
Allgemein:
1. Summand
2. Summand
Übertrag
Summe
s0
HA
VA
c2
B1
A4
B4
C5
S5
A3
B3
C4
S4
A2
B2
C3
S3
A1
B1
C2
S2
A0
B0
C1 0
S1 S0
Si = (Ai + Bi ) + Ci
(+ = Addition)
Ci+1 = Ci Ai v CiAi v AiBi
s2
A2
B2
VA
c3
Beschleunigung mittels
Parallelisierung durch Carry-Vorausberechnung:
„carry look-ahead“
G = generate carry
(erzeuge Übertrag
Cn+1 = (BnAn) ∨ (Cn(Bn An))
Gn
Cn+1 = Gn ∨ CnPn
C2 =
C3 =
=
C4 =
C5 =
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.155
Pn
C = propagate carry
(leite Übertrag weiter)
G1 ∨ C1P1
G2 ∨ C2P2 = G2 ∨ (G1 ∨ C1P1)P2
G2 ∨ G1 P2 ∨ C1P1P2
G3 ∨ G2 P3 ∨ G1P2P3 ∨ C1P1P2P3
G4 ∨ G3 P4 ∨ G2P3P4 ∨ G1P2P3P3 ∨ C1P1P2P3P4
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.156
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Addierer (4/4)
Addierer-Subtrahierer
4 bit Paralleladdierer mit „carry look-ahead“ (paralleler Übertrag)
C2 =
C3 =
=
C4 =
C5 =
G1 ∨ C1P1
Cn+1
G2 ∨ C2P2 = G2 ∨ (G1 ∨ C1P1)P2
G2 ∨ G1 P2 ∨ C1P1P2
G3 ∨ G2 P3 ∨ G1P2P3 ∨ C1P1P2P3
G4 ∨ G3 P4 ∨ G2P3P4 ∨ G1P2P3P3 ∨ C1P1P2P3P4
S4 S3 S2 S1 Z
B4
|
|
|
= (BnAn) ∨ (Cn(Bn An))
Gn
Pn
A4
|
|
|
&
&
B3
|
|
|
A3
|
|
|
B2
|
|
|
&
&
&
A2
|
|
|
B1
|
|
|
&
&
A1
|
|
|
&
B4 A4 B3 A3 B2 A2 B1 A1 C1
| | | | | | | | |
Σ4
=1
=1
=1
=1
=1
=1
Σ4
C5
|
|
Z4
|
|
Z3
|
|
Z2
|
|
Z1
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.157
0
0
C1
0
0
1
C1-1
0
0
1
0
C1-1
0
0
1
1
C1-2
S2
S1 0
Komplement
| | | | |
C5 Z4 Z3 Z2 Z1
0
S4 0
S3
0
Auswahl
=1
0
=1
1
0
0
C1+A
1
0
1
C1-A-1
0
1
1
0
C1+A-1
0
1
1
1
C1-A-2
1
0
0
0
C1+B
1
0
0
1
C1+B-1
1
0
1
0
C1-B-1
C1 1
0
1
1
C1-B-2
1
1
0
0
C1+A+B
1
1
0
1
C1+B-A-1
1
1
1
0
C1+A-B-1
1
1
1
1
C1-A-B-2
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2. Zahlen und logische Schaltungen
2.158
2. Zahlen und logische Schaltungen
Arithmetisch-Logische Einheit (ALU) (1/2)
Arithmetisch-Logische Einheit (ALU) (2/2)
Register X
funktionale Kern eines Digitalrechners
führt arithmetische und logische Operationen aus
Eingabe: Daten und Steuersignale
Ausgabe: Ergebnis und Statussignale
Meist nur für Festkommazahlen (Gleitkomma wird oft von einem
speziellen Arithmetik-Coprozessor ausgeführt oder in
Festkommazahlen unterteilt)
Register Y
s1
Multiplexerschaltnetz
cin
zero
sign
overflow
s2
arithmetisch-logisches Schaltnetz
s3
s4
s5
cout
Schiebeschaltnetz
s6
s7
Register Z
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.159
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.160
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Schaltwerke
x1
x2
Eingangs- x
3
variablen
Überblick
Information und Informationsdarstellung
Zahlensysteme
Rechnerarithmetik
Boolesche Algebra und Gatter
Schaltwerke
Schaltnetze
xn
y1
y2
y3
Ausgangsvariablen
yn
Schaltwerk
Speicher
elemente
Takt
Reset
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.161
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2. Zahlen und logische Schaltungen
2.162
2. Zahlen und logische Schaltungen
Takt
Moore- oder Zustandsautomat
Schaltwerke befinden sich zu gegebener Zeit in einem Zustand Q.
Ein solcher Zustand ist beispielsweise durch die Werte der
Ausgangsleitungen zu diesem Zeitpunkt charakterisiert.
Zustände ändern sich nur zu bestimmten diskreten Zeitpunkten, bei
Eintreffen eines Taktes, das heißt, wenn eine 1 auf der Taktleitung
anliegt oder bei Pegeländerung auf der Taktleitung, d.h. bei positiver
oder negativer Flanke.
Ausgangsbelegungen sind nur vom Zustand des Schaltwerkes
abhängig
X
Schaltnetze
Speicher
Schaltnetze
Y
Takt
Takt=1
Flanke
1
0
Takt=0
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Zeit
Schaltwerke
2.163
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.164
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Mealy- oder Übergangsautomat
Speicherelemente
Ausgangsbelegungen sind vom Zustand und vom Wert der
Eingangsbelegungen abhängig
X
Schaltnetze
Speicher
Binäre Speicherelemente:
kleinste logische Bausteine zur Aufbewahrung von Information.
Speicherung durch Einnahme der Zustände “0” oder “1”.
Realisierung als Schaltwerke.
Schaltnetze
Y
D
Q
En
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.165
2. Zahlen und logische Schaltungen
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2. Zahlen und logische Schaltungen
RS-Flipflop
Realisierung eines RS-Flipflop
Ein RS-Flipflop besitzt zwei besondere Eingänge zum
• Setzen
(auf “1”; Set)
und
• Rücksetzen (auf “0”; Reset)
des Inhalts.
Funktionstabelle der
Schaltfunktion
für neuen Zustand Q(n+1)
aus aktuellem Zustand Q(n)
R
Q(n)
Takt T
T=0: Zustand ändert sich nicht,
T=1: Zustand kann sich ändern.
Dann wird das RS-Flipflop durch
folgende Tabelle beschrieben:
S
T
Q(n+1)
S
0
0
1
1
R
0
1
0
1
Q(n+1)
Q(n)
0
1
nicht def.
S
0
0
0
0
1
1
1
1
R
0
0
1
1
0
0
1
1
Q(n)
0
1
0
1
0
1
0
1
Q(n+1)
0
1
0
0
1
1
undef.
undef.
Nebenbedingung: r ∧ s = 0
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.166
2.167
Q(n)
R
0
1
1
1
0
0
-
S
__
__
Q(n+1) = R Q (n) ∨ S = R (Q (n) ∨ S)
________
Q(n+1) = R ∨ (Q (n) ∨ S)
R
≥1
≥1
S
Q
Rückkopplung
_
Q
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.168
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Erweiterung zum RS-Latch
RS-Latch und RS-Flipflop
Funktionstabelle der
Schaltfunktion
für neuen Zustand Q(n+1)
aus aktuellem Zustand Q(n)
S
0
0
0
0
1
1
1
1
R
0
0
1
1
0
0
1
1
Q(n)
0
1
0
1
0
1
0
1
Takt (Pegelsteuerung), „Clock“: Clk
Clk=0: Zustand ändert sich nicht,
Clk=1: Zustand kann sich ändern.
=> VerUNDung von S und R mit Clk
Q(n+1)
0
1
0
0
1
1
undef.
undef.
R
≥1
&
Symbol
Symbol
Tabelle
Tabelle
Clk R S Q
RSQ Q
R
Q
Q#
S
0
0
1
0
1
Q
0
0
0
1
1
0
1
-
0
1
0
1
verb.
Q
Q#
R
S
0 - - Q
1 - - Q
↑ 0 0 Q
↑ 1 0 0
↑ 0 1 1
Clk
Zeitdiagramm für das RS Latch
Clk
_
Q
≥1
&
S
S
R
R
Q
S
Q
Q
Clk
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.169
2. Zahlen und logische Schaltungen
Taktflankensteuerung (1/2)
Taktflankensteuerung (2/2)
X
Clk
t
1
0
Z
1
X
&
Clk
0V
Z
Z
Taktflankensteuerung 2:
Ersetzen der UND-Glieder durch Impulsglieder
Positive Flankentriggerung
Clk
1
Clk
&
Z
1
0
Z
C
Clk
+5V
1
t
R
t
Wir haben bisher ein taktpegelgesteuertes RS-NORFlipflop.
X
Taktflankensteuerung 1:
Ersetzen der UND-Glieder durch Impulsglieder
Negative Flankentriggerung
0
S
X
Clk
&
Z
t
1
||
+ 5V
0
Q
Clk
t
R
Q
S
Q
Clk
Q
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.170
2. Zahlen und logische Schaltungen
Wir haben bisher ein taktpegelgesteuertes RS-NORFlipflop.
1
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.171
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.172
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Taktflankengesteuerte Flipflops
D-Latch und D-Flipflop
Negative Flankentriggerung
X
Clk
X
1
&
0
Clk
1
t
0
t
Z
Positive Flankentriggerung
X
Clk
X
1
Z
0
Clk
1
t
0
t
Z
t
R
≥1
&
≥1
S
R
S
Z
Eingangsseitige Erweiterungsbeschaltung von R und S.
S
0
0
0
0
1
1
1
1
t
R
Q
Clk
Häufig ist es wünschenswert, dass statt Set und Reset nur ein
Eingangssignal benutzt wird.
Der Wert des Eingangssignals wird dann beim entsprechendem
Enable- oder Taktsignal übernommen.
&
≥1
Q
&
≥1
_
Q
Clk
_
Q
S
Q
Q#
R
S
Clk
Q
Q#
Clk
R
0
0
1
1
0
0
1
1
Q(n)
0
1
0
1
0
1
0
1
Q(n+1)
__
R
0
R=S
≥1
&
1
0
Clk
0
1
≥1
&
En
1
S
D
undef.
undef. D: „Vorbereitungseingang“
Q
1
&
&
_
Q
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.173
2. Zahlen und logische Schaltungen
D-Flipflop
Tabelle
Symbol
En
Q
Q#
En
2.174
2. Zahlen und logische Schaltungen
D-Latch
D
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
0
1
Q
Q
D
D = Delay
D
Q
Q#
Clk
Clk
Q
0
1
↑
Q
Q
D
Tabelle
Symbol
Tabelle
Symbol
D
Clk
Zeitdiagramm
Q
Q#
Clk
Q
0
1
↓
Q
Q
D
Zeitdiagramm (positiv flankengetriggert)
En
Clk
D
D
Q
Q
Meistgebrauchtes Flipflop: Basis-Flipflop für alle
Register in Prozessoren und in Controllern
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.175
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.176
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
T-Flipflop
T-Flipflop
Soll bei jeder Taktflanke den Zustand wechseln, wenn an einem
Steuereingang der Signalpegel 1 anliegt, sonst nicht
(„gesperrt“).
Symbol
R1
R2
&
&
≥1
Q
&
≥1
_
Q
T = Toggle
Clk
Clk
S1
S2
Q
Q#
Clk
R
&
S
Tabelle
Symbol
Clk T Q Q
T
Erweiterung des RS-Flipflop
Tabelle
0
1
↑
↑
↑
0
1
1
0
1
Q
Q
Q
1
0
Clk T Q Q
T
Q
Q#
Clk
0
1
↓
↓
↓
0
1
1
0
1
Q
Q
Q
1
0
Zeitdiagramm (positiv flankengetriggert)
Clk
&
T
R
&
≥1
Q
T
&
≥1
_
Q
Q
Clk
Clk
&
S
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.177
2. Zahlen und logische Schaltungen
JK-Flipflop (2/2)
Symbol
Möglichst vielseitiges Flipflop:
Speicherfall, Setzfall, Rücksetzfall, Kippfall: Auswahl durch 2
Steuerleitungen (J=Jump, K=Kill)
T
R
&
&
2.178
K
Clk
&
≥1
Q
S
&
≥1
_
Q
Zeitdiagramm
Symbol
Tabelle
Clk J K
Q
Q#
J
Clk
Clk
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2. Zahlen und logische Schaltungen
JK-Flipflop (1/2)
Modifikation
des T-Flipflops
Hauptanwendung: Zählerschaltungen
0
1
↑
↑
↑
↑
0
1
0
1
Tabelle
Q
- Q
- Q
0 Q
0 1
1 0
1 /Q
J
K
Clk
Q
Q#
Clk J K Q
0
1
↓
↓
↓
↓
0
1
0
1
- Q
- Q
0 Q
0 1
1 0
1 /Q
Clk
K
&
≥1
Q
&
≥1
_
Q
J
Clk
Clk
J
R
&
&
S
K
Q
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.179
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.180
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Bevorrechtigte Eingänge
Asynchrone bevorrechtigte Eingänge
Symbol: D-Flipflop mit
Setz- und Rücksetzeingang
Oft möchte man Flipflops gezielt auf einen Wert setzen
Beispiele: Rücksetzen einer Schaltung beim Einschalten oder "Reset
Taster"
Gezieltes Laden eines Zählers auf einen Wert
Daher besondere Eingänge eines Flipflops zum Setzen / Rücksetzen
müssen nicht beide vorhanden sein
Reset häufiger als Set.
S
D
Clk
R
man nennt das asynchron
Vorteil: Wirkt immer, auch ohne Takt
Nachteil: Auch kurze Impulse können Reset auslösen (gefährlich!)
Also: ok für General-Reset, nicht für logische Funktion
R S Clk DQ
0
1
1
1
1
1
Q
Q#
Zeitdiagramm
Sondereingänge können direkt wirken
Tabelle
1
0
0
0
0
0
1
↑
↑
0
1
0
1
Q
Q
0
1
Clk
R
Gegensatz: Synchrone Eingänge wirken mit der Taktflanke
D
Auch für Logikfunktionen nutzbar
Aber: Taktgenerator muss laufen, sonst funktioniert z.B. Reset nicht.
Q
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.181
2. Zahlen und logische Schaltungen
S
D
Clk
R
Q
Q#
Zeitdiagramm
2.182
Wichtige Zeiten am Beispiel D-Flipflop
1 / fmax
Tabelle
Clk
Clk R S D Q
0
1
↑
↑
↑
↑
0
1
1
1
1
0
0
0
1
Q
Q
0
1
0
1
R und S wirken nicht ohne Takt.
D
tDS
tDH
Q
tDS Data Setup Time
tCO
Zeit vor der aktiven Taktflanke: Vorbereitungseingang darf sich während dieser Zeit nicht
ändern! Falls doch: Wert des FF ist undefiniert, manche schwingen auch.
-> Sehr wichtige Zeit, die unbedingt einzuhalten ist.
Clk
tDH Data Hold Time
Zeit nach der aktiven Taktflanke: Vorbereitungseingang muss noch solange konstant
bleiben. Bei modernen Flipflops ist diese Zeit 0 .
R
tCO Clock to Output Delay
D
Q
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2. Zahlen und logische Schaltungen
Synchrone bevorrechtigte Eingänge
Symbol: D-Flipflop mit
Setz- und Rücksetzeingang
R und S wirken auch ohne Takt.
R ist bevorrechtigt.
2.183
Verzögerung von aktiver Flanke bis Ausgangs-Änderung: Soll nicht zu kurz sein.
Grund: Durchschieben von Änderungen
fmax Maximale Taktfrequenz: Höchstfrequenz, mit der FF betrieben werden kann
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.184
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Das Register (1/2)
Das Register: Anwendung (2/3)
Ein Register ist
Anwendung: Standardspeicher in Prozessoren
eine Aneinanderreihung von D-Flipflops, z.B. 8, oder 16 oder 32 Stück
("Breite" des Registers)
Der Takt ist allen FFs gemeinsam
D4
D3
D2
Für den Benutzer sichtbare Register
Viele Register für Zwischenwerte
Ein Register hat oft bevorrechtigte Eingänge
D1
Wie bei den Einzelflipflops, z.B. Set oder Reset (synchron oder
asynchron)
Ein Eingang wirkt auf alle Flipflops des Registers
Clk
Clr
Clk
Clk
Clk
Clk
Q3
S
D
R
S
D
R
S
D
R
S
D
R
Q4
Q2
Typischer bevorrechtigter Eingang: Clock Enable
CE muß 1 sein, damit Register synchrone Operation ausführt
Effekt: Register behält den alten Wert bei, "hält seinen Zustand„
Typische Anwendung zur Auswahl eines bestimmten Registers
Q1
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.185
2. Zahlen und logische Schaltungen
Das Register (3/3)
Tabelle
Clk
Q
0
1
↑
Qi
Qi
Di
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.186
2. Zahlen und logische Schaltungen
mit Reset
Der Zähler (1/3)
mit Enable
Asynchronzähler
Besteht aus Flipflops, die nicht durch einen gemeinsamen Takt gleichzeitig
1
geschaltet werden.
T
Asynchrone Dualzähler
Q
Q
T
Duales Zahlensystem,
Q#
Clk
Q#
Aufbau aus T-Flipflops
0
Zeitdiagramm für Register mit Enable
E
Q0 2 0
__
Q0
1
Q1 2 1
__
Q1
0
Q2 2 2
__
Q2
1
Q3 2 3
__
Q3
Prinzipieller
Aufbau
Clk
Clk
G
Q0
D
X"00"
Q
X"??"
X"55"
X"AA"
X"55"
X"FF"
Q1
X"AA"
Q2
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.187
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.188
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Der Zähler (2/3)
Clk
Qi
↑
↑
↑
↑
↑
↑
↑
↑
↑
↑
↑
↑
↑
↑
↑
↑
↑
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0000
Carry
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
Der Zähler (3/3)
Grundsätzliche Zähler-Tabelle
Symbol
Tabelle (Kurzform)
mit bevorrechtigten Eingängen
Clk
Qi Carry
Clk, R, Ld,En,Di
↑
Qi
0
1111 1
Qi+1 0
↑
↑
↑
-
1
0
0
0
0
0
1
0
0
0
0
0
1
0
1
Qi Carry
Zeitdiagramm
- 0000 0
Di Di 0
Qi 0
- Qi+1 0
- 1111 0
- 1111 1
Clk
Clr
Wird zur Kaskadierung
mit dem Enable-Eingang
des nachfolgenden Zählers verbunden,
der dann bei der nächsten positiven Flanke
hochzählen kann.
Achtung: En beeinflusst Carry
Load
EnP/T
D
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.189
X"0"
X"5"
X"6"
Schaltwerke
2.190
2. Zahlen und logische Schaltungen
Das Schieberegister (1/5)
Das Schieberegister (2/5)
Aneinanderreihung von N Flipflops, deren Ausgang jeweils mit dem
Eingang des nachfolgenden Flipflops verbunden ist und mit gemeinsamer
Taktleitung.
Q1
Q X"?"
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2. Zahlen und logische Schaltungen
Beispiel 4-bit Schiebregister:
X"A"
X"5"
Clk
1
2
3
4
5
1
2
3
4
5
D
Q1
Schieberichtung
Q2
Q2
Q3
Q4
Q3
Q4
D
Clk
S
D
Clk
R
Q#
S
D
Clk
R
Q#
S
D
Clk
R
Q#
S
D
Clk
R
Q
Q#
Clk
D
Q1
Q2
Q3
Das Signal, das an D anliegt, wird mit jedem Clock-Signal zum
nachfolgenden Flipflop weitergeschoben.
Q4
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.191
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.192
2. Zahlen und logische Schaltungen
2. Zahlen und logische Schaltungen
Das Schieberegister (3/5)
Tabelle Clk, SerIn
↑
↑
↑
↑
↑
1
1
0
1
1
0
Das Schieberegister (4/5)
Q
0000
0001
0010
0101
1011
0110
Anwendung:
Serielle Datenübertragung
Parallel – Serienwandlung
Serien – Parallelwandlung
Verzögerung
Rechenoperationen
verschiedene Implementierungen
Verschiedene Ausführung, je nach Anwendung:
Nur Serien-Eingang und –Ausgang
für Verzögerungen
Serien-Eingang und -Ausgang plus FF-Ausgänge
zur Seriell-Parallel Wandlung
Serien-Eingang und -Ausgang plus FF Eingänge
zur Parallel-Seriell Wandlung
Universal Schieberegister: Alle Ein- Ausgänge
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.193
2. Zahlen und logische Schaltungen
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.194
2. Zahlen und logische Schaltungen
Das Schieberegister (5/5)
Ausblick (1/2)
Bevorrechtigte Eingänge:
Mit diesen Bausteinen kann man nun komplexe Schaltwerke
aufbauen, die aus in der Größenordnung 107 (!) Gattern und
Latches bestehen. Solch hochkomplexe Systeme kann man
natürlich nicht manuell und unsystematisch aufbauen. Generell gilt:
Reset: setzt alle FFs auf 0
Set ist ungebräuchlich
Load: paralleles Laden des Registers
Shift Enable: Es wird geschoben wenn Enable 1 ist.
Direction: Nach rechts oder links schieben.
Realisiere Funktionen durch Gatterschaltungen
Realisiere Register und kritische Speicherplätze durch Master Slave
Latches
Benutze zur Konstruktion Hardwarebeschreibungssprachen
(Hardware Description Languages, HDL) und übersetze sie in
Schaltungen, so wie man Programme in Maschinenprogramme
transformiert.
Mathematische Bedeutung des Schiebens:
Bsp:
0000 0010 dezimal 2
0000 0100 dezimal 4
0000 1000 dezimal 8
Schieben nach links: Multiplikation mit 2
Schieben nach rechts: Division durch 2
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.195
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.196
2. Zahlen und logische Schaltungen
Ausblick (2/2)
Compilerbau (Kapitel 6)
Betriebssysteme (Kapitel 5)
Maschinenorientierte Programmierung (Kapitel 4)
von-Neumann-Rechner (Kapitel 3)
Speicher
Zahlen und logische Schaltungen (Kapitel 2)
Kommunikation (Kapitel 7)
von-Neumann-Rechner
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
2.197
3. Rechnerarchitektur
Informatik II
SS 2004
Teil 3: Rechnerarchitektur
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
Lehrstuhl für Telematik
Institut für Informatik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
3. Rechnerarchitektur
3.2
3. Rechnerarchitektur
Von Neumann Prinzipien (1946)
ZIEL DER VORLESUNG:
Verstehen lernen, was in einem
Rechner vorgeht. Wie er aufgebaut ist
und wie die einzelnen Bits und Bytes
den Rechner steuern….
1.
…
Haupt- bzw. Arbeitsspeicher für
Programme und Daten
… Steuerwerk
… Rechenwerk (ALU)
… Ein- / Ausgabewerk (I/O)
2.
„
„
0000 0010 0010 0100 0000 0010
0000 0000 0001 0000 1010 0101
0000 0010 0000 0010 0010 0100
„
„
„
INHALT:
Rechnerarchitektur
Von Neumann Rechner
Maschinensprache
Assembler
Programmierung
3.
4.
5.
6.
7.
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Rechner besteht aus vier Werken:
3.3
Programmsteuerung (universelle
Hardware)
Gemeinsamer Speicher
Hauptspeicher besteht aus
adressierbaren Zellen
Programm besteht aus einer Folge von
Befehlen
Sprünge sind möglich (bedingte und
unbedingte)
Speicherung erfolgt binär
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
3.4
3. Rechnerarchitektur
3. Rechnerarchitektur
Bestandteile eines von Neumann Rechners
„
…
…
„
„
„
Keyboard, Maus, Scanner, …..
Drucker, Bildschirm, ….
Festplatten / Magnetbänder
„
„
Steuerwerk (auch Leitwerk genannt)
Rechenwerk
…
…
„
„
Datenbus, Adressbus, Steuerbus
Ein- / Ausgabewerk (I/O)
…
„
„
RAM, ROM
Busse
…
„
„
Haupt- bzw. Arbeitsspeicher für Programme und Daten
…
„
Speicher
…
Speichermedium und physikalischem Arbeitsprinzip
Organisationsform
… Zugriffsart
… Leistungsparameter
… Preis
Register
Arithmetical Logical Unit (ALU)
…
Steuerwerk + Rechenwerk = CPU
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
3.5
3. Rechnerarchitektur
„
„
„
„
„
Schnittstelle
Übertragungsgeschw.
USB 1.0/1.1
1,5 MByte/s
USB 2.0 Hi-Speed
60 MByte/s
Firewire
50 MByte/s
Serielle Schnittstelle 0,12 MByte/s
Parallele Schnittstelle 0,12 MByte/s
SCSI (SCSI 1)5 MByte/s
6m
Fast SCSI (SCSI 2)
10 MByte/s
Ultra SCSI
20 MByte/s
Ultra Wide SCSI
40 MByte/s
Ultra 2 Wide SCSI
80 MByte/s
Ultra 3 Wide SCSI
160 MByte/s
AGP / PCI
South Bridge
…
3.6
Beispiel Busse
Ein gemeinsam genutztes Medium
Die Anzahl gleichzeitig
übertragbarer Bits heißt Busbreite.
Busse können hierarchisch
organisiert sein über Brücken
CPU direkt am Front Side Bus
North Bridge
…
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
3. Rechnerarchitektur
Busse
„
Speicherwerk (Hauptspeicher, Arbeitsspeicher).
Persistente Speicher wie Festplatten sowie Caches und Register zählen wir
logisch nicht zum Speicher.
Der Arbeitsspeicher besitzt einen eingeschränkten Adressumfang
Ergänzung durch Hintergrundspeicher (z.B. Plattenspeicher,
Magnetbandspeicher, etc.), die persistent sind.
Die Zugriffsgeschwindigkeit zum Arbeitsspeicher sollte der
Arbeitsgeschwindigkeit der CPU angepasst sein.
Je schneller der Speicher desto teurer Æ Speicherhierarchie
Für die verschiedenen Einsatzbereiche der Speicher werden
unterschiedliche Speicherarten verwendet, die sich unterscheiden
hinsichtlich:
Seriell / Audio / USB / Firewire
Max. Kabellänge
5m
5m
4,5 m
100 m
5m
3m
1,5 m
1,5 m
12 m
12 m
Beispiel eines älteren PCs
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
3.7
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
3.8
3. Rechnerarchitektur
3. Rechnerarchitektur
Ein- und Ausgabe (I/O für input / output)
„
„
„
In den Bereich I/O fallen alle Geräte, die Daten ausgeben oder
Eingaben annehmen wie Monitore oder Soundkarten
Auch die Festplatten sind nach von Neumann I/O Geräte
DMA – Direct Memory Access
…
„
Bock Mode bei eigenem Cache
I/O Geräte sind über den Bus mit Speicher und Prozessor
verbunden
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
3.9
3. Rechnerarchitektur
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
3.10
3. Rechnerarchitektur
Das Leitwerk (Steuerwerk, control unit)
„
„
„
„
„
Das Leitwerk steuert die Arbeitsweise des Rechenwerks durch schrittweise
Interpretation der Maschinenbefehle
Der Befehlszähler (PC) enthält die Adresse des nächsten auszuführenden
Befehls; Das Leitwerk erhöht diesen Wert vor jeder Operation um 1.
(PC:=PC+1)
Das Befehlsregister (IR) enthält den aktuellen Befehl
Das Statusregister (SR) nimmt Rückmeldungen aus dem System auf
Das Leitwerk decodiert den Befehl
…
Der Operationsteil (auch Opcode genannt) bestimmt dabei welche Operationen
ausgeführt werden sollen
… Operanden werden durch Angabe von Registern oder Speicheradressen
bestimmt
… Direktoperanden können durch Konstanten angegeben werden
… Decodierung i.d.R. durch Mikroprogramme
„
Das Leitwerk erzeugt die nötigen Steuersignale für das Rechenwerk
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
3.11
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
3.12
3. Rechnerarchitektur
3. Rechnerarchitektur
Das Rechenwerk
„
„
„
„
„
„
„
Rechneraufbau
Das Rechenwerk bildet zusammen mit dem Steuerwerk die CPU
Es besteht aus einer (oder mehreren) ALU und Registern
arithmetische Operationen (Addition, Subtraktion, ...)
logische Operationen (UND, ODER, NICHT, ...)
Verschiebe-Operationen
u. U. Bitmanipulation
Vergleichs- und Bit-Test-Operationen
Quelle: Rechenberg, Pomberger
Informatik-Handbuch S. 301
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
3.13
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
3. Rechnerarchitektur
3. Rechnerarchitektur
Der Befehlszyklus
Der Befehlszyklus
„
1.
2.
3.
4.
5.
FETCH – Befehlsholphase
DECODE – Dekodierungsphase
FETCH OPERANDS – Operanden nachladen
EXECUTE – Befehl ausführen
UPDATE PC – PC auf den nächsten Befehl zeigen
lassen
„
„
„
„
„
„
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
3.15
3.14
Die Gemeinsame Arbeitsweise von Leitwerk und Rechenwerk wird
durch den Maschinenbefehlszyklus beschrieben
Der Befehlszyklus wird von der CPU ständig durchlaufen
Die Befehle stehen im Speicher
Das Leitwerk "weiß" jederzeit, welcher Befehl als nächster
auszuführen ist
Die Adresse (= Nummer der Speicherzelle) des nächsten
auszuführenden Befehls steht in einem speziellen Register des
Leitwerks, dem Befehlszähler (PC)
Üblicherweise stehen aufeinander folgende Befehle in aufeinander
folgenden Speicherzellen, der zuerst auszuführende Befehl hat die
niedrigste Adresse
Zu Beginn des Programms wird der PC mit dessen Startadresse
geladen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
3.16
3. Rechnerarchitektur
3. Rechnerarchitektur
Ablauf des Befehlszyklus im Detail
Programm-Unterbrechungen (Interrupts) – I
(1a) Befehlsholphase: Speicherzugriff auf die vom PC angezeigte Adresse.
(1b)
Der Befehl wird in das Befehlsregister des Leitwerks gebracht. Anschließend
wird der PC erhöht, er zeigt dann auf den nächsten Befehl. Besteht ein Befehl aus
mehreren Speicherworten, so setzt sich diese Phase auch aus mehreren
Speicherzugriffen zusammen, bis der Befehl vollständig im IR steht.
Das Befehlsregister (instruction register IR) ist untergliedert in Opcode-Register (OR,
Befehlsregister) und Adress- Register (AR).
(2) Der Befehl im OR wird decodiert (Befehlsdecoder) und der Ablaufsteuerung
zugeführt. Diese kann als Mikroprogramm oder hart verdrahtet realisiert sein. Die
Ablaufsteuerung erzeugt die für die Befehlsausführung nötigen Steuersignale.
(3) Benötigt der Befehl Operanden, so wird deren Adresse aus dem Inhalt des AR
ermittelt.
(4a)
Nun erfolgt der Speicherzugriff auf die so festgelegte Operandenadresse.
(4b)
Die Operanden werden in das vom Opcode spezifizierte Register des
Rechenwerks oder in ausgewählte Speicherzellen gebracht.
(5) Falls die Art des Opcodes weitere Teiloperationen erfordern, werden diese nun
ausgeführt. Dabei kann auch der Inhalt des PCs verändert werden (Sprungbefehle,
Prozeduraufrufe).
„
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
3.17
„
„
„
„
3. Rechnerarchitektur
RISC vs. CISC
Als Reaktion auf eine Unterbrechungsanforderung geschehen zwei Dinge:
„
…
Retten des aktuellen Programmzustands: Der Maschinenstatus, d.h. der Inhalt
der Register der CPU, muss festgehalten werden. Dies geschieht durch
Wegspeichern der Registerinhalte des gerade unterbrochenen Programms
(Zustandsvektor) auf den Stack.
… Laden der Register mit dem Zustandsvektor der ISR (z.B. Startadresse der ISR):
Der Zustandsvektor steht an einer festgelegten Adresse im Speicher (InterruptVektor). Das Programm wird nun ab der Startadresse der ISR fortgesetzt.
„
„
„
Die Unterbrechung darf nicht mitten in einer Befehlsausführung erfolgen
(undefinierter Prozessorstatus!), sondern erst nachdem der gerade laufende
Befehl vollständig abgearbeitet ist, also am Ende des Befehlszyklus.
Nach Ende der ISR wird der ursprüngliche Zustandsvektor wieder vom
Stack geholt und das Programm an der Unterbrechungsstelle fortgesetzt.
Während des Rettens des Programmzustands und des anschließenden
Ladens des Zustandsvektors der ISR darf keine neue
Unterbrechungsanforderung auftreten (Zustandsinformation unvollständig!).
Der Befehlssatz der Prozessoren enthält daher spezielle Befehle zum
Sperren und Freigeben von Unterbrechungsanforderungen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
3.18
3. Rechnerarchitektur
Programm-Unterbrechungen (Interrupts) – II
„
Der Programmablauf muss manchmal unterbrochen werden.
Lesen von Daten, Terminal Eingaben usw.
Die Unterbrechung erfolgt durch ein an die CPU gesandtes Signal,
das interrupt request (IRQ) genannt wird.
Die CPU veranlasst das gerade laufende Programm zu
unterbrechen und eine Befehlsfolge auszuführen, die auf die
Unterbrechung reagiert
Nach dem Abarbeiten der interrupt service routine (ISR) fährt der
Rechner mit der Ausführung des unterbrochenen Programms fort.
3.19
„
Die Intel x86 CPUs und Motorola 68000 Serie sind CISC
Prozessoren – CISC (Complex Instruction Set Computer)
Der RISC Prozessor ist einfacher aufgebaut (Reduced Instruction
Set Computer)
…
…
…
…
…
…
…
„
weniger Befehle
gleiche Länge der Befehle
kürzere Ausführungszeit pro Befehl
pipelining
feste Verdrahtung
die arithmetischen Befehle werden nur auf Registern ausgeführt nicht
auf den Speicher
Auf den Speicher kann nur über Lade- und Schreibbefehle zugegriffen
werden
Das Konzept des Pipelinings wurde verfolgt
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
3.20
3. Rechnerarchitektur
3. Rechnerarchitektur
Nicht von Neumann Architekturen
„
Was ist möglich?
Klassifikation nach Flynn
…
„
SISD
Single
Instruction
Single
Data
MISD
Multible
Instruction
Single
Data
SIMD
Single
Instruction
Multible
Data
MIMD
Multible
Instruction
Multible
Data
Der Earth Simulator:
…
Nach Daten und Instruktionen
…
…
…
…
…
…
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
3.21
3. Rechnerarchitektur
Benchmarking
„
„
„
Analyse der Geschwindigkeit von Rechnern (Performance)
Was sagen die MIPS (million instructions per second [nicht unser
MIPS Prozessor!!!]) und Flops (Floating point Operations) aus?
So genannte Mixe aus verschiedenen Operationen, um die Leistung
zu bewerten.
…
…
„
Der LINPACK-Benchmark ist wichtig für die Numerik
Es gibt viele weitere: SPAC, WHETSTONE, DHRYSTONE, EDN,
SSBA-Suite, …usw.
Die Thematik ist sehr komplex und würde alleine eine ganze
Vorlesung füllen.
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
3.23
5,120 (640 8-way Knoten)
500 MHz NEC CPUs
8 GFLOPS per CPU (41
TFLOPS total)
2 GB (4 512 MB FPLRAM
modules) per CPU (10 TB
total)
shared memory in jedem
Knoten
640 × 640 crossbar switch
zwischen den Knoten
16 GB/s Bandbreite
zwischen den Knoten
20 kVA Stromverbrauch pro
Knoten
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Der Earth Simulator -- NEC SX
Earth Simulation Center
Yokohama – Japan
http://www.es.jamstec.go.jp/
www.top500.org
3.22
4. Assembler
Assembler Programmierung – Motivation
„
Was ist ein Programm?
…
…
Informatik II
SS 2004
„
Problem:
…
Teil 4-1: Assembler Programmierung
…
„
Welche Befehle kennt der Prozessor?
Sind das dieselben Befehle, die ein Mensch verwendet?
Sich Schritt für Schritt dem Prozessor nähern…
…
…
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
Eine Reihe von Befehlen, die der Ausführung einer Aufgabe dient
Dazu wird das Programm sequentiell abgearbeitet und Befehl für Befehl
abgearbeitet. Der Prozessor arbeitet dabei zustandsbasiert
…
Anweisung: Addiere die Zahlen von eins bis hundert und speichere das
Ergebnis!
Integer: Ergebnis := Sum(1+2+3+4+…+100);
….aber das sind immer noch nicht die Befehle, die ein Prozessor
versteht.
Lehrstuhl für Telematik
Institut für Informatik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4. Assembler
4. Assembler
Assembler Allgemein – Befehle (Maschinensprache)
„
„
„
Ausnahme: (aufwärts-) kompatible Rechnerfamilien
Beispiel: 286, 386, 486, Pentium
„
„
Der Befehl muss zwei Angaben enthalten (v. Neumann-Rechner):
…
…
„
Assembler vs. Maschinensprache
Die Befehle, die der Computer versteht und ausführen kann, sind Bitfolgen
Maschinensprache, in der Regel für jede CPU unterschiedlich.
…
…
Gesamtheit aller vom Prozessor ausführbaren Befehle
(Maschinenbefehle) heißt Maschinensprache
Prozessoren können nur numerische Instruktionen ausführen.
…
durchzuführende Operation (Was!) Operations-Code
verwendeter Operand (Womit!) Adresse
…
Häufig gehen diese Angaben auch direkt in den Op-Code ein. Nach der
Anzahl der Operanden im Adressteil unterscheidet man:
…
…
8-Bit-Mikrocomputer arbeiten fast immer mit Einadress-Befehlen (1. Quelle und
Zieladresse implizit gegeben, z.B. Akkumulator), 16-Bit-CPUs dagegen oft mit
Zweiadress-Befehlen.
… Ein Befehl kann aus einem oder mehreren Speicherworten bestehen
… Bei Computern mit großer Wortlänge können auch mehrere Befehle in einem
Speicherwort stehen
… Bei 8-Bit-Mikros besteht der OP-Code aus einem Byte, der Adress-Teil aus
einem oder zwei Bytes (= eine Adressangabe)
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.1-2
4.1-3
„
„
0000 0010 0010 0100 0000 0010 0000
Addiere den Inhalt der Register 17 und 18 und speichere das Ergebnis
im Register 8 ab
für den Menschen nicht gut verständlich
Ein Assembler setzt die Befehle um und verwaltet symbolische
Adressen
Der Wortschatz eines Assembler heißt Assemblersprache oder auch
einfach Assembler
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.1-4
4. Assembler
4. Assembler
Assembler
„
„
„
„
„
Vom Assembler zur Hochsprache
„
Aber auch die Maschinenbefehle (bzw. Assemblerbefehle) sind für
den Menschen schwer zu verstehen, selbst wenn er nicht direkt in der
binären Maschinensprache programmieren muss.
Es gibt keine Variablen
Einige Befehle stehen nicht direkt zur Verfügung.
Jeder Prozessor ist anders, also auch jeder Assembler
Das bedeutet, dass ein Programmierer ein Assemblerprogramm (z.B.
Summe von 1 bis 100) für jeden Prozessor neu schreiben muss.
„
„
„
Lösung des Problems: eine Hochsprache
Es werden dem Programmierer mehr Befehle angeboten
Speicherverwaltung wird übernommen
Die Befehle sind Prozessor unabhängig
Wer vermittelt nun zwischen Hochsprache und Maschinensprache?
„ Ein Compiler übersetzt das Hochsprachenprogramm in
Assemblerprogramm.
…
„
„
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.1-5
4. Assembler
Diesen Vorgang nennt man kompilieren
Ein Assembler macht aus einem Assemblerprogramm ein
Maschinensprachenprogramm
Anstelle des Compilers kann auch ein Interpreter verwendet
werden. Dieser erzeugt auch Maschinencode, aber erst zur
Laufzeit.
Im Unterschied zum Interpreter übersetzt der Compiler das gesamte
Programm.
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.1-6
4. Assembler
Wo wir jetzt sind – ein kurzes Fazit
„
„
Vorher Zahlendarstellung / Gatter Æ ALU
von Neumann Rechner
Programm in einer
temp = v[k];
Hochsprache (C, Java)
v[k] = v[k+1];
Compiler
Assembler Programm
„
Jetzt Assembler Programmierung
„
Später:
(Spim für MIPS R2000)
Assembler
…
…
Compilerbau: Wie bekomme ich aus einer Hochsprache ein
Assemblercode? Wie optimiere ich den Compiler? In welcher Sprache
schreibe ich einen solchen Compiler?
Formale Sprachen: Formale Analyse der Sprachen und ihrer
Mächtigkeit, usw.
Maschinensprache
Programm (MIPS R2000)
v[k+1] = temp;
lw
lw
sw
sw
4.1-7
$15,
$16,
$16,
$15,
0($2)
4($2)
0($2)
4($2)
0000 1001 1100 0110 1010 1111 0101 1000
1010 1111 0101 1000 0000 1001 1100 0110
1100 0110 1010 1111 0101 1000 0000 1001
0101 1000 0000 1001 1100 0110 1010 1111
Interpretation durch
Leitwerk
Registertransfer
IR ← Imem[PC]; PC ← PC + 4
Anweisungen
ALUOP[0:3] ⇐ InstReg[9:11] & MASK
°
°
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
C code
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Assemblerprogramm
Maschinencode
Registertransfer
Anweisung
4.1-8
4. Assembler
4. Assembler
Wie können wir nun Programmieren?
Arbeitsweise des R 2000
Wir brauchen:
„ Einen Simulator:
1.
…
…
…
„
„
„
2.
MIPS R2000 – Stanford Projekt: Microprocessor without Internal
Pipeline Stages
RISC Prozessor
SPIM (unser Simulator) unterliegt der GNU-Lizenz
3.
…
4.
http://www.cs.wisc.edu/~larus/spim.html
Linux: xspim; Windows© PCSpim
5.
4.1-9
Der Speicher
„
Warum Hexadezimal?
„
„
Größe des Speichers
Jede Zelle ist 8 Bit (1 Byte) Groß und hat eine 32 Bit Adresse
„
…
„
Kilobyte 1KB = 1024 Byte = 210Byte
Megabyte 1MB = 1024 KB = 220 Byte
Gigabyte 1GB = 1024 MB = 230 Byte
„
„
Von Neumann-Rechner haben gemeinsamen Speicher für Daten
und Programm
Der Programmierer muss verhindern, dass der Rechner versucht,
die abgelegten Daten als Programm auszuführen.
Der Prozessor soll nicht das Programm mit Daten überschreiben
Selbstmodifizierender Code ist möglich (Beispiel: Computer Viren)
Lösung: Segmente für Daten, Programm, OS und Stack
…
„
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.1-10
4. Assembler
Adressierung des Speichers
…
Daten werden aus den Registern in den Speicher geschrieben
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4. Assembler
…
z.B. der Inhalt von zwei Registern wird addiert und das Ergebnisse in
ein anderes Register geschrieben.
Zum Erstellen der Programme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
„
Die zugehörigen Operanden werden geladen
In Abhängigkeit des aktuellen Befehls werden die Register
verändert.
…
Einen Texteditor
…
Der Befehl wird geladen
Der Befehl wird decodiert
Daten werden in die Register geladen
4.1-11
Mit den Direktiven .data und .text geben wir an, wohin die folgenden
Befehle geschrieben werden
Der Programmierer kann aber auch direkt in den Speicher
schreiben.
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.1-12
4. Assembler
4. Assembler
Hauptspeicher Verwaltung
Datentypen
Adresse 32 Bit
„
„
Der Speicher besteht aus 232
Zellen à einem Byte
.text und .data sind Direktiven,
die angeben, was Programm
und was Daten sind.
Speicherzellen 8 Bit
0xFFFFFFFF
„
Betriebssystem
und ROM
0x80000000
0x7FFFFFFF
Ganze Zahlen
…
…
Stack Segment
…
„
Zeichenketten
…
Freier Bereich
.word – 32-Bit-Zahlen
.half – 16-Bit-Zahlen
.byte – 8-Bit-Zahlen
.ascii – 8Bit pro Zeichen (256 verschiedene Zeichen)
„
„
„
.ascii
“Das ist ein Beispieltext. Und ohne “
.asciiz “Zeilenumbruch geht es weiter.“
Floating Point wird vom Coprozessor unterstützt.
Daten Segment
0x10000000
Text Segment
0x00400000
Reserved
0x00000000
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.1-13
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4. Assembler
4. Assembler
Speicher – Litte Big Endian
„
„
„
…
…
„
R 2000 Register
Litte-Endian vs. Big-Endian
Big Endian „denkt“, dass das
erste Byte, das er liest, das
größte ist.
Little Endian „denkt“, dass das Adresse
erste Byte, das er liest, das
kleinste ist
…
Little-Endian
Darstellung
von 1025
00
00000000
00000001
01
00000000
00000100
Beispiel: 00000000 00000000 02
00000100 00000001 (1025)
00000100
00000000
03
00000001
00000000
Daten sollten im Speicher
ausgerichtet (Aligned) sein
…
„
Big-Endian
Darstellung
von 1025
Big Endian: Mainfraim, IBM
Litte Endian: PC, Intel, AMD
Bi Endian: PowerPC
„
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.1-14
4.1-15
32 General Purpose Register mit 32 Bit
Wortbreite
… $0 bis $31 oder per „Name“
… $zero enthält immer(!) den Wert 0
… $at temporäres Assemblerregister
… $v0, $v1 Funktionsergebnisse
… $a0 bis $a3 Argumente für
Prozeduraufrufe
… $t1 bis $t9 temporäre Register
… $s0 bis $s7 langlebige Register
… $k0, $k1 Kernel Register
… $gp Zeiger auf Datensegment
… $sp Stack Pointer
… $fp Frame Pointer
… $ra Return Address
Zusätzlich lo und hi (Spezialregister)
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$zero
$at
$v0
$v1
$a0
$a1
$a2
$a3
$t0
$t1
$t2
$t3
$t4
$t5
$t6
$t7
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$s0
$s1
$s2
$s3
$s4
$s5
$s6
$s7
$t8
$t9
$k0
$k1
$gp
$sp
$fp
$ra
4.1-16
4. Assembler
4. Assembler
Die Assembler Befehle
„
Befehlsformat
…
…
„
…
…
…
…
„
„
<Marke>: <Befehl1> <Arg_1> <Arg_2> <Arg_3> # <Kommentar>
<Marke>: <Befehl2>, <Arg_1>, <Arg_2>, <Arg_3> # <Kommentar>
Sequentielle Abarbeitung von Befehlen
…
„
Befehle
…
„
Assembler Programme
„
Lade- / Speicherbefehle
Arithmetische Operationen (+ , * , - , / )
Logische Operationen (AND , OR , XOR , NAND , …)
Schiebe- / Rotationsbefehle
Sprungbefehle
„
Sprünge sind möglich
Nur ein Befehl pro Zeile
„#“ leitet einen Kommentar ein
„<name>:“ ist ein Label
…
…
…
Das Label „main:“ muss immer vorhanden sein
Label können angesprungen werden z.B. „while:“ oder „for:“
Den Namen des Labels entscheidet der Programmierer
(bis auf „main:“)
Pseudobefehle werden vom Assembler in mehrere Befehle
umgesetzt Æ in die Befehle, die der Prozessor verarbeiten kann.
Direktiven sind Assembleranweisung, die NICHT in Befehle
umgesetzt werden; z.B. um Platz zu lassen für Variablen (beginnen
mit einem Punkt z.B. „.data“)
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.1-17
4. Assembler
Assember Programm – ein Beispiel
Register Format (R)
rsrs
6
5
rtrt
rd
rd
5
5
shamt
shamt
5
# Beispielprogramm V. 001
# berechnet den Umfang eines Dreiecks mit den Kanten x, y, z
# kein sehr sinnvolles Programm
.data
x:
.word 12
y:
.word 14
z:
.word 5
u:
.word 0
.text
main: lw
$t0, x
lw
$t1, y
lw
$t2, z
add
$t0, $t0, $t1 # $t0 := x + y
add
$t0, $t0, $t2 # $t0 := x + y + z
sw
$t0, u
# u := x + y + z
li
$v0, 10
# EXIT
syscall
funct
funct
6
Immediate Format (I)
Op-Code
Op-Code
rsrs
rtrt
16--Bit
Bit Konstante
Konstante(Imm)
(Imm)
16
6
5
5
16
Sprung Format (J)
Op-Code
Op-Code
4.1-18
4. Assembler
Die drei Instruktionsformate
Op-Code
Op-Code
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
26Bit
BitSprungadresse
Sprungadresse
26
6
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
26
4.1-19
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.1-20
4. Assembler
Ladebefehle und Adressierungsarten I
lw Rd, Adr
Der Befehl lw (load word) lädt ein Wort in ein Register
Rd und Adr sind die Argumente. Adr ist die Adresse im Hauptspeicher,
von wo der Befehl in das Register Rd geladen wird.
Informatik II
SS 2004
Adressierungsmodi I – „...wie wird die Adresse angegeben?“
Teil 4-2: Assembler Programmierung
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
Register Indirekt (RS): Der Wert steht an der Adresse, die im Register
RS angegeben ist.
Direkt: Die Adresse wird direkt angegeben über ein Label oder Label +
Konstante.
Indexierte – Label (RS): Der Wert wird durch ein Label angegeben +
den Wert aus Register RS (+ Konstante)
Lehrstuhl für Telematik
Institut für Informatik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4. Assembler
4. Assembler
Ladebefehle und Pseudoinstruktionen
… und nun das Ganze noch mal zum Speichern
Weitere Befehle
lb Rd, Adr
lbu Rd, Adr
lh Rd, Adr
lhu Rd, Adr
ld Rd, Adr
: load byte
8 Bit
: load unsigned byte
8 Bit
: load halfword
16 Bit
: load unsigned halfword 16 Bit
: load double-word
ist eine Pseudoinstruktion
Pseudoinstruktionen werden vom Assembler aufgelöst
ld Rd, Adr
4.2-2
:=
sw Rs, Adr
sb Rs, Adr
sh Rs, Adr
sd Rs, Adr
ush Rs, Adr
usw Rs, Adr
store word
store byte
store halfword
store double-word (Pseudoinstruktion)
unaligned store halfword
unaligned store word
lw Rd, Adr
lw Rd+1,Adr+4
Daten müssen aligned im Speicher sein
Adressen von Wörtern müssen durch 4 teilbar sein
Adressen von Halbwörtern müssen gerade sein
Oder es werden die Befehle ulw, ulh und ulhu verwendet
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.2-3
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.2-4
4. Assembler
4. Assembler
Register Transfer Befehle und Adressierungsarten II
Arithmetische Befehle (Addition & Subtraktion)
Register direkte Adressierung:
Es wird direkt auf die Register zugegriffen unter Nennung der
Registernamen Rd (destination) und Rs (source).
move Rd,Rs move Rs
Können nur direkt auf den Registern ausgeführt werden
Addition und Subtraktion (mit Overflow)
add Rd, Rs1, Rs2
addi Rd, Rs1, Imm
sub Rd, Rs1, Rs2
Rd
Unmittelbare Adressierung:
Dort wird eine Konstante unmittelbar in ein Register übertragen. Die
Konstante ist Teil des Programmcodes, nicht der Daten.
Rd := Rs1 + Rs2
Rd := Rs1 + Imm
Rd := Rs1 – Rs2
add kann auch mit einer Konstanten (unmittelbaren Operanden)
verwendet werden. Der Assember benutzt dann automatisch addi.
sub und alle weiteren arithmetischen Befehle können mit einer
Konstanten verwendet werden. ☺
li Rd, Imm load immediate (Imm ist dann eine Konstante)
lui Rs, Imm load upper immediate Rs
Imm * 216
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.2-5
4. Assembler
4.2-6
4. Assembler
Überläufe und Ausnahmen
Addition ohne Überlauf
Was passiert, wenn die Summe zweier positiver Zahlen negativ
wird?
Es tritt eine Ausnahme (Exception) auf. Ausnahmen sind Fehler,
die während der Laufzeit des Programms auftreten.
Der Exception Handler beendet in diesem Fall das Programm!
addu
addiu
aubu
Rd, Rs1, Rs2
Rd, Rs1, Imm
Rd, Rs1, Rs2
U sollte nicht durch unsigned übersetzt werden, da auch bei Addition
von vorzeichenlosen Zahlen Überläufe auftreten können.
Ein klassisches Beispiel ist auch die Division durch Null.
Beispiel: Die Halfbytes (4 Bit) a und b werden addiert.
A= 0111
B= 0001 +
-------------S= 1000
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7
1
---8
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.2-7
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.2-8
4. Assembler
4. Assembler
Multiplikation und Division
Multiplikation und Division
Problem eines Überlaufs ist sehr wahrscheinlich und es werden
sogar doppelt so viel Bits zum Speichern benötigt.
Beispiel: (1 * 232) * (1* 232) = 1 * 232+32 = 1* 264
Der MIPS verfügt über zwei Spezialregister hi und lo
Es gibt aber nur 4 Maschinenbefehle für Multiplikation und Division
div Rd, Rs
divu Rd, Rs
mult Rd, Rs
multu Rd, Rs
hi:=Rd MOD Rs; lo:= Rd DIV Rs
hi:=Rd MOD Rs; lo:= Rd DIV Rs
hi:=Rd * Rs DIV 216; lo:=Rd * Rs MOD 216
hi:=Rd * Rs DIV 216; lo:=Rd * Rs MOD 216
hi:=Rd MOD Rs; lo:= Rd DIV Rs
hi:=Rd MOD Rs; lo:= Rd DIV Rs
hi:=Rd * Rs DIV 216; lo:=Rd * Rs MOD 216
hi:=Rd * Rs DIV 216; lo:=Rd * Rs MOD 216
Logische Operationen
Sprünge
Jetzt erst mal weiter mit dem SPIM Ein- und Ausgaben…
4.2-9
4. Assembler
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.2-10
4. Assembler
SPIM – Ein- und Ausgaben
Syscall Parameter
Der Befehl syscall
Der Befehl hat keine Argumente.
Ein Parameter wird über das Register $v0 übergeben.
Das Verhalten des Simulators ist abhängig vom Register $v0
$v0=1 print_int
Wert in $a0 wird dezimal ausgegeben auf dem
Bildschirm
$v0=4 print_string
Die mit Chr0 endende Zeichenkette wird
ausgegeben. $a0 muss die Adresse enthalten,
an der die Zeichenkette im Speicher beginnt.
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
div Rd, Rs1, Rs2
divu Rd, Rs1, Rs2
Mult Rd, Rs
multu Rd, Rs
Die Ergebnisse werden immer in hi und lo gespeichert.
Die Ergebnisse von Maschinenbefehlen werden immer in hi und lo
gespeichert.
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Es gibt auch Pseudobefehle, die direkt auf den Registern arbeiten.
4.2-11
Vor Aufruf von syscall muss der Parameter in $v0 gegeben werden
1
print_int
Wert in $a0 wird dezimal ausgegeben
2
print_float
32 Bit Gleitkommazahl aus Register $f12/13
wird ausgegeben
3
print_double
64 Bit …
4
print_string
Die an ($a0) beginnende und auf Chr 0
endende Zeichenkette wird ausgegeben.
5
read_int
Schreibt eine Dezimalzahl in $v0
6
read_float
Schreibt eine Gleitkommazahl in $f0 (32 Bit)
7
read_double
Schreibt eine Gleitkommazahl in $f0/1 (64 Bit)
8
read_string
Schreibt eine Zeichenkette bis Chr 0 in den
Speicher. Startadresse: $a0 Max. Länge $a1
9
sbrk
Reserviert Speicher
10 exit
Beendet das Programm
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.2-12
4. Assembler
4. Assembler
Logische Befehle
and Rd, Rs1, Rs2
andi Rd, Rs, Imm
nor Rd, Rs1, Rs2
or Rd, Rs1, Rs2
ori Rd, Rs, Imm
xor Rd, Rs1, Rs2
xori Rd, Rs, Imm
not Rd, Rs
Rotations- und Schiebebefehle
Rotation: Alle Bits in einem Register werden nach links oder rechts
verschoben; das Letzte kommt dann an den Anfang.
Schiebebefehle: Wie Rotation allerdings fällt das letzte Bit weg. Das
erste Bit wird durch 0 ersetzt (logische Schiebebefehle) oder das
höchstwertige Bit wird übernommen, damit das Vorzeichen erhalten
bleibt (arithmetische Schiebebefehle).
Rd:=Rs1 AND Rs2
Rd:=Rs AND Imm
Rd:=Rs1 NOR Rs2
Rd:=Rs1 OR Rs2
Rd:=Rs AND Imm
Rd:=Rs1 XOR Rs2
Rd:=Rs AND Imm
Rd:= NOT(Rs)
:= xori Rd, Rs, -1
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
rol Rd, Rs1, Rs2 rotiert Rs1 um Rs2 Stellen nach links (ror für rechts)
sll und sllv (shift left logical); srl und srlv (shift right logical); sra und srav
(shift right arithmetic)
V steht für Variable, was bedeutet, dass ein Register die Anzahl der
Schritte bestimmt; ansonsten ist der Wert eine Konstante.
4.2-13
4. Assembler
Sprünge
Es werden zwei Werte verglichen und wenn die Bedingung (z.B.
gleich, > , < ,….) erfüllt ist, wird in das Zielregister eine 1 geschrieben
und sonst eine 0.
Beispiel: seq Rd, Rs1, Rs2 Falls (Rs1)=(Rs2) Rd:=1, sonst Rd:=0
sne – ungleich; sge – größer oder gleich; sgeu – größer oder gleich
(unsigned) usw.
Bei den Vergleichen gibt es nur 4 Maschinenbefehle:
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.2-14
4. Assembler
Vergleiche
slt Rd, Rs1, Rs2
sltu Rd, Rs1, Rs2
slti Rd, Rs1, Imm
sltui Rd, Rs1, Imm
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
set less than
set less than unsigned
set less than immediate
set less than immediate unsigned
Sprünge machen Programme erst mächtig. Der Spim unterstützt
bedingte und unbedingte Sprünge (jumping) an eine Marke (Label).
Im Gegensatz zu Hochsprachen unterstützt der Assembler bedingte
Sprünge nur aufgrund von Größenvergleichen zweier Register oder
eines Registers mit einer Konstanten.
b label – unbedingter Sprung zum Label
beq Rs1, Rs2 label – bedingter Sprung falls Rs1 = Rs2
Es gibt insgesamt 21 Befehle für bedingte Sprünge, die auch
=,<>,<=,>=,<,>,=0, usw. abfragen.
Mit den Sprüngen können wir die Schleifenkonstrukte und
Fallunterscheidungen der Hochsprachen nachbilden.
Eigentlich erwartet der Assembler einen Offset zu PC (Branching),
wir verwenden allerdings Marken, damit sind die Befehle j und b
identisch im Spim.
4.2-15
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.2-16
4. Assembler
Kontrollstrukturen
Sprünge (bedingte und unbedingte)
If-then-else, Case
Loop (n Durchläufe)
While (Abbruchbedingung)
„
„
„
Informatik II
SS 2004
„
Teil 4-3: Assembler Programmierung
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
Lehrstuhl für Telematik
Institut für Informatik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4. Assembler
4. Assembler
Beispiel: While in Assembler
Beispiel: if–then–else in Assembler
if ($t8 < 0)
$s0 =
$t1 =
}
else{
$s0 =
$t2 =
}
main:
4.3-2
$v0 = 1;
while ($a1 < $a2) do{
$t1 = mem[$a1];
$t2 = mem[$a2];
if ($t1 != $t2) go to break;
$a1 = $a1 +1;
$a2 = $a2 –1;}
return
break:
$v0 = 0
return
then{
0 - $t8;
$t1 + 1;
$t8;
$t2 + 1;
bgez
sub
addi
b
$t8, else
$s0, $zero, $t8
$t1, $t1, 1
next
#
#
#
#
if ($t8 is > or = zero) branch to else
$s0 gets the negative of $t8
increment $t1 by 1
branch around the else code
ori
addi
$s0, $t8, 0
$t2, $t2, 1
# $s0 gets a copy of $t8
# increment $t2 by 1
li
$v0, 1
# Load $v0 with the value 1
bgeu
lb
lb
bne
addi
addi
b
$a1,
$t1,
$t2,
$t1,
$a1,
$a2,
loop
#
#
#
#
#
#
#
li
$v0, 0
loop:
else:
next:
$a2, done
0($a1)
0($a2)
$t2, break
$a1, 1
$a2, -1
If( $a1 >= $a2) Branch to done
Load a Byte: $t1 = mem[$a1 + 0]
Load a Byte: $t2 = mem[$a2 + 0]
If ($t1 != $t2) Branch to break
$a1 = $a1 + 1
$a2 = $a2 - 1
Branch to loop
break:
# Load $v0 with the value 0
done:
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.3-3
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.3-4
4. Assembler
4. Assembler
Komplexe Datenstrukturen – Felder
Beispiel: Schleifen in Assembler
$a0 = 0;
Wir können im MIPS Felder deklarieren, indem wir die Felder
explizit belegen.
Beispiel:
.data
feld: .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
„
For ( $t0 =10; $t0 > 0; $t0 = $t0 -1) do {
$a0 = $a0 + $t0;
}
li
$a0, 0
#
li
$t0, 10
# Initialize loop counter to 10
$a0 = 0
Oder wir reservieren den Platz für 13 Wörter
Beispiel:
.data
feld: .space 52
Hier wird nur Platz reserviert, aber nicht initialisiert!
„
loop:
add
$a0, $a0, $t0
addi
$t0, $t0, -1
# Decrement loop counter
bgtz
$t0, loop
# If ($t0 >0) Branch to loop
„ Ein Feld ist vergleichbar mit einem Array
sw $t0, feld($t0) # feld[i] := i
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.3-5
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4. Assembler
4. Assembler
Der Stack
„
„
„
„
Keller für mehr Daten
Ein LIFO Speicher
Kellerzeiger (SP) zeigt auf 0x7FFF FFFC
Einige CISC Prozessoren verfügen über Extrabefehle (push, pop)
zum Einkellern von Daten. Beim Spim müssen wir die
Kellerverwaltung selbst übernehmen.
Unterbrechungen müssen beachtet werden
…
…
…
…
…
sw $t0, ($sp)
addi $sp, -4
Besser:
addi $t0, -4
sw $t0, 4($sp)
4.3-6
# tep. Reg. $t0 auf Stack
# Stack Pointer neu setzen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
„
…
…
…
…
„
„
„
4.3-7
Für den Fall, dass man mehrere Daten speichern will
addi $sp, -12
sw $t0, 12($sp)
sw $t1, 8($sp)
sw $t2, 4($sp)
#gleich für 3 Worte der SP setzen
# t0 sichern
# t1 sichern
# t2 sichern
Lesen analog mit dem Befehl lw
Erst den Lesebefehl und dann den SP wieder neu setzen.
Wir sind nun in der Lage, die ganzen temporären Register zu
sichern.
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.3-8
4. Assembler
4. Assembler
Unterprogramme
„
„
„
„
„
Beispiel: Das Unterprogramm swap als C Programm
Aus Hochsprachen ist das Konzept von Unterprogrammen bekannt.
In Hochsprachen heißen sie Prozeduren, Methoden, Subrotinen oder
Funktionen
Der Grund von Unterprogrammen ist die Wiederverwendung von
Programmteilen.
Programme können leichter verständlich werden, wenn Unterprogramme
sinnvoll eingesetzt werden.
Auch Assembler unterstützen das Konzept von Unterprogrammen.
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.3-9
swap vertauscht v[k] mit v[k+1]
swap (int v[], int k)
{
int temp;
temp = v[k];
v[k] = v [k+1];
v[k+1] = temp;
}
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4. Assembler
4.3-10
4. Assembler
Swap als MIPS Assembler Programm
Unterprogramme
swap:
„
Das Unterprogramm wird mit „jal swap“ aufgerufen.
„
Die Parameter müssen in $4, $5 übergeben werden.
Die Rückkehradresse wird automatisch in $31 gespeichert.
jr $31 ist der Rücksprung aus dem Unterprogramm und entspricht
einem Return.
addi
sw
sw
sw
sll
add
$29, $29, -12
$2, 4($29)
$15, 8($29)
$16, 12($29)
$2, $5, 2
$2, $4, $2
lw
lw
sw
sw
lw
lw
lw
addi
jr
$15, 0($2)
$16, 4($2)
$16, 0($2)
$15, 4($2)
$2, 4($29)
$15, 8($29)
$16, 12($29)
$29, $29, 12
$31
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
reserve space on stack
save $2 on stack
save $15 on stack
save $16 on stack
reg $2 = k * 4
reg $2 = v + (k*4)
$2 con. addr. of v[k]
$15 <-- v[k]
$16 <-- v[k+1]
$16 --> v[k]
$15 --> v[k+1]
restore $2 from stack
restore $15 from stack
restore $16 from stack
restore stackpointer
return
„
„
4.3-11
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.3-12
4. Assembler
4. Assembler
Konventionen für Prozeduren (Prolog)
„
Für den Aufrufer (Caller)
…
…
…
…
…
„
Konventionen für Prozeduren (Epilog)
…
„
„
$fp als letztes Register wieder herstellen
$sp = $sp – Größe des Frames
Caller
„
…
4.3-13
Auf dem Stack gesicherten Register wieder herstellen
Argumente vom Stack nehmen (
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.3-14
4. Assembler
Pipelining
Ein-Zyklus-Maschinenbefehle
„
Möglichst alle Befehle laufen in einem Taktzyklus ab.
IF Instruction Fetch
ID Instruction Decode
OF Operand Fetch
OE Operation Execute
OS Operand Store
Phasen-Pipelining im RISC
…
Ohne Pipelining
Load/Store-Architektur
…
Nur über Load/Store-Befehle Zugriff auf den Hauptspeicher. Alle anderen
Befehle: Reg.-Reg.
„
Keine Mikroprogrammierung
„
Möglichst wenige Befehle und Adressierungsarten
…
…
…
IF
ID
OF
OE
OS
IF
ID
OF
OE
OS
Festverdrahtete Ablaufsteuerung
…
Typischerweise ca. 50 Befehle, 2 Adressierungsarten: PC-relativ und indiziert.
Nur Befehle aufnehmen, wenn sie eine deutliche Geschwindigkeitssteigerung im
Mittel bringen.
Einheitliches Befehlsformat
…
„
Return (jr $ra)
…
RISC- Prozessoren und Pipelining
„
…
„
4. Assembler
„
Stackframe entfernen
$fp, $ra, $s0 - $s7
Achtung Fehlerquelle: der Befehl jal verändert $ra
Erstelle $fp durch $sp + Stackframe
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
…
…
„
Platz für Stackframe reservieren.
Sichere alle „callee-saved“ Register, die verändert werden.
„
…
Rückgabe des Funktionswerts in $v0, $v1
Register wieder herstellen
…
Für den Aufgerufenen (Callee)
…
„
Callee
„
Sichere $a0-$a3, $v0, $v1, da diese in der Prozedur verändert werden
dürfen.
Speichere die zu übergebenden Argumente in $a0 bis $a3.
Weitere Argumente werden über den Stack übergeben (das fünfte ist
das letzte Argument auf dem Stack)
Beachte: Call-by-Value vs. Call-by-Reference.
Prozedur wird mit jal gestartet.
1 Wort = 1 Befehl (einfache Dekodierung)
IF
Mit Phasen-Pipelining
ID
OF
OE
OS
IF
ID
OF
OE
OS
IF
ID
OF
OE
OS
IF
ID
OF
OE
Aufwandsverlagerung in den Compiler
…
Optimierender Compiler erzeugt Code (später mehr dazu).
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.3-15
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
OS
4.3-16
4. Assembler
4. Assembler
Pipelining
„
Optimierung des Phasen-Pipelinings
Der Befehl wird nicht schneller ausgeführt, aber es können mehr
Befehle pro Zeit ausgeführt werden.
…
„
Data Forwarding
…
Æ Parallelität und damit eine Geschwindigkeitssteigerung um die
Anzahl der Pipelinestufen.
„
Delayed Load
…
„
Pipelinekonflikte
…
…
Datenfluss-Konflikt durch Datenabhängigkeiten (Data Interlock)
Beispiel:
add $t0, $t1, $t2 # $t0 Å $t1 + $t2
addi $t0, 1# $t0 Å $t0 + 1
add
ID
$t1,$t2
+
$t0
addi
ID
$t0
+1
…
…
4.3-17
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4. Assembler
4.3-18
4. Assembler
Steuerfluss-Konflikte
Fazit und Ausblick
Delayed Branch (verzögerter Sprung)
„
…
Verzweigung wird erst ab dem übernächsten Befehl wirksam.
… Das „Loch“ wird durch einen Befehl, der eigentlich vor dem Branch hätte
ausgeführt werden sollen, gestopft.
„
Beim Ladebefehl darf nicht sofort im nächsten Befehl auf den
geladenen Operanden zugegriffen werden, sondern erst im
übernächsten.
Es wird die „Blase“ vermieden, dafür müssen evt. nop Befehle
eingeschoben werden.
Mit „Blase“ ist die Zeit gemeint, in der der Prozessor nicht weiß, was er
tun soll und auf das Rückspeichern wartet.
$t0
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
„
Operand kann vor dem Rückspeichern an den nächsten Befehl
übergeben werden.
…
„
Für den Programmierer lästig, für optimierende Compiler kein Problem.
traditioneller Sprung
verzögerter Sprung
LOAD X, R1
ADD 1, R1
BRANCH L
ADD R1, R2
SUB R3, R2
L: STORE R1, Y
LOAD X, R1
ADD 1, R1
BRANCH L
NOP
ADD R1, R2
SUB R3, R2
L: STORE R1, Y
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
RISC hat sich durchgesetzt
optimierter verzögerter
Sprung
LOAD X, R1
BRANCH L
ADD 1, R1
ADD R1, R2
SUB R3, R2
L: STORE R1, Y
4.3-19
Moderne CICS- Prozessoren haben mehr und mehr RISC
Techniken übernommen
…
„
Einsatz in PCs, Workstation, Parallelrechnern und zunehmend auch in
Mikrocontrollern
z.B. Intel Pentium-Familie
Neue Technologien besonders RISC geeignet (z.B. Galliumarsenid)
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
4.3-20
5. Grundlagen Betriebssysteme
Literatur
„
Bücher:
…
Informatik II
…
SS 2004
…
Teil 5: Grundlagen Betriebssysteme
„
Foliensätze (aus denen ev. teilweise Folien übernommen wurden):
…
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
…
…
Tanenbaum: http://www.cs.vu.nl/~ast/books/mos2/
Stallings: http://www.williamstallings.com/OS4e.html
Universität Karlsruhe, Herr Liefländer:
http://i30www.ira.uka.de/teaching/currentcourses/lecture.php?courseid=91
…
Lehrstuhl für Telematik
Institut für Informatik
W. Stallings: „Betriebssysteme - Prinzipien und Umsetzung“, Prentice
Hall, 2003, ISBN 3-8273-7030-2 (englisch: „Operating Systems:
Internals and Design Principles“, 2001)
A. Tanenbaum: „Moderne Betriebssysteme“, Prentice-Hall, 2002, ISBN
3-8273-7019-1 (englisch: „Modern Operating Systems“, 2001)
A. Silberschatz, P. Galvin, G. Gagne: „Operating System Concepts“,
John Wiley & Sons, 2002, ISBN 0-471-41743-2
Universität Braunschweig, Prof. Dr. S. Fischer:
http://www.ibr.cs.tu-bs.de/lehre/ss04/bsn/
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Architektur eines Pentiumsystems
Potentielle Systemkomponenten
Task Semantic
Objects
Example Operation
GUI/shell
window
execute shell script
Application
a.out
quit, kill, …
File System
directories, files
open, close, read,
Devices
printer, display
open, write, ...
Communication
ports
send, receive, …
Virtual Memory
segments, pages
write, fetch
Secondary Store
chunks, blocks
allocate, free,
Processes
task queue
exit, create…
Threads
ready queue
wakeup, execute,
Interrupts
interrupt handler
invoke, mask, ...
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.2
5.3
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.4
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Was ist ein Betriebssystem?
„
„
Motivation
Silberschatz:
„An operating system is similar to a government... Like a
government the operating system performs no useful function by its
self.“
DIN 44300:
„Die Programme eines digitalen Rechensystems, die zusammen mit
den Eigenschaften dieser Rechenanlage die Basis der möglichen
Betriebsarten des digitalen Rechensystems bilden und die
insbesondere die Abwicklung von Programmen steuern und
überwachen.“
„
„
Wo gibt es Betriebssysteme?
Beispiele
…
…
…
…
…
…
…
…
…
Arbeitsplatzrechner, Großrechner
Netzwerkgeräte, wie Router, Bridges, Gateways, etc.
Auto
Flugzeug-Cockpit
Waschmaschine
Chipkarte
PDAs
Mobile Telefone
etc.
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.5
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Ziele und Randbedingungen
„
…
…
„
Definitionen eines Betriebssystems
„
Ziele eines Betriebssystems
…
5.6
Definition Betriebssystem als virtuelle Maschine
…
Anpassung der Benutzerwelt an die Maschinenwelt
Organisation und Koordination des Betriebsablaufs
Steuerung und Protokollierung des Betriebsablaufs
Ein Betriebssystem ist eine virtuelle Maschine, die dem Anwender eine
einfache (dateiorientierte) Schnittstelle zur Hardware zur Verfügung
stellt und einen Programmierung dieser Hardware auf hohem logischen
Niveau ermöglicht.
Randbedingungen
…
…
…
…
„
Effizienter Einsatz von Betriebsmitteln
Geringer Rechenaufwand
Robustheit
Sicherheit
Definition Betriebssystem als Ressourcenverwalter
…
„
Ein Betriebssystem bezeichnet alle Programme eines Rechensystems,
die die Ausführung der Benutzerprogramme, die Verteilung der
Ressourcen auf die Benutzerprogramme und die Aufrechterhaltung der
Betriebsart steuern und überwachen.
Definition Ressourcen (Betriebsmittel)
…
Die Ressourcen (Betriebsmittel) eines Betriebssystems sind alle Hardund Softwarekomponenten, die für die Programmausführung relevant
sind.
„
Betriebsmittel: Prozessor, Hauptspeicher, I/O-Geräte, etc.
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.7
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.8
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Schichten eines Rechnersystems
Bank- Flugsystem Reservierung
Compiler
Editor
Spiele
Kommandointerpreter
Zwei Sichten auf ein Betriebssystem
Anwendungsprogramme
Anwendersicht:
• Top-Down-Sicht
• Betriebssystem ist eine
virtuelle Maschine
Systemprogramme
Betriebsystem
BS-Entwicklersicht:
• Bottom-Up-Sicht
• Betriebssystem ist ein
Maschinensprache
Mikroprogrammierung
Betriebsmittel(Ressourcen-) Verwalter
Hardware
Physikalische Geräte
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.9
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Aufgaben eines Betriebssystems (1/5)
„
…
…
…
„
Aufgaben eines Betriebssystems (2/5)
Prozessverwaltung
…
„
(Ein Prozess oder auch Task ist ein in Ausführung befindliches
Programm)
Erzeugen und Löschen von Prozessen
Prozessorzuteilung (Scheduling)
Prozesskommunikation
Synchronisation nebenläufiger Prozesse, die gemeinsame Daten
benutzen
…
Verwaltung des Dateisystems
…
Logische Sicht auf Speichereinheiten (Dateien)
„
…
…
Zuteilung des verfügbaren physikalischen Speichers an Prozesse
Einbeziehen des Hintergrundspeichers (Platte) durch virtuelle
Adressierung, demand Paging, Swapping (= Ein-/Auslagern von
Prozessen), etc.
Benutzer arbeitet mit Dateinamen. Wie und wo die Dateien gespeichert
werden, ist ihm egal.
Systemaufrufe für
Dateioperationen
„
Speicherverwaltung
…
Erzeugen, Löschen, Öffnen,
Lesen, Schreiben, Kopieren,
etc.
Strukturierung mittels
Verzeichnissen (Directory)
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.10
5.11
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.12
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Aufgaben eines Betriebssystems (3/5)
„
Aufgaben eines Betriebssystems (4/5)
Verwaltung des Dateisystems (cont.)
…
„
Schutz von Dateien und Verzeichnissen vor unberechtigtem Zugriff
Geräteverwaltung
…
…
Unix:
9-Bit für Zugriffsrechte (Read, Write, eXecute)
Datei/Verzeichnis gehört einem Eigentümer (user) und einer Benutzergruppe
(group, z.B. Mitarbeiter, Projekt, etc.)
z.B.
…
„
Monitoring, Accounting, Auditing
…
user
rwx
group
r--
Dateiname
Uebung.txt
„
„
Befehl:
others
r--
„
„
Dateiname
Uebung.txt
Aktuelle Auslastung
Aktueller freier Speicher
Netzverkehr
Optionale Aufgaben
„
> chmod g+w Uebung.txt
führt zu:
group
rw-
Erstellen & Verwalten von Systemstatistiken
„
others
r--
…
user
rwx
Auswahl und Bereitstellung von I/O-Geräten
Anpassung an physikalische Eigenschaften der Geräte
Überwachung der Datenübertragung
„
Laufzeit von Prozessen mitprotokollieren
Speicherbedarf von Prozessen mitprotokollieren
Eingeloggte Benutzer mitprotokollieren
etc.
Einführung
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.13
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Aufgaben eines Betriebssystems (5/5)
„
Strukturen von Betriebssystemen
Weitere wichtige Aspekte:
…
„
…
„
Graceful Degradation: Beim Ausfall einzelner Komponenten läuft das
System mit vollem Funktionsumfang mit verminderter Leistung weiter.
Fehlertoleranz wird durch Redundanz erkauft.
„
Realzeitbetrieb
„
„
…
„
Fehlertoleranz
„
„
Betriebssystem muss den Realzeit-kritischen Prozessen die Betriebsmittel
so zuteilen, dass die angeforderten Zeitanforderungen eingehalten werden.
Für zeitkritische Systeme: Meßsysteme, Anlagensteuerungen, etc.
„
Modularisiert in Komponenten und Subsysteme
Kern („kernel“) läuft ständig und parallel zu anderen System- und
Anwendungsprozessen
Systemprogramme werden nur bei Bedarf geladen
Dämonen („daemons“) sind Hilfsprozesse, die ständig existieren,
aber meist passiv sind.
…
…
Benutzeroberflächen
„
5.14
Warten auf ein Ereignis oder
schauen selbst zeitgesteuert nach, ob Arbeit da ist.
Betriebssystem muss eine ansprechende Benutzerschnittstelle für die
eigene Bedienung enthalten.
Betriebssystem muss Funktionen bereitstellen, mit denen aus
Anwendungsprogrammen heraus auf die Benutzerschnittstelle zugegriffen
werden kann.
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.15
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.16
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
User und Kernel Mode
„
„
CPUs laufen in zwei Modi, kernel mode und user mode
Benutzermodus (user mode)
…
…
…
…
…
„
Einstiegspunkte in ein Betriebssystem
„
…
Prozessor bearbeitet ein Anwendungsprogramm
Befehlssatz und verfügbare Register sind beschränkt
Mögliche Beschränkung des Zugriffs auf die Hardware (hardware
protection)
Direkter Zugriff auf andere in Ausführung befindliche Programme ist
verboten
niedrigere Priorität
…
„
…
„
…
…
…
…
„
synchron (z.B. Division durch 0)
Fehler wird an Applikation weitergeleitet
Hardware Interrupt (Unterbrechung)
…
Prozessor bearbeitet Betriebssystem
Alle Befehle und Register sind verfügbar
Direkter, uneingeschränkter Zugriff auf die Hardware
Manipulation interner Daten laufender Programme möglich
höhere Priorität
synchron
Parameterübergabe über z.B. Register oder Stack
Hardware Traps
…
Betriebssystemmodus (kernel mode)
…
Systemaufrufe
asynchron (z.B. Modem)
Software Interrupt (Unterbrechung)
…
asynchron
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.17
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Formen von Betriebssystemen
„
„
„
„
„
„
„
Architekturen von Betriebssystemen (1/2)
„
Stapelverarbeitung (batch processing)
Dialogverarbeitung (time sharing)
Echtzeitverarbeitung (real-time processing)
Verteilte Verarbeitung (distributed processing)
Eingebettete Betriebssysteme
Smart-Card Betriebssysteme
...
Monolithische Systeme
…
„
Sammlung von Prozeduren und Funktionen ohne (oder nur mit
minimaler) Struktur („The big mess.“, A. Tanenbaum)
Geschichtete Systeme (oder Hierarchische oder Schalen)
…
…
…
…
„
mehrere Schichten wobei Schicht n+1 auf Schicht n aufbaut und neue
Funktionalität bereitstellt
Vereinfachte Fehlersuche und Qualitätssicherung
Funktionszuweisung zu einer Schicht schwierig
Strikte Einhaltung der Schichten und strenge Parameterprüfung erhöht
den Overhead an den Schichtübergängen
Virtuelle Maschinen
…
…
…
…
Abstraktion betrifft nicht nur die Hardware, sondern kann auch höhere
Funktionen betreffen.
Emulation der Hardware zu so genannten virtuellen Maschinen (VM)
Gleichzeitig verschiedene Betriebssysteme auf den VMs
z.B. Java Virtual Machine, VMware, VirtualPC, User Mode Linux (UML)
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.18
5.19
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.20
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Architekturen von Betriebssystemen (2/2)
„
Allgemeine Schalenstruktur von UNIX und Linux
Minimale Kerne (engl. microkernel)
…
…
…
…
…
Kern mit minimalen Betriebssystemfunktionen
(Kommunikationsprimitive und elementares multi-programming) um
einen großen Hardware-nahen Kern zu vermeiden
Minimale Kerne folgen dem Client-Server-Modell in verteilten Systemen
Server können im Benutzermodus laufen und in einem Netzwerk verteilt
werden (zentralisierte und verteilte Realisierung möglich)
Vermehrte Kommunikation führt zu mehr Overhead
Trennung von Mechanism und Strategien
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.21
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Windows Architektur
Standardisierung
„
Einige relevante Standards
…
AT&T:
System V Interface Definition (SVID)
1985
…
…
OSF:
OSF:
Distributed Computing Environment (DCE)
Motif 2.0 Graphical User Interface Toolkit
1995
1994
…
X/OPEN
Portability Guide (XPG-1, ..., XPG-4)
1984
…
IEEE
Portable Operating System Interface based
on UNIX (POSIX)
1989
OpenGroup: Single UNIX Specification Version 2
OpenGroup: Common Desktop Environment (CDE) 1.0
1997
1996
ANSI/ISO: Programmiersprache C (X3.159, ISO/IEC 9899)
ANSI/ISO: Programmiersprache C++ (X3J16)
1989
1998
…
…
…
…
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.22
5.23
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.24
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
POSIX Standards
Ausblick
„
Standardisierung von Betriebssystemfunktionen mit dem Ziel, die
Portabilität von Programmen zu verbessern.
„
POSIX-Standards werden durch eine Arbeitsgruppe des
Institute of Electrical and Electronics Engineers (IEEE) ausgearbeitet
und lehnen sich an UNIX an.
„
„
„
„
POSIX Standards (Stand 1994)
POSIX.0
POSIX.1
POSIX.2
POSIX.3
POSIX.4
POSIX.5
POSIX.6
POSIX.7
POSIX.8
POSIX.9
POSIX.10
Guide and overview
Library functions
Shell and utilities
Test methods and conformance
Real-time extensions
Ada language binding to POSIX.1
Security extensions
System administration
Transparent file access
Fortran 77 binding to POSIX.1
Supercomputing profile
POSIX.11
POSIX.12
POSIX.13
POSIX.14
POSIX.15
POSIX.16
POSIX.17
POSIX.18
POSIX.19
POSIX.20
POSIX.21
Transaction processing
Protocol independent communication
Real-time profiles
Multiprocessor profile
Batch/supercomputer extensions
Language-independent POSIX.1
Directory/name services
Basic POSIX system profile
Fortran-90 binding to POSIX.4
Ada binding to POSIX.4
Distributed real-time
Kurzer Blick auf Konzepte zur Realisierung der Aufgaben eines
Betriebssystems
Einfluss auf Programmierung von Anwenderprogrammen
Es werden Teilgebiete der folgenden grundlegenden Konzepte
betrachtet
…
…
…
…
„
Prozessverwaltung
Speicherverwaltung
Ein- und Ausgabe
Dateisysteme
Studenten des Studienganges „Angewandte Informatik“ wird der
Besuch der Spezialvorlesung dringend empfohlen!
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.25
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Prozessverwaltung
„
„
„
„
Prozesse
Prozesse und Threads
Prozess-Scheduling
Verklemmungen
Interprozesskommunikation
„
„
„
„
„
„
Ein Prozess ist der Ablauf eines sequentiellen Programms.
Benötigt Betriebsmittel (CPU, Speicher, Dateien, etc.) und ist selbst
ein Betriebsmittel.
Wird vom Betriebssystem verwaltet (Erzeugung, Terminierung,
Scheduling, etc.)
Ein Prozessor führt in jeder Zeiteinheit maximal einen Prozess aus.
Laufen mehrere Prozesse, dann finden Prozesswechsel statt. Das
Betriebssystem entscheidet über die Prozesswechsel.
Prozesse sind gegeneinander abgeschottet, d.h. jeder besitzt
(virtuell) seine eigene Betriebsmittel, wie etwa den Adressraum. Das
BS sorgt für die Abschottung.
Wir gehen von voneinander unabhängigen Prozessen aus. Bei
Kooperation ist eine explizite Synchronisation erforderlich.
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.26
5.27
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.28
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Eigenschaften von Prozessen
„
„
„
„
„
Prozesszustände
Program Code: Folge von Maschinenbefehlen (text section)
Internal State: Aktueller Zustand durch Programmzähler und
Registerinhalte
Stack: Inhalt des Stapelspeichers, wo temporäre Variablen und
Parameter für Funktionsaufrufe verwaltet werden
Data Section: Inhalt des Speichers, in dem die globalen Daten
gehalten werden
External State: Beziehung zu anderen Betriebsmitteln
„
Typische definierte Prozesszustände und Zustandsübergänge
New
Admit
Assign
Ready
Running
Terminate
Exit
Release
Block
Unblock
Blocked
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.29
5. Grundlagen Betriebssysteme
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.30
5. Grundlagen Betriebssysteme
Win-NT’s Sieben-Zustände Modell
Unix Prozesszustandsmodell
Lazy versus
eager loading
New
Admit
Ready
Deblock
Preselect
Assign
Standby
Release
Running
Terminate
Exit
Block on event i
Blocked
Blocked
Reinitialize
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.31
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.32
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Mögliche Attribute für einen Prozessleitblock (PCB)
PCB Struktur
Kontext
Scheduling
Familie
Zeit
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.33
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Prozessbäume
„
„
„
„
Leichtgewichtsprozesse (Threads)
Alle existierenden Prozesse sind in einer Prozesstabelle gespeichert
Prozesse können neue Prozesse erzeugen, wodurch eine
Hierarchie (Baum) von Prozessen entsteht
Cascading termination möglich, falls erzeugte Prozesse nicht ohne
erzeugenden Prozess existieren dürfen/sollen
Mutterprozess und Kinderprozesse teilen keine/einige/alle
Ressourcen
„
Threads sind parallele Kontrollflüsse, die nicht gegeneinander
abgeschottet sind
…
…
laufen innerhalb eines Adressraumes, innerhalb eines „echten“ Prozesses
teilen sich gemeinsame Ressourcen
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.34
5.35
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.36
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Threads besitzen eigenen Stack
Thread Beispiel
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.37
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Charakterisierung von Threads
„
…
…
…
…
…
…
„
Vorteile/Nachteile von Threads
„
Pro Prozess
…
…
…
…
Kontextwechsel ist effizienter
…
Adressraum
Globale Variablen
Offene Dateien
Kinderprozesse
Unerledigte Alarme
Signal und Signalkontroller
Informationen für Systemstatistiken
…
…
„
„
Pro Thread
…
„
Programmzähler
Register
Stack
Zustand
„
kein Wechsel des Adressraumes
kein automatisches Scheduling (Kernelthread bei BS, Benutzerthread
bei Anwendung)
kein Retten und Restaurieren des kompletten Kontextes (nur
Programmzähler und Register)
Pro Zeiteinheit sind viel mehr Threadwechsel als Prozesswechsel
möglich -> Leichtgewichtsprozesse
Gleichzeitige Aktivitäten können besser modelliert werden, z.B. falls
einige Aktivitäten von Zeit zu Zeit blockieren/warten
Bessere Performance bei Erzeugung/Zerstörung und bei Mischung
mit I/O intensiven Aufgaben (kein Vorteil bei reiner CPU-Nutzung)
Nachteile
…
…
Schutzfunktionen fallen weg (z.B. getrennte Adressräume)
Synchronisation erforderlich
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.38
5.39
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.40
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Prozesswechsel
„
„
„
Prozess-Scheduling (1/2)
Mehrere Prozesse teilen sich einen Prozessor, weshalb
Prozesswechsel notwendig sind
Das Betriebssystem entscheidet über die Prozesswechsel
Komponenten des Scheduling
…
„
…
…
…
…
…
Prozesswechsel sind relativ teuer wegen Sicherung des Kontextes
Warteschlangenmodelle
„
Anforderungen
…
Prozesswechselkosten
„
…
„
„
Wartende Prozesse werden in internen Warteschlangen gehalten
Auswahlstrategie der Warteschlangen haben wesentlichen Einfluss auf
Systemverhalten
Entscheidungspunkte
…
…
…
Scheduling-Verfahren
Fairness
Effizienz
Antwortzeit
Verweilzeit
Durchsatz
…
…
Erzeugung eines neuen Prozesses
Prozess terminiert oder blockiert
I/O-Unterbrechungen (Interrupts)
Zeitscheibe läuft ab
Verfahren:
„
„
nicht-präemptiv: laufender Prozess wird nicht von außen unterbrochen
präemptiv: laufende Prozesse können von außen unterbrochen werden
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.41
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Prozess-Scheduling (2/2)
„
„
Scheduling-Verfahren
Deterministische und probabilistisches Scheduling
Verfahren hängt von gewünschten Eigenschaften ab
…
„
„
…
„
…
…
Fairness
Effizienz (Nutzung der Ressourcen)
Umsetzung der gewünschten Policy
„
„
„
…
Interaktive Systeme
…
Realzeit-Systeme
„
„
„
…
Maximierung des Durchsatzes (Jobs/Zeit)
Maximierung der einzelnen Laufzeiten
Maximierung der CPU-Nutzung
…
„
First-Come First Served (FCFS)
Shortest Job First (SJF)
Shortest Remaining Time Next (SRTN)
Interaktiv:
…
Batch-Systeme
„
Batch:
…
Alle Systeme
„
5.42
Round-Robin
Priority Scheduling
Shortest Process Next
Echtzeit:
…
Earliest Deadline First (EDF)
Minimierung der Antwortzeit
Einhalten von Deadlines, Vermeidung von Datenverlusten
Vermeidung von Qualitätsverlusten in Multimedia-Systemen
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.43
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.44
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Prozessverwaltung
„
„
„
„
Interprozesskommunikation (IPC)
Prozesse und Threads
Prozess-Scheduling
Interprozesskommunikation
Verklemmungen
„
Prozesse arbeiten oft nicht allein, sondern müssen Informationen
austauschen, um eine gemeinsame Aufgabe zu erfüllen.
„
Beim diesem Austausch müssen drei wichtige Fragen beantwortet
werden:
…
Wie werden die Daten ausgetauscht?
„
„
…
…
„
Über gemeinsame Variablen?
Über Nachrichtenaustausch?
Wie wird sicher gestellt, dass die Prozesse nicht gleichzeitig auf
gemeinsame Information zugreifen?
Wie wird die richtige Reihenfolge des Zugriffs sicher gestellt (ProducerConsumer-Problem)?
Die beiden letzten Fragen beschreiben das
Synchronisationsproblem.
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.45
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Kommunikationsformen
„
Gemeinsame Variablen: vor
allem in Ein-Prozessor und
Multiprozessor-Systemen mit
gemeinsamem physikalischen
Speicher
Erzeuger/Verbraucher-Problem
„
Nachrichtenaustausch: vor
allem bei verteilten Systemen,
also Kommunikation über
Rechnergrenzen hinweg
Prozess
„
…
…
„
Netz
Prozess
Zwei Prozesse besitzen einen gemeinsamen Puffer mit einer festen
Länge (bounded buffer). Eine Prozess schreibt Informationen in den
Puffer (producer), der andere liest Informationen aus dem Puffer
(consumer).
Der Erzeuger darf nicht in den vollen Puffer einfügen.
Der Verbraucher darf nicht aus dem leeren Puffer lesen.
Eine fehlerhafte Lösung:
while (true) {
produce(&item);
while (count == N) sleep(1);
buffer[in] := item;
in := (in + 1) % N;
count := count + 1;
}
Speicher
Prozess
Problemstellung:
…
Rechner
Rechner
Prozess
Rechner
Erzeuger
insert
5.47
Puffer
while (true) {
while (count == 0) sleep(1);
item = buffer[out];
out := (out + 1) % N;
count := count - 1;
consume(item);
}
remove Verbraucher
Prozessverwaltung
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.46
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.48
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Sychronisationsproblem
„
Die Anweisungen
count := count + 1 und count := count - 1
werden typischerweise zu den folgenden Maschinenbefehlen:
P1: register1 := count
P2: register1 := register1+1
P3: count := register1
„
Race Conditions
„
C1: register2 := count
C2: register2 :=
register2-1
C3: count := register2
„
„
Nehmen wir an, der Wert von count sei 5. Was liefert die
Ausführung der Befehle in der Reihenfolge
…
…
(a) P1, P2, C1, C2, P3, C3 und die Ausführung in der Reihenfolge
(b) P1, P2, C1, C2, C3, P3?
(a) liefert den falschen Wert 4,
(b) liefert den falschen Wert 6.
Diese Werte sind falsch, da ja ein Element eingefügt und eines
entfernt wird, der Wert müsste also bei 5 bleiben.
Die angegebene Lösung erzeugt falsche Ergebnisse, die von der
Bearbeitungsreihenfolge der Prozesse abhängen.
Jede Situation, in der mehrere Prozesse gemeinsame Daten
manipulieren, kann zu derartigen Synchronisationsproblemen (race
conditions) führen. Synchronisationsverfahren garantieren, dass
immer nur ein Prozess zu einem bestimmten Zeitpunkt gemeinsam
benutzte Daten manipulieren kann.
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.49
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Kritischer Abschnitt (1/2)
„
„
Kritischer Abschnitt (2/2)
Ein kritischer Abschnitt (critical section) eines Programms ist eine
Menge von Instruktionen, in der das Ergebnis der Ausführung auf
unvorhergesehene Weise variieren kann, wenn Variablen, die auch
für andere parallel ablaufende Prozesse oder Threads zugreifbar
sind, während der Ausführung verändert werden.
Prinzipieller „Lebenszyklus“ eines Prozesses oder Threads:
„
„
Das Problem besteht darin, ein „Protokoll“ zu entwerfen, an das sich
alle Prozesse oder Threads halten und das die Semantik des
kritischen Abschnitts realisiert.
Anforderungen an eine Lösung:
…
…
…
Eingangsabschnitt
Prozess wartet auf Erlaubnis
…
…
Kritischer Abschnitt
Ausgangsabschnitt
5.50
Prozess gibt bekannt, dass er den
kritischen Abschnitt verlassen hat
Zwei Prozesse dürfen nicht gleichzeitig in ihrem kritischen Abschnitt
sein (safety).
Es dürfen keine Annahmen über die Bearbeitungsgeschwindigkeit von
Prozessen gemacht werden.
Kein Prozess, der außerhalb eines kritischen Bereichs ist, darf andere
Prozesse beim Eintritt in den kritischen Abschnitt behindern.
Kein Prozess darf ewig auf den Eintritt in den kritischen Abschnitt
warten müssen (fairness).
Möglichst passives statt aktives Warten, da aktives Warten einerseits
Rechenzeit verschwendet und andererseits Blockierungen auftreten
können, wenn auf Prozesse/Threads mit niedriger Priorität gewartet
werden muss.
Unkritischer Abschnitt
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.51
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.52
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Lösungen für die Synchronisation
„
„
Es wurden eine Reihe von Lösungen für die Synchronisation von
Prozessen entwickelt, von denen wir die wichtigsten besprechen:
…
…
…
„
Semaphore
Semaphore
Mutexe
Monitore
Ein Semaphor ist eine geschützte Variable, auf die nur die
unteilbaren (atomaren) Operationen up (signal, V) und down (wait,
P) ausgeführt werden können:
down(s)
{
s := s - 1;
if (s < 0) queue_this_process_and_block();
}
Dies sind Lösungen für die Synchronisation bei Nutzung
gemeinsamer Variablen. Bei Nachrichtenkommunikation wird diese
Form der Synchronisation nicht benötigt.
up(s)
{
s := s + 1;
if (s >= 0) wakeup_process_from_queue();
}
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.53
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Eigenschaften von Semaphoren & Mutexe
„
…
…
…
„
Erzeuger/Verbraucher mit Semaphoren
Semaphore
…
„
Semaphore können zählen und damit z.B. die Nutzung gemeinsamer
Betriebsmittel überwachen.
Semaphore werden durch spezielle Systemaufrufe implementiert, die
die geforderten atomaren Operationen up und down realisieren.
Semaphore können in beliebigen Programmiersprachen benutzt
werden, da sie letztlich einem Systemaufruf entsprechen.
Semaphore realisieren ein passives Warten bis zum Eintritt in den
kritischen Abschnitt.
Mutexe
…
…
Oft wird die Fähigkeit zu zählen bei Semaphoren nicht benötigt, d.h.,
es genügt eine einfache binäre Aussage, ob ein kritischer Abschnitt frei
ist oder nicht.
Dazu kann eine einfacher zu implementierende Variante, der
sogenannte Mutex (von „mutual exclusion“), verwendet werden.
Das Erzeuger/Verbraucher Problem lässt sich elegant mit drei
Semaphoren lösen:
1. Ein Semaphor zum Betreten der kritischen Abschnitte (mutex).
2. Ein Semaphor, das die freien Plätze im Puffer herunter zählt und
den Prozess blockiert, der in einen vollen Puffer schreiben will
(empty).
3. Ein Semaphor, das die belegten Plätze im Puffer herauf zählt
und den Prozeß blockiert, der von einem leeren Puffer lesen will
(full).
while (true) {
produce(&item);
down(&empty);
down(&mutex);
add(&item);
up(&mutex);
up(&full);
}
semaphore mutex = 1,
empty = N,
full = 0;
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.54
5.55
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
while (true) {
down(&full);
down(&mutex);
remove(&item);
up(&mutex);
up(&empty);
consume(item);
}
Prozessverwaltung
5.56
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Implementierung von Semaphoren
„
„
„
Probleme bei Semaphoren
Semaphore lassen sich als Systemaufrufe implementieren, wobei
kurzzeitig sämtliche Unterbrechungen unterbunden werden. (Da zur
Implementation nur wenige Maschinenbefehle benötigt werden, ist
diese Möglichkeit akzeptabel.)
Auf Mehrprozessor-Systemen muss ein Semaphor mit einer
unteilbaren Prozessor-Operation implementiert werden, die das
Semaphor vor gleichzeitigen Änderungen in anderen Prozessoren
schützt.
Beispiel: Test-And-Set-Lock (TSL): beim Ausführen der Operation
wird der Memory-Bus für alle anderen Operationen gesperrt
„
Programmierfehler bei der Benutzung eines Semaphors können zu
Verklemmungen oder inkorrekten Ergebnissen führen. Typische
Fehler:
…
…
…
„
Sprünge aus kritischen Bereichen, ohne das mutex-Semaphor
freizugeben.
Sprünge in kritische Bereiche, ohne das mutex Semaphor zu setzen.
Vertauschungen von Semaphoren zum Schutz von kritischen
Abschnitten und Semaphoren, die vorhandene Betriebsmittel zählen.
Alles in allem sind Semaphore eine „low-level“-Lösung, die
erhebliche Disziplin vom Programmierer verlangt. Eine
komfortablere Lösung bieten Monitore.
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.57
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Monitore
„
„
„
„
Bedingungsvariable eines Monitors
Ein Monitor ist eine Sammlung von
Schematischer Aufbau eines Monitors:
Prozeduren, Variablen und
Datenstrukturen, die in einem Modul
gekapselt sind.
Prozesse können die Prozeduren des
Monitors aufrufen, aber keine internen
EingangsGemeinsame
Daten ändern.
warteschlange
Daten
Monitore besitzen die Eigenschaft, dass
immer nur genau ein Prozess im
Monitor aktiv sein kann.
Monitore sind Konstrukte einer
Programmiersprache und erfordern
daher spezielle Compiler.
Es ist die Aufgabe des Compilers,
Operationen
Maschinenbefehle zu generieren, die
den wechselseitigen Ausschluss im
Initialisierung
Monitor garantieren.
„
Bedingungsvariablen (condition variables) eines Monitors mit den
zugehörigen Operationen wait() und signal() erlauben es, im
Monitor auf andere Prozesse zu warten:
…
…
„
...
„
„
wait(c): Der aufrufende Prozess blockiert, bis ein signal() auf der
Bedingungsvariablen c ausgeführt wird. Ein anderer Prozess darf den
Monitor betreten.
signal(c): Ein auf die Bedingungsvariable c wartender Prozeß wird
aufgeweckt. Der aktuelle Prozess muss den Monitor sofort verlassen.
Der durch signal() aufgeweckte Prozess wird zum aktiven Prozess
im Monitor, während der Prozess, der signal() ausgeführt hat,
blockiert.
Bedingungsvariablen sind keine Zähler. Ein signal(c) auf einer
Variablen c ohne ein wait(c) geht einfach verloren.
Prozessverwaltung
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.58
5.59
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.60
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Erzeuger/Verbraucher-Problem mit einem Monitor
monitor ProducerConsumer
condition full, empty
integer count;
procedure enter
if count = N then wait(full);
enter_item()
count := count + 1;
if count = 1 then
signal(empty);
end;
procedure remove
if count = 0 then wait(empty);
remove_item();
count := count - 1;
if count = N-1 then
signal(full);
end;
count := 0;
end monitor;
Kritische Abschnitte mit Compilerunterstützung in Java
procedure producer
while (true) do begin
produce_item;
ProducerConsumer.enter;
end
end;
„
„
procedure consumer
while (true) do begin
ProducerConsumer.remove;
consume_item;
end
end;
In Java können kritische
Abschnitte als
Anweisungsfolge geschrieben
werden, denen das
Schlüsselwort
synchronized voran gestellt
wird.
Die kritischen Abschnitte
schließen sich bzgl. des
Sperrobjekts gegenseitig aus.
5.61
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Synchronisation in Windows
Es stehen verschiedene Mechanismen zur Verfügung:
…
…
…
…
„
Pipes, Named Pipes (Kommunikation auf einem Rechner)
Mailslots (ähnlich Pipes, mit leicht anderen Eigenschaften)
Sockets (Kommunikation zwischen Rechnern)
Remote Procedure Calls
Shared Files
Verfügbare Mechanismen
…
…
…
…
„
Semaphoren
Mutexe
Kritische Sektionen
Ereignisse
Synchronisation findet auf Thread-Ebene statt (andere Threads in
einem Prozess sind nicht betroffen)
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.62
5. Grundlagen Betriebssysteme
Beispiel: IPC in Windows
…
public sychronized int remove() {
int res = pool[out];
out = (out + 1) % size; count--;
return res;
}
}
5. Grundlagen Betriebssysteme
„
public synchronized void insert(int i)
{
pool[in] = i;
in = (in + 1) % size;
count++;
}
public synchronized int cardinal() {
return count;
}
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
class Buffer {
private const int size = 8;
private int count = 0, out = 0, in =
0;
private int[] pool = new int[size];
5.63
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.64
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Prozessverwaltung
„
„
„
„
Verklemmungen/Deadlocks
Prozesse und Threads
Prozess-Scheduling
Interprozesskommunikation
Verklemmungen
„
Prozesse benötigen Betriebsmittel, meist sogar mehrere
…
…
…
„
Was passiert wenn sich zwei Prozesse jeweils ein Betriebsmittel
reservieren, das der andere auch benötigt?
…
„
Drucker
Festplatte
Speicher (z.B. in internen BS-Tabellen)
Diese Situation wird als Deadlock bezeichnet
Definition:
Eine Menge von Prozessen befindet sich in einer Verklemmung
(deadlock), wenn jeder Prozess der Menge auf ein Ereignis wartet,
dass nur ein anderer Prozess aus der Menge auslösen kann.
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.65
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Deadlock – Illustration/Beispiel
Ressourcen und deren Nutzung
„
Zwei Typen von Ressourcen
…
…
„
(a) Ein potenzieller deadlock. (b) Ein tatsächlicher deadlock.
1. Aufruf von x
…
2. Aufruf von p
Thread 2
class A
synchronized void x( )
{...
}
synchronized void y( )
{...
}
4.Aufruf von g durch x
blockiert
preemptable: vorzeitige Rückgabe möglich (z.B. Speicher)
non-preemptable: vorzeitige Rückgabe ist NICHT möglich (z.B. DVD,
Drucker)
Zuweisung, Nutzen
…
Thread 1
5.66
…
von BS oder selbst verwaltet
Beispiel für Selbstverwaltung: gemeinsame Variablen
Bei der Selbstverwaltung sind Deadlocks am häufigsten
3. Aufruf von y durch p
blockiert
class B
synchronized void p( )
{
...}
synchronized void g( )
{
...}
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.67
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.68
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Notwendige Bedingungen für eine Verklemmung
1.
Wechselseitiger Ausschluss (mutual exclusion):
„
Ein Betriebsmittel ist entweder genau einem Prozess zugeordnet oder
es ist verfügbar.
…
2.
Betriebsmittel-Zuweisungsgraph
Ein Betriebsmittel-Zuweisungsgraph ist ein gerichteter Graph, der
zur Beschreibung von Verklemmungen verwendet wird:
…
Wartebedingung (hold and wait):
Es gibt einen Prozess, der ein Betriebsmittel belegt und auf ein
anderes Betriebsmittel wartet, das von einem anderen Prozess belegt
wird.
…
…
…
3.
Keine Verdrängung (no preemption):
Einem Prozess kann ein Betriebsmittel nicht entzogen werden.
…
„
4.
Zirkuläres Warten (circular wait):
Der Graph besteht aus einer Menge von Prozessen P={P1, P2,..., Pn},
einer Menge von Betriebsmitteln R={R1, R2,..., Rm} und gerichteten
Kanten.
Eine gerichtete Kante von einem Prozess Pi zu einem Betriebsmittel Rj
beschreibt, dass der Prozess Pi ein Exemplar der Betriebsmittels Rj
angefordert hat (request edge).
Eine gerichtete Kante von einem Betriebsmittel Rj zu einem Prozess Pi
beschreibt, dass ein Exemplar des Betriebsmittels Rj dem Prozess Pi
zugewiesen ist (assignement edge).
Ein Zyklus im Graph bedeutet das Vorhandensein einer
Verklemmung.
Es gibt eine Menge {P1, P2,..., Pn} von Prozessen, so dass P1 auf ein
Betriebsmittel wartet das P2 belegt, P2 wartet auf ein Betriebsmittel
das P3 belegt, ..., und Pn wartet auf ein Betriebsmittel das P1 belegt.
…
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.69
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Beispiel
R1
Eigenschaften von Zuweisungsgraphen
„
R3
„
P1
R2
5.70
P2
P3
„
R4
„
P1 hat R1angefordert; R1 ist
jedoch schon P2 zugeordnet.
P2 wartet auf R3, die aber
schon P3 zugewiesen ist.
P3 wartet auf R2. R2 ist
zweimal vorhanden, aber
beide Instanzen sind bereits
P1 bzw. P2 zugewiesen.
Î Verklemmung
„
„
„
Enthält ein Betriebsmittel-Zuweisungsgraph keine Zyklen, dann
existiert auch keine Verklemmung.
Besitzt ein Betriebsmittel-Zuweisungsgraph einen Zyklus und
existiert von jedem beteiligten Betriebsmittel nur genau ein
Exemplar, dann existiert eine Verklemmung.
Besitzt ein Betriebsmittel-Zuweisungsgraph einen Zyklus und von
den beteiligten Betriebsmitteln existieren mehrere Exemplare, so ist
eine Verklemmung möglich, aber nicht unbedingt auch eingetreten.
R1
P1
P2
P3
P4
R2
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.71
Der Zyklus P1, R1, P3, R2, P1
beschreibt keine Verklemmung, da
Prozess P4 beendet werden kann,
womit ein Exemplar von R2 wieder
verfügbar wird.
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.72
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Behandlung von Deadlocks
„
Verhinderung von Verklemmungen (1/4)
Dem Deadlock-Problem kann mit einer von vier Strategien
begegnet werden:
1.
„
1.
Ignorieren: meist keine gute Idee ...
Wird eine der vier notwendigen Bedingungen für das Entstehen von
Verklemmungen negiert, so können keine Verklemmungen mehr
entstehen.
Verhinderung von wechselseitigem Ausschluss:
…
2.
Deadlock-Entdeckung und –Auflösung: lasse Deadlocks passieren
und behandle sie dann
…
3.
Deadlock-Vermeidung durch vorsichtige dynamische RessourcenAllokation
4.
Strukturelle Deadlock-Verhinderung durch das Negieren einer der vier
notwendigen Bedingungen
…
Auf alle Betriebsmittel kann von mehreren Prozessen aus gleichzeitig
zugegriffen werden.
Beispiel: Drucker
Anstatt einen Drucker Prozessen exklusiv zuzuordnen, werden Druckausgaben
in Dateien abgelegt und in eine Warteschlange eingefügt. Ein spezieller
Prozess (printer daemon) erhält exklusiven Zugriff auf den Drucker und arbeitet
die Warteschlange ab. Dieser Prozess fordert selbst keine weiteren
Betriebsmittel an.
Problem:
Nicht alle Betriebsmittel (z.B. Speicher, Einträge in der Prozesstabelle) können
zwischen Prozessen geteilt werden. Im Beispiel kann der Plattenplatz zur
Ablage von Druckausgaben selbst als Betriebsmittel betrachtet werden, das
Auslöser für eine Verklemmung ist.
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.73
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Verhinderung von Verklemmungen (2/4)
2.
Verhinderung von Verklemmungen (3/4)
Verhinderung der Wartebedingung:
…
…
„
…
3.
Jeder Prozess darf nur dann Betriebsmittel anfordern, wenn er selbst
keine anderen Betriebsmittel belegt.
Alternative 1:
„
Jeder Prozess fordert sämtliche Betriebsmittel an, bevor seine Bearbeitung
beginnt.
Problem: Geringe Effizienz, da alle Betriebsmittel eines Prozesses
während seiner Ausführung belegt sind. Die meisten Prozesse kennen ihre
Betriebsmittelanforderungen nicht, bevor sie starten.
Entzug von zugewiesenen Betriebsmitteln:
…
…
„
…
5.75
…
Beispielsweise können einem Prozess, der bereits auf ein Betriebsmittel
wartet, seine bereits belegten Betriebsmittel entzogen werden, um
Betriebsmittelanforderungen anderer Prozesse befriedigen zu können. Die
entzogenen Betriebsmittel werden zu der Liste der Betriebsmittel
hinzugefügt, auf die der Prozess wartet.
Probleme:
„
Ein Prozess muss alle Betriebsmittel abgeben, bevor er weitere anfordern
kann.
Problem: Es ist einem Prozess nicht immer möglich, alle Betriebsmittel
freizugeben, bevor er weitere Betriebsmittel belegt (z.B. der Eintrag in der
Prozesstabelle). Außerdem kann diese Methode dazu führen, dass die
Bearbeitung eines Prozesses unendlich verzögert wird, da ein benötigtes
Betriebsmittel immer von einem anderen Prozess belegt ist (starvatíon).
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Bereits belegte Betriebsmittel können einem Prozess entzogen
werden.
Beispiel:
„
Alternative 2:
„
5.74
Normalerweise besitzen die zugewiesenen Betriebsmittel einen Zustand,
der beim Entzug gesichert und später wieder restauriert werden muss.
Nicht jedes Betriebsmittel (z.B. Drucker) erlaubt es, den Zustand zu sichern
und später wieder zu restaurieren.
Verwendung:
„
Das Verfahren findet häufig Anwendung bei Betriebsmitteln, deren Zustand
leicht gesichert werden kann, wie z.B. CPU-Registerinhalte oder
Hauptspeicherbereiche.
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.76
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Verhinderung von Verklemmungen (4/4)
4.
Vermeidung von Verklemmungen
Verhinderung von zirkulärem Warten:
…
…
…
…
„
Es wird eine totale Ordnung auf den vorhandenen Betriebsmitteln
definiert.
Ein neues Betriebsmittel darf nur dann angefordert werden, wenn das
Betriebsmittel bezüglich der Ordnung größer ist als alle bereits
belegten Betriebsmittel eines Prozesses.
Mehrere Exemplare eines Betriebsmittels müssen in einer Anfrage
angefordert werden.
Probleme:
„
„
Es ist schwierig, eine totale Ordnung für Betriebsmittel zu definieren, die
allen Einsatzmöglichkeiten eines Betriebssystems gerecht wird.
Benötigt ein Prozess ein Betriebsmittel mit geringerer Ordnung, so müssen
zunächst sämtliche Betriebsmittel freigegeben werden.
Ansatz:
…
…
…
„
Sichere Zustände:
…
„
Anhand von zusätzlichen Informationen werden nur die
Betriebsmittelanforderungen gewährt, die nicht zu einer Verklemmung
führen können.
Im Vergleich zur Verhinderung werden Betriebsmittel effizienter genutzt
und der Systemdurchsatz erhöht.
Annahme: Die maximale Anforderung von Betriebsmitteln ist a-priori
bekannt.
Ein System ist in einem sicheren Zustand, wenn es jedem Prozess
seine maximale Betriebsmittelanforderung gewähren kann, ohne dass
das System in eine Verklemmung geraten kann.
Unsichere Zustände:
…
Es existiert die Möglichkeit einer Verklemmung.
Prozessverwaltung
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.77
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Deadlock-Entdeckung und Beseitigung
„
„
„
Es existiert nicht mehr als ein Exemplar von jedem Betriebsmittel:
…
Aus dem Betriebsmittel-Zuweisungsgraphen wird ein Wartegraph (wait-for graph)
konstruiert, wobei alle Knoten, die Betriebsmittel repräsentieren, entfernt werden.
… Eine Kante vom Prozess Pi zum Prozess Pj existiert im Wartegraph genau dann,
wenn der Betriebsmittel-Zuweisungsgraph zwei Kanten Pi Rq und Rq Pj besitzt.
… Eine Verklemmung existiert genau dann, wenn ein Zyklus im Wartegraph
existiert.
Das Betriebssystem überprüft periodisch, ob eine Verklemmung
vorliegt.
Behebungsverfahren (recovery algorithm):
…
„
Erkennung von Verklemmungen (1/2)
Erkennungsverfahren (detection algorithm):
…
Im Fall einer Verklemmung ergreift das Betriebssystem Maßnahmen,
um die Verklemmung aufzulösen.
Notwendige Randbedingungen:
…
…
…
P5
Die notwendigen Informationen über belegte und angeforderte
Betriebsmittel muss einfach zugänglich sein.
Der Aufwand zur Entdeckung von Verklemmungen muss vertretbar
sein. (Man beachte, dass während der Ausführung des
Erkennungsverfahrens keine Betriebsmittel angefordert oder
freigegeben werden dürfen.)
Die Kosten zur Behebung von Verklemmungen müssen vertretbar sein.
R1
R3
5.79
R4
P1
P2
P3
R2
P4
R5
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.78
P5
P1
P2
P3
P4
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.80
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Erkennung von Verklemmungen (2/2)
„
Beseitigung von Verklemmungen
„
Es existieren mehrere Exemplare von jedem Betriebsmittel:
…
…
Zwangsweise Beendigung von Prozessen (process termination):
…
Einfach zu implementieren und sehr effektiv.
Auswahl der zu beendenden Prozesse schwierig.
… Zwangsweise Beendigung von Prozessen kann Inkonsistenzen erzeugen.
… Bereits verbrauchte Rechenzeit ist normalerweise verloren.
Verklemmungen lassen sich erkennen, indem man versucht, eine
Abarbeitungsfolge der Prozesse P1,..., Pn zu finden, so dass alle
bekannten Betriebsmittelanforderungen erfüllt werden können.
Dafür kann z.B. der Bankers-Algorithmus verwendet werden.
…
„
Zwangsweiser Entzug von Betriebsmitteln (resource preemption):
…
Betriebsmittel werden zwangsweise einem Prozess entzogen, um damit die
Verklemmung aufzuheben.
… Auswahl des Prozesses, dem Betriebsmittel entzogen werden, ist schwierig.
… Nicht jedes Betriebsmittel (z.B. Prozesstabelleneintrag) kann entzogen werden.
„
Rücksetzen von Prozessen (rollback of processes):
…
In speziellen Fällen können Prozesse auf einen vorher gesicherten Zustand
(checkpoint) zurückgesetzt werden.
… Insbesondere Datenbank-Prozesse verwalten häufig ein Logbuch über
durchgeführte Transaktionen, so dass ein Prozess ohne Datenverlust gerade
soweit zurückgesetzt werden kann, wie zur Behebung der Verklemmung
notwendig.
Prozessverwaltung
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.81
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Speicherverwaltung
„
„
„
„
„
5.82
Einführung
Einführung
Swapping
Virtual Memory
Seitenersetzungsstrategien
Segmentierung
„
Verschiedene Arten von Speichern, hierarchisch organisiert:
…
…
…
…
„
Cache-Speicher
Hauptspeicher
Sekundärspeicher
Archiv-Speicher
Eigenschaften des Hauptspeichers:
…
…
…
…
Der Hauptspeicher besteht aus einer Menge von Wörtern oder Bytes,
die jeweils über eine eigene Adresse verfügen.
Sowohl die CPU als auch E/A-Geräte greifen auf den Hauptspeicher zu.
Ausführbare Programme befinden sich zumindest teilweise im
Hauptspeicher.
Die CPU kann normalerweise nur auf Daten im Hauptspeicher direkt
zugreifen
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.83
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.84
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Speicher und dessen Verwaltung
„
„
Grundlegende Speicherverwaltung
Betriebssystemteil verantwortlich für Speichermanagement: Memory
Manager
Aufgaben
…
…
…
Buchhaltung: welche Speicherbereiche werden benutzt, welche sind frei
Speichervergabe und -rücknahme an/von Prozessen
Datenverschiebung zwischen den Speicherhierarchien
„
Speichermanagement: grundsätzlich zwei Klassen:
…
…
„
Verschieben von Prozessen vom Hauptspeicher auf Festplatte und
zurück (Swapping, Paging)
Oder nicht (einfache Variante)
Bei Verzicht auf Swapping und Paging:
…
Monoprogramming:
„
„
…
immer nur ein Prozess sowie das OS im Speicher
Einsatzgebiet: frühe Batchsysteme, eingebettete Systeme
Multiprogramming mit festen Partitionen
„
„
„
Speicher wird in feste Blöcke eingeteilt, Programme bekommen einen
Speicherbereich zugewiesen
Einsatz im OS/360 von IBM
Oft wurde die Größe der Partitionen einmal am Tag festgesetzt
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.85
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Abbildungen von Speicheradressen
„
Compiler
symbolische Namen
„
Präzisierung der Aufgaben
Ein Compiler/Assembler übersetzt symbolische Adressen (Namen
von Variablen und Funktionen) in absolute oder relative
Speicheradressen.
Quelltext
5.86
„
Objektmodul
„
absolute/relative Adressen
Ein Linker bindet mehrere Objektmodule mit relativen Adressen und
die benötigten Bibliotheken zu einem ausführbaren Programm
(executable).
Objektmodule
„
Linker
relative Adressen
„
Bereitstellung und Zuweisung des Speicherplatzes an die Prozesse
(allocation).
Einrichtung und Koordination von Speicherbereichen, die von
mehreren Prozessen gemeinsam benutzt werden können (shared
memory).
Schutz der Informationen im Hauptspeicher vor fehlerhaften oder
unbefugten Zugriffen.
Abbildung von logischen Adressen auf physikalische Adressen
(address translation).
Executable
statisch/dynamisch gebunden
Prozessor
logische Adresse
346
Bibliotheken
statisch/dynamisch
Speicheradresse
14000
MMU
14346
(memory management unit)
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Hauptspeicher
relocation
register
5.87
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.88
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Moderne Speicherverwaltung
„
„
Heutige Computer haben andere Anforderungen an die Verwaltung
des Speichers
Insbesondere
…
…
„
Speicherverwaltung
Laufen meist viele Prozesse
Haben die Prozesse oft mehr Speicherbedarf als physikalischer
Speicher vorhanden ist
„
„
„
„
„
Einführung
Swapping
Virtual Memory
Seitenersetzungsstrategien
Segmentierung
Zwei wichtige Lösungen:
…
…
Swapping: Verschieben von Prozessen zwischen Hauptspeicher und
Platte
Virtual Memory: Prozesse sind nur zum Teil im Hauptspeicher
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.89
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Prinzip des Swapping
„
„
„
„
„
5.90
Speichersegmente und Fragmentierung
Der komplette Adressraum eines Prozesses wird beim Prozesswechsel auf
den Hintergrundspeicher ausgelagert und ein anderer Adressraum
eingelagert.
Ist im Betriebssystem ohne weitere Hardware-Unterstützung zu realisieren.
Extrem aufwändige Prozesswechsel, da die Zugriffszeiten auf den
Hintergrundspeicher im allgemeinen um Größenordnungen langsamer sind
als Zugriffe auf den Hauptspeicher.
Betriebssystem
Wurde von MS Windows 3.*
benutzt, um Prozesse auszulagern.
Wird bei UNIX-Systemen benutzt,
swap out
P1
um bei einer Überbelegung des
BenutzerP2
programmswap
in
Hauptspeichers einigen Prozessen
bereich
das Betriebsmittel Hauptspeicher
Hintergrundspeicher
zwangsweise zu entziehen.
„
„
„
„
Der Hauptspeicher wird vom Betriebssystem in Segmente variabler
Länge eingeteilt, die den Prozessen zugewiesen werden. Zur
Verwaltung dienen Segmenttabellen.
Segmente können verschiedene Zugriffsrechte besitzen, zwischen
Prozessen geteilt werden, oder bei Bedarf wachsen.
Durch das Entfernen und Einfügen von Segmenten entstehen
langristig kleine unbenutzte Speicherbereiche (externe
Fragmentierung).
Beispiel:
Hauptspeicher
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.91
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.92
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Kompaktifizierung
„
„
„
„
Speicherbuchhaltung
Durch das Verschieben von Segmenten im Speicher können viele kleine
Löcher zu einem großen Stück freien Speichers zusammengefügt werden
(Kompaktifizierung, compaction).
Kompaktifizierung setzt voraus, dass die Adressen dynamisch abgebildet
werden.
0K
0K
0K
0K
Die Suche
BetriebsBetriebsBetriebsBetriebssystem
system
system
system
nach einer
300K
300K
300K
300K
optimalen
P1
P1
P1
P1
500K
500K
500K
Kompaktifizie- 500K
P2
P2
P2
P2
600K
600K
600K
600K
rungsstrategie
P3
800K
400K
ist schwierig.
P4
Kompaktif.
1000K
1000K
1000K
P4
900K
P3
P3
benötigt viel
1200K
1200K
1200K
CPU-Zeit.
300K
1500K
1500K
P4
900K
1900K
200K
2100K
2100K
Ausgangssituation
600K verschoben
2100K
400K verschoben
„
„
„
„
„
P4
900K
1900K
„
2100K
Wie merkt sich der Memory Manager, welche Speicherbereiche frei
bzw. belegt sind?
Zwei Lösungen: Bitmaps oder verkettete Listen
Beispiel:
Jedes Bit identifiziert einen
kleinen Speicherbereich, daher
feste Größe.
Listen
vereinfachen die
dynamische Verwaltung.
Wichtige Frage: Wie finde ich das passende Segment, wenn ein
neuer Prozess Speicher anfordert?
P3
200K verschoben
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.93
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Positionierungsstrategien
„
„
„
„
„
5.94
Speicherverwaltung
best fit: Auswahl des kleinsten Loches, das das Segment aufnehmen kann.
Diese Strategie lässt einerseits große Löcher lange bestehen, während sie
andererseits eine Vielzahl kleiner und nutzloser Überreste erzeugt.
worst fit: Auswahl des jeweils größten Loches. Dieses Verfahren tendiert
dazu, alle Löcher auf etwa die gleiche Länge zu bringen, die dann aber
eventuell zu klein zur Aufnahme eines bestimmten Segments sein kann.
first fit: Auswahl des ersten hinreichend großen Loches. Dieses Verfahren
liegt in seinem Verhalten zwischen den beiden anderen und ist sehr effizient.
next fit: Dieses Verfahren ist eine Variation von first fit. Um zu verhindern,
dass sich Löcher einer bestimmten Größe an einer Stelle des Speichers
häufen, beginnt jede Suche am Ende der vorherigen Suche. Der Speicher wird
also ringförmig durchsucht.
buddy system: Die Löcher werden in k Listen so einsortiert, dass die i-te
Liste jeweils Löcher der Länge größer gleich 2i für i=1,...,k enthält. Dabei
können zwei benachbarte Löcher der i-ten Liste effizient zu einem Loch der
i+1-ten Liste zusammengefügt werden. Umgekehrt kann ein Loch der i-ten
Liste einfach in zwei Löcher der i-1-ten Liste aufgeteilt werden.
„
„
„
„
„
Einführung
Swapping
Virtual Memory
Seitenersetzungsstrategien
Segmentierung
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.95
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.96
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Virtual Memory
„
„
Idee (Fotheringham, 1961): ist ein Programm größer als der zur
Verfügung stehende Hauptspeicher, dann halte immer nur die
aktuell notwendigen Teile im Speicher; lade andere Teile bei Bedarf
nach
Wichtige Fragen:
…
„
„
Paging
Welche Teile sind notwendig? Welche Teile behalte ich tunlichst im
Speicher? Æ Lade- und Ersetzungsstrategien
„
„
„
Zweistufiges Adressensystem: virtuelle Adressen, die die
Programme benutzen, werden von der Memory Management Unit in
physikalische Adressen umgewandelt und dann erst an den
Speicher gegeben
Wichtigste Technik: Paging
„
„
Der physikalische Speicher wird in
Kacheln (frames) fester Größe
eingeteilt.
Der logische Adressraum wird in
Seiten (pages) gleicher Größe
eingeteilt.
Logische Adressen werden in eine
Seitennummer (page number) und
eine seitenrelative Adresse (page
offset) aufgeteilt.
Eine Umsetzungstabelle (page
table) bildet die Seiten auf die
verfügbaren Kacheln ab.
Die Seiten eines Adressraums
können beliebig auf die verfügbaren
Kacheln verteilt sein.
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.97
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Page Tables
„
„
„
5.98
Eigenschaften des Paging
„
In der Seitentabelle gibt der Index die
Nummer der virtuellen Seite an; der
Tabelleneintrag gibt dann die
zugehörige physikalische Seite an.
Beispiel: 16 mögliche virtuelle Seiten
werden auf 8 vorhandene
physikalische Kacheln abgebildet.
Ein spezielles Bit gibt an, ob die
virtuelle Seite vorhanden ist.
„
„
„
„
„
Keine externe Fragmentierung. Allerdings wird die letzte Seite eines
logischen Adressraums normalerweise nicht vollständig genutzt (interne
Fragmentierung).
Gemeinsamer Speicher lässt sich mit Hilfe von gemeinsamen Seiten
realisieren.
Speicherschutz wird durch Schutzbits realisiert. Weitere Bits geben an, ob
eine Kachel gültig ist (valid) oder ob eine Kachel modifiziert wurde
(modified).
Es muss nicht der gesamte Adressraum eines Prozesses im Speicher sein,
um ihn auszuführen. Zugriffe auf gerade nicht geladene Seiten lösen einen
Seitenfehler (page fault) aus.
Das Betriebssystem behandelt Seitenfehler, indem es die benötigte Seite in
eine freie Kachel einlagert und den Befehl, der den Seitenfehler auslöste,
neu startet.
Realisierungsprobleme:
…
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.99
Die Adressabbildung muss sehr schnell sein.
(In manchen Fällen sind mehrere Umsetzungen für einen Maschinenbefehl
notwendig.)
… Die Umsetzungstabelle kann extrem groß werden.
(32-Bit Adressen erfordern bei einer Seitengröße von 4096 Bytes eine Tabelle
mit ca. 1 Million Einträgen.)
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.100
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Behandlung von Seitenfehlern
Speicherverwaltung
1. Die Hardware erkennt den Seitenfehler und erzeugt eine Unterbrechung.
2. Das Betriebssystem sichert die Register des Prozesses.
3. Die Prozedur zur Behandlung von Seitenfehlern ermittelt die Adresse der
fehlenden Seite.
4. Das Betriebssystem prüft, ob auf die Adresse überhaupt zugegriffen werden
darf.
5. Das Betriebssystem wählt eine freie Kachel aus. Falls keine freie Kachel
existiert, wird eine belegte Kachel ausgewählt.
6. Falls die ausgewählte Kachel belegt ist und modifiziert wurde, wird sie auf
dem Hintergrundspeicher gesichert. Ein Prozesswechsel findet statt, sofern
rechenbereite Prozesse existieren.
7. Sobald eine freie Kachel da ist, wird eine E/A-Operation gestartet, um die
benötigte Kachel vom Hintergrundspeicher zu laden. Ein Prozesswechsel
findet statt, sofern rechenbereite Prozesse existieren.
8. Sobald die Kachel geladen ist, wird die Umsetzungstabelle aktualisiert.
9. Der Befehlszähler wird auf den Befehl zurückgesetzt, der den Seitenfehler
auslöste.
10. Der Prozess wird in den Zustand ready gesetzt und in die CPUWarteschlange eingereiht.
„
„
„
„
„
Einführung
Swapping
Virtual Memory
Seitenersetzungsstrategien
Segmentierung
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.101
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Ladestrategien
„
…
…
…
„
Ersetzungsstrategien
Die Ladestrategie bestimmt, wann Seiten in den Hauptspeicher geladen
werden:
…
5.102
Swapping:
Übertragung eines ganzen Adressraums mit einem einzigen Zugriff auf den
Hintergrundspeicher.
Demand-Paging:
Die benötigten Seiten werden genau dann in den Speicher geladen, wenn
auf sie zugegriffen wird.
Pre-Paging:
Es werden Seiten geladen, auf die in der Zukunft ein Zugriff erwartet wird.
Erfordert Kenntnisse über typische Zugriffsmuster.
Page-Clustering:
Gemeinsame Übertragung von mehreren zusammengehörigen Seiten.
Ermöglicht die Nutzung großer Seiten auf Hardware, die nur geringe
Seitengrößen unterstützt.
„
„
„
Die Ersetzungsstrategie (replacement algorithm) bestimmt, welche
der belegten Kacheln ausgelagert werden, damit wieder freie
Kacheln zur Einlagerung von benötigten Seiten vorhanden sind.
Lokale Strategien weisen jedem Prozess eine konstante Anzahl von
Seiten zu. Seitenfehler wirken sich daher nur auf den
verursachenden Prozess negativ aus.
Bei globalen Strategien wird der gesamte Speicher dynamisch auf
alle Prozesse verteilt, um eine effiziente Nutzung des
Hauptspeichers zu erreichen.
In der Praxis dominiert Demand-Paging, obwohl dies bei
Transportkosten, die nicht monoton mit der Anzahl der transportierten
Seiten wachsen, nicht unbedingt optimal ist.
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.103
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.104
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Lokalitätsprinzip
„
„
Lokalität bezeichnet das Verhalten eines Programms, innerhalb
einer bestimmten Zeit seine Speicherzugriffe auf einen kleinen Teil
seines Adressraums zu beschränken.
Das Lokalitätsprinzip gilt für Seitenzugriffsverhalten mit folgenden
Eigenschaften:
…
…
…
„
Ersetzungsstrategien
Zu jeder Zeit verteilt ein Programm seine Speicherzugriffe in nicht
gleichförmiger Weise über seine Seiten.
Die Korrelation zwischen den Zugriffsmustern für unmittelbare
Vergangenheit und unmittelbare Zukunft ist im Mittel hoch, und die
Korrelation zwischen sich nicht überlappenden Referenzstrings geht mit
wachsendem Abstand zwischen ihnen gegen 0.
Die Referenzdichten der einzelnen Seiten, d.h. die Wahrscheinlichkeit
mit der eine Seite zum Zeitpunkt t zum Referenzstring gehört, ändern
sich nur langsam, d.h. sie sind quasi stationär.
Praktische Gründe für die Gültigkeit des Lokalitätsprinzips sind
Schleifen und Modulbereiche von Programmen. Allerdings ist
Lokalität bei manchen Programmen oder Algorithmen nicht
unbedingt gegeben (z.B. Datenbanken oder einige Verfahren zur
Manipulation sehr großer Matrizen).
„
Beladys Optimalalgorithmus (BO)
…
Es wird die Seite ersetzt, auf die in der Zukunft am längsten nicht zugegriffen
wird (Realisierbarkeit??).
„
Least Recently Used (LRU)
„
Least Frequently Used (LFU)
„
First In First Out (FIFO)
„
Second Chance (SC)
…
…
…
…
;
Es wird die Seite ersetzt, auf die am längsten nicht mehr zugegriffen wurde.
Es wird die Seite ersetzt, auf die am wenigsten zugegriffen wurde.
Es wird die Seite ersetzt, die bereits am längsten im Speicher steht.
Es wird wie beim FIFO ersetzt. Allerdings werden Seiten übersprungen, auf
die seit dem letzten Seitenfehler zugegriffen wurde, sofern es Seiten gibt, auf
die nicht zugegriffen wurde.
Zusätzlich wird oftmals betrachtet, ob die Seite modifiziert wurde oder
nicht, da eine unmodifizierte Seite nicht auf dem Hintergrundspeicher
gesichert werden muss.
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.105
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Beladys Anomalie
„
„
Speicherverwaltung
Intuitiv erwartet man, dass sich Seitenfehler reduzieren, wenn man
den verfügbaren Hauptspeicher vergrößert.
Älteste Seite
1 2 3 4 1 2 5 5 5 3 4 4
1 2 3 4 1 2 2 2 5 3 3
1 2 3 4 1 1 1 2 5 5
Speichergröße m=3
(9 Seitenfehler)
1 2 3 4
1 2 3
1 2
1
4
3
2
1
4
3
2
1
5
4
3
2
„
„
„
ABER: folgendes Beispiel:
Referenzstring w = 1 2 3 4 1 2 5 1 2 3 4 5 und FIFO
Ersetzungsstrategie:
Jüngste Seite
5.106
„
„
1
5
4
3
2
1
5
4
3
2
1
5
4
3
2
1
Einführung
Swapping
Virtual Memory
Seitenersetzungsstrategien
Segmentierung
5
4
3
2
Speichergröße m=4
(10 Seitenfehler)
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.107
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.108
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Segmentierung
„
„
„
Segmentierung
Bisher: eindimensionaler
Adressraum, in dem alle
Tabellen, Programmtext
etc. in ein- und demselben Adressraum abgelegt werden.
Problem: was passiert,
wenn die Tabellen nach
dem Anlegen und der
fortschreitenden Übersetzung eines Programms zu
groß werden und in einen anderen
Bereich „hineinwachsen?
Alle „Lösungen“ mit einem Adressraum erfordern Modifikationen am
Compiler, die man vermeiden möchte.
„
Andere Idee: stelle jedem Programm mehrere virtuelle Adressräume
zur Verfügung, die es für die jeweiligen Daten verwenden kann Æ
Segmentierung des virtuellen Adressraums
„
Eine Adresse besteht dann aus Segment-Nummer und Adresse.
Vorteile der Segmentierung
„
…
…
…
Segmente können wachsen, Management durch das BS
Linken wird wegen der jeweiligen Startadresse 0 stark vereinfacht
Shared Libraries können leicht realisiert werden (Schutz!)
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.109
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Vergleich Paging - Segmentierung
Kombination von Segmentierung und Paging
„
Segmentierung und Paging kann gleichzeitig eingesetzt werden, um
die Vorteile beider Ansätze zu kombinieren.
„
Zum Beispiel wird es sinnvoll sein, Segmente aufzuteilen, wenn sie
nicht komplett in den Hauptspeicher passen.
„
Moderne Prozessorfamilien unterstützen meist beide Modelle, um
für beliebige Betriebssysteme offen zu sein.
„
Ein Pentium besitzt insgesamt 16 K Segmente, wobei jedes bis zu
109 32-Bit-Worte speichern kann. Diese Segmentgröße ist relativ
groß.
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.110
5.111
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.112
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Shared Libraries
Speicherverwaltung in Windows
„
„
„
„
Windows besitzt ein sehr anspruchsvolles virtuelles
Speichersystem.
Jeder Benutzerprozess hat 4 GB virtuellen Speicher verfügbar (32Bit-Adressen).
Seitengröße für Paging: 4 KB
Shared files (shared libraries) können verwendet werden
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.113
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Ein- und Ausgabe
„
„
5.114
I/O-Hardware – Grundlagen
Grundlagen von Ein-/Ausgabe-Hardware und –Software
I/O-Software-Schichten
„
„
„
Wir betrachten I/O-Hardware wie Hard Disks, Bildschirme, Drucker
etc. hier eigentlich als Blackbox, die wir irgendwie programmieren
müssen.
Trotzdem: kurzer Überblick über den Aufbau solcher Geräte
Hauptthema: wie bekomme ich Daten von und zu den Geräten
…
…
…
Device Controller
Memory Mapped I/O
Interrupts
Ein- und Ausgabe
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.115
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.116
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Device Controller
„
I/O–Geräte haben zwei Komponenten:
…
…
„
„
Memory-Mapped I/O
„
mechanisch
elektronisch
…
…
Die elektronische Komponente ist der Device Controller
(Gerätesteuerung)
Aufgaben
…
…
…
Wie kommuniziert die CPU/das OS mit dem Device Controller?
„
Konvertiere seriellen Bitstrom in Datenblöcke
Führe Fehlerkorrektur durch wenn notwendig
Mache die Daten dem Hauptspeicher verfügbar
Jeder Controller hat einige Steuerungsregister, in die die CPU Befehle
schreiben kann
Zusätzlich haben viele Geräte einen Datenpuffer, der vom OS
geschrieben/gelesen werden kann (Beispiel: Videospeicher für
Bildschirmpixel)
Ansätze:
…
…
Spezieller Speicher, spezielle Instruktionen zum Zugriff (I/O-Ports)
Memory-Mapped: ein Teil des Hauptspeichers wird für die
Kommunikation mit dem Gerät reserviert
Ein- und Ausgabe
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.117
Ein- und Ausgabe
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Direct Memory Access (DMA)
„
„
„
Interrupts
I/O kann mittels DMA deutlich beschleunigt werden, da die CPU
weniger belastet ist
Prinzip: vergib einen Auftrag an DMA-Controller, erledige bis zum
Ende der Bearbeitung andere Dinge
Ablauf eines DMA-Transfers:
„
„
„
„
Interrupts werden von Geräten verwendet, um das Ende eines
Vorgangs anzuzeigen.
Ablauf:
Die CPU wird unterbrochen und beginnt etwas Neues – abhängig
vom auslösenden Gerät wird ein bestimmter Interrupt-Handler
aufgerufen und ausgeführt.
Später macht die CPU an der „alten“ Stelle weiter.
Ein- und Ausgabe
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.118
5.119
Ein- und Ausgabe
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.120
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
I/O-Software – Grundlagen
„
„
Schichten der I/O-Software
I/O-Software soll vor allem die Komplexität der Hardware vor dem
OS bzw. dem Anwendungsprogrammierer verbergen.
Wichtige Prinzipien daher:
…
…
…
„
Typische Organisation: 4 Schichten
„
Jede Schicht führt eine wohldefinierte Funktion aus und besitzt
genauso ein wohldefiniertes Interface
Geräteunabhängigkeit: ein „write“ funktioniert auf Disk genauso wie auf
das Netzwerk
Einheitliche Namensverwendung (alle Geräte sind bspw. über Pfade im
Dateisystem erreichbar)
Fehlerbehandlung so nah wie möglich an der Quelle (Hardware)
Ein- und Ausgabe
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.121
Ein- und Ausgabe
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Interrupt Handler
„
„
„
Device Driver
Interrupts sind kompliziert und sollten deshalb möglichst weit unten
verborgen werden.
Beste Variante: der Device Driver startet einen Auftrag und blockiert
dann, bis er vom Interrupt Handler wieder „geweckt“ wird.
Handling von Interrupts benötigt meist auch größere Beteiligung der
CPU, vor allem wenn Virtual Memory eingesetzt wird (Modifikation
von Seitentabellen)
„
„
„
„
Aufgabe: Verbergen der
Komplexität der
Registerbelegungen des
Controllers
Jedes Gerät benötigt
üblicherweise seinen
eigenen Device Driver
Driver sind praktisch immer
Teil des Kernels
API für die darüber liegende
Schicht: read- und writeAnfragen
Ein- und Ausgabe
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.122
5.123
Ein- und Ausgabe
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.124
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Geräteunabhängige I/O-Software
„
Beispiel: einheitliche Schnittstellen
Wichtige Aufgaben:
…
…
…
…
…
Bereitstellen einheitlicher Schnittstellen für Gerätetreiber erleichtert den
Einsatz neuer Geräte
Puffern von verfügbaren Daten erhöht die Performance (kein Interrupt
pro ankommendes Datum, sondern pro Block); Problem: zu langes
Liegen von Daten im Puffer, zu viele Kopien zwischen
Speicherbereichen (Kernel, User Space, Gerät) Æ schlechte
Performance
Geräteunabhängige Fehlerbehandlung
Spezielle Behandlung dedizierter Geräte (CD-ROM) z.B. durch
explizites „open“
Bereitstellung einer einheitlichen Blockgröße
Muss für jedes neue Gerät
wieder neu programmiert werden
Ein- und Ausgabe
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.125
Ein- und Ausgabe
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5.126
5. Grundlagen Betriebssysteme
Buffering als Performance-Fresser
I/O-Software im User Space
„
„
Im wesentlichen Bibliotheken, die mit den Anwendungsprogrammen
gelinkt werden
Beispiele:
…
…
„
write, read, open, close
printf()
Zum Teil einfach nur Abbildung auf die entsprechenden
Systemaufrufe, zum Teil aber auch Aufgaben wie Formatierung der
Daten (printf)
Häufiges Kopieren kostet Zeit!
Ein- und Ausgabe
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.127
Ein- und Ausgabe
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.128
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Dateisysteme
„
„
„
Einführung
Einführung
Verzeichnisse
Unix-Dateisystem
„
„
Dateien sind Behälter für dauerhaft gespeicherte Informationen
(Daten und Programme). Im einfachsten Fall enthalten Dateien eine
nicht weiter strukturierte Folge von Bytes.
Applikationen interpretieren in der Regel den Inhalt von
unstrukturierten Dateien als ein bestimmtes Dateiformat (oftmals
über Namenskonventionen identifiziert):
…
Textdateien (.txt), Quelltexte (.c, .h, .cc, .java, ...), Objektdateien (.o,
.obj, ...)
Dateisysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.129
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Einführung: Dateiformate
„
„
Dateiattribute
„
Unterschiedliche
Dateiformen besitzen
unterschiedliche
Formate
Beispiel:
…
…
(a) Executable
(b) Archiv
„
Neben einem
Namen und den
Daten besitzt
eine Datei
zusätzlich
Attribute.
Attribute geben
wichtige
Informationen
über die Datei:
…
…
…
…
…
Länge
Erstellungsdatum
Besitzer
Schutz
...
Dateisysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.130
5.131
Dateisysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.132
5. Grundlagen Betriebssysteme
5. Grundlagen Betriebssysteme
Operationen auf Dateien (POSIX)
„
Verzeichnisse
Grundlegende Dateioperationen:
…
Hierarchische Strukturierung des externen Speichers
„
…
Öffnen einer Datei:
…
int open(const char *filename, int flags, mode_t mode)
int creat(const char *path, mode_t mode)
…
…
…
Schließen einer geöffneten Datei:
int close(int fd)
…
Beispiel: UNIX Dateibaum
„
Lesen/Schreiben von Daten aus/in eine geöffnete Datei:
Verzeichnisse erzeugen einen hierarchischen Namensraum.
Daten befinden sich in den Dateien an den „Blättern“ der Hierarchie.
Namen von Dateien und Verzeichnissen auf einer Hierarchiestufe eindeutig.
Absolute Namen durch Aneinanderreihung der Verzeichnisnamen und des
Dateinamen.
ssize_t read(int fd, void *buffer, size_t len)
ssize_t write(int fd, const void *buffer, size_t len)
…
Positionieren in einer göffneten Datei:
bin
off_t lseek(int fd, off_t offset, int whence)
…
etc
dev
home
lib
usr
var
Verkürzen einer geöffneten Datei:
int ftruncate(int fd, off_t size)
„
ls
Dateideskriptoren (file descriptors) identifizieren innerhalb eines
Benutzerprozesses eine geöffnete Datei.
cp
mv
tty
fd hda1
Dateisysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.133
„
„
5.134
iNodes in UNIX V7
Das System ist in Baumform angeordnet, mit einem rootVerzeichnis.
Datei- und Verzeichnisnamen können jeden ASCII-Buchstaben
enthalten außer „/“ und NUL.
Ein Verzeichniseintrag enthält einen Eintrag für jede Datei in diesem
Verzeichnis. Verwendet wird das iNode-Schema.
Ein iNode enthält für jede Datei die Attribute sowie die Adressen der
Datei auf der Platte.
„
„
Für kleine Dateien reicht
ein iNode.
Wenn die Dateien größer
werden, müssen
Indirektionen auf weitere
iNodes verwendet werden
…
…
…
Single indirect block
Double indirect block
Triple indirect block
Dateisysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
lib
5. Grundlagen Betriebssysteme
Beispiel: das Unix V7 Dateisystem
„
etc
Dateisysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5. Grundlagen Betriebssysteme
„
bin
5.135
Dateisysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.136
5. Grundlagen Betriebssysteme
Ausblick
Compilerbau (Kapitel 6)
Betriebssysteme (Kapitel 5)
Maschinenorientierte Programmierung (Kapitel 4)
von-Neumann-Rechner (Kapitel 3)
Speicher
Zahlen und logische Schaltungen (Kapitel 2)
Kommunikation (Kapitel 7)
von-Neumann-Rechner
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
5.137
6. Sprachen, Compiler und Theorie
Literatur (1/3)
Bücher
Michael L. Scott : „Programming Language Pragmatics”, MKP 2000,
ISBN 1-55860-578-9
http://www.cs.rochester.edu/u/scott/pragmatics/
Uwe Schöning: „Theoretische Informatik kurzgefaßt“, 2001, ISBN
3827410991
Rechenberg & Pomberger: „Informatik-Handbuch“, Hanser Verlag, ISBN
3-446-21842-4
Drachenbuch
Informatik II
SS 2004
Teil 6: Sprachen, Compiler und Theorie
1 - Einführung und Übersicht
Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman:
„Compilers - Principles, Techniques and Tools“.
Addison-Wesley 1988, ISBN 0-201-10088-6
Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman: „Compilerbau.“
Oldenbourg Verlag 1999, Teil 1: ISBN 3-486-25294-1, Teil 2: ISBN 3-48625266-6
Wikipedia:
http://en.wikipedia.org/wiki/Compilers:_Principles,_Techniques_and_Tools
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
Lehrstuhl für Telematik
Institut für Informatik
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6.1-2
6. Sprachen, Compiler und Theorie
Literatur (2/3)
Literatur (3/3)
Skripte
Bücher
Klassiker der Automatentheorie von Hopcroft/Ullman/Motwani
Hopcroft, Motwani, Ullman : „Introduction to Automata Theory, Languages,
and Computation“, 2001, http://www-db.stanford.edu/~ullman/ialc.html
Hopcroft, Motwani, Ullman: „Einführung in die Automatentheorie, Formale
Sprachen und Komplexitätstheorie“, Pearson Studium 2002, ISBN
3827370205
Asteroth, Baier: „Theoretische Informatik: Eine Einführung in
Berechenbarkeit, Komplexität und formale Sprachen mit 101
Beispielen“, Pearson Studium 2002, ISBN 3-8273-7033-7
(insbesondere für Nebenfächler geeignet, da kaum
Mathematikkenntnisse vorausgesetzt werden.)
Compilerbau-Skript von Prof. Dr. Goltz, Universität Braunschweig
http://www.cs.tu-bs.de/ips/ss04/cb/skript_cp.ps.gz
Informatik-Skripte von Prof. Dr. Waack, Universität Göttingen
http://www.num.math.uni-goettingen.de/waack/lehrmaterial/
Folien
Informatik II - SS2003 Folien dienen als Grundlage und wurden
übersetzt und ev. teilweise ergänzt. Es wird aber auch komplett neue
Teile geben!!!
http://user.informatik.uni-goettingen.de/~info2/SS2003/
Übersetzerbau I – Prof. Dr. Goos, Universität Karlsruhe
http://www.info.uni-karlsruhe.de/lehre/2003WS/uebau1/
WWW: Wikipedia
http://en.wikipedia.org/wiki/Compilers:_Principles,_Techniques_and_To
ols
http://de.wikipedia.org/wiki/Compiler
Erfahrungsberichte von Studentenseite sind erwünscht
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-3
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-4
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Weitere Quellen
Einführung
Katalog von Konstruktionswerkzeugen für Compiler
http://www.first.gmd.de/cogent/catalog/
Inhalte
Grundlegende Konzepte von Programmiersprachen
Organisation von Compilern für moderne Programmiersprachen
Einführung in die Theorie von formalen Sprachen und Automaten
ANTLR, ANother Tool for Language Recognition: http:/www.antlr.org
Konferenzen und Journale
ACM Transactions on Programming Languages and Systems
ACM SIGPLAN Conference on Programming Language Design and
Implementation
ACM SIGPLAN Conference on Programming Language Principles
Als Grundlage dient das Buch “Programming Language Pragmatics”
von Michael L. Smith
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-5
6. Sprachen, Compiler und Theorie
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-6
6. Sprachen, Compiler und Theorie
Abstraktionen...
Sprachen als Abstraktion
Die menschliche Sprache ist ein Werkzeug für die Abstraktion von
Gedanken
Eliminiere Details welche unnötig zum Lösen eines speziellen
Problems sind
„Wenn es mir warm ist, dann schalte ich den Ventilator ein.“
Komplexität wird versteckt
Eine einfache Absicht wird mitgeteilt, wobei aber die kognitiven und
neurologischen Bedingungen, durch welche die Absicht aufkam, höchst
wahrscheinlich für jeden zu komplex sind um sie zu Verstehen
Die Bedeutung dieser Aussage ist dem Verständnis des Individuums
welches es äußert und den Individuen die es hören überlassen
Baue oft auf anderen auf
Erlaubt das Lösen von zunehmend komplexeren Problemen
(teile und herrsche, divide and conquer)
Komplexität moderner Software ist ohne Beispiel (Präzedenzfall)
Programmiersprachen sind ein Werkzeug zum Abstrahieren von
Berechnungen
Abstraktion ist ein grundlegender Bestandteil zum Handhaben von
diesen komplexen Problemen
if (temperatur() > 30.0) { schalte_ventilator_ein(); }
Abstraktion
Abstraktum
Digitale Logik
Computerarchitektur
Assemblersprache
Betriebssystem
Computerkommunikation
Transistoren
Digitale Logik
Maschinensprache
Allokation von Ressourcen (Zeit, Speicher, etc.)
(Physikalische) Netzwerke, Protokolle
Beinhaltet eine komplexe aber konkrete Sequenz von Aktionen:
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-7
lese Thermostat; konvertiere den Ablesewert zu einer IEEE Fliesskomazahl nach
der Celsiusskala; Vergleiche den Wert mit 30.0; wenn größer dann sende ein
Signal an eine PCI Karte, welche ein Signal an ein Relais sendet, welches den
Ventilator einschaltet
Die Bedeutung dieses Ausdrucks ist festgelegt durch die formale Semantik
der Programmiersprache und der Implementierung der Funktionen
temperatur() und schalte_ventilator_ein().
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-8
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Wie abstrahieren Programmiersprachen Berechnungen? (1/4)
Biete eine Notation für den Ausdruck von Algorithmen welche
2.
Verberge unterliegende (systemnahe) Details der Zielarchitektur
Befehlsnamen der Assemblersprache, Registernamen,
Argumentordnung, etc.
Abbildung von Sprachelementen auf die Assemblersprache
Arithmetische Ausdrücke,
Bedingungen,
Konventionen für Prozeduraufrufe, etc.
wie der Algorithmus in einer Maschinensprache implementiert wird,
wie Hilfsalgorithmen, z.B. Hash-Tabellen, Listen, implementiert werden,
es dem Programmierer erlaubt seine eigene Abstraktion
(Unterprogramme, Module, Bibliotheken, Klassen, etc.) zu bauen um
die Weiterführung des Konzepts „Komplexitätsmanagement durch
Schichtenbildung“ zu ermöglichen.
if (a < b + 10) {
do_1();
} else {
do_2();
}
RC
SPA
MI
P
.L1:
.L2:
add
cmp
bge
call
ba
call
…
%l1,10,%l2
%l0,%l2
.L1; nop
do_1; nop
.L2; nop
do_2; nop
L1:
L2:
addi
bge
call
b
call
…
$t2,$t1,10
$t0,$t2,L1
do_1
L2
do_2
S
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-9
6. Sprachen, Compiler und Theorie
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Wie abstrahieren Programmiersprachen Berechnungen? (4/4)
Biete Grundbefehle (primitives), Unterprogramme und
Laufzeitunterstützung für übliche (lästige) Programmierpflichten
Biete Merkmale welche eine besondere Art von Algorithmus oder
Softwareentwicklung unterstützen (encourage) oder durchsetzen
(enforce)
Lesen und schreiben von Dateien
Handhabung von Zeichenfolgen (Vergleiche, Erkennung von
Teilzeichenfolge, etc.)
Dynamische Allokation von Speicher (new, malloc, etc.)
Rückgewinnung von unbenutztem Speicher (garbage collection)
Sortieren
etc.
Strukturiertes Programmieren
Unterprogramme
Verschachtelte (Nested ???)
Variablenbereiche ( scopes??)
Schleifen
Beschränkte Formen des „goto“
Befehls (statement??)
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-10
6. Sprachen, Compiler und Theorie
Wie abstrahieren Programmiersprachen Berechnungen? (3/4)
3.
SPARC
(meistens) unabhängig von der Maschine ist auf welcher der
Algorithmus ausgeführt wird,
Fähigkeiten (features) auf höchster Ebene bietet und die
Aufmerksamkeit des Programmierers mehr auf den Algorithmus
fokussiert und weniger auf
MIPS
1.
Wie abstrahieren Programmiersprachen Berechnungen? (2/4)
6.1-11
Objekt-Orientierte Programmierung
Klassen
Vererbung
Polymorphismus
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-12
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Kategorien von Programmiersprachen
Imperative Sprachen (1/2)
Alle Sprachen fallen in eine der beiden folgenden Kategorien:
Die von Neumann Sprachen
Imperative Sprachen erfordern die schrittweise Beschreibung durch
Programmierer wie ein Algorithmus seine Aufgabe erledigen soll.
Analogie aus der realen Welt: „Ein Rezept ist eine Art von imperativem
Programm, welches einem Koch sagt wie ein Gericht zuzubereiten ist.“
Deklarative Sprachen erlauben die Beschreibung durch
Programmierer was ein Algorithmus erledigen soll ohne exakt zu
beschreiben wie es getan werden soll.
schließen Fortran, Pascal, Basic und C ein
stellen eine Reflektion der von Neumann Computerarchitektur dar, auf
welcher die Programme laufen
Führen Befehle aus welche den Zustand des Programms
(Variablen/Speicher) ändern
Manchmal auch Berechnung durch Seiteneffekte genannt
Analogie aus der realen Welt: „Das Pfandgesetz ist ein deklaratives
Programm welches Einzelhändlern mitteilt das sie ein Recyclingprogramm
für Einwegflaschen und Dosen des eigenen Sortiments aufstellen müssen,
ohne exakt mitzuteilen wie dies zu erfolgen hat.
Beispiel: Aufsummieren der ersten n Ganzzahlen in C
for(sum=0,i=1;i<=n;i++) { sum += i; }
Einführung
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-13
6. Sprachen, Compiler und Theorie
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
Imperative Sprachen (2/2)
Deklarative Sprachen (1/2)
Die objekt-orientierten Sprachen
Die funktionalen Sprachen
schließen Smalltalk, Eiffel, C++, Java und Sather ein
Sind ähnlich der von Neumann Sprachen mit der Erweiterung von
Objekten
Objekte
enthalten ihren eigenen internen Zustand (Klassenvariablen, member
variables) und Funktionen welche auf diesem Zustand operieren
(Methoden)
Berechnung ist organisiert als Interaktion zwischen Objekten (ein Objekt ruft
die Methoden eines anderen Objektes auf)
Die meisten objekt-orientierten Sprachen bieten Konstrukte (facilities)
basierend auf Objekten welche objekt-orientierte Programmierung
fördern
Kapselung (encapsulation), Vererbung (inheritance) und Polymorphismus
(polymorphism)
Wir werden uns darüber später genauer unterhalten
schließen Lisp/Scheme, ML, Haskell (Gofer) ein
Sind eine Reflektion von Church‘s Theorie der rekursiven Funktionen
(lambda calculus)
Berechnung werden ausgeführt als Rückgabewerte von Funktionen
basierend auf der (möglicherweise rekursiven) evaluation von anderen
Funktionen
Mechanismus ist als Reduktion bekannt
Keine Seiteneffekte
Erlaubt gleichungsbasiertes Problemlösen (equational reasoning),
einfachere formale Beweise von Programmkorrektheit, etc.
Beispiel: Aufsummieren der ersten n Ganzzahlen in SML
fun sum (n) = if n <= 1 then n else n + sum(n-1)
Einführung
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-14
6.1-15
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-16
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Deklarative Sprachen (2/2)
Eine historische Perspektive: Maschinensprachen
Die logischen Sprachen
schließen Prolog, SQL und Microsoft Excel/OpenOffice OpenCalc ein
Sind eine Reflektion von der Theorie der Aussagenlogik
(propositional logic)
Berechnung ist ein Versuch einen Wert zu finden welcher eine Menge
von logischen Beziehungen erfüllt
Die ersten Maschinen wurden direkt in einer Maschinensprache
oder Maschinencode programmiert
Langweilig, aber Maschinenzeit war teurer als Programmiererzeit
Der meist verwendete Mechanismus um diesen Wert zu finden ist bekannt
als Resolution (resolution) und Vereinheitlichung (unification)
Beispiel: Aufsummieren der ersten n Ganzzahlen in Prolog
sum(1,1).
sum(N,S) :-
N1 is N-1, sum(N1,S1), S is S1+N.
MIPS Maschinencode für ein Programm zum
Berechnen des GGT von zwei Ganzzahlen
Einführung
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-17
6. Sprachen, Compiler und Theorie
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-18
6. Sprachen, Compiler und Theorie
Eine historische Perspektive: Assemblersprachen (1/2)
Eine historische Perspektive: Assemblersprachen (2/2)
Programme wurden immer Komplexer
Beispiel:
zu schwierig, zeitintensiv und teuer um Programme in Maschinencode
zu schreiben
Assemblersprachen wurden entwickelt
Für den Menschen lesbar ☺
Ursprünglich wurde eine eins-zu-eins Beziehung zwischen Instruktionen
der Maschinensprache und Instruktionen der Assemblersprache
bereitgestellt
Schließlich wurden „makro“ Einrichtungen hinzugefügt um
Softwareentwicklung durch anbieten von primitiven Formen von CodeWiederverwendung weiter zu beschleunigen
Der Assembler war das Programm welches ein Assemblerprogramm in
Maschinencode übersetzte mit welchem die Maschine laufen konnte
Assembler
Einführung
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-19
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-20
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Eine historische Perspektive: höhere Sprachen (1/2)
Eine historische Perspektive: höhere Sprachen (2/2)
Programme wurden immer Komplexer
Beispiel:
es war zu schwierig, zeitintensiv und teuer um Programme in Assemblersprache
zu schreiben
es war zu schwierig von einer Maschine zu einer anderen zu wechseln, welche
eine andere Assemblersprache hatte
Es wurden höhere Programmiersprachen entwickelt
Mitte der 1950er wurde Fortran entworfen und implementiert
es erlaubte numerische Berechnungen in einer Form ähnlich von mathematischen
Formeln auszudrücken
Der Compiler war das Programm welches ein höheres Quellprogramm in ein
Assemblerprogramm oder Maschinenprogramm übersetzte.
Ursprünglich konnten gute Programmierer schnellere Assemblerprogramme schreiben
als der Compiler
Andere höhere Programmiersprachen folgen Fortran in den späten 50er und
frühen 60er
int gcd (int i, int j) {
while (i != j) {
if (i > j)
i = i – j;
else
Compiler
j = j – i;
}
printf(“%d\n”,i);
}
Lisp: erste funktionale Sprache, basierte auf der Theorie der rekursiven Funktionen
Algol: erste block-strukturierte Sprache
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-21
6. Sprachen, Compiler und Theorie
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
Ausführung von Programmen höherer Sprachen
Entwurf eines Compilers
Kompilation
Programm wird in Assemblersprache oder direkt in Maschinensprache
übersetzt
Kompilierte Programme können so erstellt werden, dass sie relativ
schnell in der Ausführung sind
Fortran, C, C++
Interpretation
Programm wird von einem anderem Programm gelesen und Elemente
der Quellsprache werden einzeln ausgeführt
Ist langsamer als kompilierte Programme
Interpreter sind (normalerweise) einfacher zu implementieren als
Compiler, sind flexibler und können exzellent Fehlersuche (debugging)
und Diagnose unterstützen
Java, Pyhton, Perl, etc.
Compiler sind gut untersuchte, aber auch sehr komplexe
Programme
Daher sollte man nicht davon ausgehen, dass Compiler immer fehlerfrei
arbeiten!!!
Die Komplexität wird durch die Aufteilung der Compilerarbeiten in
unabhängige Abschnitte oder Phasen bewältigt
Typischerweise analysiert eine Phase eine Repräsentation von
einem Programm und übersetzt diese Repräsentation in eine
andere, welche für die nächste Phase besser geeignet ist
Das Design dieser Zwischenrepräsentationen eines Programms
sind kritisch für die erfolgreiche Implementierung eines Compilers
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-22
6.1-23
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-24
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Der Kompilationsprozess (-phasen)
Lexikalische Analyse
Scanner (lexikalische Analyse)
Lese Programm und konvertiere Zeichenstrom in Marken
(tokens).
Parser (syntaktische Analyse)
Lese Tokenstrom und generiere Parserbaum (parse tree).
Semantische Analyse
Traversiere Parserbaum, überprüfe nicht-syntaktische
Regeln.
Zwischencodegenerierung
Traversiere Parserbaum noch mal, gebe Zwischencode
aus.
Optimierung
Untersuche Zwischencode, versuche ihn zu verbessern.
Zielcodegenerierung
Übersetze Zwischencode in Assembler-/Maschinencode
Optimierung Maschinenebene
Untersuche Maschinencode, versuche ihn zu verbessern.
Eine Programmdatei ist nur eine Sequenz von Zeichen
Falsche Detailebene für eine Syntaxanalyse
Die lexikalische Analyse gruppiert Zeichensequenzen in Tokens
Tokens sind die kleinste „Bedeutungseinheit“ (units of meaning) im
Kompilationsprozess und sind die Grundlage (foundation) fürs
Parsen (Syntaxanalyse)
Die Compilerkomponente zum Ausführen der lexikalischen Analyse
ist der Scanner, welcher oftmals ausgehend von höheren
Spezifikationen automatisch generiert wird
Mehr über Scanner in der nächsten Vorlesung
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-25
6. Sprachen, Compiler und Theorie
Syntaktische Analyse
Ein GGT Programm in C
Token
int
int
int
{
i
)
(
j
=
j
j
–
}
“%d\n”
)
gcd
i
j
while
!=
{
i
)
i
;
=
i
printf
,
;
Die lexikalische Analyse erzeugt einen Strom von Tokens
Falsche Detailebene für die semantische Analyse und
Codegenerierung
Die Syntaxanalyse gruppiert eine Zeichenfolge von Tokens in
Parserbäume, was durch die kontextfreie Grammatik gelenkt wird,
die die Syntax der zu kompilierenden Sprache spezifiziert
(
,
)
(
j
if
>
i
–
else
j
;
(
I
}
conditional -> if ( expr ) block else block
Parserbäume repräsentieren die Phrasenstruktur eines
Programmes und sind die Grundlage für die semantische Analyse
und Codegenerierung
Die Compilerkomponente zum Ausführen der syntaktischen Analyse
ist der Parser, welcher oftmals ausgehend von höheren
Spezifikationen automatisch generiert wird
Mehr über kontextfreie Grammatiken und Parser später
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-26
6. Sprachen, Compiler und Theorie
Beispiel für lexikalische Analyse
int gcd (int i, int j) {
while (i != j) {
if (i > j)
i = i – j;
else
j = j – i;
}
printf(“%d\n”,i);
}
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-27
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-28
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Beispiel Syntaxanalyse
Semantische Analyse
conditional
Token
if
>
i
–
else
j
;
(
j
=
j
j
–
}
i
)
i
;
=
i
(
expr
id
comp
id
i
>
j
if
block
)
Bestimmt die Bedeutung eines Programms basierend auf der
Repräsentation des Parserbaumes
Setzt Regeln durch, welche nicht durch die Syntax der
Programmiersprache verwaltet werden
block
else
statement
id
=
j
statement
id
=
expr
i
id
op
id
i
-
j
Konsistente Verwendung von Typen, z.B.
expr
int a; char s[10]; s = s + a; illegal!
id
op
id
j
-
i
Jeder Bezeichner (identifier) muss vor der ersten Verwendung deklariert
sein
Unterprogrammaufrufe müssen die richtige Argumentanzahl und
Argumenttyp haben
etc.
Bringt die Symboltabelle auf den aktuellen Stand, welche neben
anderen Dingen den Typ von Variablen, deren Größe und den
Gültigkeitsbereich in welchen die Variablen erklärt wurden notiert
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-29
6. Sprachen, Compiler und Theorie
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-30
6. Sprachen, Compiler und Theorie
Zwischencodegenerierung
Zielcodegenerierung
Parserbäume sind die falsche Detailebene für die Optimierung und
Zwischencodegenerierung
Zwischencodegenerierung verwandelt den Parsebaum in eine
Sequenz von Anweisungen (statements) der Zwischensprache
welche die Semantik des Quellprogramms verkörpert
Die Zwischensprache ist genauso Mächtig, aber einfacher, wie die
höhere Sprache
z.B. die Zwischensprache könnte nur einen Schleifentyp (goto) haben,
wogegen die Quellsprache mehrere haben könnte (for, while, do, etc.)
Das Endziel eines Compilerprozesses ist die Generierung eines
Programms welches der Computer ausführen kann
Dies ist die Aufgabe der Zielcodegenerierung
Schritt 1: durchlaufe (traverse) die Symboltabelle, weise Variablen
einen Platz im Speicher zu
Schritt 2: durchlaufe (traverse) den Parsebaum oder Programm in
der Zwischensprache um arithmetische Operationen, Vergleiche,
Sprünge und Unterprogrammaufrufe auszugeben, sowie Lasten und
Vorräte von Variablenreferenzen
Eine einfache Zwischensprache macht es einfacher nachfolgende
Compilerphasen zu implementieren
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-31
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-32
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Optimierung
Warum Programmiersprachen und Compiler studieren?
Zwischencode und Zielcode ist typischerweise nicht so effizient wie er sein
könnte
Einschränkungen erlauben es dem Codegenerator sich auf die Codeerzeugung
zu konzentrieren und nicht auf die Optimierung
Ein Optimierer kann aufgerufen werden um die Qualität des Zwischencodes
und/oder Zielcodes nach jeder dieser Phasen zu verbessern
Die Compilerkomponente zur Verbesserung der Qualität des generierten
Codes wird Optimierer (optimizer) genannt.
Optimierer sind die kompliziertesten Teile eines Compilers
Optimierungsalgorithmen sind oftmals sehr ausgefeilt, benötigen erheblich
viel Speicher und Zeit für die Ausführung und erzeugen nur kleine
Verbesserungen der Programmgröße und/oder Leistung der Laufzeit
Zwei wichtige Optimierungen
Registerzuteilung – entscheide welche Programmvariablen zu einem bestimmten
Zeitpunkt der Programmausführung in Registern gehalten werden können
Unbenutzten Code eliminieren – entferne Funktionen, Blöcke, etc., welche
niemals vom Programm ausgeführt würden
Nach Aussage von Michael Scott (siehe Literaturangabe)
Verstehe schwer verständliche Spracheigenschaften
Wähle zwischen alternativen Wegen um etwas auszudrücken
Mache guten Gebrauch von Debuggern, Assemblern, Linkern und
andere verwandte Werkzeuge
Simuliere nützliche Eigenschaften (features) welche in einer Sprache
fehlen
Nach Aussage von Kevin Scott (vorheriger Dozent)
Compiler sind große und komplexe Programme: studieren dieser
Programme hilft dir „große Software“ besser zu verstehen
Viele Programme enthalten „kleine Programmiersprachen“
Unix shells, Microsoft Office Anwendungen, etc.
Es ist nützlich etwas über Sprachdesign und –implementierung zu wissen,
so dass Sie kleine Sprachen in die eigene Software einbauen können
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-33
6. Sprachen, Compiler und Theorie
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-34
6. Sprachen, Compiler und Theorie
Weitere Fragen zum Nachdenken
Plan für nächste Vorlesungen
Was macht eine Programmiersprache erfolgreicher als andere?
Werden Programmiersprachen mit der Zeit besser?
An welchen Eigenschaften (features) mangelt es deiner bevorzugten
Sprache um Sie
mächtiger,
zuverlässiger,
einfacher in der Verwendung zu machen?
Die nächsten Vorlesungen (Kapitel 2 vom Buch)
lexikalische Analyse
syntaktische Analyse
Automatentheorie und automatische Generierung von Scannern und
Parsern
Reguläre und kontextfreie Grammatiken
Nachfolgende 5 Vorlesungen
Namen, Geltungsbereiche und Binden (Kapitel 3)
Kontrollfluss (Kapitel 6)
Unterprogramme und Kontrolle über Abstraktion (Kapitel 8)
Zusammenbauen eines lauffähigen Programms (Kapitel 9)
Objekt-orientierte Programmierung (Kapitel 10)
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-35
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.1-36
6. Sprachen, Compiler und Theorie
Der Kompilationsprozess (-phasen)
Informatik II
SS 2004
Scanner (lexikalische Analyse)
Lese Programm und konvertiere Zeichenstrom in Marken
(tokens).
Parser (syntaktische Analyse)
Lese Tokenstrom und generiere Parserbaum (parse tree).
Semantische Analyse
Teil 6: Sprachen, Compiler und Theorie
2 – Lexikalische Analyse
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
Lehrstuhl für Telematik
Institut für Informatik
Traversiere Parserbaum, überprüfe nicht-syntaktische
Regeln.
Zwischencodegenerierung
Traversiere Parserbaum noch mal, gebe Zwischencode
aus.
Optimierung
Untersuche Zwischencode, versuche ihn zu verbessern.
Zielcodegenerierung
Übersetze Zwischencode in Assembler-/Maschinencode
Optimierung Maschinenebene
Untersuche Maschinencode, versuche ihn zu verbessern.
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6.2-2
6. Sprachen, Compiler und Theorie
Lexikalische Analyse
Beispiel für lexikalische Analyse
Ein GGT Programm in C
Die lexikalische Analyse gruppiert Zeichensequenzen in Tokens
(Marken) bzw. Symbole
Tokens sind die kleinste „Bedeutungseinheit“ (units of meaning) im
Kompilationsprozess und sind die Grundlage (foundation) fürs
Parsen (Syntaxanalyse)
Die Compilerkomponente zum Ausführen der lexikalischen Analyse
ist der Scanner, welcher oftmals ausgehend von höheren
Spezifikationen automatisch generiert wird
int gcd (int i, int j) {
while (i != j) {
if (i > j)
i = i – j;
else
j = j – i;
}
printf(“%d\n”,i);
}
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-3
Token
int
int
int
{
i
)
(
j
=
j
j
–
}
“%d\n”
)
gcd
i
j
while
!=
{
i
)
i
;
=
i
printf
,
;
(
,
)
(
j
if
>
i
–
else
j
;
(
I
}
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-4
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
2 Fragen
Wie beschreiben wir die lexikalische Struktur? (1/2)
Wie beschreiben wir die lexikalische Struktur einer
Programmiersprache?
1. Versuch: Liste aller Tokens
if else long int short char ; , : ( ) { } …
Mit anderen Worten, was sind die Tokens (Symbole)
Wie implementieren wir den Scanner nachdem wir wissen was die
Tokens sind?
Aber was ist mit den Konstanten (Ganzzahlen, Fliesskommazahlen,
Zeichenketten)?
Es können nicht alle aufgelistet werden, es gibt ~8 Milliarden 32-bit integer
und floating-point Konstanten und eine unendliche Anzahl von
Zeichenfolgenkonstanten
Das gleiche Problem gilt für Bezeichner (Variablen, Funktionen und
benutzerdefinierte Typnamen)
Lösung: Wir brauchen einen Weg um kurz und prägnant Klassen von
Tokens zu beschreiben, welche eine große Anzahl von verschiedenen
Werten abdecken können
Lexikalische Analyse
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-5
6. Sprachen, Compiler und Theorie
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-6
6. Sprachen, Compiler und Theorie
Wie beschreiben wir die lexikalische Struktur? (2/2)
Abkürzungen von regulären Ausdrücken
2. Versuch: Reguläre Ausdrücke
Zeichenfolgen
Muster (patterns) welche zum Auffinden von passendem Text
verwendet werden können
Werden mit folgenden Ausdrücken rekursiv ausgedrückt
r=‘c1c2c3...cn‘ ist äquivalent zu
r=c1.c2.c3.....cn
Zeichenbereiche
Ein Zeichen
Der leeren Zeichenfolge ε
Der Verkettung zweier regulärer Ausdrücke
r=[c1-cn] ist äquivalent zu
r=c1|c2|c3|...|cn für die aufeinander folgende Reihe von n Zeichen
beginnend mit c1 und endend mit cn
z.B. r=[a-d] ist äquivalent zu r=a|b|c|d
r1.r2 ist der Wert von r1 gefolgt vom Wert von r2
Der Alternative zweier regulärer Ausdrücke
Kleenesche Hülle +
r1|r2 ist der Wert von r1 oder der Wert von r2
r+ ist ein oder mehrere Vorkommen des Wertes von r
Der Kleenesche Hülle * (ode einfach Hülle oder Stern)
Formal definiert als r+ = r.r*
r* ist kein oder mehrere Vorkommen des Wertes von r1
Runde Klammern können zum Gruppieren von regulären Ausdrücken
verwendet werden, um Zweideutigkeiten bei Kombinationen
auszuschließen
Das Symbol . steht für jeden Charakter außer „newline“
z.B. bedeutet r1.r2|r3 nun (r1.r2)|r3 oder r1.(r2|r3)???
Lexikalische Analyse
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-7
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-8
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Lexikalische Analyse: Reguläre Ausdrücke bei der Arbeit
Ein GGT Programm in C
int gcd (int i, int j) {
while (i != j) {
if (i > j)
i = i – j;
else
j = j – i;
}
printf(“%d\n”,i);
}
Reguläre Ausdrücke
digit=[0-9]
letter=[a-z]|[A-Z]
punct=\|%
INT=‘int’
WHILE=‘while’
IF=‘if’
ID=letter.(letter|digit)*
LPAREN=(
RPAREN=)
COMMA=,
SEMI=;
LBRACE={
RBRACE=}
EQ==
MINUS=GT=>
SC=“.(letter|digit|punct)*.”
Ein genauerer Blick auf die lexikalische Analyse
Wie behandelt der lexikalische Analysator Leerzeichen,
Kommentare und Konflikte zwischen regulären Ausdrücken?
Tokens
INT
INT
INT
LBRACE
ID:i
RPAREN
LPAREN
ID:j
EQ
ID:j
ID:j
MINUS
RBRACE
SC:“%d\n”
RPAREN
ID:gcd
ID:i
ID:j
WHILE
NEQ
LBRACE
ID:i
RPAREN
ID:i
SEMI
EQ
ID:i
ID:printf
COMMA
SEMI
LPAREN
COMMA
RPAREN
LPAREN
ID:j
IF
GT
ID:i
MINUS
ELSE
ID:j
SEMI
LPAREN
ID:i
RBRACE
Leerzeichen
int
gcd
(int
i, int
j) {
Kommentare einer Programmiersprache
/* gcd */ int gcd (int i, int j) {
Konflikte zwischen regulären Ausdrücken
Gegeben:
WHILE=‘while’
ID=letter.(letter|digit)*
Beide reguläre Ausdrücke decken die Zeichenfolge „while“ ab. Welcher
Ausdruck soll aber nun gewählt werden?
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-9
6. Sprachen, Compiler und Theorie
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
Handhabung von Leerzeichen
Handhabung von Kommentaren (1/2)
Leerzeichen können als Token durch folgende Regel erkannt
werden
Alternative 1: Präprozessoren
Spezielles Programm welches eine Datei einliest, Kommentare entfernt,
andere Operationen wie Makro-Expansion ausführt und eine
Ausgabedatei schreibt, welche vom lexikalischen Analysator gelesen
wird.
Quellprogramme können auch Steueranweisungen enthalten, die nicht
zur Sprache gehören, z.B. Makro-Anweisungen. Der lexikalische
Analysator behandelt die Steueranweisungen und entfernt sie aus dem
Tokenstrom.
Präprozessor-Anweisungen in C und C++
WS=(\n|\r|\t|\s)*
\n ist ein „escape“ Zeichen für „newline“ (neue Zeile)
\r ist ein „escape“ Zeichen für „carriage return“ (Wagenrücklauf)
\t ist ein „escape“ Zeichen für „tab“ (Tabulator)
\s ist ein „escape“ Zeichen für „space“ (Leerzeichen)
Das Leerzeichentoken WS ist normalerweise unwichtig für die
Syntax einer Programmiersprache, weshalb es einfach vom
Tokenstrom gelöscht werden kann
z.B. #include und #define
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-10
6.2-11
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-12
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Handhabung von Kommentaren (2/2)
Handhabung von Konflikten
Gegeben sind zwei reguläre Ausdrücke r1 und r2, welche eine
Teileingabe p=‘c1..ck‘ finden. Welche soll nun ausgewählt werden?
Alternative 2: Kommentartoken
In Abhängigkeit von der Komplexität von Kommentaren ist eine
Beschreibung via regulärer Ausdrücke vielleicht möglich
Alternative 1: Längster Fund
Zeilenkommentare (single line comments) können mit regulären Ausdrücken
gefunden werden
SLC=‘//’.*.$
$ ist ein spezielles Symbol, welches das Ende einer Zeile bedeutet
Nehme solange Eingabezeichen hinzu bis weder r1 noch r2 passen. Entferne
ein Zeichen und entweder r1 oder r2 muss passen. Die Teileingabe p ist der
längste Fund und wenn nur einer von r1 oder r2 passt, dann wähle ihn.
Beispiel:
r1=‘while’
r2=letter.(letter|digit)*
Eingabe
int while48; …
Wenn p=‘while’, beide, r1 und r2 passen
Wenn p=‘while48;’ weder r1 noch r2 passen
Wenn p=‘while48’ nur r2 passt, wähle r2 aus
Findet Texte wie
// Dies ist ein Kommentar
Einige Kommentare sind zu kompliziert um durch reguläre Ausdrücke
gefunden zu werden
Willkürlich verschachtelte Kommentare
/* level 1 /* level 2 */ back to level 1 */
Wird Normalerweise vom Präprozessor behandelt
Alternative 2: Regelpriorität
Wenn der längste Fund immer noch in einem Konflikt endet, dann wähle den
erste regulären Ausdruck aus der lexikalischen Definition der Sprache
Lexikalische Analyse
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-13
6. Sprachen, Compiler und Theorie
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
Weitere spezielle Probleme
Implementierung eines lexikalischen Analysators
Reservierte Schlüsselwörter
Wie übertragen wir reguläre Ausdrücke in einen
lexikalischen Analysator?
Schlüsselwörter dürfen nicht in Bezeichnern (Namen) verwendet
werden
Konvertiere reguläre Ausdrücke zu einem deterministischen
endlichen (finite) Automaten (DFA)
Groß-/Kleinschreibung
intern nur eine Repräsentation verwenden, weshalb eine Anpassung
notwendig ist
Textende
Das Textende muss dem Syntaxanalysator mitgeteilt werden, weshalb
ein eind-of-text Symbol (eot) eingefügt werden muss
Vorgriff (lookahead) um mehrere Zeichen
Warum??? DFAs sind einfacher zu simulieren als reguläre
Ausdrücke
Schreibe ein Programm zum Simulieren eines DFAs
Der DFA erkennt die Tokens im Eingabetext und wird der
lexikalische Analysator
Wenn ein Token erkannt wurde, dann kann eine
benutzerdefinierte Aktion ausgeführt werden
z.B. überprüfe, ob der Wert einer Ganzzahlkonstante in eine 32-bit
integer passt
gelesene aber nicht verwendete Zeichen müssen für nächsten Test
berücksichtigt werden
Lexikalische Fehler
Die Verletzung der Syntax (z.B. falscher Wertebereich) wird gemeldet
und trotzdem an den Syntaxanalysator weitergegeben
Die Konvertierung von regulären Ausdrücken zu DFAs und
das Schreiben eines Programms zum Simulieren des DFA
kann entweder von Hand vorgenommen werden oder von
einem anderen Programm, welches lexikalischer
Analysegenerator genannt wird.
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-14
6.2-15
Regular
Expressions
+
Actions
Lexical Analyzer
Generator
Lexical analyzer
source code
High-level language
compiler
Lexical analyzer
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-16
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Endliche Automaten
Ein Beispiel eines endlichen Automaten
Formal, ein endlicher Automat M ist ein Quintupel M=(Q,Σ,q,F,δ),
wobei
Q ist eine endliche Menge von Symbolen genannt Zustände (states)
Σ ist eine endliche Menge von Eingabesymbolen genannt Alphabet
q ist der Startzustand
F ist eine endliche Menge von finalen oder akzeptierenden
Zuständen. F ist eine, möglicherweise leere, Teilmenge von Q.
δ ist eine Übergangsfunktion
L(M), oder die Sprache von M, ist die Menge von endlichen
Zeichenketten von Symbolen aus dem Alphabet Σ welche vom
Automaten M akzeptiert werden
Q={q1,q2,q3,q4,q5}
Σ={a,b}
q=q1
F={q4}
δ=
{((q1,a),q2),((q1,b),q3),
((q2,a),q4),((q2,b),q2),
((q3,a),q4),((q3,b),q5),
((q4,a),q5),((q4,b),q5),
((q5,a),q5),((q5,b),q5)}
b
a
q2
a,b
a
q1
q4
b
Eingabe:
a,b
q5
a
q3
b
abba a Nicht akzeptiert!
Welche Sprache akzeptiert M?
(ab*a)|ba
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-17
6. Sprachen, Compiler und Theorie
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-18
6. Sprachen, Compiler und Theorie
Zwei Arten von endlichen Automaten:
Deterministisch und Nichtdeterministisch
Ein Beispiel eines nichtdeterministischen Automaten (NFA)
Deterministische endliche Automaten
Die Übergangsfunktion ist formal definiert als
δ:Q x Σ -> Q
Ein Eingabesymbol und ein Zustand ergeben den einzigen nächsten
Zustand
Nichtdeterministische endliche Automaten (NFA)
Q={q1,q2,q3,q4,q5}
Σ={a,b}
q=q1
F={q4}
δ=
{((q1,a),{q2,q3}),((q1,b),{q3}),
((q2,a),{q4}),((q2,b),{q2}),
((q3,a),{q4}),((q3,b),{q5}),
((q4,a),{q5}),((q4,b),{q5}),
((q5,a),{q5}),((q5,b),{q5})}
Die Übergangsfunktion ist formal definiert als
δ:Q x Σ -> φQ (Potenzmenge von Q)
Ein Eingabesymbol und ein Zustand ergeben eine Menge von
möglichen nächsten Zuständen. Die Menge kann auch leer sein.
Abgesehen von den Übergangsfunktionen sind DFAs und NFAs
gleich
b
a
q2
q1
a,b
Eingabe:
a,b
a
q4
q3
a,b
q5
a
b
abba a Nicht akzeptiert!
Welche Sprache akzeptiert M?
(ab*a)|ba
Gleiche wie zuvor beim DFA…
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-19
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-20
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Eine interessante Sache über endliche Automaten
Eine Nebenbemerkung zu endlichen Automaten
Auch wenn es so aussieht als ob Nichtdeterminismus einem
endlichen Automaten mehr Ausdruckskraft verleiht, sind NFAs und
DFAs formal äquivalent
Jeder NFA kann in einen DFA umgewandelt werden und ungekehrt
Warum machen wir dann aber die Unterscheidung?
Es ist einfacher reguläre Ausdrücke in NFAs umzuwandeln
Es ist einfacher DFAs zu simulieren
MESI cache coherence protocol
Endliche Automaten sind auch für
andere Dinge als lexikalische
Analyse nützlich
(Courtesy: John Morris, University of Western Australia)
Die meisten Systeme, welche
Transaktionen zwischen einer
endlichen Anzahl von Zuständen
vornehmen, können mit endlichen
Automaten modelliert werden
Beispiele
Beschreibung, Simulation,
Überprüfung und Implementierung
von Protokollen
Bauen von schnellen,
zustandsbasierten Schaltungen
(siehe Kapitel 2)
Vending machine automata
25¢
25 ¢
0¢
25 ¢
50 ¢
75¢
25 ¢
50 ¢
50¢
50 ¢
Lexikalische Analyse
6.2-21
6. Sprachen, Compiler und Theorie
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Beispiel: Reguläre Ausdrücke nach NFA
Regulärer Ausdruck
c
є
Alternative: r1|r2
Verkettung: r1.r2
r1
є
r2
r1
є
є
r1:
r1=a.b
r2=c.d
r3=r1|r2
r=r3*
є
Leere Zeichenkette: є
a
r=(‘ab’|’cd’)*
Faktor:
NFA
Charakter: c
є
c
r2:
r
d
є
є
r3:
є
r2
є
є
є
b
r4:
є
є
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-22
6. Sprachen, Compiler und Theorie
Bau des lexikalischen Analysators:
Reguläre Ausdrücke nach NFA
Kleenesche Hülle: r*
vend
25 ¢
50 ¢
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
25 ¢
6.2-23
є
є
a
є
b
c
є
d
a
є
b
c
є
d
a
є
b
c
є
d
є
є
є
є
є
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-24
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Theoretische Ergebnisse 1
Bau des lexikalischen Analysators:
NFA nach DFA
Definitionen
Endliche Automaten akzeptieren oder erkennen Sprachen
Reguläre Ausdrücke erzeugen Sprachen
L(M) ist die akzeptierte Sprache vom endlichen Automaten M
L(R) ist die erzeugte Sprache vom regulären Ausdruck R
L(R) and L(M) sind Mengen von endlichen Zeichenketten von Symbolen der
Alphabete ΣR und ΣM
LR ist die Menge { L(r):alle reguläre Ausdrücke r }
LN ist die Menge { L(n):alle nichtdeterministische endliche Automaten n }
Regulärer Ausdruck
LR ist eine Untermenge von LN
Nichtdeterministische endliche Automaten akzeptieren alle von regulären
Ausdrücken erzeugten Sprachen
Warum? Wir haben gezeigt wie beliebige reguläre Ausdrücke zu einem NFA
konvertiert werden können
Beschreiben LR und LN die gleichen Mengen?
Es stellt sich heraus, dass die Antwort ja ist
Beweis durch zeigen das LN eine Untermenge von LR ist oder das jeder
nichtdeterministische endliche Automat in einen regulären Ausdruck
umgewandelt werden kann
Siehe jedes gute theoretische Informatik Buch für Details:
Introduction to Automata Theory, Languages, and Computation by Hopcroft and Ullman
Introduction to the Theory of Computation by Michael Sipser
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
NFA
r=(‘ab’|’cd’)*
Konvertiere NFA nach DFA
є
unter Verwendung der
є q3
Konstruktion von
є
q1
q2
Untermengen
є q7
Beschrifte jeden DFA
Zustand als die vom
vorherigen Zustand in
einem Schritt erreichbare DFA
Menge von Zuständen
a
Wenn irgendein NFA
{q1,q2,q3,
Zustand in der Menge der
erreichbaren Zustände ein q7,q12}
Endzustand ist, dann ist der
c
ganze DFA Zustand ein
Endzustand
6.2-25
6. Sprachen, Compiler und Theorie
a
c
q4
q8
є
є
q5
q9
b
d
q6
q10
є
q11
є
q12
є
a
{q4,q5}
{q8,q9}
b {q2,q3,q6,
q7,q11,q12}
c
a
{q2,q3,q7,
d
q10,q11,q12}
c
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-26
6. Sprachen, Compiler und Theorie
Theoretische Ergebnisse 2
Einige Bemerkungen zu DFAs
Definitionen
Erinnerung, LN ist die Menge { L(n):alle nichtdeterministische endliche
Automaten n }
LD ist die Menge { L(d): alle deterministischen endlichen Automaten d }
LN ist eine Untermenge von LD und LR ist eine Untermenge von LD
Deterministische endliche Automaten akzeptieren alle Sprachen die
auch von nichtdeterministischen endlichen Automaten akzeptiert
werden
Neben Transitivität, akzeptieren DFAs auch alle durch reguläre
Ausdrücke generierte Sprachen
Warum? Wir haben gezeigt wie jeder NFA zu einem DFA und jeder
reguläre Ausdruck zu einem NFA konvertiert werden kann
Ein DFA M gebaut unter Verwendung der Konstruktion von
Untermengen kann nicht minimal sein
Mit anderen Worten, es könnte einen Automaten M‘ geben wobei
L(M)=L(M‘) und M‘ hat weniger Zustände als M
Minimale DFAs sind besser geeignet für Implementierungszwecke
Weniger Zustände benötigen weniger Speicher und führen generell zu
schnelleren Simulationen
Die meisten automatischen Werkzeuge zum Konvertieren von NFAs
nach DFAs führen einen Optimierungsprozess aus um die Anzahl
der DFA Zustände zu reduzieren
Beschreiben LN und LD die gleichen Mengen?
Es stellt sich heraus, dass die Antwort ja ist
Beweis durch zeigen das LD eine Untermenge von LN ist oder das jeder
DFA in einen NFA umgewandelt werden kann
Noch mal, siehe jedes gute theoretische Informatik Buch für Details
Das Finden eines minimalen DFAs ist ein sehr hartes Problem (auch
NP-vollständig bezeichnet), weshalb Optimierer keinen minimalen DFA
garantieren können
Praktisch gesehen ist das Ok, obwohl weniger Zustände immer besser
ist ☺
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-27
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-28
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Bau des lexikalischen Analysators: DFA zu Code
Bau des lexikalischen Analysators: Letzter Schritt
a
DFAs können effizient Simuliert
werden indem ein tabellenbasierter
Algorithmus verwendet wird
void dfa (char *in) {
s = in;
state = start_state;
while(1) {
c = *s++;
state = table[state][c];
if (final[state)]) {
printf(“Accepted %s\n”,in);
break;
}
}
}
b
q2
a
q3
c
q1
a
c
d
q4
q5
c
Tabelle
a
b
c
d
q1
q2
q6
q4
q6
q2
q6
q3
q6
q6
q3
q2
q6
q4
q6
q4
q6
q6
q6
q5
q5
q2
q6
q4
q6
q6
q6
q6
q6
q6
DFA Simulatorcode wird der Kern des lexikalischen Analysators
Wenn der DFA in einem Endzustand ist
Führe mit dem letzten, passenden regulären Ausdruck, entsprechend
dem längsten Fund und/oder der Regelpriorität, die verbundene,
benutzerdefinierte Aktion aus
Merke aktuelle Stelle im Eingabestrom und gebe Token an
Tokenkonsument (parser) weiter
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-29
6. Sprachen, Compiler und Theorie
import java.io.IOException;
%%
%public
%class Scanner
%type
void
%eofval{
return;
%eofval}
%{
public static void main (String args []) {
Scanner scanner = new Scanner(System.in);
try {
scanner.yylex();
} catch (IOException e) { System.err.println(e); }
}
%}
comment
space
digit
integer
real
IF
THEN
ELSE
=
=
=
=
=
=
=
=
("#".*)
[\ \t\b\015]+
[0-9]
{digit}+
({digit}+"."{digit}*|{digit}*"."{digit}+)
("if")
"then"
else
%%
{space}
break;
}
{comment}
break;
}
{integer}
break;
{ System.out.println("space");
{ System.out.println("comment");
{ System.out.println("Integer CONSTANT\t" + yytext());
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Die nächsten Vorlesungen (Kapitel 2 vom Buch)
break;
}
{real}
{ System.out.println("REAL
CONSTANT\t" + yytext());
{ System.out.println("IF
Token\t" + yytext());
{ System.out.println("THEN
Token\t" + yytext());
{ System.out.println("ELSE
Token\t" + yytext());
break;
}
{IF}
break;
}
{THEN}
break;
}
{ELSE}
break;
}
\n
{ System.out.println("NL");
}
{ System.out.println("ADD");
break;
}
"-"
{ System.out.println("SUB");
break;
}
"*"
{ System.out.println("MUL");
break;
}
"/"
{ System.out.println("DIV");
break;
}
"%"
syntaktische Analyse
Automatentheorie und automatische Generierung Parsern
Reguläre und kontextfreie Grammatiken
Nachfolgende 5 Vorlesungen
Namen, Geltungsbereiche und Binden (Kapitel 3)
Kontrollfluss (Kapitel 6)
Unterprogramme und Kontrolle über Abstraktion (Kapitel 8)
Zusammenbauen eines lauffähigen Programms (Kapitel 9)
Objekt-orientierte Programmierung (Kapitel 10)
break;
"+"
Plan für nächste Vorlesungen
{ System.out.println("MOD");
break;
}
"("
{ System.out.println("LPAR");
break;
}
")"
{ System.out.println("RPAR");
break;
}
.
{ System.out.println("error" + "+" + yytext() + "+");
break;
}
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-30
6. Sprachen, Compiler und Theorie
Eine reale JLex lexikalische Spezifikation für einen Kalkulatorsprache
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-31
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-32
6. Sprachen, Compiler und Theorie
Pumping Lemma für reguläre Sprachen (1/2)
„
Informatik II
SS 2004
Das Pumping Lemma
ist eine Methode, um
heraus zu finden, ob
eine Sprache nicht
regulär.
Teil 6: Sprachen, Compiler und Theorie
2a – Lexikalische Analyse
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
Lehrstuhl für Telematik
Institut für Informatik
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Pumping Lemma für reguläre Sprachen (2)
„
Beweis
Satz:
Sei L eine reguläre Sprache. Dann gibt es eine Zahl (Konstante) n,
derart dass alle Wörter (Zeichenreihen) w in L mit |w | ≥ n gilt, dass
wir in w drei Wörter w = xyz zerlegen können, für die gilt:
…
…
…
6.2-34
„
Jede Zeichenreihe, deren Länge nicht kleiner ist als die Anzahl der
Zustände, muss bewirken, dass ein Zustand zweimal durchlaufen wird
(Schubfachschluss).
|y | ≥ 1 (oder y ≠ ε)
|xy | ≤ n,
Für alle k ≥ 0 gilt, dass die Zeichenreihe xy kz auch in L enthalten ist.
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-35
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-36
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Beispiele
„
„
Rückblick
Sind diese Sprachen (nicht) regulär?
…
w = anbn
…
w= ab|c
„
„
…
Die Anwendung des Pumping Lemmas ist ein kreativer Vorgang, da
es kein „mechanisches“ Vorgehen für den Einsatz gibt.
…
Reguläre Sprachen, reguläre Ausdrücke, (deterministische und
nichtdeterministische) endliche Automaten
Wichtige Algorithmen
…
vergleiche Ableitungsregeln aus der Mathematik (Analysís)
…
„
Konvertierung von regulären Ausdrücken zu nichtdeterministischen
endlichen Automaten (NFA) (inklusive Beweise)
Konvertierung von nichtdeterministischen endlichen Automaten zu
deterministischen endlichen Automaten (DFA)
Tabellenbasierte Simulation von DFAs
Lexikalische Analyse und Scanner
…
…
Verwenden reguläre Ausdrücke zur Definition der lexikalischen Struktur
(Symbole/Token) einer Sprache
Verwenden die Theorie der regulären Sprachen zur Erzeugung eines
Scanners ausgehend von der Beschreibung der lexikalischen Struktur
einer Programmiersprache anhand von regulären Ausdrücken
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-37
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Reguläre Ausdrücke (1/3)
„
…
…
…
…
„
„
Reguläre Ausdrücke (2/3)
Werden mit folgenden Ausdrücken rekursiv ausgedrückt:
…
„
Ein Zeichen c aus dem Alphabet Σ, oder
der leeren Zeichenfolge ε, oder
der Verkettung zweier regulärer Ausdrücke, r1 . r2, oder
der Alternative zweier regulärer Ausdrücke, r1 | r2, oder
der Kleenesche Hülle * (ode einfach Hülle oder Stern), r1*.
Zeichenfolgen
…
„
r=‘c1c2c3...cn‘ = c1.c2.c3.....cn
Zeichenbereiche
…
…
Ein regulärer Ausdruck ist gedacht um Zeichenketten aus Zeichen
aus einem Alphabet Σ zu erzeugen
Die Menge aller durch einen regulären Ausdruck R erzeugte
Zeichenketten wird die Sprache von R genannt und wird
symbolisiert durch L(R)
…
r=[c1-cn] = c1|c2|c3|...|cn
Kleenesche Hülle +
r+ = r.r*
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-38
6.2-39
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-40
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Reguläre Ausdrücke (3/3)
Endliche Automaten (1/5)
Reguläre Ausdrücke
Erzeugt…
‘if’|’then’|’else’
Die Zeichenketten if, then, or else.
a.(a|b|c)*.a
„
Formal, ein endlicher Automat M ist ein Quintupel M=(Q,Σ,q0,F,δ),
wobei
…
…
Alle Zeichenketten mit a’s, b’s und c’s,
welche mit einem a beginnen und enden.
…
…
a.(a|b|c)*.(b|c).a
Alle Zeichenketten mit a’s, b’s, und c’s,
welche mit einem a beginnen und einem
einzelnen a enden.
(a|b|c)*.a.b.a.(a|b|c)*
Alle Zeichenketten mit a’s, b’s und c’s,
welche die Teilzeichenkette aba enthalten.
(b|c)*.a.(b|c)*.a.(b|c)*.a.(b|c)*
Alle Zeichenketten mit a’s, b’s und c’s,
welche exakt drei a’s beinhalten.
…
„
„
Q ist eine endliche Menge von Symbolen genannt Zustände (states)
Σ ist eine endliche Menge von Eingabesymbolen genannt Alphabet
q0 ist der Startzustand
F ist eine endliche Menge von finalen oder akzeptierenden
Zuständen. F ist eine, möglicherweise leere, Teilmenge von Q.
δ ist eine Übergangsfunktion
Ein endlicher Automat ist geeignet um Zeichenketten aus Zeichen
aus dem Alphabet Σ zu akzeptieren
L(M), oder die Sprache von M, ist die Menge von endlichen
Zeichenketten von Symbolen aus dem Alphabet Σ welche vom
Automaten M akzeptiert werden
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-41
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Endliche Automaten (2/5)
„
Endliche Automaten (3/5)
Deterministische endliche Automaten (DEA/DFA)
…
Übergänge sind deterministisch
„
„
…
6.2-42
„
Übergang von einzelnem Zustand zu einzelnem Zustand
δD:Q x Σ -> Q
„
„
Übergangsfunktionen können als eine Tabelle oder
Zustandsübergangsdiagramm geschrieben werden
„
„
Tabelle
Beispiel DFA
Q={q1,q2,q3,q4,q5}
Σ={a,b}
q0=q1
F={q4}
δ=
…
…
…
…
…
q1
q2
q3
q4
q5
{((q1,a),q2),((q1,b),q3),
((q2,a),q4),((q2,b),q2),
((q3,a),q4),((q3,b),q5),
((q4,a),q5),((q4,b),q5),
((q5,a),q5),((q5,b),q5)}
q2
q4
b
q3
a,b
q5
a
b
Lexikalische Analyse
6.2-43
a,b
a
q1
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
b
q3
q2
q5
q5
q5
b
a
Zustandsübergangsdiagramm
a
q2
q4
q4
q5
q5
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-44
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Endliche Automaten (4/5)
„
Endliche Automaten (5/5)
Nichtdeterministische endliche Automaten (NEA/NFA)
…
„
„
…
„
Übergänge sind nichtdeterministisch
„
Übergang von einzelnem Zustand zu einer Menge von möglichen
Zuständen
δD:Q x Σ -> P(Q)
( P(Q) Potenzmenge von Q )
„
„
Das Alphabet ist erweitert um Übergänge der leeren Zeichenkette є zu
erlauben
„
Tabelle
Beispiel NFA
Q={q1,q2,q3,q4,q5}
Σ={a,b,є}
q0=q1
F={q4}
δ=
{
((q1,є),{q2,q3}),
((q2,a),{q5}),((q2,b),{q2,q4}),
((q3,a),{q4}),((q3,b),{q5}),
((q4,a),{q5}),((q4,b),{q5}),
((q5,a),{q5}),((q5,b),{q5})
}
a
{q5}
{q5}
{q4}
{q5}
{q5}
є
{q2,q3}
{q5}
{q5}
{q5}
{q5}
q1
q2
q3
q4
q5
a
b
q2
є
a,b
b
a,b
q4
q1
Zustandsübergangsdiagramm
є
6.2-45
6. Sprachen, Compiler und Theorie
b
…
…
„
„
„
Wir können jeden regulären Ausdruck in einen NFA konvertieren und
umgekehrt
c
Wir können jeden NFA in einen DFA konvertieren und umgekehrt
r1
Alternative: r1|r2
Verkettung: r1.r2
є
є
r2
є
є
r1
є
r2
є
Kleenesche Hülle: r*
Lexikalische Analyse
6.2-47
є
Leere Zeichenkette: є
Gegeben ist ein beliebiger NFA MN und DFA MD, mit L(MN) = L(MD)
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
NFA
Charakter: c
Gegeben ist beliebiger regulärer Ausdruck R und ein NFA MN, mit
L(R)=L(MN)
…
6.2-46
Regulärer Ausdruck
Es gibt einen regulären Ausdruck R so dass gilt L(R) = L(X), oder
Es gibt einen DFA MD so dass gilt L(MD) = L(X), oder
Es gibt einen NFA MN so dass gilt L(MN) = L(X)
Die Sprachen der regulären Ausdrücke, DFA Sprachen und NFA
Sprachen sind alle regulär
…
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Reguläre Ausdrücke nach NFA (1/2)
Eine Sprache L(X) ist Regulär wenn:
…
Lexikalische Analyse
6. Sprachen, Compiler und Theorie
Reguläre Sprachen
„
q5
a
q3
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
b
{q5}
{q2,q4}
{q5}
{q5}
{q5}
є
є
r
є
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-48
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Reguläre Ausdrücke nach NFA (2/2)
NFAs nach DFAs (1/2)
„
Definition:
…
r=‘ab’|’cd’
Faktor:
„
„
…
…
…
r1:
r1=‘ab’
r2=‘cd’
r=r1.r2
a
b
r2:
Gegeben NFA M=(Q,Σ,q,F,δ) und DFA MD=(QD,Σ,qD,FD,δD)
…
c
d
d
є
…
…
…
є
r3:
b
є
„
c
є
a
є
b
c
є
d
є-FZ(s) ist die Menge aller Zustände, welche in s beinhaltet sind, plus
aller von den Zuständen in s erreichbaren Zustände unter
ausschließlicher Verwendung des є Überganges
QD=P(Q), z.B., QD ist die Menge aller Untermengen von Q
FD = {S:∀S ∈QD wobei S∩F ≠ {} }
qD= є-FZ (q)
δD({q1,q2,…,qk},a) = є-FZ(δ(q1,a)∪ δ(q2,a)∪… ∪(δ(qk,a))
є
є
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-49
6. Sprachen, Compiler und Theorie
NFAs nach DFAs (2/2)
„
b
NFA
q2
є
a,b
q4
q1
є
q3
…
a
b
a,b
Schritt 1: Der Startzustand
„
Schritt 2: Zustand {q1,q2,q3}
…
q5
…
a,b
a
{q4,q5}
a,b
„
Schritt 3: Zustand {q4,q5}
…
b
{q2,q4,q5}
b
δD({q1,q2,q3},b) =
є-FZ(δ(q1,b)∪δ(q2,b)∪δ(q3,b)) =
є-FZ({q2,q4}∪{q2,q4}∪ {q5}) =
{q2,q4,q5}
{q5}
a
{q1,q2,q3}
δD({q1,q2,q3},a) =
є-FZ(δ(q1,a)∪δ(q2,a)∪δ(q3,a)) =
є-FZ({q5}∪{q5}∪ {q4}) =
{q4,q5}
a
b
DFA
qD= є-FZ({q1}) = {q1,q2,q3}
„
…
Schritt 4: Zustand {q2,q4,q5}
…
…
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-51
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.2-50
6. Sprachen, Compiler und Theorie
Der Kompilationsprozess (-phasen)
Informatik II
SS 2004
Scanner (lexikalische Analyse)
Lese Programm und konvertiere Zeichenstrom in Marken
(tokens).
Parser (syntaktische Analyse)
Lese Tokenstrom und generiere Parserbaum (parse tree).
Semantische Analyse
Teil 6: Sprachen, Compiler und Theorie
3 – Syntaktische Analyse
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
Lehrstuhl für Telematik
Institut für Informatik
Traversiere Parserbaum, überprüfe nicht-syntaktische
Regeln.
Zwischencodegenerierung
Traversiere Parserbaum noch mal, gebe Zwischencode
aus.
Optimierung
Untersuche Zwischencode, versuche ihn zu verbessern.
Zielcodegenerierung
Übersetze Zwischencode in Assembler-/Maschinencode
Optimierung Maschinenebene
Untersuche Maschinencode, versuche ihn zu verbessern.
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Lexikalische Analyse
„
„
„
Der Kompilationsprozess (-phasen)
Die lexikalische Analyse gruppiert Zeichensequenzen in Tokens
(Marken) bzw. Symbole
Tokens sind die kleinste „Bedeutungseinheit“ (units of meaning) im
Kompilationsprozess und sind die Grundlage (foundation) fürs
Parsen (Syntaxanalyse)
Die Compilerkomponente zum Ausführen der lexikalischen Analyse
ist der Scanner, welcher oftmals ausgehend von höheren
Spezifikationen automatisch generiert wird
Scanner (lexikalische Analyse)
Lese Programm und konvertiere Zeichenstrom in Marken
(tokens).
Parser (syntaktische Analyse)
Lese Tokenstrom und generiere Ableitungsbaum (parse
tree).
Semantische Analyse
6.3-3
Traversiere Parserbaum, überprüfe nicht-syntaktische
Regeln.
Zwischencodegenerierung
Traversiere Parserbaum noch mal, gebe Zwischencode
aus.
Optimierung
Untersuche Zwischencode, versuche ihn zu verbessern.
Zielcodegenerierung
Übersetze Zwischencode in Assembler-/Maschinencode
Optimierung Maschinenebene
Untersuche Maschinencode, versuche ihn zu verbessern.
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-2
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-4
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Syntaktische Analyse
„
„
„
Die lexikalische Analyse erzeugt einen Strom von Symbolen
(Tokens)
Falsche Detailebene für die semantische Analyse und
Codegenerierung
Die Syntaxanalyse gruppiert eine Zeichenfolge von Tokens in
Ableitungsbäume (Struktur-/Parser-/Syntaxbäume), was durch
die kontextfreie Grammatik gelenkt wird, die die Syntax der zu
kompilierenden Sprache spezifiziert
…
„
„
Beispiel Syntaxanalyse
conditional -> if ( expr ) block else block
Ableitungsbäume repräsentieren die Phrasenstruktur eines
Programms und sind die Grundlage für die semantische Analyse
und Codegenerierung
Die Compilerkomponente zum Ausführen der syntaktischen Analyse
ist der Parser, welcher oftmals ausgehend von höheren
Spezifikationen automatisch generiert wird
conditional
Token
if
>
i
–
else
j
;
(
j
=
j
j
–
}
i
)
i
;
=
i
(
expr
id
comp
id
i
>
j
if
block
)
statement
statement
6.3-5
…
…
…
„
…
…
„
digit=[0-9]
letter=[a-z]
id=letter.(letter|digit)*
Kann Identitäten von id durch
Substitution entfernen:
id=[0-9].([a-z]|[0-9])*
id ist ein regulärer Ausdruck
„
id
j
-
i
i
id
op
id
i
-
j
6.3-6
Eine kontextfreie Grammatik (KFG/CFG) ist eine rekursive Definition einer
Sprache mit:
…
Einem Alphabet Σ von Symbolen
…
Eine Menge von Produktionen (oder Regeln) der Form
Identitäten:
…
…
…
„
digits=[0-9]+
sum=expr.’+’.expr
expr=(‘(‘.sum.’)’) | digits
Kann nicht Identitäten von expr
durch Substitution entfernen:
…
…
expr ist durch Rekursion definiert
expr ist kein regulärer Ausdruck
symbol -> symbol symbol … symbol
…
Ein Startsymbol
…
Eine Menge von nicht-terminalen Symbolen aus dem Alphabet Σ, welche auf
der linken oder rechten Seite einer Produktionsregel erscheinen darf
(convention: written in all capital letters)
…
Eine Menge von terminalen Symbolen aus dem Alphabet Σ, welche nur auf der
rechten Seite einer Produktionsregel erscheinen darf. (convention: written in all
lower case letters)
…
Die Menge aller von einer CFG G erzeugten Strings wird die Sprache von G
genannt und wird symbolisiert durch L(G)
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
op
Kontextfreie Grammatiken (1/4)
Warum können wir nicht reguläre Ausdrücke zum Beschreiben der
Syntax einer Programmiersprache verwenden?
Betrachte die folgenden Beschreibungen:
Identitäten:
id
Syntaktische Analyse
„
„
j
expr
expr
6. Sprachen, Compiler und Theorie
Syntaxbeschreibung
„
=
=
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
„
id
id
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
block
else
6.3-7
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-8
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Kontextfreie Grammatiken (2/4)
„
Kontextfreie Grammatiken (3/4)
Kurzschreibweisen:
…
„
Alternativen
„
„
„
„
„
s->a1..an|b1..bn|…|z1..zn =
s->a1..an
s->b1..bn
…
s->z1..zn
…
…
…
„
…
Wenn eine CFG G zum Parsen von Programmiersprachen
verwendet wird, dann gilt
Beispiel:
Kleenesche * Hülle
„
„
„
„
L(G) ist die Menge von gültigen Quellprogrammen, und
die terminalen Symbole sind die Tokens, welche vom Scanner
zurückgeliefert werden
Klammergrammatik
expr -> LPAREN sum RPAREN
expr -> INT
sum -> expr PLUS expr
s->s1*
s->s1’
s1’->s1 s1’
s1’->є
Terminale: {PLUS,LPAREN,RPAREN,INT}
… Nichtterminale: {sum,expr}
… Startsymbol: {expr}
… Σ = Terminale ∪ Nichtterminale
…
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-9
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Kontextfreie Grammatiken (4/4)
„
Ableitungen (1/4)
Eine CFG G erzeugt Zeichenketten durch:
„
…
Beginne mit dem Startsymbol
…
Ersetze ein nichtterminales Symbol sk auf der rechten Seite mit der
rechten Seite dieses Nichtterminals
„
„
„
…
…
…
Grammatik:
expr -> ( sum )
expr -> INT
sum -> expr + expr
s ⇒ s1 s2 … sn
„
Gegeben: sk -> k1…km
Dann: s ⇒ s1…sk…sn ⇒ s1…k1…km…sn
Wiederhole bis nur noch Terminal auf der linken Seite sind
Jeder Schritt in diesem Prozess wird Ableitung (derivation) genannt
und jede Zeichenkette von Symbolen entlang dieses Weges wird
Satzform genannt.
Die abschließende Satzform, welche nur Terminalsymbole enthält, wird
ein Satz (sentence) der Grammatik oder auch das Ergebnis (yield) des
Ableitungsprozesses genannt
Mögliche Ableitungen:
expr ⇒ ( sum )
⇒ ( expr + expr )
⇒ ( INT + expr )
⇒ (INT + ( sum ) )
⇒ (INT + ( expr + expr ) )
⇒ (INT + ( INT + expr ) )
⇒ (INT + (INT + INT ) )
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-10
6.3-11
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-12
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Ableitungen (2/4)
„
Rechtsseitige Ableitungen (rightmost derivations)
…
…
„
…
„
„
Eine Ableitung (oder Herleitung) ist eine Operationenfolge von
Ersetzungen, welche zeigen wie eine Zeichenkette von Terminalen
(Tokens), ausgehend vom Startsymbol einer Grammatik, abgeleitet
werden kann
„
Unter der Annahme es gibt eine Produktion X -> y, eine einzelne
Ersatzoperation oder ein Ableitungsschritt, dann können diese
beschrieben werden durch αXβ⇒αγβ, für beliebige Zeichenketten von
Grammatiksymbolen α, β und γ
„
Kurzschreibweisen:
Ersetze jeweils das äußerste rechte Nichtterminalsymbol in jedem
Ableitungsschritt
Wird manchmal auch die kanonische Ableitung genannt
Linksseitige Ableitungen (leftmost derivations)
…
„
Ableitungen (3/4)
Ersetze jeweils das äußerste linke Nichtterminalsymbol in jedem
Ableitungsschritt
Siehe vorherige Folie
Andere Ableitungsreihenfolgen sind möglich
…
Die meisten Parser suchen nach entweder einer rechtsseitigen oder
linksseitigen Ableitung
…
…
α ⇒* β bedeutet β kann abgeleitet werden von α in 0 oder mehr Schritten
α ⇒+ β bedeutet β kann abgeleitet werden von α in 1 oder mehr Schritten
α ⇒n β bedeutet β kann abgeleitet werden von α in genau n Schritten
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-13
6. Sprachen, Compiler und Theorie
Beispiel Ableitungen
„
Linksseitige Ableitungen (leftmost derivations):
…
…
Grammatik:
expr -> ( sum ) | INT
sum -> expr + expr
Für jeden Ableitungsschritt αXβ⇒αγβ, muss X das äußerte linke
Nichtterminal im String von Symbolen αXβ sein
Wird verwendet in LL(k) bzw. top-down parsen
Linksseitige Ableitung:
„
expr ⇒ ( sum )
⇒
( expr + expr )
⇒
( INT + expr )
⇒
(INT + ( sum ) )
⇒
(INT + ( expr + expr ) )
⇒
(INT + ( INT + expr ) )
⇒
(INT + (INT + INT ) )
Rechtsseitige Ableitungen (rightmost derivations):
…
…
…
Für jeden Ableitungsschritt αXβ⇒αγβ, muss X das äußerte rechte
Nichtterminal im String von Symbolen αXβ sein
Wird verwendet in LR(k) bzw. bottom-up parsen
Wird manchmal auch die kanonische Ableitung genannt
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-14
6. Sprachen, Compiler und Theorie
Ableitungen (4/4)
„
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-15
„
Eingabe:
(INT + (INT + INT))
Rechtsseitige Ableitung:
expr ⇒ ( sum )
⇒ ( expr + expr )
⇒ ( expr + ( sum ) )
⇒ (expr + ( expr + expr) )
⇒ (expr + ( expr + INT ) )
⇒ (expr + ( INT + INT ) )
⇒ (INT + (INT + INT ) )
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-16
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Ableitungen und Ableitungsbäume (1/2)
„
„
„
„
Ableitungen und Ableitungsbäume (2/2)
Ein Ableitungsbaum ist eine graphische Repräsentation des
Ableitungsprozesses
expr
expr
⇒
( sum)
⇒
( expr + expr )
expr
Innere Knoten von Ableitungsbäumen entsprechen den
Nichtterminalsymbolen der Grammatik (Produktionen auf der
linken Seite)
⇒
( INT + expr )
INT
⇒
(INT + ( sum ) )
Die meisten Parser konstruieren einen Ableitungsbaum während
des Ableitungsprozesses für eine spätere Analyse
⇒
(INT + ( expr + expr ) )
expr
⇒
(INT + ( INT + expr ) )
INT
⇒
(INT + (INT + INT ) )
Blätter eines Ableitungsbaumes entsprechen den
Terminalsymbolen (Token) der Grammatik
(
sum
)
+
expr
(
sum
)
+
expr
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-17
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
„
Mehrdeutigkeiten (2/2)
Eine Grammatik gilt als Mehrdeutig, wenn ein Satz mit (mind.) zwei
verschiedenen Ableitungsbäumen abgeleitet werden kann
Beispiel – linksseitige versus rechtsseitige Ableitung:
…
„
Berühmteres Beispiel – “dangling else”
…
…
Grammatik:
Programmfragment: if a then if b then s1 else s2
Kann interpretiert werden als:
„
„
expression -> identifier | number | - expression | ( expression ) |
expression operator expression
operator -> + | - | * | /
…
„
Eingabe: slope * x + intercept
„
1) if a then { if b then s1 else s2}
2) if a then { if b then s1 } else s2
Mehrdeutigkeit kann manchmal durch die Auswahl eines
akzeptierenden Ableitungsbaumes aus mehreren gehandhabt
werden
…
Zum Beispiel, obige Interpretation #1 wird von den meisten Parsern für
Sprachen die die „dangling else“ Mehrdeutigkeit haben ausgewählt
Generell ist Mehrdeutigkeit jedoch ein Zeichen dafür, dass die
Grammatik „schlecht“ spezifiziert wurde und umgeschrieben werden
sollte um Mehrdeutigkeiten zu beseitigen
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-18
6. Sprachen, Compiler und Theorie
Mehrdeutigkeiten (1/2)
„
INT
6.3-19
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-20
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Grammatiken und Parser
„
„
Kontextfreie Grammatiken erzeugen durch den Ableitungsprozess
Strings (oder Sätze)
Die kontextfreien Sprachen sind definiert durch
…
…
„
„
„
„
Kellerautomat (1/4)
LCF={L(G): Alle kontextfreien Grammatiken G}
Mit anderen Worten: Die Menge aller Sprachen von allen kontextfreien
Grammatiken
Ein Parser für eine kontextfreie Grammatik erkennt Strings in der
Grammatiksprache
Parser können automatisch aus einer kontextfreien Grammatik
generiert werden
Parser zum Erkennen von allgemeinen kontextfreien Sprachen
können langsam sein
Parser, die nur eine Untermenge von kontextfreien Sprachen
erkennen können, können so gestaltet werden, dass sie schneller
sind
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-21
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Kellerautomat (2/4)
„
„
„
Kellerautomat (3/4)
Kontextfreie Grammatiken können von Kellerautomaten (Push
Down Automata, PDA) erkannt werden
PDAs sind eine Erweiterung der endlichen Automaten um ein
„einfaches“ Gedächtnis (Hilfsband)
Eigenschaften eines Kellerautomaten:
…
…
…
…
„
Das Hilfsband heißt auch Kellerstapel oder einfach Stapel (engl.
stack ).
…
…
Das Eingabeband kann sich nur in eine Richtung bewegen.
Es existiert ein "Hilfsband", welches sich in beide Richtungen bewegen
kann.
Der Automat liest im ersten Schritt die jeweils erste Zelle beider Bänder.
Als Reaktion des Automaten kann entweder das Hilfsband vorwärts
bewegt und ein Zeichen in die nächste Zelle geschrieben werden oder
das Symbol gelöscht und das Hilfsband eine Zelle zurück bewegt
werden.
„
„
„
„
Ein Element kann immer nur oben auf den Stapel gelegt (bzw. an das
Ende des Bandes geschrieben) werden (= push ).
Immer nur das oberste (letzte) Element kann wieder vom Stapel entfernt
werden (= pop ).
Die erste Zelle des Hilfsbandes enthält eine spezielle
Kennzeichnung, um anzuzeigen, wann der Stapel leer ist. Ein
Kellerautomat kann bei leerem Stapel nicht weiterarbeiten.
Kellerautomaten arbeiten eigentlich nicht-deterministisch,
nichtdeterministische Kellerautomaten sind aber in deterministische
überführbar
ε-Bewegungen sind erlaubt
Eine Eingabe wird genau dann erlaubt, wenn es möglich ist, eine
Konfiguration zu erreichen, bei der die gesamte Eingabe gelesen
wurde und der Stapel leer ist.
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-22
6.3-23
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-24
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Kellerautomat (4/4)
„
PDA-Übergangsfunktionen
Ein Kellerautomat (=pushdown automaton, PDA) ist ein
Septupel P = {Q, Σ, Γ, δ, q0, Z0, F } mit:
…
…
…
…
…
…
…
Q
Σ
Γ
δ
q0
Z0
F
„
Die Ausgabe von δ besteht aus einer endlichen Menge von Paaren (p, γ),
wobei p für den neuen Zustand und γ für die Zeichenreihe der Stacksymbole steht, die X auf dem oberen Ende des Stacks ersetzt.
Wenn γ = ε, dann wird das oberste Stacksymbol wird gelöscht. (pop-Operation)
Wenn γ = X, dann bleibt der Stack unverändert.
… Wenn γ = YZ, dann wird X durch Z ersetzt und Y zuoberst auf dem Stack
abgelegt. (push-Operation)
…
Zustandsmenge, |Q | < ∞
Eingabealphabet, |Σ| < ∞
Stackalphabet, |Γ| < ∞
Übergangsfunktion (ZustandsÜF)
δ(q,a,X) mit q ∈ Q, a ∈ {Σ, ε}, X ∈ Γ
Anfangszustand
Startsymbol (für Stack)
Endzustände, F ⊆ Q
…
„
„
Da PDAs nicht-deterministisch arbeiten, kann die Ausgabe von δ eine
Menge an Paaren ergeben, z.B.
δ(q, a, X) = { (p, YZ), (r, ε) }
Die Paare müssen dabei als Einheit betrachtet und behandelt werden.
Wenn sich der PDA im Zustand q befindet, X das oberste Stacksymbol
ist und die Eingabe a gelesen wird, kann
…
…
in den Zustand p gewechselt und X durch YZ ersetzt werden, oder
in den Zustand r gewechselt und X vom Stack entfernt werden.
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-25
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Beispiel PDA: Palindrome
„
Schreibkonventionen für PDAs
Formelle Beschreibung:
P = ({q0,q1,q2},{0,1},{0,1,Z0}, δ, q0, Z0, {q2})
…
…
…
…
…
δ(q0, 0, Z0) = {(q0,0 Z0)}
δ(q0, 1, Z0) = {(q0,1 Z0)}
δ(q0, 0, 0) = {(q0,00)}
δ(q0, 0, 1) = {(q0,01)}
δ(q0, 1, 0) = {(q0,10)}
δ(q0, 1, 1) = {(q0,11)}
δ(q0, ε, Z0)= {(q1, Z0)}
δ(q0, ε, 0) = {(q1, 0)}
δ(q0, ε, 1) = {(q1, 1)}
δ(q1, 0, 0) = {(q1, ε)}
δ(q1, 1, 1) = {(q1, ε)}
δ(q1, ε, Z0)= {(q2, Z0)}
„
„
„
Æ lesen und push
„
„
Æ lesen und push
a, b, ... ∈ Σ
p, q, ... ∈ Q
w, z, ... = Zeichenreihen aus Σ (Terminale)
X, Y, ... = Γ
α, β, γ, ... = Zeichenreihen aus Γ (Nichtterminale)
Æ Wechsel nach q1, ohne Stack
zu verändern
Æ lesen, vergleichen, pop
Æ Z0 erreicht, akzeptiert
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-26
6.3-27
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-28
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Beschreibung der Konfiguration eines PDA (1/2)
„
„
Beschreibung der Konfiguration eines PDA (2/2)
Im Gegensatz zum endlichen Automaten, bei denen lediglich der
Zustand (neben dem Eingabesymbol) für einen Übergang von
Bedeutung ist, umfasst die Konfiguration eines PDA sowohl den
Zustand als auch den Inhalt des Stacks.
Die Konfiguration wird daher durch das Tripel (q, w, γ) dargestellt,
wobei
…
…
…
q
w
γ
für den Zustand,
für die verbleibende Eingabe,
für den Inhalt des Stacks steht.
„
„
Sei P = {Q, Σ, Γ, δ, q0, Z0, F } ein PDA.
Angenommen, δ(q, a, X) enthält (p, α).
Dann gilt für alle Zeichenreihen w aus Σ* und β aus Γ*:
(q, aw, X β) ⊢ (p, w, αβ)
D.h., der Automat kann vom Zustand q in den Zustand p übergehen, indem
er das Symbol a (das ε sein kann) aus der Eingabe einliest und X auf dem
Stack durch α ersetzt. (Die restliche Eingabe w und der restliche Inhalt des
Stacks β beeinflussen die Aktion des PDA nicht!)
(Das obere Ende des Stacks steht am linken Ende von γ.)
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-29
6. Sprachen, Compiler und Theorie
…
„
„
„
…
Eingabe wird von links-nach-rechts
(1. L) abgearbeitet
… linksseitige Ableitung (2. L)
… “top down” oder “prädiktive”
(voraussagende) Parser genannt
„
…
…
Eingabe wird von links-nach-rechts
(1. L) abgearbeitet
… rechtsseitige Ableitung (2. R)
… “bottom up” oder “schiebe-reduziere“
(shift-reduce) Parser genannt
„
Sei P = {Q, Σ, Γ, δ, q0, Z0, F } ein PDA.
Dann ist die Sprache N(P ), die von P durch Endzustand akzeptiert wird,
{w | (q0, w, Z0) ⊢* (q, ε, ε) für einen beliebigen Zustand q.
N(P) ist die Menge der Eingabezeichenreihen w, die P einlesen kann
und bei der er gleichzeitig den Stack leeren kann.
6.3-31
“k” steht für die Anzahl von Symbolen
(token) für die in der Eingabe
vorausgeschaut werden muss um
eine Entscheidung treffen zu können
LL(k) – welche nächste Produktion auf
der rechten Seite ist bei einer
linksseitigen Ableitung zu wählen
… LR(k) – ob zu schieben oder reduzieren
…
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
LR(k) parsers
…
Sei P = {Q, Σ, Γ, δ, q0, Z0, F } ein PDA.
Dann ist die Sprache L(P ), die von P durch Endzustand akzeptiert wird,
{w | (q0, w, Z0) ⊢*p (q, ε, β) für einen Zustand q in F und eine
Stackzeichenreihe α.
Akzeptanz durch leeren Stack
…
LL(k) Parser
…
Akzeptanz durch Endzustand
Akzeptanz durch leeren Stack
Zwar unterscheiden sich die Sprachen, die die jeweiligen PDAs
akzeptieren, aber sie sind jeweils ineinander überführbar.
Akzeptanz durch Endzustand
…
„
Klassen von Grammatiken und Parsern
Es gibt zwei Ansätze, wann ein PDA eine Eingabe akzeptiert:
…
6.3-30
6. Sprachen, Compiler und Theorie
Akzeptanzzustände von PDAs
„
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-32
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Top-down versus
Bottom-up Syntaxanalyse (2/2)
Top-down versus Bottom-up Syntaxanalyse (1/2)
„
Top-down oder LL-Syntaxanalyse
…
…
„
Baue den Ableitungsbaum von der Wurzel aus bis hinunter zu den
Blättern auf
Berechne in jedem Schritt voraus welche Produktion zu verwenden ist
um den aktuellen nichtterminalen Knoten des Ableitungsbaumes
aufzuweiten (expand), indem die nächsten k Eingabesymbole betrachtet
werden
id_list -> id id_list_tail
id_list_tail -> , id id_list_tail
id_list_tail -> ;
„
„
Bottom-up oder LR-Syntaxanalyse
…
…
Grammatik:
Beispiel Strings:
A;
A, B, C;
Baue den Ableitungsbaum von den Blättern aus bis hinauf zu der
Wurzel auf
Ermittle in jedem Schritt, ob eine Kollektion von Ableitungsbaumknoten
zu einem einzelnen Vorgängerknoten zusammengefasst werden kann
oder nicht
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-33
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Syntaxanalyse durch rekursiven Abstieg (1/4)
„
„
„
„
Syntaxanalyse durch rekursiven Abstieg (2/4)
Rekursiver Abstieg ist ein Weg um LL (top-down) Parser zu
implementieren
„
Rekursiver Abstieg ist ein Weg um LL(1)-Parser zu implementieren:
…
Es ist einfach von Hand zu schreiben
…
Es wird kein Parsergenerator benötigt
„
Jedes nichtterminale Symbol in der Grammatik hat einen
Prozeduraufruf
Erinnerung: LL(1)-Parser machen linksseitige Ableitungen, unter
Verwendung von höchstens 1 Symbol in der Vorausschau, um zu
entscheiden welche rechte Seite einer Produktion verwendet wird, um
ein linksseitiges Nichtterminal in einer Satzform zu ersetzen.
LL(1)-Parser Beispiel:
…
Grammatikfragment:
…
Wenn die Satzform “n1 … nk factor sm … sn” lautet, dann sollte die
nächste Satzform folgende sein:
„
Es muss im Stande sein die nächste, anzuwendende, linksseitige
Ableitung zu bestimmen (predict), indem nur die nächsten k
Symbole angeschaut werden
…
6.3-34
„
„
factor -> ( expr ) | [ sexpr ]
“n1 … nk ( expr ) sm … sn” oder
“n1 … nk [ sexpr ] sm … sn”
k ist üblicherweise 1
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-35
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-36
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Syntaxanalyse durch rekursiven Abstieg (3/4)
Syntaxanalyse durch rekursiven Abstieg (4/4)
Grammatik für eine
Kalkulatorsprache
Ableitungsbaum für
Beispieleingabe:
read A
read B
sum := A + B
write sum
write sum / 2
Beispieleingabe:
read A
read B
sum := A + B
write sum
write sum / 2
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-37
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
LL-Syntaxanalyse
„
Probleme mit der LL-Syntaxanalyse (1/4)
Finde zu einer Eingabe von Terminalsymbolen (tokens) passende
Produktionen in einer Grammatik durch Herstellung von
linksseitigen Ableitungen
„
Linksrekursion
…
Produktionen von der Form:
„
„
„
„
Für eine gegebene Menge von Produktionen für ein Nichtterminal,
X->y1|…|γn, und einen gegebenen, linksseitigen Ableitungsschritt
αXβ ⇒ αγiβ, müssen wir im Stande sein zu bestimmen welches γi
zu wählen ist indem nur die nächsten k Eingabesymbole
angeschaut werden
Anmerkung:
…
Für eine gegebene Menge von linksseitigen Ableitungsschritten,
ausgehend vom Startsymbol S ⇒ αXβ, wird der String von Symbolen
α nur aus Terminalen bestehen und repräsentiert den passenden
Eingabeabschnitt zu den bisherigen Grammatikproduktionen
…
Wenn eine Grammatik linksrekursive Produktionen enthält, dann kann
es dafür keinen LL Parser geben
„
…
A -> Aα
A -> β
LL Parser würden in eine Endlosschleife eintreten, wenn versucht wird eine
linksseitige Ableitung in solch einer Grammatik vorzunehmen
Linksrekursion kann durch das Umschreiben der Grammatik
ausgeschlossen werden
„
„
A -> βA’
A’ -> αA’ | є
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-38
6.3-39
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-40
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Probleme mit der LL-Syntaxanalyse (2/4)
„
Linksrekursion: Nicht formale Rechtfertigung
…
Originalgrammatik:
„
„
…
…
A -> Aα
A -> β
Ableitungen:
„
…
„
Umgeschriebene Grammatik:
„
A ⇒ Aα ⇒ Aαα ⇒ Aααα ⇒*
βααα…
„
Probleme mit der LL-Syntaxanalyse (3/4)
Gemeinsame Präfixe
…
A -> βA’
A’ -> αA’ | є
Tritt auf wenn zwei verschiedene Produktionen mit der gleichen linken
Seite mit den gleichen Symbolen anfangen
„
…
A ⇒ βA’ ⇒ βαA’ ⇒ βααA’ ⇒*
βααα…
„
Linksrekursion: Beispiel
…
Grammatik:
„
„
…
Produktionen der Form:
…
Ableitungen:
…
id_list -> id_list_prefix ;
id_list_prefix -> id_list_prefix , id | id
A -> bα
A -> bβ
LL(1) Parser kann nicht entscheiden welche Regel auszuwählen ist, wenn A
in einem linksseitigen Ableitungsschritt zu ersetzen ist, weil beide rechten
Seiten mit dem gleichen Terminalsymbol anfangen
Kann durch Faktorisierung ausgeschlossen werden:
„
„
A -> bA’
A’ -> α | β
Linksrekursion kann durch das Umschreiben der Grammatik
ausgeschlossen werden
„
„
id_list -> id id_list_tail
id_list_tail -> , id id_list_tail | ;
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-41
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Probleme mit der LL-Syntaxanalyse (4/4)
„
Bau eines Top-Down Parsers mit rekursivem Abstieg (1/2)
Gemeinsame Präfixe
…
„
…
„
Beispiel:
„
stmt -> id := expr
stmt -> id ( argument_list )
Für jedes Nichtterminal in einer Grammatik wird ein Unterprogramm
erzeugt, welches einem einzelnen linksseitigen Ableitungsschritt
entspricht, wenn es aufgerufen wird
…
Gemeinsame Präfixe können durch das Umschreiben der Grammatik
ausgeschlossen werden
„
„
6.3-42
Beispiel:
„
„
factor -> ( expr )
factor -> [ sexpr ]
void factor (void) {
switch(next_token()) {
stmt -> id stmt_list_tail
stmt_list_tail -> expr | ( argument_list )
case ‘(‘:
expr(); match(‘)’); break;
case ‘[‘:
„
„
Der Ausschluss von Linksrekursion und gemeinsame Präfixe
garantiert nicht das eine Grammatik LL wird
Wenn wir keinen LL Parser für eine Grammatik finden können, dann
müssen wir einen mächtigere Technik verwenden
…
sexpr(); match(‘]’); break;
}
„
Schwieriger Teil:
…
z.B., LALR(1) – Grammatiken
Herausbekommen welches Token den ‚case‘ Arm vom switch Befehl
benennt
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-43
}
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-44
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Bau eines Top-Down Parsers mit rekursivem Abstieg (2/2)
„
PREDICT-Mengen (Vorhersagemengen)
…
…
…
PREDICT Mengen teilen uns mit, welche rechte Seite einer Produktion bei
einer linken Ableitung auszuwählen ist, wenn mehrere zur Auswahl stehen
PREDICT-Mengen dienen somit als Grundlage für Ableitungstabellen
(Parse-Tabellen) bzw. sind eine andere Teildarstellungsform für die
Tabellen
Wird in Form von FIRST-, FOLLOW- und NULLABLE-Mengen definiert :
„
„
„
„
Sei A ein Nichtterminal und α beliebig, dann gilt
PREDICT(A->α) = FIRST(α) ∪ FOLLOW(A) wenn NULLABLE(α)
PREDICT(A->α) = FIRST(α) wenn nicht NULLABLE(α)
FIRST-Mengen
„
Sei α eine beliebige Folge von Grammatiksymbolen (Terminale
und Nichtterminale)
„
FIRST(α) ist die Menge aller Terminalsymbolen a mit denen ein
aus α abgeleiteter String beginnen kann:
FIRST(α) ist { a: α ⇒* aβ}
„
Gilt α ⇒* є, dann ist auch є in FIRST(α)
NULLABLE-Mengen
…
…
Sei X ein Nichtterminal
NULLABLE(X) ist wahr wenn gilt X ⇒* є (X kann den leeren String
ableiten)
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-45
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Berechnung von FIRST-Mengen (1/2)
Berechnung von FIRST-Mengen (2/2)
Für alle Grammatiksymbole X wird FIRST(X) berechnet, indem die
folgenden Regeln solange angewandt werden, bis zu keiner FIRSTMenge mehr ein neues Terminal oder є hinzukommt:
„
6.3-46
„
Folglich gilt:
…
Elemente aus FIRST(Y1) gehören immer auch zu FIRST(X)
…
Ist є nicht aus Y1 ableitbar (NICHT NULLABLE), dann brauch nichts
mehr hinzugefügt werden
1.
Wenn X ein Terminal ist, dann ist FIRST(X)={X}
2.
Wenn X → ε eine Produktion ist, dann füge ε zu FIRST(X) hinzu
…
Ist є aus Y1 ableitbar (NULLABLE), dann muss auch FIRST(Y2) zu
FIRST(X) hinzugefügt werden
Wenn X Nichtterminal und X → Y1Y2Y3 KYk
nehme a zu FIRST(X) hinzu, falls
…
Ist є aus Y2 ableitbar (NULLABLE), dann muss auch FIRST(Y3) zu
FIRST(X) hinzugefügt werden
usw.
3.
eine Produktion ist, dann
(a) a für irgendein i in FIRST(Yi) und
(b) ein ε in allen FIRST(Y1), ..., FIRST(Yi-1) enthalten ist (Y1...Yi-1 sind alle
NULLABLE)
…
…
є wird nur zu FIRST(X) hinzugefügt, wenn es in allen Mengen
FIRST(Y1), ... ,FIRST(Yk) enthalten ist
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-47
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-48
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
FOLLOW-Mengen
Berechnung von FOLLOW-Mengen
„
Sei A ein Nichtterminal
„
FOLLOW(A) ist die Menge aller Terminalsymbole a, die in einer
Satzform direkt rechts neben A stehen können ( sei S Startregel;
α, β beliebig):
„
Follow(A) wird für alle Nichtterminale A berechnet, indem die
folgenden Regeln solange angewandt werden, bis keine FollowMenge mehr vergrößert werden kann:
1.
Sei S das Startsymbol und $ die Endemarkierung, dann nehme $ in
FOLLOW(S) auf
FOLLOW(A) ist { a:S ⇒* αAaβ }
„
Achtung: Zwischen A und a können während der Ableitung
Symbole gestanden haben, die aber verschwunden sind, weil aus
Ihnen є abgeleitet wurde!
„
Gibt es eine Satzform, in der A das am weitesten rechts stehende
Symbol ist, dann gehört auch $ (die Endemarkierung) zu
FOLLOW(A)
2.
3.
Wenn es eine Produktion A → αBβ gibt, dann wird jedes
Element von FIRST(β ) mit Ausnahme von ε auch in
FOLLOW(B) aufgenommen.
Wenn es Produktionen A → αB oder A → αBβ gibt und FIRST(β )
enthält (d.h. β ⇒*ε ), dann gehört jedes Element von FOLLOW(A)
auch zu FOLLOW(B)
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-49
6. Sprachen, Compiler und Theorie
S -> s$
B -> є
A -> B
S -> A B S
B -> b
A -> a
Schritt 1: i=0
NULLABLE
FIRST
FOLLOW
A
False
{a}
{}
B
True
{b, є}
{}
S
False
{s}
{$}
S
A
True
{a,b,є}
{b,s}
B
True
{b, є}
S
False
{s,a,b}
True
{a,b,є}
{b,s,a}
S -> A B S B -> b
A -> a
B
True
{b, є}
{s,a,b}
S
False
{s,a,b}
{$}
FOLLOW
A
True
{a,b,є}
{b}
B
True
{b, є}
{s}
A->B
{a,b,є,s}
False
{s,a}
{$}
A->a
{a}
B->є
{a,b,s}
PREDICT
FIRST
FOLLOW
B->b
{b, є}
A
True
{a,b,є}
{b,s,a}
S->s$
{s,a}
B
True
{s,a,b}
{s}
{b, є}
S->ABS
{$}
S
False
{s,a,b}
{$}
„
„
{a,b,s}
Syntaktische Analyse
6.3-51
FOLLOW
A
NULLABLE
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
FIRST
A -> B
FIRST
Schritt 4: i=3
NULLABLE
B -> є
S -> s$
NULLABLE
Schritt 3: i=2
FOLLOW
6.3-50
Beispiel für PREDICT-Mengen
Schritt 2: i=1
FIRST
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
Beispiel für NULLABLE-, FIRST- und FOLLOW-Mengen
NULLABLE
ε
PREDICT-Mengen zeigen uns welche
Menge von look-ahead Symbolen die
rechte Seite einer Produktion selektiert
Diese Grammatik ist NICHT LL(1), da
es duplizierte Symbole in den
PREDICT-Mengen für alle drei
Nichtterminale gibt
…
Siehe Hervorhebungen (dick, rot)
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-52
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
LL(k) Eigenschaften
„
Ableitungsbäume und Parser mit rekursivem Abstieg (1/2)
Satz: Jede kontextfreie Grammatik G ist genau dann LL(1), wenn für
alle Alternativen A ⇒ α1| α2 | ... | αn gilt
1.
2.
…
„
FIRST(α1), ..., First(αn) paarweise disjunkt,
falls αi ⇒* є gilt, dann FIRST1(αj) ∩ FOLLOW1(A) = Ø für 1 ≤ j ≤ n, j ≠ i
In Worten:
„
„
„
Aus α1, α2 , ... und αn sind jeweils keine Strings ableitbar, wo zwei mit dem
gleichen Nichtterminal anfangen
Der leere String є kann nicht sowohl aus αi und αj für i ≠ j abgeleitet werden
Falls αi ⇒* є gilt, dann beginnt kein aus αi ableitbarer String mit einem
Terminal aus FOLLOW(A)
Die Beispielparser auf die wir bisher geschaut haben sind nur
Erkenner
…
„
Sie bestimmen, ob eine Eingabe syntaktisch korrekt ist, aber bauen
keinen Ableitungsbaum
Wie konstruieren wir dann einen Ableitungsbaum?
…
In Parser mit rekursivem Abstieg machen wir für jede nichtterminale
Funktion:
„
„
„
Konstruktion eines korrekten Ableitungsbaumknoten für sich selbst und
Verbindungen zu seinen Kindern
Geben den konstruierten Ableitungsbaumknoten an den Aufrufer zurück
Satz: Sei G kontextfreie Grammatik, k ≥ 0. G ist genau dann LL(k),
wenn gilt:
Sind A ⇒ β, A ⇒ ζ verschiedene Produktionen, dann
Firstk(βα) ∩ FIRSTk(ζα) = Ø für alle α, σ mit S ⇒* σ A α
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-53
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Ableitungsbäume und Parser mit rekursivem Abstieg (2/2)
„
Beispiel: Jedes nichtterminale Unterprogramm konstruiert einen
Ableitungsbaumknoten
node *factor (void) {
…
…
factor -> ( expr )
factor -> [ sexpr ]
6.3-54
Parsergeneratoren und Syntaxanalyse
„
„
switch(next_token()) {
Parsergeneratoren erzeugen ausgehend von der kontextfreien
Grammatik einen Parser
An Produktionen dürfen semantische Aktionen angehängt sein
…
case ‘(‘:
node = factor_node(expr());
…
match(‘)’); break;
Wenn ein Parser eine Produktion erkannt hat, dann wird die
semantische Aktion aufgerufen
Wird hauptsächlich dazu verwendet einen Ableitungsbaum explizit zu
konstruieren
case ‘[‘:
node = factor_node(sexpr());
„
Nicht alle Symbole werden zu
einem Ableitungsbaumknoten
…
„
Beispiele: ‘(‘, ‘)’, ‘[‘, ‘]’
Diese Art von Ableitungsbaum
}
wird „Abstrakter Syntaxbaum“
(abstract syntax tree, AST) genannt
match(‘]’); break;
}
return node;
„
Die Ausgabe eines Parsergenerators ist ein Programm in einer
Hochsprache (z.B. C, C++, oder Java) welches einen Symbolstrom
(token stream) von einem Lexer (für die lexikalische Analyse)
entgegen nimmt und welches einen Ableitungsbaum für die
nachfolgenden Compilerphasen produziert
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-55
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-56
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
ANTLR als Beispiel eines Parsergenerators
Rückblick
„
ANTLR Grammatikspezifikation
(parser.g)
lexikalischer
Analysator
(scanner.class)
Eingabe
10+(27-5);
(44-2)-(1-10);
„
Kontextfreie Grammatiken (KFG) und Sprachen (KFS),
Kellerautomat
Wichtige Algorithmen:
…
…
ANTLR
„
java parser.class
Syntaktische Analyse und Parser
…
(java antlr.Tool parser.g)
…
…
symbols.java
parser.java
…
Ausgabe
=32
=51
Auflösung von Linksrekursion und gemeinsame Präfixe
FIRST, FOLLOW, NULLABLE und PREDICT Mengen für kontextfreie
Grammatiken
Die Syntax einer Programmiersprache wird mit KFGs spezifiziert
Konstruktion eines Parsers mit rekursivem Abstieg anhand von KFGs
Automatische Generierung von Parsern anhand von KFGs
Parser erzeugen Ableitungsbäume für die Analyse und weitere
Verarbeitung in den nachfolgenden Compilerphasen
javac parser.java
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-57
6. Sprachen, Compiler und Theorie
Ausblick
„
„
„
„
Namen, Bindungen und Gültigkeitsbereiche (Kapitel 3)
Objektlebenszeit und Speichermanagement
Kontrollfluss (Kapitel 6)
Zusammenführung (Bau eines ausführbaren Programms) (Kapitel 9)
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-59
Syntaktische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.3-58
6. Sprachen, Compiler und Theorie
Namen, Bindungen und Gültigkeitsbereiche (1/3)
„
Namen
…
Informatik II
Ein mnemonischer Zeichenname wird verwendet um irgendetwas
anderes zu repräsentieren oder zu benennen (Mnemonic ist die
Bezeichnung für Ausdrücke deren Bedeutung vorwiegend durch die verwendete
Buchstabenfolge leicht behalten werden kann.)
„ Normalerweise Bezeichner (identifier)
SS 2004
…
Teil 6: Sprachen, Compiler und Theorie
Ist essentiell für Abstraktion
„
4 – Namen, Bindungen und Gültigkeitsbereiche
Erlaubt es Programmierern Werte zu bezeichnen damit die Notwendigkeit
zur direkten Manipulation von Adressen, Registernamen, etc. vermieden
wird
…
Beispiel: Es ist nicht notwendig zu wissen ob die Variable foo im Register $t0 oder
an der Speicherstelle 10000 gespeichert wird
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
„
Erlaubt es Programmierern einen einfachen Namen für ein potenziell
komplexes Programmstück stehen zu lassen
Lehrstuhl für Telematik
Institut für Informatik
„
Beide Fälle verringern die konzeptuelle Komplexität
…
Beispiel: foo = a*a + b*b + c*c + d*d;
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Namen, Bindungen und Gültigkeitsbereiche (2/3)
„
Namen, Bindungen und Gültigkeitsbereiche (3/3)
„
Bindungen
…
„
„
…
Gültigkeitsbereiche (Scope)
…
Ist eine Assoziation zwischen zwei Dingen
„
…
Ein Variablenname zu einem Wert
Ein Variablenname zu einer spezifischen Speicherstelle
Ein Typ und seine Repräsentation oder Layout im Speicher
Die Bindezeit ist die Zeit zu der eine solche Assoziation gemacht wird
…
Ist der Textbereich eines Programms in welchem eine Bindung aktiv ist
Java Beispiel:
public void foo (int a) {
Global Scope
int b;
while(a < n) {
int c;
Method Scope
c = a + a;
b = a * c;
Block Scope
a++;
}
}
Verbessert die Abstraktion durch die Kontrolle über die Sichtbarkeit von
Bindungen
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.4-2
6.4-3
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.4-4
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Bindezeitpunkte (1/8)
„
„
Wir unterscheiden 7 Zeitpunkte für die Entscheidung über eine
Bindung
„
Zeitpunkt des Sprachentwurfs
…
Entscheidungen welche vom Designer der Programmiersprache
gemacht wurden
…
Typische Beispiele:
Sprache
…
…
„
Bindezeitpunkte (2/8)
Entwurf
Implementierung (mit Compilern)
„
Programm
…
…
…
…
…
Programmierung (Schreiben des Programms)
Kompilation
Linken
Laden
Ausführen
Binden von Kontrollstrukturen (Bedingungen, Schleifen, etc.) zu Ihrer
abstrakten Bedeutung
…
„
„Befehle in einem while Schleifenblock werden ausgeführt bis die Bedingung nicht
mehr länger wahr ist“
Binden von primitiven Datentypnamen (int, float, char, etc.) zu Ihrer
geforderten Repräsentation
…
…
„Variablen vom Typ int beinhalten vorzeichenbehaftete Ganzzahlen“
„Variablen vom Typ int beinhalten vorzeichenbehaftete 32-bit Werte“
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.4-5
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Bindezeitpunkte (3/8)
„
Bindezeitpunkte (4/8)
„
Zeitpunkt der Sprachimplementierung
Zeitpunkt des Programmierens
…
…
…
…
Entscheidungen welche vom Compiler bzw. vom
Compilerprogrammierer gemacht wurden
„
Mit anderen Worten, Angelegenheiten der Sprachimplementierung die nicht
spezifisch während des Sprachentwurfs definiert wurden
„
„
„
Binden von primitiven Datentypen zu deren Repräsentationsgenauigkeit
(Anzahl der Bits)
…
Entscheidungen des Programmierers
Typische Beispiele:
„
Typische Beispiele:
„
…
…
„bytes sind 8-bits, shorts sind 16-bits, ints sind 32-bits, longs sind 64-bits“
Binden von Dateioperationen zur betriebssystemspezifischen
Implementierung dieser Operationen
…
Entscheidungen des Compilers
Typische Beispiele:
„
open() ist mit einem SYS_open Systemaufruf implementiert
Binden eines Algorithmus zu den Befehlen der Programmiersprache mit denen
der Algorithmus implementiert ist
Binden von Namen zu Variablen, welche für einen Algorithmus erforderlich sind
Binden von Datenstrukturen zu Sprachdatentypen
Zeitpunkt der Kompilation
„
„
„
Binden von höheren Konstrukten zu Maschinencode (Optimierung
eingeschlossen)
Binden von statisch definierten Datenstrukturen zu einem spezifischen
Speicherlayout
Binden von benutzerdefinierten Datentypen zu einem spezifischen
Speicherlayout
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.4-6
6.4-7
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.4-8
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Bindezeitpunkte (5/8)
„
Zeitpunkt des Verbindens (linken)
…
Entscheidungen des Linkers
…
Typische Beispiele:
„
„
„
„
Bindezeitpunkte (6/8)
„
Zeitpunkt der Programmausführung
Linker binden Programmmodule zusammen
Binden von Objekten (Unterprogramme und Daten) zu einem spezifischen
Platz in einer ausführbaren Datei
Binden von Namen, welche Objekte in anderen Modulen referenzieren, zu
deren tatsächlichen Ortsreferenz
…
Entscheidungen welche während der Programmausführung gemacht
werden
…
Typische Beispiele:
Entscheidungen des Laders
…
Typische Beispiele:
„
„
Binden von konkreten Werten zu Programmvariablen
„
Binden von Referenzen von dynamisch zugeteilten Objekten zu
Speicheradressen
Binden von Namen zu Objekten in Sprachen mit dynamischen
Gültigkeitsbereichen
…
Zeitpunkt des Ladens
…
„
Lader holen ausführbare Dateien in den Speicher
„
„a = a + 1;“
Binden von virtuellen Adressen in der ausführbaren Datei zu den
physikalischen Speicheradressen
…
In modernen Betriebssystemen nicht mehr wirklich notwendig, da das
Betriebssystem virtuelle Adresse zu physikalischen Adressen bindet in dem es
virtuellen Speicher (einschließlich der notwendiger Hardware) verwendet
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.4-9
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Bindezeitpunkte (7/8)
„
…
„
Bindezeitpunkte (8/8)
Ähnliche Bindeentscheidungen können zu mehreren
Bindezeitpunkten durchgeführt werden
…
„
Statisches Binden (static binding)
…
Linkentscheidungen können zur Linkzeit, Ladezeit (ein Typ des
dynamischen Linken) oder Laufzeit (ein anderer Typ des dynamischen
Linkens) auftreten
Optimierungsentscheidungen können zur Compilezeit, Linkzeit,
Ladezeit und sogar zur Laufzeit (dynamische Optimierung) auftreten
Dynamisches Binden (dynamic binding)
„
Frühe Bindezeitpunkte
…
…
Bezieht sich auf alle Bindeentscheidungen die zur Laufzeit gemacht werden
Verbunden mit größerer Effizienz
„
„
C bindet Variablennamen an die referenzierten Objekte zur Compilezeit
„
…
Bezieht sich auf alle Bindeentscheidungen die vor der Laufzeit gemacht werden
„
Bindeentscheidungen können zu verschiedenen Bindezeitpunkten
in verschiedenen Sprachen getroffen werden
…
Wenn wir in C sagen „foo=bar;“, dann wissen wir genau ob foo und bar
global oder lokal sind oder nicht, von welchem Typ sie sind, ob ihre Typen
für Zuweisungen kompatibel sind oder nicht, etc.
Kompilierte Sprachen laufen typischerweise viel schneller, weil die meisten
Bindeentscheidungen zur Compilezeit getroffen wurden
Ist eine Bindeentscheidung aber erst einmal getroffen worden, dann verlieren wir auch
einiges an Flexibilität
Späte Bindezeitpunkte
…
Verbunden mit größerer Flexibilität
Interpretierte Sprachen erlauben es die meisten Bindeentscheidungen zur Laufzeit zu
treffen, was eine größere Flexibilität erlaubt
…
Wir können in Perl sagen „$foo=$bar;“, und wenn der Name $bar nicht
schon an ein Objekt gebunden ist, dann wird eines erzeugt, und dann zu
$foo zugewiesen
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
„
„
Perl (und gilt eigentlich für alle interpretierten Sprachen) bindet
Variablennamen an die referenzierten Objekte zur Laufzeit
„
6.4-10
6.4-11
„
Zum Beispiel, die meisten interpretierten Sprachen erlauben es einem Programm Fragmente
eines anderen Programms dynamisch zu generieren und auszuführen
Da Bindeentscheidungen zur Laufzeit getroffen werden, können interpretierte Sprachen
langsam sein
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.4-12
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Zusammenfassung Namen und Bindungen
„
Gültigkeitsbereiche
Namen
…
„
Ein mnemonischer Zeichenname wird verwendet um irgendetwas
anderes zu repräsentieren oder zu benennen
„
„
Beispiel: Variable foo kann die Speicherstelle 10000 referenzieren
Textueller Bereich eines Programms in welchem eine Bindung aktiv
ist
Es gibt grundsätzlich zwei Varianten:
…
Statische Gültigkeitsbereiche (static scopes)
„
„
Bindungen
…
„
„
…
Ist eine Assoziation zwischen zwei Dingen
„
Bindezeit
…
Bindungen zwischen Namen und Objekten hängen vom Programmfluss zur
Laufzeit ab
Nähere Ausführung
…
Die Bindezeit ist die Zeit zu der die Entscheidung über eine solche
Assoziation gemacht wird
„
Dynamische Gültigkeitsbereiche (dynamic scopes)
„
Ein Name und das was er referenziert
Es kann zur Compilezeit genau festgestellt werden welcher Name welches
Objekt an welchen Punkten im Programm referenziert
Der Prozess durch den eine Menge von Bindungen aktiv wird wenn die
Kontrolle in einen Gültigkeitsbereich eintritt
„
Zum Beispiel die Allokation von Speicher um Objekte darin zu halten
Beispiel: Ist der Wert von foo in einem Register oder im Speicher?
(Entscheidung wird zur Compilezeit gemacht)
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.4-13
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Gültigkeitsbereiche
„
…
„
Static scope: Verschachtelte Unterprogramme
Referenzierende Umgebung (referencing environment)
…
„
Die Menge von aktiven Bindungen zu einem gegebenen Zeitpunkt in
der Programmausführung
Wird durch die Regeln für Gültigkeitsbereiche einer
Programmiersprache festgelegt
Statische Gültigkeitsbereiche
…
Bindungen zwischen Namen und Objekten könne zur Compilezeit
festgestellt werden
Einfache Varianten
…
Komplexe Varianten
…
„
„
6.4-14
Frage:
…
„
Welches Objekt wird von X im
Funktionsblock von F1 referenziert?
Regel über den nächsten
Gültigkeitsbereich
(closest nested scope )
…
Referenzen von Variablen
referenzieren das Objekt im
naheliegendsten Gültigkeitsbereich
Frühe Versionen von BASIC hatten einen, globalen Gültigkeitsbereich
Moderne Programmiersprachen erlauben verschachtelte Unterprogramme
und Module weshalb kompliziertere Regeln für Gültigkeitsbereiche
erforderlich sind
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.4-15
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.4-16
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Ein Problem welches nicht von verschachtelten Unterprogrammen
behandelt wird (1/2)
„
„
„
Ein Problem welches nicht von verschachtelten Unterprogrammen
behandelt wird (2/2)
Geheimnisprinzip (information hiding) für komplexe abstrakte
Datentypen (ADT)
Für einfache ADTs könnten Funktionen mit statischen lokalen
Variablen funktionieren
Siehe Beispiel auf nächster Folie:
…
Die Variable name_nums behält seinen Wert über Aufrufe von
gen_new_name bei
…
Dies ist zu einfach für ADTs mit mehreren Funktionen die sich einen
globalen Zustand teilen müssen
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.4-17
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Module
„
Ein Modul Beispiel
Ein Modul erlaubt es eine Sammlung von Objekten zu kapseln, so
dass
„
Objekte innerhalb eines Moduls sich gegenseitig sehen können
Objekte innerhalb des Moduls nach außen nicht sichtbar sind, es sei
denn sie werden explizit exportiert
Objekte von außerhalb nach innen nicht sichtbar sind, es sei denn sie
werden explizit importiert
„
…
…
…
„
Abstraktion eines Stacks in
Modula
Wir exportieren die push
und pop Funktionen
Außerhalb des Moduls nicht
sichtbar
…
…
„
Top des Stackzeigers „top“
Stack array „s“
Module mit geschlossenem Gültigkeitsbereich
…
„
6.4-18
Betrifft Module in welche Namen explizit importiert werden müssen um
innerhalb des Moduls sichtbar zu sein
Module mit offenem Gültigkeitsbereich
…
Betrifft Module für die es nicht explizit erforderlich ist Namen von
außerhalb zu importieren um sichtbar zu sein
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.4-19
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.4-20
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Dynamische Gültigkeitsbereiche
„
Bindungen zwischen Namen und Objekten hängen vom
Programmfluss zur Laufzeit ab
…
„
Statische vs. dynamische Gültigkeitsbereiche
„
…
Reihenfolge in welcher Unterprogramme aufgerufen werden ist wichtig
„
Die Regeln für dynamische Gültigkeitsbereiche sind normalerweise
einfach
…
Statischer Gültigkeitsbereich
Die aktuelle Bindung zwischen Name und Objekt ist diejenige die
während der Ausführung als letzte angetroffen wurde (sprich diejenige
die am kürzlichsten gesetzt wurde)
Dynamischer Gültigkeitsbereich
…
„
Programm gibt 1 aus
Programm gibt 1 oder 2 aus in
Abhängigkeit des gelesenen
Wertes in Zeile 8
Warum?
…
Ist die Zuweisung zu „a“ in
Zeile 3 eine Zuweisung zu dem
globalen „a“ von Zeile 1 oder
dem Lokalen „a“ von Zeile 5?
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.4-21
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Vorteile von dynamischen Gültigkeitsbereichen
„
Ein Problem von dynamischen Gültigkeitsbereichen
Was sind die Vorteile von dynamischen Gültigkeitsbereichen?
…
…
6.4-22
„
Problem: unvorhersagbare referenzierende Umgebungen
„
Globale Variable max_score wird verwendet von scaled_score()
max_score wird umdefiniert in foo()
scaled_score() wird von foo() aufgerufen
Ahhhhh
Es erleichtert die Anpassung von Unterprogrammen
Beispiel:
begin --nested block
print_base: integer := 16
print_integer(n)
„
Die Variable print_base kontrolliert die Basis welche print_integer für
die Ausgabe von Zahlen verwendet
„
print_integer kann früh in einem globalen Gültigkeitsbereich mit einem
Standardwert belegt werden und kann temporär in einem globalen
Gültigkeitsbereich auf eine andere Basis überschrieben werden
„
„
„
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.4-23
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.4-24
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Vermischte Gültigkeitsbereiche (mixed scoping)
„
Zusammenfassung für Gültigkeitsbereiche
Perl unterstützt beide Arten, dynamische wie statische
Gültigkeitsbereiche
Dynamic Scoping
„
Static Scoping
$i = 1;
$i = 1;
sub f {
sub f {
local($i) = 2;
my($i) = 2;
return g();
return g();
}
}
sub g { return $i; }
sub g { return $i; }
print g(), f();
print g(), f();
Ausgabe:
1 2
Ausgabe:
1 1
Statische Gültigkeitsbereiche
…
Wird von den meisten, kompilierten Hochsprachen verwendet
…
Bindungen von Namen zu Variablen können zur Compilezeit festgestellt
werden
Effizient
„
…
„
C, C++, Java, Modula, etc.
Dynamische Gültigkeitsbereiche
…
Wird von vielen interpretierten Sprachen verwendet
…
Bindungen von Namen zu Variablen können eine Feststellung zur
Laufzeit benötigen
Flexibel
„
…
Ursprüngliches LISP, APL, Snobol und Perl
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.4-25
6. Sprachen, Compiler und Theorie
Ausblick
„
„
„
„
Namen, Gültigkeitsbereiche und Bindungen (Kapitel 3)
Speichermanagement und Implementierung
Kontrollfluss (Kapitel 6)
Zusammenführung (Bau eines ausführbaren Programms) (Kapitel 9)
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.4-27
Namen, Bindungen und Gültigkeitsbereiche
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.4-26
6. Sprachen, Compiler und Theorie
Inhalt
Lebensdauer von Objekten
Speichermanagement
Weiterführende Spracheigenschaften und Bindungen
„
„
Informatik II
„
…
SS 2004
…
Implementierung von statischen Gültigkeitsbereichen für verschachtelte
Unterprogramme
Implementierung von Unterprogrammreferenzen
Teil 6: Sprachen, Compiler und Theorie
5 – Speichermanagement und Implementierung
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
Lehrstuhl für Telematik
Institut für Informatik
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Objektlebensdauer (1/3)
„
…
…
…
…
…
„
„
Objekt wird erzeugt
Bindungen zum Objekt werden erzeugt
Referenzen zu den Variablen, Unterprogrammen und Typen werden
durch Bindungen gemacht
Deaktivierung und Reaktivierung von temporär nicht verwendbaren
Bindungen
Vernichtung von Bindungen
Vernichtung des Objekts
Lebensdauer
des Objekts Bar
int b;
b = b + 1; ...
Deaktiviere Bindung von b zu Bar
}
Reaktiviere Bindung von b zu Bar
}
Beispiel: Zeit während der eine Java Referenz ein Objekt im Speicher
referenziert
Beispiel: Zeit während der ein Objekt im Speicher „lebt“
„
Anmerkung: Das durch foo() erzeugte Objekt Bar ist nicht unbedingt nach
der Rückkehr aus dem Unterprogramm zerstört. Es kann nach der Rückkehr
von foo() nicht länger referenziert werden, aber es wird wahrscheinlich erst
bei der „garbage collection“ zu einem späteren Zeitpunkt in der
Programmausführung zerstört werden.
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Bar b = new Bar();
while(1) {
Binde Namen b an Objekt Bar
Lebensdauer von Objekten: Zeit zwischen Erzeugung und
Vernichtung eines Objekts
…
Beispiel:
public void foo (void) {
Lebensdauer von Bindungen: Zeit zwischen Erzeugung und
Vernichtung einer Bindung
…
„
Objektlebensdauer (2/3)
Schlüsselereignisse während der Lebensdauer eines Objektes
…
6.5-2
6.5-3
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.5-4
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Objektlebensdauer (3/3)
„
Statische Allokation
Die Lebenszeit eines Objekts korrespondiert mit einem von drei
Hauptmechanismen der Speicherallokation
…
…
Globale Variablen
…
Konstante Variablen welche während der Programmausführung sich
nicht ändern sollten
…
Der Programmcode (Unterprogramme, etc.)
…
Vom Compiler produzierte Informationen zum Debuggen
Falls eine Sprache rekursive Unterprogrammaufrufe nicht untersützt,
dann auch lokale Variablen, Unterprogrammargumente,
Rückgabewerte, vom Compiler generierte temporäre Daten, etc.
„
Objekte werden zur Compilezeit oder Laufzeit zu festen Speicherplätzen
allokiert
Stack Allokation
„
„
Objekte werden zur Laufzeit wie benötigt allokiert, wobei eine last-in, first-out
Ordnung gilt
…
…
Was wird statisch allokiert?
Statische Allokation
„
…
„
„
Beispiel: Lokales
Heap Allokation
„
…
Objekte werden zur Laufzeit in einer beliebigen Reihenfolge allokiert und
freigegeben
…
Beispiel: dynamisch allokierte Objekte
Beispiel: Statische Klassenvariablen
Beispiel: “i=%d\n” ist konstant in printf(“i=%d\n”,i);
Ausnahme: dynamisch verbundene Unterprogramme
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.5-5
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Beispiel: Statische Allokation von Lokalem
„
„
Allokation über einen Stack (1/2)
Keine Rekursion
bedeutet das es zu
einer Zeit nur eine
aktive Instanz bzw.
Aktivierung einer
Instanz von jedem
gegebenen
Unterprogramm
geben kann
„
„
Daher können wir für
eine einzelne,
mögliche Aktivierung
für jedes
Unterprogramm eines
Programms den
Speicher statisch
reservieren
„
Fall eine Sprache Rekursion erlaubt, dann kann jedes
Unterprogramm mehrere simultane Aktivierungen haben
Beispiel:
public int foo (int n) {
int a, b, c;
a = random(); b = random();
if (n > 0) { c = foo(n-1); }
c = c * (a + b);
}
Wir können n Aktivierungen von foo() haben und jede benötigt
Speicherplatz um die eigenen Kopien von a, b, c,
Übergabeargument n und jeden temporären, vom Compiler
generierten Wert zu speichern
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.5-6
6.5-7
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.5-8
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Allokation über einen Stack (2/2)
„
„
„
Allokation über einen Heap
„
Die Lösung für das
Rekursionsproblem ist die
Allokation über einen
Stack (stack allocation)
„
Wir wissen wie Code für Globales, Lokales, Konstanten,
Temporäres, etc. allokiert wird
Was bleibt übrig:
…
Dynamisch allokierte Objekte
Warum können diese nicht statisch allokiert werden?
…
Warum können diese nicht auf einem Stack allokiert werden?
…
„
„Push“ Stack um Platz für
Lokales (locals) für
Unterprogrammaufrufe zu
reservieren
„
Weil sie dynamisch erzeugt werden
Ein Objekt, welches dynamisch von einem Unterprogramm erzeugt wurde,
könnte die Aktivierung des Unterprogramms überleben
…
„Pop“ Stack um Platz für
Lokales (locals) bei der
Rückkehr von einem
Unterprogramm wieder
freizugeben
„
Heaps lösen dieses Problem
…
„
Beispiel: Objekt wird einem Globalen zugewiesen oder von dem Unterprogramm
zurückgegeben
Ein Heap ist eine Speicherregion in welcher Speicherblöcke jederzeit
willkürlich allokiert und wieder freigegeben werden können
Wie sind Heaps implementiert?
…
Wie handhaben wir Anfragen zur Allokation und Freigabe?
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.5-9
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Heap-Management (1/4)
„
„
„
„
Heap-Management (2/4)
Heap
Heap
Allokationsanforderung
Allokationsanforderung
Wir bekommen eine Allokationsanforderung für n Bytes vom Speicher
Der Heap hat verwendete (dunkle) und freie (helle) Bereiche
Wie wählen wir einen freien Bereich um eine Allokationsanforderung
zu befriedigen?
Einfache Antwort:
…
…
Finde den ersten freien Bereich welcher groß genug ist der Allokation zu
entsprechen (wird first fit genannt)
Problem: interne Fragmentierung
„
Wenn wir n Bytes anfordern und der erste, verfügbare freie bereich hat n+k
Bytes, dann verschwenden wir k Bytes durch die Allokation im ersten Bereich
„
Eine bessere Antwort (vielleicht):
…
…
Finde den ersten Bereich, welcher von der Größe am nächsten zur
Allokationsanforderung ist (wird best fit genannt)
Problem: Zeitaufwendiger
„
„
Muss alle freie Blöcke finden um den Besten zu finden
Es kann immer noch interne Fragmentierung geben, aber hoffentlich
weniger als bei first fit
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.5-10
6.5-11
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.5-12
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Heap-Management (3/4)
„
Heap
Heap
Allokationsanforderung
Allokationsanforderung
Ein anderes Problem: externe Fragmentierung
…
Wir bekommen eine Allokationsanforderung für n Bytes und der Heap
hat mehr als n Bytes frei, aber
„
…
„
Heap-Management (4/4)
„
…
kein einzelner freier Bereich ist n Bytes groß oder größer
…
Explizit:
„
Wir haben genügend freien Speicher, aber wir können die
Allokationsanforderung nicht befriedigen
Der Programmierer muss dem Heap-Manager mitteilen dass ein Bereich
nicht länger vom Programm verwendet wird
…
…
Mögliche Lösungen:
…
Wie handhaben wir die Freigabe?
Automatisch:
„
Vereinigung von Bereichen: wenn zwei benachbarte Bereiche mit j und
k Bytes frei sind, dann vereinige diese zu einem einzelnen, freien
Bereich mit j+k Bytes
Ist eine Verbesserung, aber kann nicht alle externen Fragmentierungen
eliminieren
Beispiel: verwende in C free(p) um den Bereich freizugeben auf den p zeigt
„
Das Laufzeitsystem bestimmt welche Objekte auf dem Heap lebendig
(sprich immer noch an Namen gebunden sind) oder tot (sprich nicht länger
zu irgendeinem Namen gebunden sind) sind und gibt die toten Objekte
automatisch frei
Wird Garbage Collection (Speicherbereinigung) genannt
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.5-13
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Speicherbereinigung (Garbage Collection) (1/2)
„
Speicherbereinigung (Garbage Collection) (2/2)
Warum verwenden wir Speicherbereinigung?
…
„
…
„
Verhindert:
„
Speicherlöcher (memory leak): Programmierer können die Freigabe von
dynamisch allokiertem Speicher vergessen
Dangling pointers: Programmierer können ein Objekt freigeben bevor alle
Referenzen darauf zerstört sind
Warum Speicherbereinigung nicht verwenden?
…
Teuer: Festzustellen welche Objekte lebendig und welche tot sind
kostet Zeit
…
Schlecht für Echtzeitsysteme: Können normalerweise nicht
garantieren wann die Speicherbereinigung laufen wird und wie lange es
dauern wird
…
Schwierig zu implementieren: Das Schreiben einer
Speicherbereinigung ist schwierig und macht den Compiler und die
Laufzeit einer Sprache komplizierter
…
Sprachdesign: Einige Sprachen wurden nicht mit dem Gedanken an
eine Speicherbereinigung entworfen, was es schwierig machte eine
Speicherbereinigung zuzufügen
Reduzieren den Programmieraufwand und resultiert in zuverlässigeren
Programmen
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.5-14
6.5-15
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.5-16
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Weiterführende Spracheigenschaften und Bindungen
„
„
Implementierung von statischen Gültigkeitsbereichen (1/2)
Wie implementieren wir statische Gültigkeitsbereiche in Sprachen
die verschachtelte Unterprogramme erlauben?
Wie implementieren wir Referenzen auf Unterprogramme?
„
Problem:
…
void a (void) {
int foo1;
Von c(), wie
referenzieren wir
nichtlokale Variablen
in a() und b()?
void b (void) {
int foo2;
void c (void) {
int foo3 = foo1 + foo2;
}
void d (void) {
}
}
void e (void) {
}
}
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.5-17
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Implementierung von statischen Gültigkeitsbereichen (2/2)
„
Lösung: statische Links
…
…
…
…
Implementierung von Referenzen auf Unterprogramme - 1
„
Jede Aktivierung eines
Unterprogramms speichert einen
Zeiger zum nächsten, umgebenden
Gültigkeitsbereich in seinem
Stackrahmen
c() bekommt seine eigenen Lokalen
von seinem eigenen Stackrahmen
c() bekommt die Nichtlokalen in b()
durch die einmalige
Dereferenzierung seines statischen
Links
c() bekommt die Nichtlokalen in a()
durch die Dereferenzierung seines
statischen Links zu b() und dann
b()‘s statischen Link zu a()
Große Frage:
…
„
Wie wenden wir Gültigkeitsbereichsregeln in Sprachen an wo
Unterprogramme als Wert übergeben werden können?
Zwei Antworten:
…
Flache Bindung (shallow binding):
„
„
…
Referenzierende Umgebung wird sofort festgestellt bevor das referenzierte
Unterprogramm aufgerufen wird
Ist normalerweise der Standard in Sprachen mit dynamischen
Gültigkeitsbereichen
Tiefe Bindung (deep binding):
„
Referenzierende Umgebung wird festgestellt wenn die Referenz auf das
Unterprogramm erzeugt wird
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.5-18
6.5-19
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.5-20
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Tiefe vs. flache Bindung
„
Flache Bindung (shallow)
…
„
Implementierung von Referenzen auf Unterprogramme - 2
„
Nötig für die line_length
Zuweisung in
print_selected_records um
das print_person
Unterprogramm zu erreichen
…
„
Nötig für die threshold
Zuweisung im
Hauptprogramm um das
older_than Unterpogramm
zu erreichen
Ein Zeiger auf den Code des Unterprogramms und ein Zeiger auf die
referenzierende Umgebung des Unterprogramms
Warum benötigen wir einen Zeiger auf die referenzierende
Umgebung?
…
Tiefe Bindung (deep)
…
Zum Abschluss
Wir müssen einen Weg für das Unterprogramm haben mit welcher es
Zugriff auf seine nichtlokalen, nichtglobalen Variablen hat
„
„
Für Sprachen mit dynamischen Gültigkeitsbereichen schließt dies Variablen
in den umschließenden, dynamisch verschachtelten Unterprogrammen ein
(Unterprogramme die andere aufrufen)
Für Sprachen mit statischen Gültigkeitsbereichen schließt dies Variablen in
den umschließenden, statisch verschachtelten Unterprogrammen ein
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.5-21
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Zusammenfassung
„
Ausblick
Lebensdauer von Objekten
…
„
Die Zeitperiode während der ein Name an ein Objekt (Variable,
Unterprogramm, etc.) gebunden ist
„
„
„
„
Namen, Gültigkeitsbereiche und Bindungen (Kapitel 3)
Speichermanagement und Implementierung
Kontrollstrukturen (Kapitel 6)
Zusammenführung (Bau eines ausführbaren Programms) (Kapitel 9)
Speichermanagement
…
„
6.5-22
Statische Allokation, Stacks und Heaps
Weiterführende Spracheigenschaften und Bindungen
…
Implementierung von statischen Gültigkeitsbereichen für verschachtelte
Unterprogramme
…
Implementierung von Unterprogrammreferenzen
„
„
Links auf Stackrahmen ablegen
Ein Zeiger auf den Code des Unterprogramms und ein Zeiger auf die
referenzierende Umgebung des Unterprogramms (flache und tiefe Bindung)
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.5-23
Speichermanagement und Implementierung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.5-24
6. Sprachen, Compiler und Theorie
Rückblick
„
„
Informatik II
„
Lebensdauer von Objekten
Speichermanagement
Weiterführende Spracheigenschaften und Bindungen
…
SS 2004
…
Implementierung von statischen Gültigkeitsbereichen für verschachtelte
Unterprogramme
Implementierung von Unterprogrammreferenzen
Teil 6: Sprachen, Compiler und Theorie
6 – Kontrollstrukturen
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
Lehrstuhl für Telematik
Institut für Informatik
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Was fehlt uns noch?
„
„
Kontrollfluss (control flow)
Kontrollfluss
…
„
Das Offensichtliche: Programme machen ihre Arbeit durch
ausführen von Berechnungen
„
Kontrollfluss (control flow) spezifiziert die Reihenfolge in welcher
Berechnungen ausgeführt werden
„
Sprachen stellen eine große Vielfalt von
Kontrollflussmechanismen (control flow mechanism) bereit
welche es dem Programmierer erlauben den Kontrollfluss zu
spezifizieren
Spezifikation der Reihenfolge in welcher Elemente einer höheren
Programmiersprache ausgeführt werden
Kontrollflussmechanismen
…
…
Anweisungen (statements), Schleifen, Unterprogrammaufrufe,
Rekursion, etc.
Übersetzung zu ausführbarem Code
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-2
6.6-3
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-4
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Kontrollfluss und Kontrollflussmechanismen
Wichtige Fragen
Iterationen (Wiederholungen)
„
…
…
„
Führt eine Gruppe von Berechnungen mehrmals aus (repeatedly)
Eine von sieben Kategorien von Kontrollflussmechanismen
„
Wie implementieren Sprachen Iterationen?
„
Schleifen: C, C++, Java
for(i=0;i<N;i++) {
do_something(i);
Einige Sprachen verwenden andere
Mechanismen um das gleiche Ziel
zu erreichen
„
Wie lauten die Kategorien von Kontrollflussmechanismen
Welche Eigenschaften stellen Sprachen zur Verfügung um die
Kontrollflussmechanismen einer gegebenen Kategorie zu
implementieren?
Wie übersetzen Compiler Kontrollflussmechanismen in
ausführbaren Code?
Rekursion: ML
fun foo i N =
}
if i < N then
do_something i
Iteratoren: Icon, CLU
foo i + 1 N
every do_something(0 to N-1)
foo 0 N
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-5
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Kategorien von Kontrollflussmechanismen
„
„
„
„
Wähle, basierend auf einer Laufzeitbedingung, welche von mehreren
Berechnungen ausgeführt werden soll
Bestimmt für ein gegebenes Paar von Berechnungen welches
zuerst ausgeführt wird
Zwei Typen von Berechnungen für welche wir die Reihenfolge
betrachten wollen
…
Iteration (iteration)
…
„
Bestimmt für ein gegebenes Paar von Berechnungen welches zuerst ausgeführt
wird
Auswahl (selection)
…
„
Sequentialität (sequencing)
Sequentialität (sequencing)
…
Ausdrücke (expressions)
„
Führt eine Gruppe von Berechnungen mehrmals aus
„
Rekursion (recursion)
…
Prozedurale Abstraktion (procedural abstraction)
…
…
„
„
Berechnungen welche die Werte von Variablen ändern
Beispiel:
…
Erlaubt es Berechnungen „zur gleichen Zeit“ auszuführen
…
Keine Festlegung (Nondeterminancy)
…
„
Reihenfolge zwischen Berechnungen wird unspezifiziert gelassen
zweistellige Ausdrücke: foo + bar
Evaluieren wir zuerst die Unterausdrücke foo oder bar bevor wir die Addition
ausführen?
Zuweisungen (assignments)
„
Nebenläufigkeit (concurrency)
…
„
…
Erlaubt es einer Gruppe von Berechnungen zu bennen, möglicherweise zu
parametrisieren und auszuführen wann immer der Name referenziert wird
Berechnungen die einen Wert erzeugen
Beispiel:
…
Erlaubt es Berechnungen durch sich selbst zu definieren (Allows computations to be
defined in terms of themselves)
„
foo = bar + 1;
bar = foo + 1;
Welche von diesen beiden Zuweisungen evaluieren wir zuerst?
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-6
6.6-7
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-8
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Was genau ist eine Ausdruck (expression)?
„
Evaluation von Ausdrücken und Seiteneffekte
Berechnungen welche einen Wert erzeugen
„
Evaluation von Ausdrücken kann zusätzlich zu den Werten auch
Seiteneffekte erzeugen
Beispiele:
…
Variablenreferenzen
…
Konstantenreferenzen
…
1, 2, 3, ‘a’, ‘b’, ‘c’, …
…
„
„
…
Holt den Wert der Variablen aus dem Speicher
„
Operatoren oder Funktionen angewandt auf eine Sammlung von
Unterausdrücken
„
Funktionsaufrufe
…
„
…
„
foo(a,b+10)
Arithmetische Operationen
…
Ausdrücke ohne Seiteneffekte werden „referentially transparent”
genannt
…
foo + bar
int foo (void) { a = 10; return a; }
… foo() + 20 …
Evaluation von „foo()+20“ ergibt den Wert 30 UND als einen
Seiteneffekt die Zuweisung des Wertes 10 an die Globale a
Solche Ausdrücke können als mathematische Objekte behandelt
werden und entsprechend durchdacht
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-9
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Priorität und Assoziativität
„
„
„
Priorität (Precedence)
„
Zwei Wege um die Reihenfolge zu spezifizieren in welcher
Unterausdrücke von komplexen Ausdrücken evaluiert werden
Prioritätsregel
…
…
Beispiel:
…
…
Ähnlich dem mathematischen Konzept mit dem gleichen Namen
Spezifiziert ob Operatoren von der gleichen Prioritätsgruppe zur Linken
oder Rechten zuerst evaluieren
-a * c
Wie ist die Reihenfolge der Evaluierung?
„
Spezifiziert wie Operationen gruppieren wenn Klammern abwesend sind
…
Assoziativität
…
(-a) * c oder –(a * c)???
In C, -, unäre Negierung (unary negation), hat höhere Priorität als *
(Multiplikation), weshalb die erste Klammerung korrekt ist
„
Prioritätsregeln variieren stark von Sprache zu Sprache
„
Frage:
…
…
…
Wie wird in C int i = 0; int *ip = &i; ++*ip++; ausgewertet?
++( ) auf den Wert von *ip++. Der Wert ist der Inhalt der Variablen, auf die ip
verweist. Wenn ip abgerufen wurde, wird ip im nachhinein um eins erhöht
(Zeigerarithmetik).
Daher ist am Ende i = 1 und der Zeiger ip wurde auch um eins erhöht (und
zeigt somit höchstwahrscheinlich ins Nirvana, da kein Bezug zu dieser
Speicherstelle besteht)
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-10
6.6-11
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-12
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Assoziativität (Associativity)
„
„
Die Assoziativität ist in Sprachen einheitlicher
Elementare arithmetische Operatoren assoziieren von links nach
rechts
…
…
Operatoren werden von links nach rechts gruppiert und evaluiert
Beispiel (Subtraktion):
„
„
Einige arithmetische Operatoren assoziieren aber von rechts nach
links
…
Beispiel (Potenzieren):
„
„
9 – 3 – 2 evaluiert eher zu (9 – 3) -2 als 9 - (3 - 2)
4**3**2 evaluiert eher zu 4**(3**2) als (4**3)**2
In Sprachen die Zuweisungen in Ausdrücken erlauben, assoziieren
Zuweisungen von rechts nach links
…
Beispiel:
„
„
a = b = a + c evaluiert zu a = (b = a + c)
a + c wird berechnet und b zugewiesen, danach wird b zu a zugewiesen
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-13
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Arbeiten mit Prioritäten und Assoziativität
„
Mehr zur Evaluierungsordnung von Ausdrücken (1/2)
Regeln für Prioritäten und Assoziativität variieren stark von Sprache
zu Sprache
…
„
„
„
Prioritäten und Assoziativität können nicht immer eine
Evaluierungsreihenfolge festlegen
…
In Pascal:
„
Beispiel:
„
„if A < B und C < D then ...“
Könnte zu „if A < (B and C) < D then...“ evaluiert werden
Upps!
„
„
„
„
… Leitfaden/Richtlinie:
„
„
Wenn f(b) die Variablen c oder d modifiziert, dann hängt der Wert des
ganzen Ausdruckes davon ab, ob f(b) zuerst ausgeführt wird oder nicht
Verbesserung des Codes
…
„
a – f(b) – c * d
Mit Prioritäten ergibt sich a – f(b) – (c * d) und weiter mit Assoziativität (a –
f(b)) - (c * d)
Aber welches wird zuerst ausgeführt: a-f(b) oder (c*d)?
Warum kümmert uns das?
Seiteneffekte
…
Im Zweifelsfall lieber Klammern verwenden, speziell
wenn jemand oft zwischen verschiedenen Sprachen
wechselt!
Wir wollen (c*d) zu erst berechnen, so dass wir das berechnete
Ergebnis nicht speichern und wiederherstellen müssen bevor und
nachdem f(b) aufgerufen wird
Nochmals: Im Zweifelsfall Klammern setzen!
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-14
6.6-15
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-16
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Mehr zur Evaluierungsordnung von Ausdrücken (2/2)
„
Zuweisungen
Boolesche Ausdrücke
„
…
Ausdrücke die eine logische Operation ausführen und entweder zu wahr (true)
oder falsch (false) evaluieren
… Beispiele:
„
„
„
…
„
„
…
„
„
(a < b) && (c < d)
Wenn (a < b) zu falsch evaluiert wird dann gibt es keinen Bedarf mehr (c <d )
auszuwerten
Siehe Regel R1 aus Kapitel 2, Boolesche Algebra und Gatter
Weisst den Wert, der durch den Ausdruck „ a +b“ berechnet wird, der
Variablen c zu
Zuweisungen sind der fundamentale Mechanismus um
Seiteneffekte zu erzeugen
Beispiel:
„
Beispiel: c = a + b
„
Die Evaluation von booleschen Ausdrücken kann durch die „short
circuiting“ Technik optimiert werden
…
„
a<b
a && b || c oder a & b | c
Berechnungen welche den Wert einer Variablen beeinflussen
Werte die Variablen zugewiesen werden können zukünftige
Berechnungen beeinflussen
Zuweisungen sind unerlässlich für das imperative
Programmiermodel
Dies wird wichtig bei Code nach folgendem Muster:
…
…
if (unwahrscheinliche Bedingung && teure Funktion() ) ...
Wir wollen die Auswertung einer teuren Funktion() verhindern, wenn eine
unwahrscheinliche Bedingung zu falsch ausgewertet wird
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-17
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Was genau ist eine Variable? (1/2)
„
Was genau ist eine Variable? (2/2)
Die Interpretation eines Variablennamens hängt von dem Kontext ab
in welchem er auftritt
„
Zwei Wege um eine Variable zu behandeln
…
Wertemodell
„
„
„
Beispiele:
…
„
d=a
„
Die Referenz zu der Variablen „a“ auf der „rechten Seite“ einer Zuweisung
benötigt einen Wert
…
…
…
„
„
Wird ein r-value-context genannt und das „a“ wird r-value genannt
Variablen sind benannte Referenzen für Werte
Nur die Interpretation als l-value ist möglich
…
Die Referenz zu der Variablen „a“ auf der „linken Seite“ einer Zuweisung
bezieht sich auf a‘s Speicherort
…
Variablen sind benannte Container für Werte
Beide Interpretationen als l-value und r-value von Variablen sind möglich
Modell wird verwendet von Pascal, Ada, C, etc.
Referenzmodell
a=b+c
„
6.6-18
„
Variablen in einem r-value-context müssen „dereferenziert“ werden um einen
Wert zu erzeugen
Modell wird verwendet von Clu
Wird ein l-value-context genannt und das „a“ wird l-value genannt
Wertemodell
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-19
Referenzmodell
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-20
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Zuweisungsfolgen
„
Zuweisungsfolgen (assignment sequencing ) ist in den meisten
Sprachen einfach
…
Zuweisungen werden in der Reihenfolge ausgeführt in der sie im
Programmtext auftreten
„
„
Wie initialisieren oder wie weisen wir initiale Werte Variablen zu?
„
Verwende den Zuweisungsoperator um initiale Werte zur Laufzeit
zuzuweisen
…
Beispiel:
…
„
Zuweisungsfolgen: Initialisierung (1/2)
a = 10; b = a; Å Es wird zuerst die 10 dem a zugewiesen und danach wird a dem
b zugewiesen
Probleme:
„
Ausnahmen
…
„
„
…
…
„
Zuweisungsausdrücke
Beispiel: a = b = a * c
Erinnere dich an die Auswertereihenfolge bei Ausdrücken: In den meisten
Programmiersprachen gilt die Assiziation von rechts nach links
Ineffizienz: Wenn wir den initialen Wert einer Variablen zur Compilezeit
kennen, dann kann der Compiler diesen Wert dem Speicher zuweisen ohne
eine Initialisierung zur Laufzeit zu benötigen
Programmierfehler: Wenn Variablen kein initialer Wert bei der Deklaration
zugewiesen wird, dann könnte ein Programm eine Variable verwenden bevor
sie irgendeinen (sinnvollen) Wert enthält
Initialisierung
Kombinationen mit dem Zuweisungsoperator
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-21
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Zuweisungsfolgen: Initialisierung (2/2)
„
Zuweisungsfolgen: Kombinationen
Verwende den Zuweisungsoperator um initiale Werte zur Laufzeit
zuzuweisen
…
„
Lösungen:
„
…
…
„
„
„
Sprachen können einen Defaultwert für jede Deklaration eines eingebauten
(built-in) Typs spezifizieren
…
Ist fehleranfällig und schwierig zu schreiben, da Text wiederholt wird
Kann zu ineffizientem kompilierten Code führen
Lösungen: Kombinationen mit dem Zuweisungsoperator
…
Beispiele:
„
Mache es zu einem Laufzeitfehler, wenn eine Variable verwendet wird bevor ihr
ein Wert zugewiesen wurde
„
…
Mache es zu einem Compilerfehler wenn eine Variable verwendet werden könnte
bevor ihr ein Wert zugewiesen wurde
a = a + 1;
b.c[3].d = b.c[3].d * e;
Probleme:
…
„
Statische Wertkontrollen
…
Beispiele:
„
Beispiel für C: static char s[] = “foo”
Der Compiler kann den Elementen des Arrays s die Werte zur Compilezeit
zuweisen, was uns 4 Zuweisungen zur Laufzeit erspart (eine für jedes Zeichen
plus dem NULL (String-)Terminator)
siehe auch C++ Konstruktorinitialisierung
Dynamische Wertkontrollen
…
„
…
Defaultwerte (Standardwerte/Ausgangswerte/...)
…
„
Gibt es einen effizienteren Weg um komplexe Zuweisungen zu
handhaben?
Statische Initialisierung:
…
a += 1;
b.c[3].d *= e;
Zuweisungen werden mit Operatoren für Ausdrücke kombiniert
„
„
Vermeidet sich wiederholenden Code
Erlaubt es dem Compiler auf einfacherem Wege effizienteren Code zu
generieren
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-22
6.6-23
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-24
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Sequentialität: Zusammenfassung
„
Ausdrücke
…
…
…
„
Auswahl (selection) (1/4)
„
Prioritäten und Assoziativität kontrollieren die Reihenfolge
Es müssen Seiteneffekte bei Unterausdrücken beachtet werden
Logische Ausdrücke können von der short-circuit Auswertung profitieren
„
Wähle, basierend auf einer Laufzeitbedingung, welche von
mehreren Berechnungen ausgeführt werden soll
Am häufigsten Ausgeführt vom if..then..else Sprachkonstrukt
…
Zuweisungen
…
…
…
Beispiel:
„
„
Die Folge des Auftretens im Programmtext bestimmt die Reihenfolge
Zuweisungen zur Compilezeit erlauben die Vermeidung von
Zuweisungen zur Laufzeit
Zusammengesetzte Zuweisungsoperatoren kombinieren
Ausdrucksauswertung und Zuweisung um effizienter sein zu können
if ((a < b) && (c < d)) { do_something(); }
Wenn beide bedingte Anweisungen „a<b“ und „c<d“ zu wahr ausgewertet
werden, dann führe die Berechnung, welche durch das Unterprogramm
do_something() referenziert wird, aus
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-25
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Auswahl (selection) (2/4)
„
Auswahl (selection) (3/4)
Short circuiting
…
…
„
„
„
„
Angenommen wir haben Code der ähnlich wie dieser aussieht:
j := … (* something complicated *)
IF j = 1 THEN
clause_A
ELSIF j IN 2, 7 THEN
clause_B
ELSIF j in 3..5 THEN
clause_C
ELSE
clause_D
END
Zur Erinnerung: Kann verwendet werden um unnötige
Ausdrucksauswertungen zu verhinden
Beispiel:
„
if ( (a < b) && (c < d) ) { do_something(); }
Wenn (a < b) falsch ist, dann kann do_something() nicht ausgeführt werden,
egal was (c < d) ergibt
Siehe Regel R1 aus Kapitel 2, Boolesche Algebra und Gatter
Short circuiting wird Code generieren der die Auswertung von (c < d)
genauso ausläßt (skipped) wie die Ausführung von do_something(), wenn (a
< b) falsch ist
„
Problem:
…
Ist kompliziert zu schreiben
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-26
6.6-27
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-28
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Auswahl (selection) (4/4)
„
Iteration
„
Lösung: case/switch Befehle
„
„
…
Beispiel:
CASE …
1:
| 2,7:
| 3..5:
ELSE
END
Führt eine Gruppe von Berechnungen mehrmals aus
Sprachen bieten für Iterationen Schleifenkonstrukte an
„
clause_A
clause_B
clause_C
clause_D
…
„
Die Schleife wird solange ausgeführt bis sich eine boolesche Bedingung
ändert
Anmerkung:
…
Ist einfacher zu schreiben und zu verstehen
Die Schleife wird für jeden Wert aus einer endlichen Menge (Aufzählung)
ausgeführt
Logikgesteuerte Schleifen
„
…
„
Aufzählungsgesteuerte Schleifen
…
Der imperative Stil der Programmierung favorisiert Schleifen gegenüber
Rekursion
Iteration und Rekursion können beide verwendet werden um eine
Gruppe von Berechnungen wiederholt auszuführen
Alle Arten von Schleifen können auf die beiden Konstrukte Selektion
(if..then..end) und Sprung (goto) zurückgeführt werden. Wird oft in
Zwischensprachen zur Codegenerierung verwendet.
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-29
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Aufzählungsgesteuerte Schleifen: Probleme (1/3)
„
Aufzählungsgesteuerte Schleifen: Fragen (2/3)
Beispiel von FORTRAN I, II und IV
„
Allgemeine Form von Schleifen:
do 10 i = 1, 10, 2
...
10: continue
FOR j := first TO last BY step DO
…
END
…
Die Variable i wird die Indexvariable genannt und nimmt hier die Werte 1, 3, 5,
7, 9 an
… Die Statements zwischen der ersten und letzte Zeile werden der Schleifenrumpf
(loop body) genannt und wird hier für jeden der fünf Werte von i einmal
ausgeführt
„
Probleme:
Der Schleifenrumpf wird immer mindestens einmal ausgeführt
… Statements im Schleifenrumpf könnten i ändern und somit würde auch das
Verhalten der Schleife verändert werden
… Goto Statements können in oder aus der Schleife springen
…
„
Fragen die zu dieser Schleifenart zu stellen sind:
3.
Kann j, first und/oder last im Schleifenrumpf verändert werden?
Wenn ja, welchen Einfluss hat dies auf die Steuerung?
Was passiert wenn first größer als last ist?
Welchen Wert hat j wenn die Schleife beendet wurde?
4.
Kann die Kontrolle von außerhalb in die Schleife hineinspringen?
1.
2.
…
„
6.6-30
Goto-Sprünge in die Schleife hinein, wobei i nicht vernünftig initialisiert wird, werden
wahrscheinlich in einem Laufzeitfehler enden
Die Schleife wird beendet wenn der Wert von i die obere Grenze überschreitet.
Dies könnte einen (unnötigen) arithmetischen Überlauf veranlassen, wenn die
obere Grenze in der Nähe des größten, zulässigen Wertes von i liegt
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-31
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-32
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Aufzählungsgesteuerte Schleifen: Antworten (3/3)
„
„
Können der Schleifenindex oder die Grenzen verändert werden?
…
Ist bei den meisten Sprachen verboten
Algol 68, Pascal, Ada, Fortran 77 und 90, Modula-3
„
Was passiert wenn first größer als last ist?
„
„
„
Iteratoren
…
…
Die meisten Sprachen werten first und last aus bevor die Schleife ausgeführt wird
… Falls first größer als last ist, dann wird der Schleifenrumpf niemals ausgeführt
„
Welchen Wert hat der Schleifenindex j am Ende der Schleife?
„
…
Ist in einigen Sprachen nicht definiert, z.B. Fortran IV oder Pascal
… In den meisten Sprachen gilt der zuletzt definierte Wert
… Einige Sprachen machen die Indexvariable zu einer lokalen Variablen der Schleife,
weswegen die Variable außerhalb des Gültigkeitsbereiches der Schleife nicht sichtbar ist
„
Beispiel:
“every write (1 + upto(‘ ‘, s))” in ICON schreibt jede Position in den String s
welcher ein Leerzeichen folgt
… upto(‘ ‘,s) erzeugt jede Position in s gefolgt von einem Leerzeichen
„
…
Nein, für die meisten Sprachen
Viele Sprachen erlauben aber den Sprung von innen nach außen
… Viele Sprachen bieten Anweisungen (break; exit; last, etc,) an, die einen frühzeitige
Abbruch der Schleife ohne expliziten Sprung erlauben
Die “FOR j := first TO last BY step DO … END” Schleife kann auch geschrieben
werden als
“every j := first to last by step do { … }” in ICON
…
Kann die Kontrolle von außerhalb in die Schleife hineinspringen?
…
Alle bisher betrachteten Schleifen iterieren über eine arithmetische Folge
(1,3,5,7)
Aber wie iterieren wir über eine frei wählbare Menge von Objekten?
Antwort: Iteratoren
„
Iteratoren sind Ausdrücke die mehrere Werte generieren und welche Ihre
enthaltende Ausdrücke und Statements bestimmen können um diese
mehrmals auszuwerten oder auszuführen
Ein anderes Beispiel:
…
…
„
“write(10 + 1 to 20)” schreibt 10 + j für jedes j zwischen 1 und 20
1 bis 20 erzeugt die Folge 1 bis einschließlich 20
Siehe auch Standard Template Library (STL) von C++
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-33
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Logikgesteuerte Schleifen
„
Rekursion
Beispiele:
…
„
„
„
…
for(Vor-Anweisung; Bedingung; Nach-Anweisung ) Block
Nachprüfende Schleife
„
…
„
Mit anderen Worten, komplexe Berechnungen werden mit Begriffen von
einfacheren Berechnungen ausgedrückt
Ähnlich dem Prinzip der mathematischen Induktion
Ist die bevorzugte Methode der wiederholenden
Programmausführung in funktionalen Sprachen
…
„repeat Anweisung until Bedingung“
„do Anweisung while Bedingung“
Diese Art von Schleife werden oft falsch verwendet und sollten daher
vermieden werden
(da mindest ein Durchlauf erfolgt!)
…
Eigentlich ist es die meiste Zeit der einzigste Weg um Berechnungen in
funktionalen Sprachen wiederholt auszuführen
Warum?
„
Prüfung in der Mitte einer Schleife
„
Erlaubt es Berechnungen durch sich selbst zu definieren
…
„while Bedingung do Anweisung“
Die C for-Schleife ist eine vorprüfende, logikgesteuerte Schleife und nicht
eine aufzählungsgesteuerte Schleife!
…
…
„
Vorprüfende Schleife
„
…
„loop Anweisung when Bedingung exit Anweisung end“
Weil für die Alternative, nämlich Iteration (Schleifen), die Ausführung von
Anweisungen mit Seiteneffekten (wie Zuweisungen) verbunden ist, was in
rein funktionalen Sprachen verboten ist
Dies ist nicht wirklich eine Einschränkung da Rekursion streng
genommen genauso Mächtig ist wie Iteration und umgekehrt
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-34
6.6-35
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-36
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Rekursion und Iteration
„
Verbesserte Durchführung von Rekursion
„
Informell gesprochen, die Schleife
“FOR j := first TO last BY step DO … END”
wird durch Rekursion zu:
fun loop j step last =
if j <= last then
…
loop j + step step last
fun loop j step last =
if j <= last then
…
loop j + step step last
„
Gegebene Schleife
„
Der rekursive Aufruf der Schleife „loop“ ist die letzte ausgeführte
Berechnung der Funktion „loop“
„
Geschickte Compiler werden Endrekursionen durch eine Schleife
ersetzen
…
Es gibt mit der rekursiven Emulation von Iteration aber ein Problem:
sie ist langsam!
…
…
Wird Endrekursion (tail recursion) genannt
Argumente für den Aufruf der Endrekursion werden ausgewertet und in
den entsprechenden Lokalen platziert und ein Sprung zurück zum
Anfang der Funktion wird gemacht anstatt einen rekursiven Aufruf zu
machen
Dies kann zu einer signifikanten Steigerung der Leistung führen
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-37
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Evaluationskonzepte von Funktionsargumenten
„
Ausblick
Wie werden Argumente für Funktionen ausgewertet?
…
„
…
„
Die Argumente einer Funktion werden ausgewertet bevor die Funktion die
Steuerung erhält?
„
Wird Applicative-Order Evaluation (eager evaluation, call-by-value) bezeichnet
Ist der Standard in den meisten Sprachen
Die Argumente einer Funktion werden nur dann ausgewertet, wenn sie
auch benötigt werden?
„
„
„
6.6-38
„
„
„
Namen, Gültigkeitsbereiche und Bindungen (Kapitel 3)
Speichermanagement und Implementierung
Kontrollfluss (Kapitel 6)
Zusammenführung (Bau eines ausführbaren Programms)
(Kapitel 9)
Wird Normal-Order Evaluation (lazy evaluation‚ call by need, delayed evaluation)
bezeichnet
Kann zu einer besseren Leistung führen wenn an eine Funktion übergebene
Argumente manchmal nicht gebraucht werden
Beispiel:
void foo (int a, int b, int c) {
if (a + b < N) { return c; } else { return a + b; }
foo(a,b,expensive_function())
…
In einigen Fällen wird „c“ nicht benötigt, und der Wert von c könnte von einerteuer zu
berechnenden Funktion bestimmt werden
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-39
Kontrollstrukturen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.6-40
6. Sprachen, Compiler und Theorie
Der Kompilationsprozess (-phasen)
Informatik II
Scanner (lexikalische Analyse)
Lese Programm und konvertiere Zeichenstrom in Marken
(tokens). Theorie: Reguläre Ausdrücke, endlicher Automat
Parser (syntaktische Analyse)
Lese Tokenstrom und generiere Ableitungsbaum (parse
tree). Theorie: Kontextfreie Grammatiken, Kellerautomat
SS 2004
Traversiere Parserbaum, überprüfe nicht-syntaktische
Regeln.
Semantische Analyse
Teil 6: Sprachen, Compiler und Theorie
Zwischencodegenerierung
Traversiere Parserbaum noch mal, gebe Zwischencode
aus.
Optimierung
Untersuche Zwischencode, versuche ihn zu verbessern.
Zielcodegenerierung
Übersetze Zwischencode in Assembler-/Maschinencode
Optimierung Maschinenebene
Untersuche Maschinencode, versuche ihn zu verbessern.
7 – Zusammenführung
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
Lehrstuhl für Telematik
Institut für Informatik
Zusammenführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Die Organisation eines typischen Compilers
„
„
Schreiben des Programms
Frontend
…
„
Führt Operationen aus
welche von der zu
kompilierenden Sprache
abhängen und nicht von
der Zielmaschine
Backend
…
Führt Operationen aus
welche etwas Wissen
über die Zielmaschine
haben müssen
Ein kleines Programm,
geschrieben in Pascal,
welches den größten
gemeinsamen Teiler
(ggT) von zwei
Ganzzahlen berechnet
program gcd (input, output);
var i, j : integer;
begin
read(i,j);
while i <> j do
if i > j then i := i – j
else j :- j – i;
writeln(i)
end.
Zusammenführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.7-2
6.7-3
Zusammenführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.7-4
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Vom Text des Quellcodes zu den Tokens
Von den Tokens zum Ableitungsbaum
Programmquelltext
Programmquelltext
program gcd (input, output);
var i, j : integer;
begin
read(i,j);
while i <> j do
if i > j then i := i – j
else j :- j – i;
writeln(i)
end.
Tokens
program
gcd
(
input
,
output
)
;
var
i
,
j
:
integer
;
begin
read
(
i
,
j
)
;
while
i
<>
j
do
if
i
Ableitungsbaum und Symboltabelle
program gcd (input, output);
var i, j : integer;
begin
read(i,j);
while i <> j do
if i > j then i := i – j
else j :- j – i;
writeln(i)
end.
…
Zusammenführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Zusammenführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.7-5
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Zwischencode
„
„
„
Nicht optimierende Compiler
„
Der Ableitungsbaum wird zu
einem Kontrollflussgraphen
konvertiert
Die Knoten des
Kontrollflussgraphen sind
grundlegende Blöcke und
enthalten eine pseudoAssemblersprache
Die Kontrolle kann einen
grundlegenden Block nur vom
Anfang betreten und kann in
nur am Ende wieder
verlassen
„
„
Der Kontrollflussgraph wird
zum Zielcode der
Zielmaschine konvertiert
Der Zielcode ist eine andere
pseudo-Assemblersprache
Der Kontrollfluss wird
ausführlich gemacht durch:
…
…
„
Bezeichnen der Anfänge
der grundlegenden Blöcke
Konvertieren der
Kontrollflusskanten zu
Sprung- (branch), Aufruf(call) und
Rückkehrinstruktionen
Virtuelle Register werden
durch reale Register ersetzt
Zusammenführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.7-6
6.7-7
Zusammenführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.7-8
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Zielcode
„
Der Zielcode ist beinahe
Assemblercode
…
…
…
„
Vom Zielcode zum Assemblercode
„
Normalerweise einfach:
…
Der Kontrollfluss ist
ausführlich
Der Code referenziert nur
reale Registernamen
Anweisungen zum
Speicherreservieren sind
vorhanden
…
„
r10 := r8 + r9 -> add $10, $8, $9
r10 := r8 + 0x12 -> addi $10, $8, 0x12
Manchmal auch zu einer Folge von Instruktionen erweitert:
…
r14 := 0x12345abc ->
„
„
lui $14, 0x1234
ori $14, 0x5abc
Zielcode ist einfach zu
Assemblercode zu
übersetzen
Zusammenführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Zusammenführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.7-9
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Binden (linking)
Optimierende Compiler
„
„
Beim Binden
werden mehrere
durch den
Assembler erzeugte
Objektdateien zu
einer einzelnen,
ausführbaren
Datei kombiniert,
welche durch ein
Betriebssystem
lauffähig ist
„
„
„
Optimierung ist ein komplexer
Prozess
Verbessert die Qualität des
generierten Codes auf Kosten
von zusätzlicher Compilezeit
Optimierer sind schwierig zu
schreiben und einige
Optimierungen verbessern das
fertige Programm vielleicht nicht
Praxistip: Die jeweilige
Einstellung der Optimierungstiefe
eines Compilers genau auf
korrekte Funktion kontrollieren,
da diese öfters fehleranfällig sind
(lieber erstmal auf Optimierung
verzichten und erst am Ende
austesten!)
Zusammenführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.7-10
6.7-11
Zusammenführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.7-12
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Peephole-Optimierung
„
„
„
Sehe dir den Zielcode an, wenige Instruktionen gleichzeitig, und
versuche einfache Verbesserungen zu machen
Versucht kurze, sub-optimale Folgen von Instruktionen zu finden
und ersetzt diese Sequenzen mit einer „besseren“ Sequenz
Sub-Optimale Sequenzen werden durch Muster (patterns)
spezifiziert
…
„
Peephole-Optimierungstypen (1/3)
Redundante load/store Instruktionen beseitigen
„
r2
i
r3
r4
Meistens heuristische Methoden — Es gibt keinen Weg um zu
überprüfen ob das Ersetzen eines sub-optimalen Musters tatsächlich
das endgültige Programm verbessern wird
:=
:=
:=
:=
r1 + 5
r2
i
r3 x 3
wird zu
r2 := r1 + 5
i := r2
r4 := r2 x 3
Konstantenfaltung (constant folding)
„
r2 := 3 x 2
Einfach und ziemlich wirksam
wird zu
r2 := 6
Entfernung gemeinsamer Teilausdrücke (common subexpression elimination)
„
r2 := r1 x r5
r2 := r2 + r3
r3 := r1 x r5
wird zu
r4 := r1 x r5
r2 := r4 + r3
r3 := r4
Zusammenführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.7-13
Zusammenführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Peephole-Optimierungstypen (2/3)
„
„
„
Algebraische Vereinfachung (strength reduction)
r2 := 4
wird zu r3 := r1 + 4
und
r2 := …
r3 := r1 + 4
r2 := …
r1 := r2 x 2
r1 := r2 / 2
wird zu
r1 := r2 + r2
r1 := r2 >> 1
oder r1 := r2 << 1
und auch
r2 := 4
r3 := r1 + r2
r3 := *r3
„
Peephole-Optimierungstypen (3/3)
Fortpflanzung von Konstanten (constant propagation)
r2 := 4
r3 := r1 + r2
r2 := …
6.7-14
wird zu r3 := r1 + 4
r3 := *r3
und
r3 := *(r1+4)
Fortpflanzung von Zuweisungen (copy propagation)
r2 := r1
r3 := r1 + r2
r2 := 5
r2 := r1
wird zu r3 := r1 + r1
r2 := 5
und
r3 := r1 + r1
r2 := 5
„
Beseitigung von unnötigen Instruktionen
r1 := r1 + 0
r1 := r1 - 0
r1 := r1 * 1
wird zu
Zusammenführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.7-15
(wird komplett beseitigt)
Zusammenführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.7-16
6. Sprachen, Compiler und Theorie
6. Sprachen, Compiler und Theorie
Komplexe Optimierungen
„
Es ist für den Optimierer erforderlich den Datenfluss zwischen
Registern und Speicher zu „verstehen“
…
…
…
„
Wird durch Datenflussanalyse (data flow analysis) bestimmt
„
„
Beispiel für komplexe Optimierung
Schleifeninvarianter Code
(Loop Invariant Code Motion)
…
Beispiel: Finde die Variablenmenge welche einen grundlegenden Block auf
dem Weg zu einem anderen Block „durchfliesst“ und von diesem anderen
Block verwendet wird (lebendige Variablen)
Ist wichtig für Optimierungen welche datenverändernde Instruktionen
einfügen, löschen oder bewegen
Der ursprüngliche Programmdatenfluss kann nicht geändert werden!
Bewege Berechnungen,
dessen Werte während allen
Schleifeniterationen gleich
bleiben (invariant sind), aus
der Schleife raus
L1:
r1 := *(sp + 100)
r2 := *r1
…
r3 := r2 < 100
if r3 goto L1
L0:
r1 := *(sp + 100)
L1:
r2 := *r1
…
r3 := r2 < 100
if r3 goto L1
Es ist für den Optimierer erforderlich die Struktur des
Kontrollflussgraphen (control flow graph) zu „verstehen“
…
…
Wird durch Kontrollflussanalyse bestimmt
Ist wichtig für die Leistungsoptimierung von Schleifen oder
schleifenähnlichen Strukturen in dem Kontrollflussgraphen
Zusammenführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.7-17
6. Sprachen, Compiler und Theorie
Zusammenführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.7-18
6. Sprachen, Compiler und Theorie
Was haben Sie in diesem Kapitel gelernt?
Ausblick
Compilerbau (Kapitel 6)
„
Programmiersprachen sind Abstraktionsmechanismen, welche:
…
…
„
„
ein Rahmenwerk zum Lösen von Problemen und erzeugen neuer
Abstraktionen bieten
Schirmen den Programmierer von niederen Detailebenen (low-level
details) der Zielmaschine (Assemblersprache, Verbinden (linken), etc.)
ab
Compiler sind komplexe Programme welche eine höhere
Programmiersprache in eine Assemblersprache umwandeln um
danach ausgeführt zu werden
Compilerprogrammierer handhaben die Komplexität des
Kompilationsprozesses durch:
…
…
Betriebssysteme (Kapitel 5)
Maschinenorientierte Programmierung (Kapitel 4)
von-Neumann-Rechner (Kapitel 3)
aufteilen des Compilers in unterschiedliche Phasen
verwenden, ausgehend von der Spezifikation, eine Theorie für den Bau
von Compilerkomponenten
Speicher
Zahlen und logische Schaltungen (Kapitel 2)
Kommunikation (Kapitel 7)
von-Neumann-Rechner
Zusammenführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.7-19
Zusammenführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
6.7-20
7. Telematik
Literatur (1/5)
„
Foliensätze (aus denen ev. teilweise Folien übernommen wurden):
…
Universität Braunschweig, Prof. Dr. S. Fischer:
http://www.ibr.cs.tu-bs.de/lehre/ss04/bsn/
(Foliensatz dient als Grundlage dieses Kapitels)
…
J. F. Kurose & K. W. Ross: „Computernetze: Ein Top-Down-Ansatz mit
Schwerpunkt Internet“, Pearson Studium (Addison-Wesley), ISBN 38273-7017-5, 2002 (Top-Down Ansatz nach Schichtenmodell)
Stallings: „Data & Computer Communications“, Prentice Hall, ISBN 013-086388-2: http://williamstallings.com/DCC6e.html
Informatik II
SS 2004
Teil 7: Telematik (Computernetzwerke)
…
1 - Grundlagen
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
Lehrstuhl für Telematik
Institut für Informatik
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7. Telematik
Literatur (2/5)
Literatur (3/5)
„
Bitte achten Sie immer auf die neusten Ausgaben der Bücher!!!
„
Grundlagen/Allgemeines
…
…
…
…
…
„
Details zu TCP/IP
…
J. F. Kurose & K. W. Ross: „Computernetze: Ein Top-Down-Ansatz mit
Schwerpunkt Internet“, Pearson Studium (Addison-Wesley), ISBN 38273-7017-5, 2002 (Top-Down Ansatz nach Schichtenmodell)
G. Krüger & D. Reschke: „Lehr- und Übungsbuch Telematik --- Netze –
Dienste – Protokolle“, Fachbuchverlag Leipzig (Carl-Hanser), 2.
Auflage, ISBN 3-446-22073-9, 2002 (Gutes Lehrbuch, wegen kompakte
Darstellung)
A. S. Tanenbaum: „Computernetzwerke“, Pearson Studium (PrenticeHall), 4. überarb. Auflage, ISBN 3.8273-7046-9, 2003 (Bottom-Up
Ansatz nach Schichtenmodell)
Douglas E. Comer: „Computernetzwerke und Internets mit InternetAnwendungen“, Pearson Studium (Prentice-Hall), 3. überarb. Auflage,
ISBN 3-8273-7023-X, 2002 (Sehr auf Internet-Technologien fixiert)
Rechenberg & Pomberger: „Informatik-Handbuch“, Hanser Verlag, ISBN
3-446-21842-4
W. Richard Stevens: „TCP/IP Illustrated Volume 1-3“, Pearson
Education (Addison-Wesley),
„
„
„
…
W. Richard Stevens: „TCP/IP Illustrated, The Protocols“, Pearson Education,
Volume 1, ISBN 0-201-63346-9
W. Richard Stevens: „TCP/IP Illustrated, The Implementation“, Pearson
Education, Volume 2, ISBN 0-201-63354-X
W. Richard Stevens: „TCP/IP Illustrated, TCP for Transactions, HTTP,
NNTP, and the UNIX Domain Protocols“, Pearson Education, Volume 3,
ISBN 0-201-63495-3
Douglas Comer: „Internetworking with TCP/IP“
„
„
„
Volume 1: „Principles, Protocols and Architecture“, ISBN 0130183806
Volume 2: „ANSI C Version: Design, Implementation, and Internals“, ISBN
0139738436
Volume 3: „Client-Server Programming and Applications, Linux/Posix
Sockets Version“, ISBN 0130320714
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-2
7.1-3
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-4
7. Telematik
7. Telematik
Literatur (4/5)
„
Literatur (5/5)
Programmierung
…
„
W. Richard Stevens: „UNIX Network Programming“, Prentice-Hall, 2.
Auflage
„
„
Weiterführende Themen
…
Mobilkommunikation
„
W. R. Stevens: „UNIX Network Programming --- Networking APIs: Sockets
and XTI“, Prentice-Hall, Volume 1, 2. Auflage, ISBN 0-13-490012-x
W. R. Stevens: „UNIX Network Programming --- Interprocess
Communication“, Prentice-Hall, Volume 2, 2. Auflage, ISBN 0-13-081081-9
…
…
Jochen Schiller: „Mobilkommunikation“ Pearson Studium (Addison-Wesley),
2. überarb. Auflage, ISBN 3-8273-7060-4, 2003
Verteilte Systeme
„
G. Coulouris: „Verteilte Systeme – Konzepte und Design“, Pearson Studium
(Addison-Wesley), 3. überarb. Auflage, ISBN 3-8273-7022-1, 2002
„
A. Tanenbaum: „Verteilte Systeme - Grundlagen und Paradigmen“, Pearsin
Studium (Prentice-Hall), ISBN 3-8273-7057-4, 2003
Kombination Kommunikation und Kooperation (Kommunikation und
Datenbanken)
„
s. Abeck, P.C. Lockemann, J. Schiller, J. Seitz: „Verteilte
Informationssysteme – Integration von Datenübertragungstechnik und
Datenbanktechnik“, dpunkt Verlag, ISBN 3-89864-188-0, 2003
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-5
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7. Telematik
Inhalte
„
„
„
…
…
…
„
Überblick über Grundlagen
Grundlagen von Netzen
Grundlegende Protokollmechanismen
Lokale Netze und Zwischensysteme
…
1.
2.
3.
Ethernet
Token Ring
WLAN
Zwischensysteme
4.
5.
6.
7.
Internet-Technologien (Schicht 3 und 4)
…
…
…
…
7.1-6
Grundlagen
Übertragungsmedien
Übertragungssysteme
Netztopologien und Medienzuteilung
Dienste und Protokolle
ISO/OSI Referenzmodell
Internet-Schichtenmodell
TCP/UDP/IP
DNS
HTTP
SMTP
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-7
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-8
7. Telematik
7. Telematik
Grundlagen
„
„
Kommunikationsnetze stellen eine allgegenwärtige Schlüsseltechnologie
dar und bilden die Grundlage der kommenden Informationsgesellschaft.
Geschichte der Kommunikation
…
…
…
…
…
…
…
…
Datenkommunikation:
„
Telekommunikation:
…
…
„
Telematik = TELEkommunikation und InforMATIK
(Simon Nora und Alain Minc in Ihrem Bericht an den französischen
Präsidenten, 1978)
Fackeltelegraphie (5. Jhdt. v. Chr. Griechenland)
drahtgebundene Telegraphie: Morse (ca. 1840)
Unterseekabel London - New York (1866)
Telefon Edison (1877)
öffentliche Telefonnetze (ab 1880)
ARPANET (vorläufer des heutigen Internets) (ab 1969)
lokale Netze (z.B. Ethernet ab 1976)
World-Wide-Web (ca. 1990)
„
Æ
Begriffe
…
„
…
…
…
…
„
…
Austausch von Informationen (z.B. Sprache, Video) zwischen Menschen.
Derzeit Integration von Datenkommunikation und Telekommunikation.
Computernetze
Computernetzwerke
Rechnernetze
Kommunikationsnetze
Aufgabengebiete
…
Austausch von Daten zwischen datenverarbeitenden Geräten.
Historisch: Verflechtung von Rechnern und Telekommunikationsmitteln
Andere Begriffe
…
…
…
Praktische und Angewandet Informatik (Teilweise auch technische
Informatik)
Technische Infrastruktur verteilter Systeme (Netze)
Netz-Dienste und darauf aufbauende Anwendungen
Regeln für Nachrichtenaustausch (Protokolle)
Werkzeuge zum Entwickeln verteilter Anwendungen
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-9
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7. Telematik
Struktur eines Datennetzes
Zusammenhang mit BS
„
Netzwerkbetriebssystem:
…
Endsystem
7.1-10
Zwischensystem
„
Betriebssystem, das um Kommunikationskomponenten erweitert wurde
Verteiltes Betriebssystem:
…
Betriebssystem, das intern auf Kommunikationskomponenten aufgebaut
ist und die Struktur und Komplexität des Kommunikationssystems
verbirgt (Transparenz).
Netz
„
Basiskomponenten:
…
…
…
Endsysteme
Zwischensysteme
Kommunikationsverbindungen zwischen direkt benachbarten Systemen
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-11
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-12
7. Telematik
7. Telematik
Ziele der Netznutzung (1/2)
„
Lastverbund:
…
…
„
…
…
…
…
„
…
…
„
Ziel: Austausch logisch zusammenhängender Daten zwischen örtlich
getrennten Systemen.
Methode: Zugriff auf entfernte Dateien oder verteilte Datenbanken.
„
Ziel: Bereitstellung spezieller Funktionen an verschiedenen Orten.
Methode: Einsatz von Spezialrechnern (Transputer, Superrechner).
Kapazitätsverbund:
…
Ziel: Übertragung von Informationen an verschiedene räumlich
getrennte Orte.
Methode: Einsatz von Briefdiensten oder verteilten
Informationssystemen.
Ziel: Schnellere und billigere Wartung verschiedener Rechner.
Methode: Zentrale Störungserkennung und -behebung.
Funktionsverbund:
…
„
Datenverbund:
…
Wartungsverbund:
…
Ziel: Verringerte Antwortzeiten.
Methode: Aufteilung einer komplexen Aufgabe in kleinere Teilaufgaben.
Kommunikationsverbund:
…
„
„
Ziel: Gleichmäßige Auslastung verschiedener Ressourcen.
Methode: Aufteilung anfallender Spitzenlasten auf mehrere Rechner.
Leistungsverbund:
…
„
Ziele der Netznutzung (2/2)
Ziel: Effiziente Nutzung der verfügbaren Ressourcen.
Methode: Versendung von Aufgaben an verschiedene Rechner und
gemeinsame Nutzung spezieller Hard- und Software.
Die Rechnernetztypen sind nicht alle scharf voneinander
abzugrenzen.
Normalerweise werden mit einem Rechnernetz mehrere Verbünde
gleichzeitig realisiert.
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-13
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7. Telematik
Übertragungsmedien (1/3)
„
…
„
Übertragungsmedien (2/3)
Verdrillte Kupferkabel (twisted pair):
…
…
…
…
…
„
Preiswerte Technologie für niedrige
Frequenzen.
Anfällig gegen Störungen
(elektromagnetische Einstrahlungen)
Koaxialkabel (coaxial cable):
Technologie für hohe bis sehr hohe
Frequenzen.
Besteht aus einem zentralen Leiter,
der von einem peripheren Leiter
ummantelt ist.
Geringe Anfälligkeit gegen
elektromagnetische Einstrahlungen.
Bei hohen Frequenzen aufgrund der
Bauform kaum Energieverluste
(geringe Dämpfung)
Lichtwellenleiter (fibre optics):
…
…
…
Übertragung höchster Frequenzen.
Monomodefaser können Licht über nahezu 100 km ohne Verstärkung
übertragen.
Leistungsfähiger und billiger als Koaxialkabel, obwohl die
Anschlusstechnologie etwas komplizierter ist.
STP:
STP:Shielded
ShieldedTwisted
Twisted
Pair
Pair
Multimode graded index
Coaxial
Coaxial
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-14
7.1-15
Single mode
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Grundlagen
7.1-16
7. Telematik
7. Telematik
Übertragungsmedien (3/3)
„
Richtfunk (line-of-sight):
…
…
…
…
„
„
Frage: wie werden die Daten an einem Netzknoten weitergeleitet?
Zwei Techniken bekannt
„
Leitungsvermittlung (circuit switched network):
„
Moduliert das Signal auf eine elektromagnetische Welle (Träger).
Einsatz in Gebieten, in denen eine Verkabelung nicht praktikabel ist.
Zwischen Sender und Empfänger muss eine Sichtverbindung bestehen.
Fehlerhäufigkeit hängt von den Sichtbedingungen (Wetter) ab.
…
Radiowellen (radio):
…
…
…
„
Vermittlungstechniken (1/2)
Ausstrahlung von elektromagnetischen Wellen in einem festgelegten
Gebiet (Zelle).
Mobilität der Empfänger und Sender möglich.
Geringe Bandbreite und hohe Fehleranfälligkeit.
…
„
„
„
Satelliten (satellites):
…
…
…
Vom Sender zum Empfänger wird eine durchgängige physikalische
Leitung etabliert.
Eine Kommunikation findet in folgenden Phasen statt:
…
Lange Übertragungszeiten (ca. 200 ms) zwischen Sender und
Empfänger.
Sehr hohe Frequenzen und Bandbreiten durch Mikrowellen und
Multiplexing.
Übertragung über geostationäre Satelliten, die sich mit der Erde drehen.
…
1.
2.
3.
Verbindungsaufbau
Datenaustausch
Verbindungsabbau
Nach dem Verbindungsaufbau steht die Bandbreite dem Sender
vollständig zur Verfügung (reservierte Bandbreite).
Beispiel: Telefonverbindungen, DATEX-L
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-17
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7. Telematik
Vermittlungstechniken (2/2)
„
Kommunikationsformen (1/2)
Paket- bzw. Speichervermittlung (packet switched network):
…
…
…
…
…
…
„
Nachrichten werden in kleine Einheiten, sogenannte Pakete (packets),
zerlegt.
Vom Sender existiert lediglich eine durchgängige Leitung zur nächsten
Relais-Station.
Relais-Stationen nehmen Pakete entgegen und leiten sie in Richtung
des Ziels weiter.
Relais-Stationen müssen die Wege zu den einzelnen Zielen kennen
(Wegewahl).
Die Bandbreite zwischen Relais kann besser genutzt, aber auch
überverplant werden.
Beispiel: DATEX-P, Internet
Verbindungsorientierte Kommunikation (connection oriented, CO):
…
…
…
…
Jede Kommunikation erfordert zunächst den Aufbau einer Verbindung
zum Kommunikationspartner (Signalisierung).
Verbindungsorientierte Kommunikation kann auf Leitungsvermittlungsund Speichervermittlungssystemen realisiert werden.
Die Adresse des Empfängers wird nur beim Verbindungsaufbau
angegeben.
Ausfälle von Netzkomponenten führen zum (bemerkbaren)
Verbindungsabbruch.
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-18
7.1-19
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-20
7. Telematik
7. Telematik
Kommunikationsformen (2/2)
„
Matrix der Kommunikationsformen
Verbindungslose Kommunikation (connectionless, CL):
…
…
…
…
Datenaustausch kann jederzeit ohne speziellen Verbindungsaufbau
beginnen.
Verbindungslose Kommunikation kann auf Leitungs- und
Speichervermittlungssystemen realisiert werden.
Jede versendete Nachricht muss vollständige Adressinformationen
besitzen.
Ausfälle und Störungen können zu unbemerkten Verlusten von
Nachrichten führen.
Leitungsvermittlung
PaketVermittlung
Verbindungs
-los
IP über feste
ATM-Strecken
UDP über IP
im Internet;
NFS-Anwendung
Verbindungs
-orientiert
Telefon
TCP über IP im
Internet; Email; FTP
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-21
7. Telematik
7. Telematik
Primäres Signal x(t)
Primäres Signal y(t)
„
Umformer
Signal x´(t)
Rückformer
Signal y´(t)
Physikalisches
PhysikalischesMedium
Medium
Störquelle z´(t)
„
Das Medium überbrückt die räumliche Distanz zwischen Quelle und Senke.
Zahlreiche Störeinflüsse auf das Medium sind möglich.
Signal y´(t) ist vom zeitlichen Verlauf von x´(t) und der Störgröße z´(t) bestimmt.
Nachrichtentechnischer Kanal
…
…
…
„
Besteht aus Umformer, Rückformer, physikalischem Medium und Störquelle.
Vom inneren Aufbau wird abstrahiert; interessant ist, welche Formen von
Primärsignalen mit welcher Leitung übertragen werden können.
z.B. Rundfunk, analoges Telefon
wertkontinuierliche und zeitdiskrete
Signale
…
Medium
…
…
…
„
nachrichtentechnischer
Kanal
Ein nachrichtentechnischer Kanal kann nach der
Klasse der unterstützten primären Signale
klassifiziert werden.
wertkontinuierliche und zeitkontinuierliche Signale
z.B. Steuerung von technischen Prozessen
wertdiskrete Signale (Grundlage der digitalen
Übertragung)
7.1-23
diskret
s
t
s
t
…
bei zeitkontinuierlichen Digitalsignalen können die
Signalwerte zu beliebigen Zeitpunkten wechseln, unter
Beachtung eines Mindestzeitintervalls zwischen
Signaländerungen
… bei zeitdiskreten Digitalsignalen ist in der Regel ein
isochrones Zeitraster für die Signaländerung
vorgesehen
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
zeitkontinuierlich
kontinuierlich
„
Senke
Wert-
Quelle
Signalklassen
diskret
Übertragungssysteme
„
7.1-22
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-24
7. Telematik
7. Telematik
„
„
„
„
Serielle und parallele Übertragung
Serielle Übertragung
Ein digitales Signal x(t) wird durch eine zeitliche Folge von Signalschritten
gebildet.
Aufeinanderfolgende Schritte eines Signals werden zu Gruppen
zusammengefasst
Wörter: kleinere Gruppen (z.B. 7,8) einer festen Anzahl von Schritten
Blöcke: größere Gruppen einer eventuell variablen Anzahl von Schritten
0
1
0
0
0
0
0
1
Signal
…
…
…
…
…
Zwischen Quelle und Senke werden mehrere Verbindungen parallel geschaltet.
Bei einer Wortlänge von 8 Bit und 8 Verbindungen kann ein ganzes Wort in einem
Schritt übertragen werden.
… Wird bei kürzeren Entfernungen (z.B. Anschluss von Druckern) eingesetzt.
Signalschritt
Taktraster
Block
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-25
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
„
„
übertragbare Datenmenge pro Zeiteinheit
Ethernet 10 Mbit/s, Fast Ethernet 100 Mbit/s
…
„
Zeit, die zur Übertragung
eines Bits benötigt wird
(ca. 1 Mikrosekunde bei
1 Mbit/s)
…
…
„
1. Bit
letztes Bit
…
„
…
…
A
Übertragungszeit
Transferzeit
Signallaufzeit
Round-TripZeit
Stationen teilen sich ein Medium
gute Ausfallsicherheit
Liniennetz
…
B
einfache Wegwahl
geringe Ausfallsicherheit
hoher Aufwand für die Steuerung
Bus
…
Zeit, um eine Nachricht von der Quelle zur Senke zu übertragen
einfache Wegwahl
geringe Ausfallsicherheit
Ring
…
Verzögerung (delay)
…
Stern
…
Bitbreite (bitwidth)
…
„
Netztopologien und Medienzuteilung
Bandbreite (bandwidth)
…
7.1-26
7. Telematik
Parameter eines Kanals
…
Bitstellen werden in festgelegter Reihenfolge seriell übertragen.
Bei vorhandener Wortstruktur reihen sich die Worte seriell aneinander.
Typisch bei Übertragungen über größere Distanzen.
Parallelübertragung
„
„
Zeit
0
1
0
0
0
0
0
1
Seriellübertragung
„
Schrittgruppe
z.B. Wort/Zeichen
10000010
Parallele Übertragung
Zeichen
Signalschritte
konzeptionell einfach
mittlere Ausfallsicherheit
Position im Netz beeinflusst
Übertragungszeiten
Zeit
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-27
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-28
7. Telematik
7. Telematik
Netztopologien
„
Vermaschtes Netz
…
…
…
„
„
keine Vermittlung notwendig
gute Ausfallsicherheit
n (n-1) / 2 Verbindungen bei n Knoten
„
„
Backbone-Netze
…
…
…
…
„
Netzwerkkategorien
„
Kopplung von Netzen zu größeren
Einheiten
meist hierarchische Struktur
Ausfallsicherheit direkt abhängig von
der
Zuverlässigkeit der
Verbindungselemente
passt sich gut in bestehende
hierarchische
Organisationsformen ein
„
„
PAN = Personal Area Network
LAN = Local Area Network
WLAN = Wireless Local Area Network
MAN = Metropolitan Area Network
WAN = Wide Area Network
GAN = Global Area Network
Die logische Struktur eines Netzes
kann sich von der physikalischen
Struktur unterscheiden (z.B. logischer
Ring auf einem physikalischen Bus).
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-29
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7. Telematik
Formen der Medienzuteilung
„
Frequenzmultiplex
Benutzen mehrere Systeme ein physikalisches Medium gemeinsam,
dann muss das Medium nach einem wohldefinierten Verfahren den
Systemen zur Datenübertragung zugeteilt werden.
„
Breitbandige Übergangswege ermöglichen die Unterbringung vieler
Übertragungskanäle in unterschiedlichen Frequenzbereichen
(Frequenzbändern).
…
…
„
Medienzuteilung
Zeitmultiplex
vorgegebenes
Raster
...
Multiplexed
link
7.1-30
Verfügbare Bandbreite wird in eine Reihe - nicht notwendigerweise
gleichbreite - Frequenzbänder eingeteilt.
Jedem Frequenzband wird ein Übertragungskanal zugeordnet.
Beispiel:
…
Kabelnetze zur Übertragung von Fernseh- und Radioprogrammen
Frequenzmultiplex
nach Bedarf
Medium bandwidth
dezentral
6
5
4
3
2
1
zentral
...
konkurrierend
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
geordnet
Grundlagen
7.1-31
Time
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-32
7. Telematik
7. Telematik
Zeitmultiplex
„
Dienste und Protokolle
Beim Zeitmultiplex wird kurzzeitig die gesamte
Übertragungskapazität einem Sender zur Verfügung gestellt.
…
…
…
„
Ein starres Zeitmultiplex wird als time division multiplexing (TDM)
bezeichnet.
Beim bedarfsgesteuerten Zeitmultiplex werden die Zeitscheiben je nach
Bedarf vergeben.
Bedarfsgesteuertes Zeitmultiplex wird auch als statistisches
Zeitmultiplex (statistical time multiplexing, STDM) bezeichnet.
„
…
…
…
…
„
Medium bandwidth
„
„
Time
Die von einem Netz bereitgestellten Funktionen werden abstrakt als
Dienst bezeichnet.
Die einzelnen elementaren Funktionen werden als Dienstprimitive
bezeichnet. Typische ISO/OSI Dienste sind:
123456 123456 123456 123456 123456
Request: Anforderung eines Dienstes
Indication: Anzeige, daß ein Dienst angefordert wurde
Response: Reaktion des Dienstes auf eine Dienstanzeige
Confirmation: Bestätigung, daß ein angeforderter Dienst erbracht wurde
Die Schnittstellen, über die die Dienstprimitive in Anspruch
genommen werden können, werden als Dienstzugangspunkte
(service access point, SAP) bezeichnet.
Die Dienste werden von sogenannten Instanzen (entities) erbracht.
Die Regeln, nach denen sich Instanzen verhalten und mit anderen
Instanzen interagieren, werden als Protokoll bezeichnet.
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-33
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7. Telematik
Kommunikation in Schichten
Chinesischer
Philosoph
Dolmetscher A
Chinesisch
Englisch
Techniker
TechnikerAA
erkennt einzelne Bucherkennt einzelne Buchstaben und „morst“ diese
staben und „morst“ diese
7.1-34
Diskussion über den
Existentialismus
Uninterpretierte Sätze
ohne Kenntnis des
Existentialismus
Uninterpretierte Zeichen
in korrekter Reihenfolge
Darstellung und Schichtung von Diensten
Dienstnutzer
Spanischer
Philosoph
Dienstnutzer
Dienstschnittstelle N
Dienstzugangpunkt N
N-Instanz 1
Dolmetscher
DolmetscherBB
Spanisch
Spanisch
Englisch
Englisch
N-Instanz 2
Dienstschnittstelle N-1
(N-1)-Instanz 1
Schicht N
Dienstzugangpunkt N-1
(N-1)-Instanz 2
Schicht N-1
Techniker
TechnikerBB
„
„
Die Bildung von Schichten ist ein grundlegendes Prinzip zur
Strukturierung von Kommunikationssystemen.
Dienste einer Schicht dürfen immer nur Dienstprimitive von Diensten
in direkt benachbarten Schichten in Anspruch nehmen.
Netz
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-35
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-36
7. Telematik
7. Telematik
Protokolldateneinheit (1/2)
„
„
Protokolldateneinheit (2/2)
Eine Protokolldateneinheit (PDU, Protokol Data Unit) ist eine
Informationseinheit, die zwischen Partnerinstanzen in
verschiedenen Stationen als Teil des Protokolls ausgetauscht wird.
Als Dienstdateneinheit (SDU, Service Data Unit) werden
Schnittstellendaten bezeichnet, die von einer Schicht an die nächst
niedrige oder umgekehrt übertragen werden.
N-Schicht
Folgenummer
Adressen
N-PDU
SAP
SAP
SCHNITTSTELLE
(N-1)-SDU
(N-1)-SDU
PCI
PCI
(N-1)-PDU
PKI
(N-1)-Protokoll(N-1)-Header
dateneinheit
(N-1)- Benutzerdaten
(N-1)-Trailer
Nachricht der N-Schicht
Fehlerprüfung
FRAGMENTIERUNG
N-PDU
(N-1)-Schicht
N-BenutzerN-Header daten
N-Trailer
PKI
Beispiele:
KEINE FRAGMENTIERUNG
PKI
PKI
N-Protokolldateneinheit
1-35
PCI
(N-1)-PDU
PDU = Protokolldateneinheit
PCI = Protokollkontrollinformation
(N-1)-PDU
SDU = Dienstdateneinheit
SAP = Dienstzugangspunkt
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-37
7. Telematik
7.1-38
7. Telematik
Weg-Zeit-Diagramme
Dienstnutzer
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Weg-Zeit-Diagramme: Beispiel
Diensterbringer
Dienstnutzer
Diensterbringer
request
indication
Benutzer A
request
indication
response
confirmation
Verbindungsaufbauphase
Bestätigter Dienst
„
„
„
„
Unbestätigter Dienst
Verbindungsanforderung
Verbindungsbestätigung
(Verbindung hergestellt)
Daten
Datentransferphase
Weg-Zeit-Diagramme verdeutlichen den zeitlichen und räumlichen
Zusammenhang zwischen Dienstprimitiven.
Die vertikale Achse ist die Zeitachse, die horizontale Achse gibt den
räumlichen Abstand an zwischen Dienstnutzer und Diensterbringer an.
Werden Dienstaufrufe (requests) grundsätzlich (positiv oder negativ)
bestätigt, so handelt es sich um einem bestätigten Dienst (confirmed
service).
Werden Dienstaufrufe (requests) nicht bestätigt, so handelt es sich um
einen unbestätigten Dienst (unconfirmed service).
Daten
Daten
Auslösungsanforderungen
Benutzer B
Verbindungsanzeige
(ankommender Ruf)
Antwort auf
Verbindungswunsch
(Annahme des Anrufes)
Daten
Daten
Daten
Auslösungsanzeige
Verbindungsabbauphase
Auslösungsbestätigung
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Schicht
7.1-39
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-40
7. Telematik
7. Telematik
Darstellung und Spezifikation von Protokollen
„
Das ISO/OSI-Referenzmodell
Anwendungsprozeß
Darstellung von Protokollen mit endlichen Automaten:
XReq
XConf
XRes
XReq; YReq
Warten
Endsystem
XInd
YInd; XInd
Ruhe
YConf; XConf
Application Process
Warten
Endsystem
Anwendung
Application
Darstellung
Presentation
Steuerung
Session
XRes; YRes
Transport
YReq
„
YConf
YRes
YInd
Vermittlung
Network
Network
Sicherung
Data Link
Data Link
Bitübertragung
Physical
Physical
Spezifikationsmöglichkeiten für Protokolle:
…
…
…
Transport
Transitsystem
natürliche Sprache
Formale Modelle (erweiterte endliche Automaten, attributierte
Grammatiken, Petrinetze, Prozessalgebra, temporale Logik)
Spezifikationssprachen (LOTOS, Estelle, SDL)
Medium
Media
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-41
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7. Telematik
ISO/OSI-Transportsystem (1/2)
„
ISO/OSI-Transportsystem (2/2)
Bitübertragungsschicht (physical layer):
…
…
…
…
…
„
Übertragung einer Folge von Bits über ein Medium
Festlegung von Eigenschaften des benutzten Mediums
Darstellung der Werte 0 und 1 (z.B. Spannungswerte)
Synchronisation zwischen Sender und Empfänger
Festlegungen von Steckernormen
Vermittlungsschicht (network layer):
…
…
…
…
…
„
7.1-42
Bestimmung eines Weges durch das Netz
Multiplexen von Endsystemverbindungen über eine
Zwischenverbindung
Fehlererkennung und -behebung zwischen Endsystemen
Flusssteuerung zwischen Endsystemen
Aufteilung eines Pakets in Rahmen
Sicherungsschicht (data link layer):
…
…
…
…
…
Übertragung einer Bitfolge in Rahmen (frames)
Datenübertragung zwischen Systemen, die ein gemeinsames Medium
besitzen
Erkennung und Behebung von Übertragungsfehlern
Flusssteuerung zur Behandlung von Überlastsituationen
Realisierung meist in Hardware auf Adapterkarten
„
Transportschicht (transport layer):
…
…
…
…
…
Ende-zu-Ende Kommunikationskanäle zwischen Applikationen
Virtuelle Verbindungen über verbindungslose Datagrammdienste
Fehlererkennung und -behebung zwischen Applikationen
Flusssteuerung zwischen Applikationen
Verschiedene Dienstgüten möglich
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-43
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-44
7. Telematik
7. Telematik
ISO/OSI-Anwendersystem
„
Sitzungsschicht (session layer):
…
…
„
„
Synchronisation und Koordination von kommunizierenden Prozessen
Dialogsteuerung (Sicherungspunkte)
Darstellungsschicht (presentation layer):
…
…
…
„
ISO/OSI-Standardisierung
„
„
Transformation und Anpassung von Datendarstellungen
Serialisierung von Datenstrukturen zum Zweck der Übertragung
Datenkompression
„
…
Entwurfsvorschlag (draft proposal, DP)
Entwurf (draft international standard, DIS)
… Standard (internation standard, IS).
…
Anwendungsschicht (application layer):
…
…
Die International Organization for Standardization (ISO) ist eine freiwillige, nicht
per Staatsvertrag geregelte Organisation zur internationalen Normung.
Die Mitglieder der ISO setzen sich aus den Normungsinstituten der einzelnen
Mitgliedsländer zusammen (ANSI für die USA und DIN für Deutschland).
Die Standards der ISO werden in ca. 200 technischen Komitees (TCs) durch
deren Unterkomitees (SCs) und Arbeitsgruppen (WGs) erstellt.
ISO-Standardisierungsmodell:
Bereitstellung von grundlegenden Diensten, die direkt von beliebigen
Anwendungen benutzt werden können:
Dateitransfer, virtuelle Terminals, Namensraumverwaltung,
Datenbankzugriff, Netzwerkmanagement, elektronische
Nachrichtensysteme, Prozess- und Maschinensteuerung, ...
„
Die jeweiligen Übergänge bedürfen Mehrheiten (Abstimmungen) und können
sich mehrmals zyklisch wiederholen.
Die Open Sytems Interconnection (OSI) beschreibt den Teil der Standards,
der sich mit der Kommunikation in offenen (Kommunikations-) Systemen
befasst.
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-45
7. Telematik
7.1-46
7. Telematik
Das Internet-Schichtenmodell
Internet-Standardisierung
„
Anwendungsprozeß
Application Process
Endsystem
„
Endsystem
Applikation
Applikation
„
Application
Application
Transport
Transport
Router
„
Internet (IP)
Internet (IP)
Internet (IP)
Subnetzwerk
Subnetzwerk
Subnetwork
Subnetwork
Subnetwork
Subnetwork
Medium
Die Standardisierung der Internet-Protokolle wird durch die Internet Engineering
Task Force (IETF) durchgeführt. Kontrolliert wird die IETF durch die Internet
Engineerung Steering Group (IESG).
Die IETF ist eine offene Organisation, bei der prinzipiell jeder mitarbeiten kann.
(Es gibt keine Mitgliedschaftspflicht bzw. -gebühren oder dergleichen.)
Internet-Standards werden in Arbeitsgruppen (working groups, WGs)
ausgearbeitet, die wiederum in verschiedenen Bereichen (areas) organisiert
sind.
IETF-Standardisierungsmodell:
…
Vorgeschlagener Standard (proposed standard)
Vorläufiger Standard (draft standard)
… Internet Standard (full standard)
…
Media
„
Die jeweiligen Übergänge erfordern "rough consensus" und Implementationen.
Zyklische Wiederholungen sind begrenzt möglich.
Die IETF befasst sich ausschließlich mit Standards rund um das Internet.
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-47
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-48
7. Telematik
7. Telematik
Eigenschaften der Modelle (1/2)
Eigenschaften der Modelle (2/2)
„
Das Internet-Protokoll (IP) stellt sehr geringe Anforderungen an ein
Subnetzprotokoll (Übertragung eines Pakets an eine Zieladresse).
„
Die Internet-Architektur stammt aus der Computerwelt und hat
entsprechend geeignete Programmierschnittstellen.
„
Fast alle Netzwerktechnologien (nicht nur der Schicht 2) können als
Subnetzwerk benutzt werden.
„
Die ISO/OSI-Architektur stammt aus der Telekommunikationswelt
und ist mehr auf die Bedürfnisse der klassischen
Telekommunikation zugeschnitten.
„
Das Internet-Protokoll (IP) schafft eine gemeinsame Basis, die leicht
an neue Netzwerktechnologien angepasst werden kann.
„
Andererseits ist der Adressraum der derzeitigen IP Version 4 (IPv4)
zu klein, um dem Bedarf nach Adressen zu befriedigen, weshalb
eine Umstellung zur Version 6 (IPv6) erfolgen muss.
Implementationen von Internet-Protokollen sind meist frei
zugänglich, was deren Verbreitung und Verbesserung in kurzen
Zeitintervallen ermöglicht.
„
ISO/OSI-Protokolle werden von formalen Standardisierungsgremien
entworfen, was sehr zeitaufwändig ist und oftmals zu komplexen
Resultaten führt.
„
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-49
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7.1-50
7. Telematik
Standardisierung: Zusammenfassung
Inhalte
„
„
UN
ISO
„
DIN
ANSI
SNV
ITU
ITU -T
„
Grundlagen von Netzen
Grundlegende Protokollmechanismen
Lokale Netze und Zwischensysteme (Schicht 2 und 3)
Internet-Technologien (Schicht 3 und 4)
ITU -R
TCP/IP
Ethernet
Token Ring
-
DoD
IETF
IEEE
Token Bus
ETSI
GSM
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-51
Grundlagen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.1-52
7. Telematik
Protokollmechanismen die alle Schichten betreffen
„
„
Informatik II
„
„
SS 2004
„
Teil 7: Telematik (Computernetzwerke)
„
2 – Grundlegende Protokollmechanismen
„
Namensgebung (Naming): Identifikation von Objekten/Ressourcen
Segmentieren und Blocken
Verbindungen und Multiplexen
Synchronisation: Kontrolle in einer Umgebung mit
unvorhersehbarer Verzögerung und Fehlverhalten
Fehlerüberwachung: Fehlererkennung und -behebung
Flusskontrolle/Staukontrolle
Prioritäten
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
Lehrstuhl für Telematik
Institut für Informatik
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7. Telematik
Namensgebung/Naming (1/2)
„
…
…
„
„
…
…
…
Namen werden auf Adressen abgebildet (Binding)
…
Der Name einer Ressource zeigt an, was wir suchen,
eine Adresse zeigt an, wo wir es finden, und
eine Route sagt uns, wie man dort hingelangt.
…
Bezeichner werden in allen Schichten benötigt, für z.B.
…
„
Namensgebung/Naming (2/2)
Identifizieren (Bezeichnen) ist das Herzstück eines
Rechensystementwurfs, sowohl verteilt als auch zentralisiert
…
7.2-2
„
Schutz
Fehlerüberwachung
Ressourcenverwaltung
Lokalisieren und gemeinsames Nutzen von Ressourcen
statisch: zur Übersetzungszeit eines Programms
dynamisch: zur Ausführungszeit (Dynamisches Binding wird oft mit
Nameservern gemacht)
Eine logische Sichtweise (System ist Raum von benannten
Objekten) gilt gegenüber einer physikalischen Sichtweise (System
ist Raum von Hoststationen, die Objekte enthalten) als Ideal.
Bezeichner können sehr unterschiedlich sein:
…
…
von Namen hoher Ebenen bis Adressen niedriger Ebenen
von benutzerorientierten Namen bis zu maschinenorientierten Adressen
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-3
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-4
7. Telematik
7. Telematik
Segmentieren und Reassemblieren
„
„
Blocken und Entblocken
Manche Benutzerdaten sind zu umfangreich, um als eine einzige Nachricht
übertragen zu werden.
Einteilung in kleinere Pakete.
…
…
…
…
…
Interne Puffer in den verschiedenen Schichten haben endliche Größe
extrem lange Nachrichten monopolisieren gemeinsam genutzte
Übertragungswege und andere Ressourcen
Aufbrechen einer langen Nachricht in kleinere Pakete erlaubt parallele
Benutzung von Mehrfachverbindungen (load sharing)
bei hoher Fehlerrate kann bessere Nutzleistung mit kürzeren Nachrichten
erreicht werden.
Die meisten Netze unterstützen nur Nachrichten bis zu einer bestimmten
maximalen Länge
(siehe Maximum Transmission Unit, MTU)
„
„
Auch zu kleine Nachrichten sind ungünstig.
Der Verwaltungsaufwand muss in vernünftigem Verhältnis zu den
Nutzdaten stehen.
Benutzernachrichten
Kommunikationsnachricht
Lange
Benutzernachricht
Kommunikationsnachrichten
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-5
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7. Telematik
Verbindungen
„
„
…
…
„
Multiplexen und Demultiplexen
Kommunikationsverbindungen werden benötigt, um mehrere
Nachrichten von Quelle zu Ziel zu transferieren.
Verbindungen bewahren Zustandsinformation zwecks:
…
7.2-6
„
„
Wiederaufsetzen nach Fehlern
Übergabe in der richtigen Reihenfolge
Segmentieren/Reassemblieren und Blocken/Entblocken
„
Eine Verbindung ist ein Nachrichtenstrom zwischen zwei
kommunizierenden Instanzen.
Multiplexing (bündeln) verschiedener logischer Verbindungen auf
eine physikalische.
Aufwärts-Multiplexen (Multiplexen/Demultiplexen): Verbindungen
einer höheren Schicht auf eine Verbindung einer niedrigeren
Schicht.
Abwärts-Multiplexen (Teilen/Vereinigen): Eine Verbindung einer
höheren Schicht auf mehrere Verbindungen einer niedrigeren
Schicht.
(N+1)-Schicht
(N)-Verbindungen
(N)-Verbindungen
N-Schicht
(N-1)-Schicht
(N-1)-Verbindungen (N-1)-Verbindungen
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-7
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-8
7. Telematik
7. Telematik
Fehlerüberwachung (2/2)
„
„
Hauptaufgabe der Protokolle: zuverlässige Kommunikation
Drei Aspekte:
…
…
…
„
Erkennung von Fehlern
Korrektur von Fehlern
Wiederaufsetzen nach Fehlern (Recovery)
„
Es gibt auch nichtbehebbare Fehler. Dann müssen ev. mehrere
Schichten reinitialisiert werden.
„
Beispiele: Fehlererkennung und –korrektur in Schicht 2
…
Typische Probleme:
…
…
…
…
„
Fehlerüberwachung (2/2)
Informationsverfälschung (Bitfehler)
Verlust von Nachrichten
Verdopplung von Nachrichten
Nachrichten in falscher Reihenfolge
…
…
Typische Lösungen:
…
…
…
Die meisten Protokolle beheben Fehler durch automatische
Wiederholung der Übertragung.
Fehler in der Nachricht: Einfügen redundanter Information
Reihenfolgefehler: Vergabe einer Folgenummer
…
Fehlererkennung durch redundante Information, an der der Empfänger
eine Verfälschung erkennt.
Parity Check: Es werden Bitfolgen betrachtet (zumeist Bytes). Ist die
Quersumme gerade, wird an die Bitfolge eine 0 angefügt (gerade
Parität) andernfalls eine 1 (ungerade Parität)
Block Check: Eine Folge von Bytes wird als Block aufgefaßt. Es werden
Zeilen- und Spaltenquersummen gebildet und zum Block hinzugefügt.
Cyclic Redundancy Checksum (CRC): Am häufigsten verwendete
Methode (z.B. HDLC, SDLC).
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-9
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7. Telematik
Flusskontrolle
„
„
7.2-10
Synchronisation (1/3)
Überwachung des Informationsflusses zwischen Sender und
Empfänger, um zu verhindern, dass der Sender den Empfänger
überflutet.
z.B. Fensterflusskontrolle
„
„
Für die Kommunikation zwischen zwei Prozessen über ein Netzwerk
muss Synchronisation auf verschiedenen Ebenen sichergestellt
sein:
Bit-Synchronisation:
…
Fenster = 5
…
Fenster = 4
„
7
0
6
7
1
5
2
4
Folgenummer = 1
Bestätigungsnummer = 5
3
Letzte empfangene Bestätigung
Sender
1
5
…
„
2
4
Byte-Synchronisation:
…
0
6
3
Austausch von Zeichen meist in 8-Bit-Einheiten (1 Byte)
Empfänger muss Anfang und Ende eines Byte bestimmen können
Block-Synchronisation:
…
Letzte quittierte Nachricht
Empfänger muss Anfang und Dauer eines Signalelements bestimmen.
Abtasten der Leitung in bestimmten Abständen
…
Daten werden in Blöcken zu mehreren Bytes zusammengefasst (z.B.
eine Nachricht)
Die Bedeutung eines Bytes hängt von der Position im Block ab
Empfänger
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-11
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-12
7. Telematik
7. Telematik
Synchronisation (2/3)
„
Synchronisation (3/3)
Beispiel für Blocksnchronisation:
„
Zugang zum Übertragungsmedium:
…
Syn.-Zeichen Start Kopf Benutzerdaten Blockprüfung Ende
SYN.-ZEICHEN
START
KOPF
BENUTZERDATEN
BLOCKPRÜFUNG
ENDE
„
…
…
- Das Bitmuster, um Bytessynchronisation zu erreichen
- Kennung für den Beginn einer Nachricht
- Protokollkontrollinformation
- Information der nächsthöheren Ebene
- Fehlererkennung bzw. Korrekturinformation
- Kennung für das Ende einer Nachricht
„
…
Protokollsynchronisation:
…
…
„
In High Level Data Link Control (HDLC) sieht der
Synchronisationsblock folgendermaßen aus: 01111110
bei gemeinsamer Nutzung
ein Benutzer darf nur zu einer bestimmten Zeit Zugriff haben
der Zugriff muss fair sein
kommunizierende Partnerinstanzen haben Zustandsinformation (z.B.
Sequenznummer)
nach Fehlern und Neustart muss Zustandsinformation konsistent
gemacht werden
Prozesssynchronisation:
…
HDLC (bzw. eine Abwandlungen davon) ist z.B. das Schicht2-Protokoll
von ISDN (Integrated Services Digital Network), X.25 und PPP (Point to
Point Protocol)
Synchronisation bei Zugriff auf gemeinsam genutzte Ressource (z.B.
Daten)
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-13
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7. Telematik
Prioritäten
„
„
…
„
…
…
„
statisch sein und
vom Nachrichteninhalt abhängig sein
…
…
…
normaler Datentransfer
beschleunigter Datentransfer
„
Multimedia, Unterbrechung anzeigen, Protokollsteuerung, Alarm in
Prozesssteuerungsanwendungen
Nachrichtenverlust
Ungewollte Duplizierung einer Nachricht
Eintreffen einer Phantom-Nachricht
Abweichungen von der Empfangsreihenfolge
Zwei mögliche Grundprinzipien:
…
kurze Nachrichten, niedrige Verzögerung, können andere Überholen
geht an Flusskontrollmechanismen vorbei
Bitfehler auf dem Übertragungsweg
Zusammenhangs-Besonderheiten:
…
typische Anwendungen
…
Nachrichtenverfälschungen:
…
Eigenschaften beschleunigten Datentransfers
…
„
„
Die meisten Protokolle kennen zwei Prioritätsebenen
…
„
Fehlererkennung und Fehlerbehebung im Detail
Nachrichten eine Priorität zuweisen, um sie im Wettbewerb mit
anderen zu bevorzugen
Eine Prioritätszuweisung kann
…
…
Übertragung von redundanten Informationen zur Fehlerkorrektur
(error correction) beim Empfänger.
Übertragung von Kontrollparametern und Sicherungsinformationen
zur Fehlererkennung (error detection) beim Empfänger und
Wiederholung der fehlerhaft übertragenen Informationen
(retransmission).
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-14
7.2-15
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-16
7. Telematik
7. Telematik
Erkennung von Bitfehlern (1/3)
„
„
Erkennung von Bitfehlern (2/3)
Verschiedene Verfahren zur Sicherung einzelner Zeichen und
Zeichengruppen
Paritätsbits:
…
…
„
Selbstkorrigierende Codes:
…
Jedes zu übertragende Zeichen wird um ein zusätzliches Paritätsbit
ergänzt. Bei gerader (ungerader) Parität wird die Anzahl der Einsen
durch das Paritätsbit auf eine gerade (ungerade) Zahl ergänzt.
Es wird jede ungerade Anzahl von Fehlern erkannt.
…
…
…
…
Die verwendete Codierung wird so gewählt, dass eine Verfälschung
eines Bits an einer beliebigen Position zu einer unzulässigen
Zeichenkodierung führt.
Die Hamming-Distanz ist die Anzahl der Bitpositionen, an denen die
Codierungen unterschiedliche Werte aufweisen, d (1011001, 0011100)
= 3.
Zur Erkennung und Korrektur von 1-Bit-Fehlern bei einer Wortlänge von
b Bits sind r redundante Prüfbits erforderlich, wobei die Ungleichung
(b+r+1) <= 2r erfüllt sein muß.
Für 7-Bit-ASCII sind also wegen 7+r+1 <= 2r mindestens r = 4 Prüfbits
erforderlich.
Die Erkennung und Korrektur von Fehlerbündeln kann mit HammingCodes nur durch hohen Aufwand (große Anzahl von Prüfbits) erfolgen.
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-17
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7. Telematik
Erkennung von Bitfehlern (3/3)
„
Bitfehlererkennung mit CRC
Blockweise Sicherung:
…
…
…
…
„
Zyklische Blocksicherung (cyclic redundancy check, CRC):
Anstatt einzelner Zeichen werden längere Bitfolgen (Blöcke) gesichert.
Am Ende des Blocks werden redundante Zeichen eingefügt, die zur
Absicherung des gesamten Blocks dienen.
Zwischen Sender und Empfänger wird verabredet, wie diese
Blockprüfzeichen zu berechnen sind.
Liegt ein Fehler vor, so veranlasst der Empfänger die erneute
Übertragung des fehlerhaften Blocks.
…
Syn.-Zeichen Start Kopf Benutzerdaten Blockprüfung Ende
…
SYN.-ZEICHEN
START
KOPF
BENUTZERDATEN
BLOCKPRÜFUNG
ENDE
7.2-18
- Das Bitmuster, um Bytessynchronisation zu erreichen
- Kennung für den Beginn einer Nachricht
- Protokollkontrollinformation
- Information der nächsthöheren Ebene
- Fehlererkennung bzw. Korrekturinformation
- Kennung für das Ende einer Nachricht
…
…
…
…
Eine zu sendende Bitfolge bnbn-1...b1b0 wird als Polynom
B(x)=bnxn+bn-1xn-1+...+b1x+b0 über dem Körper {0,1} dargestellt.
Für den Körper gilt 0+0=1+1=0, 1+0=0+1=1 und 1*1 = 1,
0*0=0*1=1*0=0.
Ein Generatorpolynom G(x)=grxr+...+g1x+g0 mit r < n und gr = 1 und
g0 = 1 wird zwischen Sender und Empfänger vereinbart.
Übertragen wird U(x)=xr * B(x) - t(x), wobei t(x) = (xr B(x)/G(x)) mod G(x)
ist.
Der Empfänger prüft, ob die Zeichenfolge durch G(x) ohne Rest teilbar
ist. Wenn es einen Rest gibt, wurde die Nachricht verfälscht.
Effiziente Implementation mit Schieberegistern möglich.
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-19
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-20
7. Telematik
7. Telematik
Bitfehlererkennung mit CRC
„
CRC: Beispiel
Algorithmus:
…
„
…
…
Beispiel: 101100 = x5+x3+x2
Beispiel: t(x) =
(x5+x3+x2)/(x2+1)
…
=
x3+1
…
…
Rest 1
Subtrahiere den Rest von xrB(x) (mod-2 Subtraktion)
„
Beispiel für die zyklische Blocksicherung:
…
Berechne t(x) = xrB(x) / G(x) (mod-2 Division)
„
…
„
Habe G(x) den Grad r. Hänge r 0-Bits an die Nachricht an. Sie enthält
dann n+r Bits und entspricht dem Polynom xrB(x)
„
Beispiel: U(x) = x5+x3+x2-1 = x5+x3+x2+1 = 101101
CRC: Berechung des Beispiels
…
…
Das ist die zu übertragende Nachricht.
…
Der Empfänger berechnet nun U(x)/G(x). Wenn es einen Rest gibt,
wurde die Nachricht verfälscht.
Bitfolge: 1101011011
Generatorpolynom G(x) = x4+x+1
B(x) = x9+x8+x6+x4+x3+x+1
t(x) = Rest von x13+x12+x10+x8+x7+x5+x4 : x4+x+1 = x3+x2+x
Übertragene Bitfolge: 11010110111110
1 1 0 1 0 1 1 0 1 1 0 0 0 0 = 1 0 0 1 1 x ...
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-21
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7. Telematik
Bitfehlererkennung mit CRC
„
„
Generatorpolynome
„
Welche Fehler werden erkannt?
…
Fehlerkorrektur geschieht in der Regel durch wiederholte
Übertragung einer verfälschten Nachricht. Eine Nachricht muss
dabei stets quittiert werden. Trifft für eine Nachricht keine Quittung
ein ist ein Fehler aufgetreten.
Generatorpolynome:
…
CRC-16
… CRC-CCITT
… CRC-32
… HEC
Es werden nur solche Fehler nicht erkannt, die Polynomen entsprechen,
die durch G(x) teilbar sind. Die Qualität des Verfahrens hängt also von
der Wahl von G(x) ab.
„
x16+x15+x2+1
x16+x12+x5+1
x32+x26+x23+x22+x16+x12+x11+ x10+x8+x7+x5+x4+x2+x+1
x8+x2+x+1
Eigenschaften von CRC-16:
…
CRC-16 entdeckt alle Einzel- und Doppelfehler, alle Fehler mit ungerader Bitzahl,
alle Fehlerbündel mit 16 oder weniger Bits und über 99% aller Fehlerbündel mit
17 oder mehr Bits.
… Fehler, die durch G(x) ohne Rest teilbar sind, können nicht erkannt werden.
„
„
HDLC: G(x) = CRC-CCITT
ETHERNET: G(x) = CRC-32
…
Wahrscheinlichkeit für Nichterkennung eines Fehlers bei ETHERNET: ca. 10-18
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-22
7.2-23
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-24
7. Telematik
7. Telematik
Flusskontrolle im Detail: Sequenznummern
„
„
„
„
Alle Datenblöcke werden durch aufsteigende
Sequenznummern nummeriert, die zusätzlich
übertragen werden.
Der Empfänger überprüft die empfangene
Sequenznummer und kann dadurch Abweichungen
von der Sendereihenfolge (Überholungen,
Vertauschungen, Duplikate) erkennen.
Der Verlust einer Nachricht kann vermutet werden,
wenn die Differenz der Sequenzzahlen der zuletzt
empfangenen Nachricht zu einer noch ausstehenden
so groß ist, dass eine Verzögerung unwahrscheinlich
ist.
Problem: Sequenznummern können sehr schnell
groß werden. Warum?
Quittungen und Sendewiederholung
„
Sender
Empfänger
1
1
2
„
3
4
3
5
4
6
5
7
4
8
8
Sender
1
1
ACK1
ACK1
2
über den korrekten Empfang einer Nachricht
zu informieren (positive Quittung,
acknowledgement, ACK), oder um den
Absender
NACK2
… über den Entdeckung eines Fehlers zu
2
unterrichten (negative Quittung, negative
acknowledgement, NACK).
„
Problem: Quittungen können verloren
gehen, was zu einer Verklemmung führen
kann.
2 (Fehler)
NACK2
2
ACK2
ACK2
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-25
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
„
„
Der Verlust von Nachrichten oder Quittungen
kann nicht erkannt werden, wenn der Sender auf
die Quittung des letzten Blocks wartet, bevor er
den nächsten sendet, oder wenn der Empfänger
nicht das Ende der Übertragung kennt.
Eine Zeitüberwachung veranlasst automatisch
die Wiederholung der letzten Nachricht bzw.
Quittung, falls in einem bestimmten Zeitintervall
keine Quittung bzw. die folgende Nachricht
eingetroffen ist.
Problem: Die Zeitüberwachung muss sich an die
aktuelle Verzögerung im Netz anpassen, um
einerseits unnötige Wiederholungen zu
vermeiden und andererseits Verluste möglichst
schnell zu entdecken.
Fluss- und Staukontrolle
„
Sender
Empfänger
n
n
ACKn
n
n
ACKn
ACKn
n+1
„
„
„
„
n+1
n+1
ACKn+1
ACKn+1
„
Sequenznummern werden modulo n vergeben
(Nummernkreis), damit kleine Felder fester Größe
1
zur Übertragung der Sequenznummern benutzt
werden können.
2
Zur Erhöhung der Effizienz darf der Sender
ACK1
mehrere Nachrichten senden, bevor er auf
3
Quittungen warten muss.
ACK2
Die maximale Anzahl der unbestätigten
4
Nachrichten ist durch die Größe des
ACK
3
Nummernkreises bestimmt.
5
Beim Verlust einer Nachricht werden nach Ablauf
des Zeitintervalls die unbestätigten Nachrichten
wiederholt.
4
Der Empfänger kann ebenfalls einen Timer
ACK4
benutzen, um Quittungen zu wiederholen.
5
Problem: was ist wenn der Empfänger langsam
6
ist??
ACK5
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-26
7. Telematik
Zeitüberwachung
„
Empfänger
…
6
7
Zur Fehlerbehebung muss der Sender über
einen erkannten Fehler informiert werden,
damit der Sender eine Sendewiederholung
veranlassen kann.
Quittungen sind ein Nachrichtenaustausch
in Gegenrichtung, um den Sender
7.2-27
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Sender
Empfänger
1
ACK1
2
ACK2
3
ACK3
4
ACK4
ACK4
4
5
ACK5
6
Protokollmechanismen
7.2-28
7. Telematik
7. Telematik
Flusskontrolle (flow control)
„
Stop-and-Wait
„
Problem:
…
…
Sender und Empfänger arbeiten im allgemeinen mit unterschiedlicher
Geschwindigkeit.
Kann der Sender schneller Daten versenden als der Empfänger sie
empfangen und verarbeiten kann, so können Puffer überlaufen und
dadurch Verluste hervorgerufen werden.
„
„
„
„
Ziel:
…
…
Bei der stop-and-wait Methode darf eine Nachricht erst dann
abgesendet werden, wenn die bereits gesendeten Nachrichten
positiv quittiert worden sind.
Einfaches Verfahren, leicht zu implementieren
Geringe Anforderungen an die Pufferungsfähigkeiten der
Protokollinstanzen.
Geringer Durchsatz, insbesondere bei langen Transferzeitdauern
und puffernden Medien.
Gleichmäßiger Datenaustausch zwischen Sender und Empfänger.
Automatische Anpassung der Geschwindigkeit, wenn sich die
Verarbeitungskapazität beim Sender oder Empfänger erhöht oder
verringert.
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-29
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7. Telematik
Kreditmethode und Fenstertechnik
„
Flusskontrolle
„
Kreditmethode:
…
…
…
Der Empfänger teilt dem Sender einen Kreditrahmen n mit.
Der Sender darf maximal n Nachrichten ohne positive Quittung verschicken.
Der Empfänger muss eine Zeitüberwachung einführen und ebenfalls
Sequenznummern für Kredite benutzen, um verlorene Kredit-Nachrichten
behandeln zu können.
Fenstertechnik:
…
…
…
…
Sender und Empfänger einigen sich auf ein Fenster innerhalb des
Wertebereichs der Sequenznummern (Flusskontrollfenster, flow control
window).
Nach dem Verbindungsaufbau besitzt der Sender implizit Kredite für so
viele Datenblöcke wie durch die Fenstergröße angegeben ist.
Durch positive Quittungen wird das Fenster beim Sender verschoben.
Zusätzlich kann die Größe des Fensters dynamisch angepasst werden.
Fenster = 5
7
0
6
Sender
7
1
5
2
4
Folgenummer = 1
Bestätigungsnummer = 5
3
Letzte empfangene Bestätigung
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-30
7.2-31
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Fenster = 4
0
6
1
5
2
4
Empfänger
3
Letzte quittierte Nachricht
Protokollmechanismen
7.2-32
7. Telematik
7. Telematik
Fenstertechnik bei TCP
UserAA
User
Staukontrolle
TCPAA
TCP
TCPBB
TCP
ESTABLISHED
Send(data[500])
Send(data[500])
Send(data[300])
Send(data[300])
Send(data[400])
Send(data[400])
Waiting for credit
Stop Retrans Timer
Start Persist Timer
ACK,ack=s1,
ack=s1,win=1000
win=1000
ACK,
seq=s1,data[500]
data[500]
seq=s1,
UserBB
User
500
500
500
500
seq=s1+800,data[200]
data[200]
seq=s1+800,
500
500
300 200
200
300
500
500
300 200
200
300
ACK,ack=s1+1000,
ack=s1+1000,win=0
win=0
ACK,
ACK,ack=s1+1000,
ack=s1+1000,win=800
win=800
ACK,
…
Problem:
…
ESTABLISHED
Receiver buffer
1000
1000
seq=s1+500,data[300]
data[300]
seq=s1+500,
ACK,ack=s1+500,
ack=s1+500,win=500
win=500
ACK,
ACK,ack=s1+800,
ack=s1+800,win=200
win=200
ACK,
„
Die Fenstertechnik oder die
Kreditmethode regeln den
Datenfluss zwischen Sender
und Empfänger (end-to-end
flow control).
LAN
IP WAN (bottleneck)
800
800
200
200
Data(seq)
(bottleneck)
Update transmitter
Data(seq)
Ack data, indicate
Update transmitter
window Timeout due to dropped
Ack data, indicate
receiver window
window
receiver window
packets or excessive delay
ACK(ack sequence number, window size)
ACK(ack sequence number, window size)
seq=s1+1000,data[200]
data[200]
seq=s1+1000,
ACK,ack=s1+1200,
ack=s1+1200,win=600
win=600
ACK,
200200
200
200
600
600
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-33
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
„
„
Inhalte
Reservierung von Puffern und Bandbreite:
„
Vor dem eigentlichen Datenaustausch werden auf dem Weg vom
Sender zum Empfänger ausreichend Puffer und Bandbreite reserviert.
„
„
Grundlagen von Netzen
Grundlegende Protokollmechanismen
Lokale Netze und Zwischensysteme (Schicht 2 und 3)
…
Verwerfen von Nachrichten:
…
7.2-34
7. Telematik
Techniken der Staukontrolle
…
LAN
Deliver(data[800])
Deliver(data[800])
Stop Persist Timer
„
Innerhalb des Netzes können
trotzdem zwischen
Netzknoten
Überlastsituationen (Staus,
congestion) auftreten.
Nachrichten werden von überlasteten Netzknoten einfach verworfen. Es
ist dann die Aufgabe von Sender und Empfänger, die verlorene
Nachricht zu wiederholen.
…
…
„
Ethernet
Token Ring
Zwischensysteme
Internet-Technologien (Schicht 3 und 4)
Choke-Pakete:
…
Ein überlasteter Knoten schickt spezielle Nachrichten an die Sender,
um die Überlastung anzuzeigen und den Sender um eine Reduktion der
Sendegeschwindigkeit zu bitten.
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-35
Protokollmechanismen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.2-36
7. Telematik
Überblick
„
LANs (Direktverbindungsnetze)
…
Informatik II
…
SS 2004
…
…
„
Eigenschaften und Standards
IEEE 802.3 (Ethernet)
IEEE 802.11 (Wireless LAN)
IEEE 802.5 (Token Ring)
Zwischensysteme
Teil 7: Telematik (Computernetzwerke)
…
3 – Lokale Netze und Zwischensysteme
…
…
…
Hub/Repeater
Switch/Brücke
Router
Gateway
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
Lehrstuhl für Telematik
Institut für Informatik
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7. Telematik
Eigenschaften lokaler Netze
„
LAN-Entwicklung
Kennzeichen lokaler Netze (Local Area Networks, LANs):
…
…
…
…
…
…
„
Netze zur bitseriellen Übertragung von Daten zwischen unabhängigen,
miteinander verbundenen Komponenten.
Unter rechtlicher Kontrolle des Benutzers/Betreibers und meist auf den
Bereich innerhalb eines Grundstücks beschränkt.
Maximaler Durchmesser des Netzes im Bereich von wenigen
Kilometern.
Relativ hohe Geschwindigkeit (10 Mbps - 1 Gbps).
Leichter, kostengünstiger Anschluss für Geräte unterschiedlichster Art
(z.B. PCs, Workstation, Drucker, Messgeräte, ...)
Direktverbindungsnetze
„
„
„
Entwicklung der LANs seit Mitte der 70er Jahre.
Weite Verbreitung von Ethernet und Token Ring LANs in den 80er
Jahren.
Derzeit Entwicklung von Hochgeschwindigkeit-LANs
(Fast Ethernet, Gigabit Ethernet)
Stark zunehmende Verbreitung von Wireless LANs, Bluetooth
…
„
siehe auch Vorlesungen Mobilkommunikation I und II
IEEE Standards für lokale Netze
…
…
…
Die gebräuchlichsten Standards für lokale Netze (local area networks,
LAN) stammen von der IEEE (Institute of Electrical and Electronics
Engineers).
IEEE-Standards für lokale Netze werden in den IEEE 802-Dokumenten
veröffentlicht.
Einige der IEEE-Standards wurden von der ISO übernommen und als
ISO-Standards mit gleichem Inhalt veröffentlicht.
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.3-2
7.3-3
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.3-4
7. Telematik
7. Telematik
IEEE-Standards
LANs im ISO/OSI-Referenzmodell
IEEE 802.1
IEEE 802.2
IEEE 802.3
IEEE 802.4
IEEE 802.5
IEEE 802.6
IEEE 802.7
IEEE 802.8
IEEE 802.9
IEEE 802.10
IEEE 802.11
IEEE 802.12
IEEE 802.14
IEEE 802.15
IEEE 802.16
IEEE 802.17
„
High Level Interface
Logical Link Control
CSMA/CD LANs (Produktbezeichnung Ethernet)
Token-Bus LANs
Token-Ring LANs
DQDB MANs
Broadband LANs
Fibre Optics
Isochronous LANs
Security
Wireless LANs
Demand Priority Access
Cable Modems
Wireless Personal Area Network
Broadband Wireless Access
Resilient Packet Ring
„
Die LAN-Protokolle sind in der zweiten Schicht des
ISO/OSI- Referenzmodells (Sicherungsschicht, data link
layer) angesiedelt.
Darstellung
Steuerung
Die Sicherungsschicht wird nach IEEE in zwei
Teilschichten aufgeteilt:
…
Transport
Die logical link control (LLC) Schicht realisiert die
normalerweise in der Schicht 2 vorhandenen
Sicherungsfunktionen.
Vermittlung
Logical Link Control
Sicherung
Media Access Control
Bitübertragung
…
Die media access control (MAC) Schicht regelt den
Zugang zum Übertragungsmedium.
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Anwendung
7.3-5
7. Telematik
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.3-6
7. Telematik
IEEE 802.3 - 10 Base 2
IEEE 802.3 - 10 Base 5
Transceiver
„
„
Ethernet wurde ursprünglich am Xerox PARC entwickelt und von
Xerox, DEC und Intel zu einem gemeinsamen Standard
ausgearbeitet.
Der IEEE 802.3-Standard definiert ein CSMA/CD-Verfahren für
verschiedene Medien, während Ethernet das Medium Koaxialkabel
mit einer Datenrate von 10 Mbps vorschreibt.
T-Verbinder (coax connector)
0,25'' Koaxialkabel (thin wire, cheapernet)
0,5'' Koaxialkabel (thick wire, yellow cable)
Abschlußwiderstand (terminator)
Transceiverkabel (drop cable)
Tap
Transceiver unit
Abschlußwiderstand (terminator)
„
Maximale Kabellänge: 200 m Leitungsquerschnitt: 0.25''
Bitrate: 10 Mbps
Übertragung: Basisband
MAC unit
verdrilltes Kupferkabel
(maximal 50 m)
Maximale Kabellänge: 500m Leitungsquerschnitt: 0.5''
Bitrate: 10 Mbps
Übertragung: Basisband
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Protocol control firmware
7.3-7
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.3-8
7. Telematik
7. Telematik
IEEE 802.3 - 10 Base T/F
„
IEEE 802.3 - Rahmenformat
10 Base T (twisted pair) und 10 Base F (fibre optics) beruhen auf
einer Stern-Topologie, die aber als gemeinsames, geteiltes Medium
betrieben wird.
Rx Tx
„
Hub
Repeater electronics
Rx Tx
„
Rx Tx
„
verdrilltes Kupferkabel (twisted pair)
„
MAC unit
MAC unit
MAC unit
„
Rx
„
Tx
Rx
Tx
Rx
Tx
Ein Hub wiederholt eingehende Signale auf allen
Ausgangsleitungen, wobei eine Verstärkung bzw. Anpassung des
Signals (elektrisch - optisch) stattfinden kann.
„
Die Preamble besteht aus dem Bitmuster
10101010 und dient zur Synchronisation.
Das Startzeichen (SFD) besteht aus dem
Bitmuster 10101011 und kennzeichnet
den Anfang eines Rahmens.
Die Ziel- und Quelladressen sind
normalerweise 6 Bytes lang.
Das Längenfeld beschreibt die Anzahl
Bytes im folgenden Datenbereich.
Falls erforderlich wird der Rahmen auf
die Mindestlänge von 64 Bytes aufgefüllt.
Die Prüfsumme (FCS) wird mit Hilfe des
CRC-32-Polynoms berechnet.
Preamble
Start-of-frame delimiter (SFD) 1 byte
7.3-9
7. Telematik
Ablauf einer Kollision:
Station
A
Station
B
„
2 byte
Data
<= 1500
byte
0-46 bytes
Frame check sequence (FCS) 4 bytes
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
„
7.3-10
Problem mit Hubs:
…
„
…
„
Beim i-ten Versuch wird die Übertragung nach n Slotzeiten wiederholt,
wobei n eine Zufallszahl aus dem Bereich 0 ... 2i-1 ist.
Die Slotzeit für ein 10 Mbps Koaxialkabel mit maximal 2.5 km Länge
entspricht 512 Bitzeiten oder 51.2 us.
alle Stationen sind in einer sogenannten Kollisionsdomäne
dadurch kann der erreichbare Durchsatz gering sein
Verbesserung der Leistung durch
…
Backoff:
…
2 or 6 bytes
Padding (optional)
…
…
Source MAC address
Switched IEEE 802.3 LANs
A beginnt zu senden:
B beginnt zu senden:
B erkennt die Kollision:
B sendet JAM Signal:
„
2 or 6 bytes
7. Telematik
IEEE 802.3 - CSMA/CD
„
Destination MAC address
Length indicator
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7 bytes
höhere Datenrate (bspw. 100Base-T)
‚Switching‘
Switch lokalisiert ‚richtigen‘ Ausgang
…
…
kein Broadcast
dadurch keine
Kollisionen
Applet-Demo:
http://herodot.informatik.uni-mannheim.de/appverw/appletlist2.php
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.3-11
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.3-12
7. Telematik
7. Telematik
Fast Ethernet – IEEE 802.3u, 802.3z
„
„
IEEE 802.3u: High-Speed LAN kompatibel mit Ethernet aber bei 100
Mbit/s
…
…
…
„
IEEE 802.11 (Wireless LAN)
„
Beibehaltung der Prozeduren, Formate, Protokolle
Bitzeit verkürzt von 100 ns zu 10 ns
aber geringe Netzausdehnung
…
…
IEEE 802.3z: Ethernet bei 1 Gigabit / s
…
…
…
„
Eigentliches Ziel: Beibehaltung der Prozeduren, Formate, Protokolle
aber wenn Bitzeit von 100 ns über 10 ns zu 1 ns verkürzt wird,
dann ist maximale Ausdehnung auch nur noch 1/100 (ca. 30m)
daher zur Abhilfe:
„
„
„
„
zwei Modi Full Duplex, Half Duplex
‚Carrier Extension‘ zur Aufblähung der Rahmen
„
„
der IEEE 802.11 Standard spezifiziert drahtlose Netze
zwei Kommunikationsformen
inzwischen gibt es auch 10 Gbit/s Ethernet: IEEE 802.3ae
über eine Infrastruktur (mit Basisstationen, die an ein kabelgebundenes
Netz angebunden sind)
in Form von Ad hoc Netzen, wo keine Infrastruktur vorhanden ist,
sondern die Endgeräte Daten weiterleiten
Übertragung im ISM-Band (2.4-2.4835 GHz)
(Frequenzbereich für industrielle, wissenschaftliche und
medizinische Anwendungen)
Infrarot-Übertragung im Bereich 300-428,000 GHz
verschiedene Modulations- und Kodierungstechniken mit
theoretische Datenraten von 1, 2, 11 oder 54 Mbit/s
Wireless LAN setzt sich als drahtlose Technik durch und wird auch
als UMTS-Rivale gesehen!
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.3-13
7. Telematik
7. Telematik
IEEE 802.5 – Prinzip
„
Token-Ring Übersicht
…
…
…
„
Ringtopologie mit Sternverkabelung.
Nur eine Senderichtung.
Typischerweise STP-Kabel (andere möglich,
z.B. koaxial).
4/16 Mbps, < 260 Stationen, < 100 m
zwischen den Stationen.
MAC-Protokoll
…
…
Token rotation (token passing) protocol.
Unterstützung von Echtzeitdatenverkehr:
„
„
beschränkte Wartezeit für den Medienzugriff
wegen begrenzter token holding time.
Prioritäten.
IEEE 802.5 - Rahmenformat
Interface
Interface
DD
„
Token
Token
AA
CC
„
„
BB
„
„
DD
Concentrator
Concentrator
AA
„
CC
BB
„
Das Startzeichen (SD) und das Endezeichen
(ED) sind Bitmuster mit spezieller Kodierung.
Das Zugriffskontrollbyte (AC) enthält
Prioritätsbits, Token und Monitorbits und
Reservierungsbits.
Das Rahmenkontrollbyte (FC) definiert den
Typ des Rahmens. Kontrollrahmen werden
von jedem Knoten interpretiert.
Die Ziel- und Quelladressen sind
normalerweise 6 Bytes lang.
Der Datenbereich enthält entweder Daten
oder Kontrollinformationen.
Die Prüfsumme (FCS) wird mit Hilfe des
CRC-32-Polynoms berechnet.
Das Rahmenstatusbyte (FS) zeigt an, ob die
Nachricht von einem Empfänger erkannt
wurde und ob die Daten vom Empfänger
kopiert worden sind.
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.3-14
7.3-15
Start delimiter (SD)
Access Control (AC)
Frame Control (FC)
1 byte
1 byte
1 byte
Destination Address (DA)
Source Address (SA)
Data
< 5000
byte
Frame check sequence (FCS) 4 bytes
End Delimiter (ED)
Frame Status (FS)
1 byte
1 byte
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.3-16
7. Telematik
7. Telematik
Token Rotation Protocol
Token Ring interface
Repeat
mode:
Rx
IEEE 802.5 - Fehlerkorrektur
„
Monitorstationen:
…
token
Tx
1. A waits
for the
token
A
Transmit
mode:
2. A seizes
the token
and starts
transm.
A
C
…
C
…
frame
A to C
Tx
Rx
D
D
B
B
D
D
„
D
Aufgaben der Monitorstation:
…
frame
A to C
A
3. C starts
copying the
frame
C
A
4. A removes
own frame
C
…
A
5. A passes
on the token
…
C
„
token
B
frame
A to C
B
Jeder Ring besitzt genau eine aktive Monitorstation.
In jeder anderen Station ist eine passive Monitorstation in
Bereitschaft.
Zur Fehlerkorrektur werden spezielle Verwaltungsrahmen
(management frames) verschickt: Claim Token, Duplicate Token,
Active Monitor Present, Standby Monitor Present, Beacon, Purge
Erkennung und Beseitigung zirkulierender Rahmen.
Erkennung verlorengegangener Token.
Erkennung mehrerer aktiver Monitore.
Applet-Demo:
http://herodot.informatik.uni-mannheim.de/appverw/appletlist2.php
B
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.3-17
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7. Telematik
Zwischensysteme: Aufteilung der Netzwerkkomponenten
„
Verkabelung (Passive Komponenten)
…
…
…
…
„
…
…
…
„
Verbindung von Netzen
„
Im Gebäude (oder außerhalb) verlegte Kabel (Twisted Pair, Koaxial,
Glasfaser etc.)
Patchfelder meist eingebaut in 19“-Schränken
Anschlussdosen in Räumen
Patchkabel zur Anbindung der Aktiven Komponenten und Clients
…
„
…
…
Hubs 10 bzw. 100 MBit, Repeater
Switches (auch Kopplung von 10 MBit auf 100 MBit bzw. GBit)
Router (ISDN, ADSL, Interne LAN-LAN-Kopplung, WAN-Kopplung)
Firewalls, Application Level Gateways, Level 7 Switches etc.
…
„
„
Repeater und Hubs (bis Schicht 1)
Brücken (bridges) und Switches (bis Schicht 2)
Router (bis Schicht 3)
Gateways (bis Schicht 4 oder höher)
Diese Zwischensysteme gibt es oft nicht in Reinform, da
verschiedene Funktionalitäten angeboten werden
…
PC‘s, Server, Workstations, Drucker, NAS, Scanner, etc.
Verbindung von homogenen Netzen über Brücken
Verbindung von heterogenen Netzen über Brücken oder Gateways
Zwischensysteme
…
Server und Clients (Hosts/ Stationen)
…
Klassifikation von Verbindungen:
…
Aktive Netzwerkkomponenten (meist mit Stromaufnahme)
…
z.B. Router haben oft Funktionalitäten eines Gateways, wie
z.B. Port-Filter (für Firewalls)
Die Bezeichnungen von Zwischensystemen werden auch
desöfteren falsch verwendet!
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.3-18
7.3-19
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.3-20
7. Telematik
7. Telematik
Repeater und Hub
„
Brücke
„
Ein Repeater ist eine aktive Netzwerkkomponente, die eine
Regenerierungsfunktion übernimmt. Ein Repeater empfängt Signale,
verstärkt sie und gibt sie an alle Anschlüsse weiter.
…
Brücken dienen somit der Kopplung gleicher oder verschiedener Netze
Ein Repeater arbeitet auf OSI-Ebene 1
… Kann auch zur Kopplung unterschiedlicher Medien eingesetzt werden
… Repeater besitzen keine Protokollfunktionen und verarbeitet keine Daten
…
Ein Hub (oder auch Sternkoppler) hat die gleichen Aufgaben wie ein
Repeater
…
Der Datenstrom wird gefiltert, weshalb nur Pakete für angeschlossene
Endsysteme weitergeleitet werden (einfache Wegewahl entgegen der
eigentlichen Schichtenfunktionalität)
Formatumwandlung der Datenpakete bei heterogenen Netzen
Netze werden partitioniert
„
…
„
Eine Brücke (bridge) verbindet zwei oder mehr Netze auf Schicht 2.
…
…
Er bildet den Konzentrationspunkt für eine sternförmige Verkabelung zur Bildung
logischer LANs.
… Somit werden mehrere abgehende Signale erzeugt.
… Kaskadierung ist möglich, erhöht aber nicht den Gesamtdurchsatz (im
Gegensatz zu einem Switch)
„
„
z.B. Ethernet-Ethernet oder Ethernet-Token-Ring
Brücken können somit als Mini-Firewall zur Abschottung eingesetzt
werden
Verkehrsunterscheidung
…
…
Intranetz-Verkehr: Datenstrom zwischen Endsystemen eines LANs
Internetz-Verkehr: Datenstrom zwischen Endsystemen in
verschiedenen LANs, welche über eine oder mehrere Brücken
miteinander verbunden sind.
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.3-21
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7. Telematik
Switch
„
„
„
„
„
„
Router
Mischform einer Brücke und Hubs
Mit der Verwendung eines Switches als Alternative zum Hub ist es
möglich, jedem Anschluss die volle Übertragungsbandbreite eines
LAN bereitzustellen. Datenpakete werden dabei nicht mehr auf
allen, sondern nur noch auf dem richtigen (Ziel-) Anschluss
ausgegeben.
Es können mehrere Datenpakete, im Gegensatz zur Brücke,
gleichzeitig vermittelt werden
Kollisionen (siehe CSMA/ CD - Kollisionserkennung) können somit
beim Medienzugriff nur selten auftreten und jede Station kann
(theoretisch) die volle Bandbreite des Mediums in Anspruch
nehmen. (erfordert Vollduplex-Übertragung, sprich für jede
Richtung ein Übertragungsmedium)
Ein Switch setzt verschiedene Geschwindigkeiten untereinander
um (z.B. 10 MBit auf 100 MBit)
Ein Switch arbeitet auf OSI-Ebene 2
„
Ein Router ist ein Gerät, das Netzwerke koppeln und große
Netzwerke in Subnetze aufteilen kann.
…
…
…
Diese Kopplung kann eine Verbindung zwischen zwei oder mehr
lokalen Netzen oder die Verbindung zwischen LAN und WAN bzw.
WAN und WAN sein.
Ein Router arbeitet auf OSI-Ebene 3 und erfüllt auch alle Aufgaben
einer Brücke
Führen die Wegewahl anhand weltweit eindeutiger Adressen durch und
sind somit die Vermittlungseinrichtungen des Internets und
wesentliche Komponente in WANs
„
„
…
…
Tabellen für die Wegewahl können leicht über 50000 Einträge haben
Segmentieren und Reassemblieren Pakete entsprechend den Paketgrössen
auf Schicht 2.
Haben erweitere Fähigkeiten der Paketfilterung
Gehören zu den leistungsfähigsten Netzkomponenten
(Datendurchsätze im Multi-Gigabit-Bereich)
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.3-22
7.3-23
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.3-24
7. Telematik
7. Telematik
Gateway / Layer 7 Switch
„
„
Zwischensysteme: Zusammenfassung
Ein Gateway (Anwendungs-Gateway oder Layer7 Switch/ Router)
verbindet Netzwerke mit völlig unterschiedlichen Protokollen und
Adressierungen. Es kann also eigentlich inkompatible Netze
miteinander verbinden.
Möglich wird dies dadurch, dass ein Gateway auf allen 7 Schichten
des OSI-Modells tätig werden kann und somit im Extremfall eine
ankommende Nachricht bis auf Schicht 7 entpackt, um sie dann für
andere Netze passend wieder bis auf Schicht 1 zu verpacken. Es
setzt also real ein Protokoll in ein anderes um und hat daher auch
vollen Zugriff auf die Inhalte.
Isolation des Verkehrs
Plug & Play
Optimale Wegewahl
„
Ein Gateway ist ein Übergangsrechner zwischen
verschiedenen Netzwerken.
Durchleiten ohne
Zwischenspeicherung
Hub
Brücke
Switch
Router
Nein
Ja
Ja
Ja
Ja
Ja
Ja
Nein
Nein
Nein
Nein
Ja
Ja
Nein
Ja
Nein
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.3-25
7. Telematik
Inhalte
„
„
„
„
Grundlagen von Netzen
Grundlegende Protokollmechanismen
Lokale Netze und Zwischensysteme (Schicht 2 und 3)
Internet-Technologien (Schicht 3 und 4)
…
…
…
…
TCP/UDP/IP
DNS
HTTP
SMTP
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.3-27
LANs und Zwischensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.3-26
7. Telematik
Klausur
Termin: Samstag, 24.7, 10:00-12:00Uhr
Ort: Mathematisches Institut: Maximum, HS1, Übungssaal
Identifizierung
Informatik II
Personalausweis und Immatrikulationsbescheinigung
oder Studentenausweis mit Lichtbild
SS 2004
Hilfsmittel: keine (aber Kugelschreiber mitbringen ☺)
Klausureinsicht: 28.7, 14:00-15:00Uhr, Raum MN68
Teil 7: Telematik (Computernetzwerke)
4 – Internet-Technologien
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
Wiederholungsklausur: 1. Vorlesungswoche im WS2004/05
(genauer Termin wird rechtzeitig auf der Informatik II Webseite
bekannt gegeben)
Lehrstuhl für Telematik
Institut für Informatik
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
7.4-2
7. Telematik
Überblick
Internet-Entwicklung (1/2)
Internet Protokoll Version 4 (IPv4)
Transportprotokolle UDP and TCP
Domain Name System (DNS)
Die Defense Advanced Research Project Agency (DARPA) der USA
startet Ende der 60er Jahre ein Projekte zur Entwicklung von
Internetworking-Technologie.
Es entsteht das ARPANET, ein auf gemieteten Leitungen
realisiertes Datagramm-Netz.
Das ARPANET wird zum Backbone-Netzwerk zwischen den
Universitäten der USA.
Anfang der 80er Jahre wird eine Implementierung der InternetProtokolle als Teil des BSD UNIX-Betriebssystems allgemein
verfügbar.
Das BSD UNIX erhält eine Socket-Programmierschnittstelle, mit der
sich relativ einfach netzwerkfähige Applikationen entwickeln lassen.
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-3
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-4
7. Telematik
7. Telematik
Internet-Entwicklung (2/2)
Entwicklung des Internet (Hosts im DNS)
1983 wird das ARPANET in das Forschungsnetz ARPANET und
das militärisch genutzte MILNET aufgeteilt.
1986 wird von der National Science Foundation der USA das
NSFNET realisiert.
1990 geht das NSFNET in das ANSNET über, das von MERIT, MCI
und IBM betrieben wird und eine kommerzielle Nutzung des
Internets möglich macht.
Anfang der 90er Jahre wird am CERN das World-Wide Web
geboren.
Derzeit läuft in den USA eine Internet-2 Initiative, mit der ein GigabitBackbone zwischen den Universitäten realisiert werden soll.
Technologisch ist der Übergang von der IP-Version 4 zur IP-Version
6 zu erwarten.
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-5
7. Telematik
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-6
7. Telematik
Die Internet-Protokollfamilie
Das Modell von IP
Datagramme
Web browser,
e-mail, ...
Applications
Other user
applications
Einzelne, unabhängig voneinander weitergeleitete Pakete, die sich
ihren Weg zum Ziel suchen
User
space
Application protocols:
HTTP, SMTP, FTP, ...
Routing-Tabellen
R2
geben den Ausgang zu
einem Ziel an
Application Programming Interface (API)
R3
R1
UDP
TCP
IGMP
ICMP
Transport
RIP
IP
RARP
„Best effort“-Dienst
OSPF
OS
kernel
Auslieferung eines Pakets
Korrekte Reihenfolge
ARP
LAN DL
technology
Praktisch keine Echtzeit
WAN DL
technology
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
yx
yx
DA,SA
data
Routing tables
Router R1
DA
y
...
Data Link
7.4-7
yx
R6
yx
R4
x
Keine Garantie für
Network
R5
Next hop
R3, R4
...
y
yx
yx
Router R3
DA
y
...
Router R6
Next hop
R6
...
DA
y
...
Next hop
...
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-8
7. Telematik
7. Telematik
IP Operationen
IPv4-Adressen
32 bits
Binäre und dezimale Darstellung
32
Binär:
23
15
7
0
11010100 01111110 11010000 10000111
212
Dezimal
.
126
.
208
.
135
Hierarchische Adressierung
Netzwerk-Nummer + Netzmaske (Classless Interdomain Routing
(CIDR), RFC 1519).
Bemerkung: IP-Adressklassen werden praktisch nicht mehr verwendet
(wg. Adressknappheit)
Netzangabe: 134.76.0.0/255.255.0.0 oder alternativ 134.76.0.0/16
(16 = Länge der Netzmaske)
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-9
7. Telematik
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-10
7. Telematik
IPv4-Adressen: Uni Göttingen
IPv4 - Subnetze
Subnetz-Adressen:
Bildung von Netzhierarchien:
Endsystemadressen können mit Hilfe von Netzmasken weiter unterteilt werden.
Eine IPv4-Adresse wird mit der negierten Subnetz-Maske bitweise logisch und
verknüpft, um die Adresse des Endsystems zu erhalten.
GWDG/Uni Göttingen: 134.76.x.x
Institut für Informatik: 134.76.81.x
Beispiel für ein geplantes Subnetz für 16 (bzw. 14) Rechner:
Beispiel:
134.76.81.225/28 = 134.76.81.(224-239)
134.76.81.239 ist die Broadcast-Adresse (letzten 4 Bits = 1111)
134.169.9.10
Netz-Maske 255.255.0.0
Ausgabe von Unix-Befehl: ipcalc 134.76.81.224/28
Address: 134.76.81.224
Netmask: 255.255.255.240 = 28
Wildcard: 0.0.0.15
=>
Network: 134.76.81.224/28
Broadcast: 134.76.81.239
HostMin: 134.76.81.225
HostMax: 134.76.81.238
Hosts/Net: 14
10000110.01001100.01010001.1110 0000
11111111.11111111.11111111.1111 0000
00000000.00000000.00000000.0000 1111
134.169.246.34
134.169.34.12
134.169.34.1
Subnetz-Maske 255.255.255.0
10000110.01001100.01010001.1110
10000110.01001100.01010001.1110
10000110.01001100.01010001.1110
10000110.01001100.01010001.1110
0000 (Class B)
1111
0001
1110
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-11
Besondere Adressen:
Alle Adressen mit dem Format 127.*.*.* gehören zum lokalen System (loopback).
Alle Adressen mit dem Format 10.*.*.* werden niemals weitergeleitet.
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-12
7. Telematik
7. Telematik
IPv4-Paketformat
Bits: 0
4
IP Next Generation: IPv6
8
16
19
31
Version HdrLng Type of service
Total length
Identification
Flags
Fragment offset
20
Time to live
Protocol
Header checksum
octets
Source address
Destination address
Options + padding
Basierend auf den erfolgreichen Eigenschaften von IPv4
Erweiterte und verbesserte Funktionalität
Entwickelt zwischen 1992 und 1997
Jetzt stabil, wird in neue Produkte (Router, Betriebssysteme) eingebaut.
Neue Eigenschaften
Erweiterte Adressen (128-bit). Neue Adressierungsschemata.
Neue flexiblere und effizientere Paketformate
Auto-Konfiguration („plug-and-play“)
Adressenauflösung und Gruppenmanagement jetzt Teil von ICMPv6
(ARP, IGMP wurden entfernt)
Sicherheitsmechanismen direkt im Protokoll (Authentifizierung und
Verschlüsselung)
Dienstgüteunterstützung
Data (≤ 65536 octets)
Type of Service field (8 bits)
0 1 2
Precedence
3
4 5
ToS
6
7
0
Flags field (3 bits)
0 1 2
D M -
Substantielles Re-Design von IP
D = Don’t fragment
M = More fragments
Precedence (priority): High: 7 - Network control .... Low: 0 - Routine.
ToS (Type of Service): 8 - Min. delay. 4 - Max. throughput. 2 - Max. reliability.
1 - Min. cost ($). 0 - Normal service.
Options: Security. Source routing. Route recording. Time stamping.
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-13
7. Telematik
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
Struktur für IPv6
IP v6 Header
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-14
7.4-15
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-16
7. Telematik
7. Telematik
Transportschicht: TCP und UDP
Well-known Ports für UDP
Port
Aufgabe der Transportschicht: Datentransport von einem Prozess
auf einem Rechner zu einem (oder mehreren) anderen Prozessen
auf anderen Rechnern im Internet
Zwei Möglichkeiten
Der grundlegende unzuverlässige Internetdienst genügt, dann verwende
UDP.
Er genügt nicht, dann verwende TCP.
7
Echo
9
Discard
11
Users
13
Daytime
17
Quote
Description
Echoes a received datagram back to the sender
Discards any datagram that is received
Active users
Returns the date and the time
Returns a quote of the day
19
Chargen
53
Nameserver
67
Bootps
Server port to download bootstrap information
68
Bootpc
Client port to download bootstrap information
69
TFTP
Trivial File Transfer Protocol
111
RPC
Remote Procedure Call
123
NTP
Network Time Protocol
161
SNMP
Simple Network Management Protocol
162
SNMP
Simple Network Management Protocol (trap)
End-To-End-Signifikanz:
IP-Adressen identifizieren IP-Hosts und keine Applikationen.
IP besitzt daher eine Host-To-Host-Signifikanz.
Ein Transportendpunkt wird durch eine IP-Adresse und eine lokale
eindeutige Portnummer identifiziert.
TCP und UDP besitzen End-To-End-Signifikanz.
Für Standard-Dienste sind Portnummern fest definiert (well-known
ports).
Protocol
Returns a string of characters
Domain Name Service
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-17
7. Telematik
7.4-18
7. Telematik
Well-known Ports für TCP
Port
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Protocol
7
Echo
9
Discard
11
Users
13
Daytime
17
Quote
19
Chargen
20
FTP, Data
21
FTP, Control
23
TELNET
25
SMTP
User Datagram Protocol (UDP)
Description
Eigenschaften:
Echoes a received datagram back to the sender
Discards any datagram that is received
Unzuverlässiger, verbindungsloser Datagrammdienst.
Einfache Erweiterung von IP um Portnummern (RFC 768).
Zusätzliche Prüfsumme über den UDP-Protokollkopf.
Active users
Returns the date and the time
Returns a quote of the day
UDP-Protokollkopf:
Returns a string of characters
File Transfer Protocol (data connection)
0
File Transfer Protocol (control connection)
DNS
BOOTP
Domain Name Server
79
Finger
Finger
80
HTTP
Hypertext Transfer Protocol
111
RPC
Remote Procedure Call
24
31 (Bitposition)
UDP Destination Port
UDP Message Length
Simple Mail Transfer Protocol
53
16
UDP Source Port
Terminal Network
67
8
UDP Checksum
Data
Bootstrap Protocol
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-19
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-20
7. Telematik
7. Telematik
Transmission Control Protocol (TCP)
TCP Pakete („Segmente“)
Zuverlässiger, verbindungsorientierter Dienst über einem
unzuverlässigen, verbindungslosen Netzwerkprotokoll (RFC 793).
Endsysteme tauschen einen unstrukturierten Bytestrom aus (stream
orientation).
Duplex und Halbduplex-Betrieb und die Zustellung von out-of-bandDaten.
Ende-zu-Ende-Flusskontrolle durch Fenstertechnik mit adaptiven
Timeouts und automatische Anpassung an Stausituationen (slow
start, multiplicative decrease).
Pseudoheader
0
Source IP address
Destinati on IP address
Protocol (6)
TCP segment length
0
IP header
(20 bytes +opt.)
TCP header
(20 bytes +opt.)
TCP data
4
10
16
Source TCP port
Destinati on TCP port
Sequence number
Acknowledgement number
Hdr.len.
Fl ags
Window size
Checksum
Urgent poi nter
Opti ons (if any)
31
Data (if any)
Fl ags:
URG ACK PSH RST SYN FIN
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-21
7. Telematik
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7. Telematik
TCP Verbindungszustandsdiagramm
TCP Verbindungsaufbau
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-22
7.4-23
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-24
7. Telematik
7. Telematik
Drei-Wege-Handshake:
TCP Zustandsdiagramm
Drei-Wege-Handshake:
Beispiel
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-25
7. Telematik
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-26
7. Telematik
TCP
Verbindungsmanagement
TCP Protokollablauf
UserAA
User
(client)
(client)
TCP server
Lebenszyklus
TCPAA
TCP
CLOSED
Open-Active
Open-Active
TCPBB
TCP
SYN,......
SYN,
ESTABLISHED
Send(dt[100])
Send(dt[100])
TCP client
Lebenszyklus
LISTEN
SYN-SENT
SYN+ACK,......
SYN+ACK,
Open-Success
Open-Success
UserBB
User
(server)
(server)
CLOSED
Open-Passive
Open-Passive
SYN-RCVD
Open-Success
Open-Success
ACK,......
ACK,
ESTABLISHED
Deliver(dt[100])
Deliver(dt[100])
...,dt[100]
dt[100]
...,
ACK,......
ACK,
Close
Close
FIN-WAIT-1
FIN,......
FIN,
ACK,......
ACK,
FIN-WAIT-2
Terminate
Terminate
TIME-WAIT
FIN,......
FIN,
ACK,......
ACK,
CLOSED
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-27
Closing
Closing
CLOSE-WAIT
Close
Close
LAST-ACK
Terminate
Terminate
CLOSED
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-28
7. Telematik
7. Telematik
Erinnerung: Flusskontrolle
TCP Flusskontrolle: Fenstertechnik
Fenstertechnik:
UserAA
User
Sender und Empfänger einigen sich auf ein Fenster innerhalb des
Wertebereichs der Sequenznummern (Flusskontrollfenster, flow control
window).
Nach dem Verbindungsaufbau besitzt der Sender implizit Kredite für so
viele Datenblöcke wie durch die Fenstergröße angegeben ist.
Durch positive Quittungen wird das Fenster beim Sender verschoben.
Zusätzlich kann die Größe des Fensters dynamisch angepasst werden.
Fenster = 5
Sender
7
0
7
6
1
5
2
4
Folgenummer = 1
Bestätigungsnummer = 5
3
Fenster = 4
0
6
1
5
2
4
Empfänger
TCPAA
TCP
TCPBB
TCP
ESTABLISHED
Send(data[500])
Send(data[500])
Send(data[300])
Send(data[300])
Send(data[400])
Send(data[400])
ACK,ack=s1,
ack=s1,win=1000
win=1000
ACK,
seq=s1,data[500]
data[500]
seq=s1,
seq=s1+500,data[300]
data[300]
seq=s1+500,
500
500
500
500
seq=s1+800,data[200]
data[200]
seq=s1+800,
500
500
300 200
200
300
500
500
300 200
200
300
Waiting for credit
ACK,ack=s1+500,
ack=s1+500,win=500
win=500
ACK,
ACK,ack=s1+800,
ack=s1+800,win=200
win=200
ACK,
ACK,ack=s1+1000,
ack=s1+1000,win=0
win=0
ACK,
Stop Retrans Timer
Start Persist Timer
ACK,ack=s1+1000,
ack=s1+1000,win=800
win=800
ACK,
7. Telematik
“A” Stanford
20
“B” (MIT)
19
18
17
OS
Ethernet
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-30
Programmierschnittstelle: Die Socket-Schnittstelle
Beispiel: FTP über das Internet unter Verwendung von TCP/IP und
Ethernet
2
3
4
600
600
7. Telematik
Wie funktioniert eigentlich das ganze Internet?
App
200200
200
200
Letzte quittierte Nachricht
Internet-Technologien
7.4-29
800
800
200
200
seq=s1+1000,data[200]
data[200]
seq=s1+1000,
3
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
1
Deliver(data[800])
Deliver(data[800])
Stop Persist Timer
ACK,ack=s1+1200,
ack=s1+1200,win=600
win=600
ACK,
Letzte empfangene Bestätigung
UserBB
User
ESTABLISHED
Receiver buffer
1000
1000
14
5
R1
R5
15 R5
R1 6 8
11
16
7 9 R2
R3
R3 12
R2
13
10
R4
R4
App
OS
Ethernet
Funktion
Aufgabe
socket(domain, type, protocol)
Kreiert einen Kommunikationsendpunkt
bind(socket, address, length)
Bindet eine Adresse an einen lokalen Endpunkt.
connect(socket, address, length)
Stellt Verbindung zu zweitem Socket her
listen(socket, backlog)
Zeigt an, wie viele eingehende
Verbindungswünsche akzeptiert werden
accept(socket, address, length)
Annahme einer Verbindung
write(...), send(...), sendto(...)
Übertragung von Daten über einen Socket
read(...), recv(...), recvfrom(...)
Empfang von Daten
shutdown(socket, how)
(Teilweise) Beendigung einer Verbindung
close(socket)
Schließen eines Sockets
getsockname(), getpeername()
Erfragen von lokaler/entfernter Adresse
Weitere Hilfsfunktionen
Bytekonvertierung ins/vom Netzwerkformat
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-31
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-32
7. Telematik
7. Telematik
Verbindungsorientierte Kommunikation
Verbindungslose Kommunikation
socket()
Beim verbindungsorientierten Protokoll
wird zunächst von einer Seite ein
Socket geöffnet, über den
Verbindungswünsche entgegen
genommen werden.
Der accept()-Aufruf blockiert den
Prozess, bis eine Verbindung etabliert
ist und liefert einen neuen Socket für
diese Verbindung.
Die read() und write() Aufrufe sind
blockierend.
Nach der Auflösung der Verbindung
kann mit einem erneuten Aufruf von
accept() eine weitere Verbindung
entgegen genommen werden.
bind()
listen()
socket()
accept()
connection setup
connect()
read()
data
write()
write()
data
read()
close()
connection release
close()
Beim verbindungslosen Protokoll
werden auf beiden Seiten Sockets
geöffnet und an eine Adresse
gebunden.
Der recvfrom()-Aufruf blockiert den
Prozess, bis eine Nachricht
eingetroffen ist. Die Adresse des
sendenden Prozesses wird dem
empfangenden Prozess mitgeteilt.
Der sendto()-Aufruf sendet die
Daten an die angegebene
Adresse, ohne zu blockieren.
Beim Schließen eines Endpunkts
ist keine Interaktion erforderlich.
socket()
bind()
socket()
bind()
recvfrom()
sendto()
7.4-33
7. Telematik
recvfrom()
data
close()
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
sendto()
data
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-34
7. Telematik
Domain Name Service DNS
Namenshierarchie
Unnamed
root
Aufgabe von DNS
Übersetze Namen in Adressen und lasse Anwendungen so Netzdienste
nutzen: www.cs.tu-bs.de ↔ 134.169.34.18.
Top level
domains
com
org
edu
2nd level
domains
cisco
ietf
univ
i-u
co
ac
in-addr
dept
iustud01
bbc
univ
209
...
de
uk
arpa
...
Internet Name Service
DNS: Domain Name System. Frühe 80er Jahre.
Grundlegende Definition: RFC 1034 und 1035, 1987
Zahllose weitere RFCs für die Nutzung von DNS, Updates etc.
Hierarchisches Namensschema
Verteilte Namensdatenbank
DNS-Protokoll: query-response protocol.
Top:
Top:Generic
Genericdomains
domains
com
com--Commercial
Commercial
edu
edu--Educational
Educational
org
org--Non-profit
Non-profitOrganizations
Organizations
net
net--Network
NetworkProviders
Providers
mil
mil--US
USMilitary
Military
gov
gov--US
USGovernment
Government
int
int--International
InternationalOrganizations
Organizations
host
host.dept.univ.edu.
host.dept.univ.edu.
7.4-35
12
Top:
Top:arpa
arpadomain
domain
Address-to-name
Address-to-nametranslation.
translation.
in-addr
IP
address.
in-addr - IP address.
1
17
IP:
IP: 209.12.17.1
209.12.17.1
Internet-Technologien
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Top:
Top:Country
Countrydomains
domains
de
de--Germany
Germany
frfr--France
France
uk
uk--United
UnitedKingdom
Kingdom
nl
nl--Netherlands
Netherlands......
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-36
7. Telematik
7. Telematik
Server-Hierarchie
DNS-Abfragen (1/2)
„Zone of authority“
root NS
...
2(Q)
other top
level zones
univ.edu
name
server(s)
5(R) 4(R)
Q = Query
R = Response
Rfr = Referral
3(Q)
3(Q) 4(Rfr)
bob.com NS
(authoritative)
6(R)
sam.edu NS
(local)
1(Q)
bob.com NS
(authoritative)
2(Rfr)
5(Q)
Der Administrator einer Zone verwaltet
den/die Name Server (Primär-, Sekundär-)
Jeder Name Server verwaltet die
Namensinformation für seine Zone und kennt
die Name Server der Unterzonen.
...
6(Rfr)
vega.sam.edu
cs.univ.edu ee.univ.edu
name
name
server(s)
server(s)
Eine Gruppe von „root name servers“ stellen Name-Syerver-Adressen
für die Top-Level-Domains zur Verfügung. Alle anderen Server kennen
die Adresse der Root-Server und einiger Name Server der oberen
Ebenen.
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-37
7. Telematik
sun.bob.com
Query: “Address of
sun.bob.com”
5(R)
5(R)
sun.bob.com
Query: “Address of
sun.bob.com”
Vega sam.edu
bob.comNS
NS
sam.eduNS
NS root
rootNS
NS bob.com
Vega
1(Q)
1(Q)
2(Q)
2(Q)
3(Q)
3(Q)
6(R)
6(R)
vega.sam.edu
4(R)
4(R)
Vega sam.edu
bob.comNS
NS
sam.eduNS
NS root
rootNS
NS bob.com
Vega
1(Q)
1(Q)
2(Rfr)
2(Rfr)
3(Q)
3(Q)
4(Rfr)
4(Rfr)
5(Q)
5(Q)
6(R)
6(R)
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-38
7. Telematik
DNS-Abfragen (2/2)
Geschafft
Compilerbau (Kapitel 6)
Iterativ und rekursiv können kombiniert
werden
Client startet rekursive Abfrage.
Ein Zwischen-Server startet eine
iterative Abfrage an Root, gefolgt von
einer rekursiven Query an den ersten
Server in der Ziel-Domain.
root NS
Q = Query
R = Response
Rfr = Referral
Betriebssysteme (Kapitel 5)
3(Q)
bob.com NS
(intermediate)
Maschinenorientierte Programmierung (Kapitel 4)
5(Q)
sam.edu NS
(intermediate)
DNS caching
8(R)
2(Q)
cs.sam.edu
(local)
NS
1(Q)
6(Q)
9(R)
7(R)
it.bob.com NS
(authoritative)
von-Neumann-Rechner (Kapitel 3)
Speicher
Zahlen und logische Schaltungen (Kapitel 2)
10(R)
Kommunikation (Kapitel 7)
moon.cs.tom.edu
Query: “Address of
mars.it.bob.com”
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
root NS
sam.edu NS
(local)
1(Q)
Delegation der Verantwortung
Name Server speichern
erhaltene Antworten (für
begrenzte Zeit).
Eine Anfrage wird nur
weitergeleitet, wenn die
Antwort nicht im Cache liegt.
Ziel?
Iterative Abfragen
Rekursive Abfragen
root
name
servers
Eine Zweig des Namensraums, der
getrennt verwaltet wird
Der Namensraum ist rekursiv in kleinere
Zonen aufgeteilt.
mars.it.bob.com
von-Neumann-Rechner
Internet-Technologien
7.4-39
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-40
7. Telematik
7. Telematik
Lehrstuhl für Telematik
Aktuelle Projekte des Lehrstuhls für Telematik
Vorlesungen
Internet-Signalisierungsprotokolle (Dr. Fu)
Testen von IPv6 (Dr. Fu)
Netzwerksicherheit (Dipl-Inf. Soltwisch)
Informatik II (SS)
Telematik (WS)
Mobilkommunikation I (SS) und II (WS)
Quality of Service und Authentifizierung in Mobil IP
Seminare
Voice over IP (Dipl.-Inf. C. Werner)
E-Learning (Dipl.-Math. Riedel, Dipl.-Inf. Zibull)
Ökonomie von WLAN Internetzugängen (Dipl.-Math. Riedel)
Verwendung von formalen Beschreibungstechniken zum Testen
Netzwerksicherheit (WS)
Mobilkommunikation (SS)
Praktika
Praktikum Telematik
Automatische Testgenerierung für Kommunikationsprotokolle
(Dipl.-Inform. Ebner, Dipl.-Inform. Richter)
BSc und MSc Arbeiten
siehe http://www.tmg.informatik.uni-goettingen.de/theses
usw.
Hiwis
ZFI/IFI/TMG Web
auf Anfrage
Weitere Informationen: http://www.tmg.informatik.uni-goettingen.de
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-41
Internet-Technologien
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
7.4-42
8. Zusammenfassung
Klausur
Termin: Samstag, 24.7, 10:00-12:00Uhr
Ort: Mathematisches Institut: Maximum, HS1, Übungssaal
Identifizierung
Informatik II
Personalausweis und Immatrikulationsbescheinigung
oder Studentenausweis mit Lichtbild
SS 2004
Hilfsmittel: keine (aber Kugelschreiber mitbringen ☺)
Klausureinsicht: 28.7, 14:00-15:00Uhr, Raum MN68
Teil 8: Zusammenfassung
Prof. Dr. Dieter Hogrefe
Dipl.-Inform. Michael Ebner
Wiederholungsklausur: 1. Vorlesungswoche im WS2004/05
(genauer Termin wird rechtzeitig auf der Informatik II Webseite
bekannt gegeben)
Lehrstuhl für Telematik
Institut für Informatik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8. Zusammenfassung
8. Zusammenfassung
Lehrstuhl für Telematik
Aktuelle Projekte des Lehrstuhls für Telematik
Vorlesungen
Internet-Signalisierungsprotokolle (Dr. Fu)
Testen von IPv6 (Dr. Fu)
Netzwerksicherheit (Dipl-Inf. Soltwisch)
Informatik II (SS)
Telematik (WS)
Mobilkommunikation I (SS) und II (WS)
Quality of Service und Authentifizierung in Mobil IP
Seminare
Voice over IP (Dipl.-Inf. C. Werner)
E-Learning (Dipl.-Math. Riedel, Dipl.-Inf. Zibull)
Ökonomie von WLAN Internetzugängen (Dipl.-Math. Riedel)
Verwendung von formalen Beschreibungstechniken zum Testen
Netzwerksicherheit (WS)
Mobilkommunikation (SS)
Praktika
Praktikum Telematik
Automatische Testgenerierung für Kommunikationsprotokolle
(Dipl.-Inform. Ebner, Dipl.-Inform. Richter)
BSc und MSc Arbeiten
siehe http://www.tmg.informatik.uni-goettingen.de/theses
usw.
Hiwis
ZFI/IFI/TMG Web
auf Anfrage
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.2
Weitere Informationen: http://www.tmg.informatik.uni-goettingen.de
8.3
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.4
8. Zusammenfassung
8. Zusammenfassung
Überblick
Überblick I
Compilerbau (Kapitel 6)
1. Einführung
Vorstellung der beteiligten Personen
Ablauf der Übungen
Inhalt der Vorlesung
Betriebssysteme (Kapitel 5)
2. Zahlen und logische Schaltungen
Nachrichten, Information, Daten
Zahlensysteme und –darstellung
Rechnerarithmetik
logische Schaltungen
boolesche Algebra
Maschinenorientierte Programmierung (Kapitel 4)
von-Neumann-Rechner (Kapitel 3)
3. Von-Neumann-Rechner
Speicher
Zahlen und logische Schaltungen (Kapitel 2)
Rechnermodell
4. Grundlagen der maschinenorientierten Programmierung
Kommunikation (Kapitel 7)
Assemblerprogrammierung
von-Neumann-Rechner
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.5
8. Zusammenfassung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.6
8. Zusammenfassung
Überblick II
Wie funktioniert ein Computer???
Anwendungen (Browser, Email, etc.)
5. Grundlagen Betriebssysteme
Prozesse
Speicher
Automaten
Betriebssystem
& Formale
(Linux,
Compiler
Sprachen
Windows,
Software
Assembler MacOS, ...)
6. Automaten, formale Sprachen und Compilerbau
Aufbau und Funktionsweise von Compilern
Lexer und Parser
deterministische und nicht deterministische (Keller-)Automaten
Reguläre und kontextfreie Sprachen
Netzwerke
(TCP/IP,
Ethernet,
WLAN, ...
Befehlsarchitektur
Hardware
Prozessor Speicher
E/A System
Datenpfade & Kontrolle
Digitale Logik
7. Grundlagen von verteilten Systemen
Schaltkreisdesign
OSI Schichtenmodell
Funktionsweisen von Rechnernetzen
Internet
Transistoren, Layout
integrierte Schaltungen
Grundidee: Ebenen der Abstraktion
Informatik II
Verberge unnötige Implementierungsdetails
Hilft zur Beherrschung realer, komplexer Systeme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.7
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.8
8. Zusammenfassung
8. Zusammenfassung
Architektur und Programmierung
Zusammenfassung
Das Wissen über die Rechnerarchitektur hilft das Design von
Programmiersprachen zu verstehen
Informatik II studiert die Funktionsweise von Rechnern
Grundlegende Hardwarekomponenten: Datenpfad, Speicher,
Eingabe/Ausgabe Geräte und Kontrolle; sowie die darunterliegende
digitale Schaltungen/Logik
Prinzipien von Software: Betriebssysteme, Kommunikationssysteme,
Compiler; Automaten und formale Sprachen
Was passiert beim Übersetzen des Quellcodes?
Warum ist Rechnerarithmetik manchmal falsch?
Was ist ein Busfehler oder Speicherzugriffsfehler?
Wie kann schneller ausführbarer Code erstellt werden?
Prinzipien der Abstraktion sind wichtig zum Verstehen und Bauen
von geschichteten Systemen
Wo und wie Daten abgelegt werden macht einen großen Unterschied.
Schon das Umordnen von Statements kann hilfreich sein.
Softwareentwicklung erfordert oftmals wissen über Rechnersysteme
Jeder Rechner hat 5 klassische Komponenten
Compiler können optimierten Code für einen Prozessor erzeugen
Betriebssysteme verwalten Ressourcen
Gutes Eingabe/Ausgabe Verhalten ist für Datenbanken und Netzwerke
wichtig
Verwaltung der eigenen Daten/Code im Speicher
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.9
8. Zusammenfassung
Datenrepräsentation ist wichtig für die Leistung des Systems,
Verwendung von Ressourcen und besseren Genauigkeit.
Abstraktion und hierarchisches Design sind fundamentale Konzepte zur
Handhabung von Komplexität
Rohe Daten (Bitmuster) können alles bedeuten (integer, float, char,
etc.). Erst ein Programm legt die Bedeutung fest
Wissen über Rechnersysteme hilft beim Programmieren und beim
Software-Engineering
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.10
8. Zusammenfassung
Überblick
Informationsdarstellung
Zur Übertragung von Nachrichten/Daten müssen diese in Signale
umgesetzt werden.
Information und Informationsdarstellung
Zahlensysteme
Rechnerarithmetik
Boolesche Algebra und Gatter
Schaltwerke
Signal: physikalische Darstellung von Nachrichten/Daten
Signaltypen: Radiowellen, Rauchsignale, Stromfluss, Schallwellen,
usw.
Signalparameter: Ausprägung eines Signals mit dessen Hilfe
Nachrichten/Daten dargestellt werden.
Parameterarten: Frequenz, Farbe, Form, Spannung, Lautstärke, usw.
Signal
Information/Wissen
Nachricht/Daten
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.11
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.12
8. Zusammenfassung
8. Zusammenfassung
Codierung - Grundlagen
Codierung - Schichtenmodell
Schichtenmodell als Gedankenmodell
Alphabet (Zeichenvorrat):
Endliche Menge von Zeichen, die zur Darstellung von Informationen benutzt wird
Beispiele:
Ziffern:
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Alphanumerisches Alphabet: {a,...,z, A,...,Z, 0,...,9}
Binärzeichen:
{0, 1}
Wort:
Folge von Zeichen, die in einem bestimmten Kontext als Einheit betrachtet
werden
Beispiele:
Zahlwörter:
Schreibwörter:
Binärwörter:
C3
C2
C1
C0
Codierungen sind häufig geschachtelt. D.h. eine
höhere Schicht stützt sich auf die nächst tiefere
ab. Die höhere Schicht nimmt Zeichen entgegen,
ignoriert aber deren tiefere Codierung.
Beispiel:
C++ – Schlüsselwörter
Großbuchstaben ISO
ISO 7-Bit
8-Bit Bytes
Binärstellen, Bits
Schaltzustände
Elektronenebene
105, 75, 73, 15, ...
Kohlkopf, Hunger, Hund
001, 10010010, 1, 0, ...
Bemerkungen zum Kontext:
in Englisch hat das Wort ‘Kohlkopf’ keine Bedeutung
‘010’ kann von Rechner mit Wortlänge 8 nicht verarbeitet werden
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.13
8. Zusammenfassung
8.14
8. Zusammenfassung
Polyadische Zahlensysteme (1/2)
Zahlensysteme mit Zweierpotenz als Basis
Potenzen zu einer Basis B als Stellenwert
N-1
n = ∑ai * Bi
Binärsystem (Basis 2)
Vierersystem (Basis 4)
Oktalsystem (Basis 8)
Hexadezimalsystem (Basis 16) (Zeichenvorrat: 0...9, A...F)
Einfache Umrechnung: „Umgruppieren der Binärstellen“
Beispiel:
146310 = 101101101112
(B, ai ∈ N0, B > 1)
i=0
= aN-1 * BN-1 + aN-2 * BN-2 + ... + a1 * B1 + a0
= ((...(aN-1 * B) + aN-2) * B + ...)*B + a1) *B + a0
(Horner Schema)
Konvention:
<ZAHL><BASIS>
Informationsdarstellung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
besagt das <ZAHL> einen Wert im Zahlensystem mit der Basis <Basis> beschreibt.
123 im Dezimalsystem,
z.B.
12310
11102 1110 im Dualsystem
=
01
01
10
11
01
11
1
1
2
3
1
3
=
010
110
110
111
2
6
6
7
=
0101
1011
0111
5
B
7
Zahlensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.15
= 1123134
=26678
=5B716
Zahlensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.16
8. Zusammenfassung
8. Zusammenfassung
Umrechnung zwischen Zahlensystemen
Zahlendarstellung und Rechnen im Dualsystem (1/3)
Im allgemeinen reicht es nicht aus einfach nur die Binärstellen
umzugruppieren.
Empfehlung für die manuelle Umrechnung:
Durch N Bits lassen sich 2N Zahlenwerte codieren
Nur positive Zahlen, Wertebereich: 0 ... (2N–1)
Positive und negative Zahlen:
(N-1) - Bit Zahl mit Vorzeichen
darstellbarer Wertebereich: [-2N-1 ... 0 ... 2N-1-1]
I. Darstellung mit Basis B1
(1)
*
Multiplikative
Umrechnung im
Zielsystem
(hier Basis 10)
„Most significant“ Bit als Vorzeichencodierung
7
II. Darstellung mit Basis 10
(2)
/
↑
Dividierende
Umrechnung im
Quellsystem
(hier Basis 10)
N=8
N= 16
III. Darstellung mit Basis B2
6
5
4
3
2
1
0
„most significant bit“
0
= positive Zahl
1
= negative Zahl
Wertebereich: 0 ... 255 oder -128 ... +127
Wertebereich: 0 ... 65535 oder -32768 ... +32767
Zahlensysteme
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.17
8. Zusammenfassung
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.18
8. Zusammenfassung
Zahlendarstellung und Rechnen im Dualsystem (2/3)
Basiskomplement (B-Komplement)
N Bits erlauben 2N Möglichkeiten zur Zahlendarstellung, d.h. nur
eine Darstellung mit endlicher Genauigkeit.
C für das Basiskomplement: C = BN
Komplementbildung:
N-1
N-1
Ba = BN –
ai * Bi = (BN-1) – (
ai * Bi ) + 1
Bei positiven Zahlen:
Zahlen n und n + BN sind nicht unterscheidbar
(höchstwertige Bit geht verloren)
Bei positiven und negativen Zahlen:
Additionsüberlauf kann zu negativen Ergebnissen führen
Beispiel:
0 1001110
78
+ 0 1011000
1 0100110
+
=
i=0
(B–1)–Komplement bilden
Aufaddieren einer 1
Beispiel:
> 128
(B-1)-Komplement:
|
-38
5
≅
00101
B–15
≅
11010
Aufaddieren von 1:
+
B5
negatives Vorzeichen
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
i=0
+1
d.h. die Komplementbildung ist für das Basiskomplement etwas
aufwendiger
88
166
B-1a
8.19
≅
1
11011
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.20
8. Zusammenfassung
8. Zusammenfassung
Eigenschaften Basiskomplement (Dualsystem)
Zahlenring im Basiskomplement
-8
1000
Negative Zahlen werden als Komplemente der positiven Zahlen
dargestellt.
Das „most significant Bit“ beschreibt das Vorzeichen der Zahl.
8
-7
9
1001
7
0111
-6
10
1010
0 ⇒ +
6
0110
-5
11
1011
1 ⇒ –
Es gibt nur eine Null
Bemerkung: Komplement der Null liegt beim Basiskomplement, anders als
beim Stellenkomplement, nicht mehr im darstellbaren Zahlenbereich
(Übertrag in die (n+1).te Stelle).
5
negative
Zahlen
-4
12
1100
positive
Zahlen
+(½ * BN – 1)
4
-3
13
1101
3
-2
14
1110
Darstellbarer Zahlenbereich
–(½ * BN )
...
2
-1
15
1111
0
0000
1
8.21
8. Zusammenfassung
0011
0001
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.22
8. Zusammenfassung
Ziel: Rechnerarithmetik implementieren
Boolesche Algebra (1/2)
Bitweise logische Operationen
Boolesche Algebra:
E
E=A?B
Die Booleschen Algebra (speziell die Aussagenlogik) ist ein
Formalismus zur Beschreibung der Funktion digitaler Komponenten.
= x"34" ? x"1C"
Binäre oder Boolesche Variable (BV):
? ... beliebige logische Verknüpfung
a5 a4 a3 a2 a1 a0
0100
0010
Rechnerarithmetik
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
0101
Operand A
1
1
0
1
0
0
Operand A
Variable, die nur zwei Werte annehmen können. Diese Werte werden
mit
L - H , wahr - falsch oder 0 - 1 bezeichnet. Boolesche Variable sind
logische Variable.
Boolesche Operatoren:
b5 b4 b3 b2 b1 b0
Operand B
0
1
1
1
0
0
Operand B
Auf Boolesche Variable können Boolesche Operatoren angewendet
werden: NOT, OR, AND,XOR, ...
Boolesche Ausdrücke, Boolesche Funktionen:
e5 e4 e3 e2 e1 e0
Ergebnis E
1
0
0
0
0
0
Ergebnis E
Boolesche Ausdrücke oder Boolesche Funktionen ergeben sich durch
Verknüpfung von Boolesche Variable mit Booleschen Operatoren.
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.23
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.24
8. Zusammenfassung
8. Zusammenfassung
Wahrheitstabellen
UND-Operator
Darstellung der Abhängigkeiten zwischen der Eingabe und Ausgabe
Alle möglichen Kombinationen der Eingabe (A,B) werden mit der
korrespondierenden Ausgabe (X) angegeben.
Beispiel:
Eingabe
A
B
Ausgabe
?
B
0
0
1
1
X
A
0
1
0
1
X
0
0
0
1
Name
UND (AND)
Tabelle
b
0
0
1
1
a
0
1
0
1
UND wird verwendet, um Bits gezielt auf 0 zu
setzen. Dazu hat die Maske an allen Bitpositionen,
die übernommen werden sollen, eine 1 und an den
Stellen, die rückgesetzt werden sollen, eine 0.
y
0
0
0
1
x“14“ = x"34" ∧ x"1C"
y = a ∧ b oder
= ab
oder
=a*b
Schriftlich
1
1
0
1
0
0
Operand A
0
1
1
1
0
0
Operand B
0
1
0
1
0
0
Ergebnis E
&
Gatter
Die Ausgabe ist nur 1, wenn beide Eingaben 1 sind.
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.25
8. Zusammenfassung
a∨0=a
a∧0=0
R1
a∨1=1
a∧1=a
R2
a∨a=a
a∧a=a
R3
a∨a=1
a∧a=0
R4
a=a
Assoziativgesetz
a ∨ (b ∨ c) =
(a ∨ b) ∨ c =
a∨b ∨c
a ∧ (b ∧ c) =
(a ∧ b) ∧ c =
a∧b ∧c
A
(a ∨ b)
>=1
(a ∧ b) = a ∨ b
A
Q
NOR
&
NAND
B
A
a∧b=b∧a
R7
Distributivgesetz
a ∨ (b ∧ c) =
(a ∨ b) ∧ (a ∨ c)
a ∧ (b ∨ c) =
(a ∧ b) ∨ (a ∧ c)
R8
Absorptionsgesetz
a ∨ (a ∧ b) = a
a ∧ (a ∨ b) = a
R9
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
(a ∨ b) = a ∧ b
(a ∧ b)
Q
B
R6
a∨b=b∨a
(a ∨ b) = a ∧ b
Implikationen aus dem De Morgan'schen Gesetz
R5
Kommutativgesetz
De Morgan'sches
Gesetz
8.26
8. Zusammenfassung
10 Regeln für logische Operationen
Boolesche
Variablen a, b
Elemente aus {0,1}
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
(a ∧ b) = a ∨ b
a∧b
B
A
&
1
Q
1
Alternative NOR Darstellung
A
a∧b
R10
&
1
B
Q
a∨b
1
Alternative NAND Darstellung
A
Q
B
>=1
B
>=1
Q
a∨b
Boolesche Algebra und Gatter
8.27
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.28
8. Zusammenfassung
8. Zusammenfassung
Normalform (2/2)
Übersetzung DNF Gleichung in Hardware
Jede Gleichung läßt sich 1:1 in Hardware umsetzen
Disjunktive Normalform (DNF)
disjunktive Verknüpfung von Konjunktionen
Konjunktionen müssen alle Variablen enthalten (bejaht oder negiert)
Konjunktionsterme werden Minterme genannt
In der DNF werden alle UND – Verknüpfungen (Konjunktionen)
disjunktiv verknüpft (ODER- verknüpft), deren Ausgangsvariablen den
Wert „1“ annehmen.
amerikanischer Ausdruck: “sum of products“ (SOP)
Konjunktive Normalform (KNF)
Konjunktive Verknüpfung von Disjunktionen
Disjunktionen müssen alle Variablen enthalten (bejaht oder negiert)
Disjunktionsterme werden Maxterme genannt
In der KNF werden alle ODER – Verknüpfungen (Disjunktionen)
konjunktiv verknüpft (UND- verknüpft), deren Ausgangsvariablen den
Wert „0“ annehmen.
y = x4 x3 x2 x1 ∨ x4 x3 x2 x1 ∨ x4 x3 x2 x1
x4
1
x3
1
x2
1
x1
1
&
&
8.29
8. Zusammenfassung
3.
DNF liefert relativ aufwendige Lösungen
Baut auf den Mintermen auf
Jedes UND Gatter enthält alle Eingangsvariablen
Nicht praktikabel in „echten“ Anwendungen
x = AB ∨ C
x = (A ∨ B) C
x = (A ∨ B) C ∨ A
Die Verwendung nur eines Gattertyps erleichtert die technische
Realisierung, weswegen NAND oder NOR basierte Systeme
oftmals verwendet werden.
Logische Schaltnetze können durch die Minimierung der logischen
Verknüpfung minimiert werden
In vielen Fällen sind einfachere Schaltungen schneller
Weniger Gatter reduziert die Kosten
Es wird weniger Energie benötigt
Die Suche nach einer einfacheren Lösung ist Ziel der Optimierung
(Minimierung).
Voraussetzung jeder Optimierung: Kostenfunktion beschreibt Ziel.
In unserem Fall: Möglichst wenige, möglichst kleine Gatter
Genauer: Die Anzahl der Eingänge in alle Gatter soll minimal werden.
In einer Gleichung ist dann die Anzahl der Variablen aller Terme plus die
Anzahl der Terme (Länge) minimal.
_ _
_
Y = (D C B A) ∨ (D C B) ∨ (E C) => L = 4+3+2+3 = 12
Wie erzielen wir möglichst kleine Gatter? Wir versuchen, durch Anwendung
der Rechenregeln, die einzelnen Terme kürzer zu machen.
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.30
Minimierung
Logische Schaltnetze können mit den grundlegenden logischen
Verknüpfungen UND, ODER und NICHT beschrieben werden:
2.
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8. Zusammenfassung
Beschreibung von logischen Schaltnetze
1.
y
&
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
>1
8.31
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.32
8. Zusammenfassung
8. Zusammenfassung
Blockbildung im KV-Diagramm
Fall
D C B A Z
0
0 0 0 0 1
1
0 0 0 1 1
2
0 0 1 0 1
3
0 0 1 1 1
4
0 1 0 0 0
5
0 1 0 1 0
6
0 1 1 0 0
7
0 1 1 1 0
10
1 0 0 0 0
11
1 0 0 1 1
12
1 0 1 0 0
13
1 0 1 1 1
14
1 1 0 0 0
15
1 1 0 1 0
16
1 1 1 0 0
17
1 1 1 1 0
Arithmetisch-Logische Einheit (ALU) (2/2)
A
1
B
1
0
1
1
2
0
13
7
1
0
17
11
Register X
4
0
0
1
10
0
3
1
12
0
5
0
6
s1
16
0
15
14
Multiplexerschaltnetz
D
s2
0
0
C
__ _ _
__ _ _ _ _
__
DNF: Z = A B C D ∨ A B C D ∨ A B C D ∨ A B C D
cin
zero
sign
overflow
Minterme: 0: 0000
1: 0001
13: 1011
00-0
(Blöcke) 2: 0010
3: 0011 00-1 11: 100110-1
_ _ _
__
_
Minimierte Gleichung: Z = A C D ∨ A C D ∨ ACD
s3
s4
arithmetisch-logisches Schaltnetz
s5
cout
s6
s7
Schiebeschaltnetz
Primblöcke: 00--
-0-1
__
_
Minimierte Gleichung mit Primtermen: Z = C D ∨ A C
Register Z
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.33
8. Zusammenfassung
Schaltwerke
x1
x2
Eingangs- x
3
variablen
Register Y
Boolesche Algebra und Gatter
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.34
8. Zusammenfassung
Das Register (1/2)
Schaltnetze
xn
y1
y2
y3
Ein Register ist
eine Aneinanderreihung von D-Flipflops, z.B. 8, oder 16 oder 32 Stück
("Breite" des Registers)
Der Takt ist allen FFs gemeinsam
Ausgangsvariablen
yn
D4
D3
D2
D1
Clk
Clr
S
D
Clk
Clk
Q3
R
S
D
Clk
Q4
R
S
D
Clk
Speicher
elemente
R
S
D
Takt
R
Schaltwerk
Q2
Q1
Reset
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.35
Schaltwerke
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.36
8. Zusammenfassung
8. Zusammenfassung
Bestandteile eines von Neumann Rechners
Haupt- bzw. Arbeitsspeicher für Programme und Daten
RAM, ROM
Busse
Datenbus, Adressbus, Steuerbus
Ein- / Ausgabewerk (I/O)
Keyboard, Maus, Scanner, …..
Drucker, Bildschirm, ….
Festplatten / Magnetbänder
Steuerwerk (auch Leitwerk genannt)
Rechenwerk
Register
Arithmetical Logical Unit (ALU)
Steuerwerk + Rechenwerk = CPU
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.37
8. Zusammenfassung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.38
8. Zusammenfassung
Assember Programm – ein Beispiel
Programm in einer
temp = v[k];
Hochsprache (C, Java)
v[k] = v[k+1];
Compiler
Assembler Programm
(Spim für MIPS R2000)
Assembler
Maschinensprache
Programm (MIPS R2000)
C code
v[k+1] = temp;
lw
lw
sw
sw
$15,
$16,
$16,
$15,
0($2)
4($2)
0($2)
4($2)
0000 1001 1100 0110 1010 1111 0101 1000
1010 1111 0101 1000 0000 1001 1100 0110
1100 0110 1010 1111 0101 1000 0000 1001
0101 1000 0000 1001 1100 0110 1010 1111
Interpretation durch
Leitwerk
Registertransfer
IR ← Imem[PC]; PC ← PC + 4
Anweisungen
ALUOP[0:3] ⇐ InstReg[9:11] & MASK
°
°
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Assemblerprogramm
Maschinencode
Registertransfer
Anweisung
8.39
# Beispielprogramm V. 001
# berechnet den Umfang eines Dreiecks mit den Kanten x, y, z
# kein sehr sinnvolles Programm
.data
x:
.word 12
y:
.word 14
z:
.word 5
u:
.word 0
.text
main: lw
$t0, x
lw
$t1, y
lw
$t2, z
add
$t0, $t0, $t1 # $t0 := x + y
add
$t0, $t0, $t2 # $t0 := x + y + z
sw
$t0, u
# u := x + y + z
li
$v0, 10
# EXIT
syscall
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.40
8. Zusammenfassung
8. Zusammenfassung
Übersicht
Pipelining
Kontrollstrukturen
Der Befehl wird nicht schneller ausgeführt, aber es können mehr
Befehle pro Zeit ausgeführt werden.
Sprünge (bedingte und unbedingte)
If-then-else, Case
Loop (n Durchläufe)
While (Abbruchbedingung)
Parallelität und damit eine Geschwindigkeitssteigerung um die
Anzahl der Pipelinestufen.
Pipelinekonflikte
Stack
Unterprogramme
Pipelining
Datenfluss-Konflikt durch Datenabhängigkeiten (Data Interlock)
Beispiel:
add $t0, $t1, $t2 # $t0
$t1 + $t2
addi $t0, 1# $t0
$t0 + 1
add
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.41
8. Zusammenfassung
ID
$t1,$t2
+
$t0
addi
ID
$t0
+1
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.42
8. Zusammenfassung
Architektur eines Pentiumsystems
Potentielle Systemkomponenten
Task Semantic
Objects
Example Operation
GUI/shell
window
execute shell script
Application
a.out
quit, kill, …
File System
directories, files
open, close, read,
Devices
printer, display
open, write, ...
Communication
ports
send, receive, …
Virtual Memory
segments, pages
write, fetch
Secondary Store
chunks, blocks
allocate, free,
Processes
task queue
exit, create…
Threads
ready queue
wakeup, execute,
Interrupts
interrupt handler
invoke, mask, ...
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
$t0
8.43
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.44
8. Zusammenfassung
8. Zusammenfassung
Aufgaben eines Betriebssystems (1/5)
Allgemeine Schalenstruktur von UNIX und Linux
Prozessverwaltung
(Ein Prozess oder auch Task ist ein in Ausführung befindliches
Programm)
Erzeugen und Löschen von Prozessen
Prozessorzuteilung (Scheduling)
Prozesskommunikation
Synchronisation nebenläufiger Prozesse, die gemeinsame Daten
benutzen
Speicherverwaltung
Zuteilung des verfügbaren physikalischen Speichers an Prozesse
Einbeziehen des Hintergrundspeichers (Platte) durch virtuelle
Adressierung, demand Paging, Swapping (= Ein-/Auslagern von
Prozessen), etc.
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.45
8. Zusammenfassung
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8. Zusammenfassung
Ausblick
Prozesse
Kurzer Blick auf Konzepte zur Realisierung der Aufgaben eines
Betriebssystems
Einfluss auf Programmierung von Anwenderprogrammen
Es werden Teilgebiete der folgenden grundlegenden Konzepte
betrachtet
Ein Prozess ist der Ablauf eines sequentiellen Programms.
Benötigt Betriebsmittel (CPU, Speicher, Dateien, etc.) und ist selbst
ein Betriebsmittel.
Wird vom Betriebssystem verwaltet (Erzeugung, Terminierung,
Scheduling, etc.)
Ein Prozessor führt in jeder Zeiteinheit maximal einen Prozess aus.
Laufen mehrere Prozesse, dann finden Prozesswechsel statt. Das
Betriebssystem entscheidet über die Prozesswechsel.
Prozesse sind gegeneinander abgeschottet, d.h. jeder besitzt
(virtuell) seine eigene Betriebsmittel, wie etwa den Adressraum. Das
BS sorgt für die Abschottung.
Wir gehen von voneinander unabhängigen Prozessen aus. Bei
Kooperation ist eine explizite Synchronisation erforderlich.
Prozessverwaltung
Speicherverwaltung
Ein- und Ausgabe
Dateisysteme
Studenten des Studienganges „Angewandte Informatik“ wird der
Besuch der Spezialvorlesung dringend empfohlen!
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.46
8.47
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.48
8. Zusammenfassung
8. Zusammenfassung
Leichtgewichtsprozesse (Threads)
Interprozesskommunikation (IPC)
Prozesse arbeiten oft nicht allein, sondern müssen Informationen
austauschen, um eine gemeinsame Aufgabe zu erfüllen.
Threads sind parallele Kontrollflüsse, die nicht gegeneinander
abgeschottet sind
laufen innerhalb eines Adressraumes, innerhalb eines „echten“ Prozesses
teilen sich gemeinsame Ressourcen
Beim diesem Austausch müssen drei wichtige Fragen beantwortet
werden:
Wie werden die Daten ausgetauscht?
Über gemeinsame Variablen?
Über Nachrichtenaustausch?
Wie wird sicher gestellt, dass die Prozesse nicht gleichzeitig auf
gemeinsame Information zugreifen?
Wie wird die richtige Reihenfolge des Zugriffs sicher gestellt (ProducerConsumer-Problem)?
Die beiden letzten Fragen beschreiben das
Synchronisationsproblem.
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.49
8. Zusammenfassung
8.50
8. Zusammenfassung
Kommunikationsformen
Gemeinsame Variablen: vor
allem in Ein-Prozessor und
Multiprozessor-Systemen mit
gemeinsamem physikalischen
Speicher
Verklemmungen/Deadlocks
Nachrichtenaustausch: vor
allem bei verteilten Systemen,
also Kommunikation über
Rechnergrenzen hinweg
Prozess
Rechner
Prozesse benötigen Betriebsmittel, meist sogar mehrere
Drucker
Festplatte
Speicher (z.B. in internen BS-Tabellen)
Was passiert wenn sich zwei Prozesse jeweils ein Betriebsmittel
reservieren, das der andere auch benötigt?
Rechner
Prozess
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Diese Situation wird als Deadlock bezeichnet
Speicher
Definition:
Eine Menge von Prozessen befindet sich in einer Verklemmung
(deadlock), wenn jeder Prozess der Menge auf ein Ereignis wartet,
dass nur ein anderer Prozess aus der Menge auslösen kann.
Netz
Prozess
Prozess
Rechner
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.51
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.52
8. Zusammenfassung
8. Zusammenfassung
Notwendige Bedingungen für eine Verklemmung
1.
Einführung
Wechselseitiger Ausschluss (mutual exclusion):
Ein Betriebsmittel ist entweder genau einem Prozess zugeordnet oder
es ist verfügbar.
2.
Wartebedingung (hold and wait):
Es gibt einen Prozess, der ein Betriebsmittel belegt und auf ein
anderes Betriebsmittel wartet, das von einem anderen Prozess belegt
wird.
3.
Keine Verdrängung (no preemption):
Einem Prozess kann ein Betriebsmittel nicht entzogen werden.
4.
Zirkuläres Warten (circular wait):
Es gibt eine Menge {P1, P2,..., Pn} von Prozessen, so dass P1 auf ein
Betriebsmittel wartet das P2 belegt, P2 wartet auf ein Betriebsmittel
das P3 belegt, ..., und Pn wartet auf ein Betriebsmittel das P1 belegt.
Verschiedene Arten von Speichern, hierarchisch organisiert:
Cache-Speicher
Hauptspeicher
Sekundärspeicher
Archiv-Speicher
Eigenschaften des Hauptspeichers:
Der Hauptspeicher besteht aus einer Menge von Wörtern oder Bytes,
die jeweils über eine eigene Adresse verfügen.
Sowohl die CPU als auch E/A-Geräte greifen auf den Hauptspeicher zu.
Ausführbare Programme befinden sich zumindest teilweise im
Hauptspeicher.
Die CPU kann normalerweise nur auf Daten im Hauptspeicher direkt
zugreifen
Prozessverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.53
8. Zusammenfassung
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.54
8. Zusammenfassung
Grundlegende Speicherverwaltung
Abbildungen von Speicheradressen
Speichermanagement: grundsätzlich zwei Klassen:
Ein Compiler/Assembler übersetzt symbolische Adressen (Namen
von Variablen und Funktionen) in absolute oder relative
Speicheradressen.
Verschieben von Prozessen vom Hauptspeicher auf Festplatte und
zurück (Swapping, Paging)
Oder nicht (einfache Variante)
Quelltext
Bei Verzicht auf Swapping und Paging:
Monoprogramming:
Compiler
symbolische Namen
immer nur ein Prozess sowie das OS im Speicher
Einsatzgebiet: frühe Batchsysteme, eingebettete Systeme
Objektmodul
absolute/relative Adressen
Ein Linker bindet mehrere Objektmodule mit relativen Adressen und
die benötigten Bibliotheken zu einem ausführbaren Programm
(executable).
Multiprogramming mit festen Partitionen
Speicher wird in feste Blöcke eingeteilt, Programme bekommen einen
Speicherbereich zugewiesen
Einsatz im OS/360 von IBM
Oft wurde die Größe der Partitionen einmal am Tag festgesetzt
Objektmodule
Linker
relative Adressen
Executable
statisch/dynamisch gebunden
Bibliotheken
statisch/dynamisch
Speicherverwaltung
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.55
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.56
8. Zusammenfassung
8. Zusammenfassung
Moderne Speicherverwaltung
Shared Libraries
Heutige Computer haben andere Anforderungen an die Verwaltung
des Speichers
Insbesondere
Laufen meist viele Prozesse
Haben die Prozesse oft mehr Speicherbedarf als physikalischer
Speicher vorhanden ist
Zwei wichtige Lösungen:
Swapping: Verschieben von Prozessen zwischen Hauptspeicher und
Platte
Virtual Memory: Prozesse sind nur zum Teil im Hauptspeicher
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.57
8. Zusammenfassung
Speicherverwaltung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.58
8. Zusammenfassung
Direct Memory Access (DMA)
Einführung
I/O kann mittels DMA deutlich beschleunigt werden, da die CPU
weniger belastet ist
Prinzip: vergib einen Auftrag an DMA-Controller, erledige bis zum
Ende der Bearbeitung andere Dinge
Ablauf eines DMA-Transfers:
Inhalte
Grundlegende Konzepte von Programmiersprachen
Organisation von Compilern für moderne Programmiersprachen
Einführung in die Theorie von formalen Sprachen und Automaten
Als Grundlage dient das Buch “Programming Language Pragmatics”
von Michael L. Smith
Ein- und Ausgabe
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.59
Einführung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.60
8. Zusammenfassung
8. Zusammenfassung
Der Kompilationsprozess (-phasen)
Implementierung eines lexikalischen Analysators
Scanner (lexikalische Analyse)
Lese Programm und konvertiere Zeichenstrom in Marken
(tokens). Theorie: Reguläre Ausdrücke, endlicher Automat
Parser (syntaktische Analyse)
Lese Tokenstrom und generiere Ableitungsbaum (parse
tree). Theorie: Kontextfreie Grammatiken, Kellerautomat
Semantische Analyse
Wie übertragen wir reguläre Ausdrücke in einen
lexikalischen Analysator?
Konvertiere reguläre Ausdrücke zu einem deterministischen
endlichen (finite) Automaten (DFA)
Warum??? DFAs sind einfacher zu simulieren als reguläre
Ausdrücke
Traversiere Parserbaum, überprüfe nicht-syntaktische
Regeln.
Zwischencodegenerierung
Traversiere Parserbaum noch mal, gebe Zwischencode
aus.
Optimierung
Untersuche Zwischencode, versuche ihn zu verbessern.
Zielcodegenerierung
Übersetze Zwischencode in Assembler-/Maschinencode
Optimierung Maschinenebene
Untersuche Maschinencode, versuche ihn zu verbessern.
Regular
Expressions
+
Actions
Schreibe ein Programm zum Simulieren eines DFAs
Der DFA erkennt die Tokens im Eingabetext und wird der
lexikalische Analysator
Wenn ein Token erkannt wurde, dann kann eine
benutzerdefinierte Aktion ausgeführt werden
Lexical Analyzer
Generator
Lexical analyzer
source code
z.B. überprüfe, ob der Wert einer Ganzzahlkonstante in eine 32-bit
integer passt
Die Konvertierung von regulären Ausdrücken zu DFAs und
das Schreiben eines Programms zum Simulieren des DFA
kann entweder von Hand vorgenommen werden oder von
einem anderen Programm, welches lexikalischer
Analysegenerator genannt wird.
High-level language
compiler
Lexical analyzer
Lexikalische Analyse
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.61
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8. Zusammenfassung
8. Zusammenfassung
Kontextfreie Grammatiken (1/4)
Ableitungen und Ableitungsbäume (2/2)
Eine kontextfreie Grammatik (KFG/CFG) ist eine rekursive Definition einer
Sprache mit:
Einem Alphabet Σ von Symbolen
expr
symbol -> symbol symbol … symbol
Ein Startsymbol
Eine Menge von nicht-terminalen Symbolen aus dem Alphabet Σ, welche auf
der linken oder rechten Seite einer Produktionsregel erscheinen darf
(convention: written in all capital letters)
Eine Menge von terminalen Symbolen aus dem Alphabet Σ, welche nur auf der
rechten Seite einer Produktionsregel erscheinen darf. (convention: written in all
lower case letters)
Die Menge aller von einer CFG G erzeugten Strings wird die Sprache von G
genannt und wird symbolisiert durch L(G)
8.63
expr
⇒
( sum)
⇒
( expr + expr )
expr
⇒
( INT + expr )
INT
⇒
(INT + ( sum ) )
⇒
(INT + ( expr + expr ) )
expr
⇒
(INT + ( INT + expr ) )
INT
⇒
(INT + (INT + INT ) )
Eine Menge von Produktionen (oder Regeln) der Form
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.62
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
(
sum
)
+
expr
(
sum
)
+
expr
INT
8.64
8. Zusammenfassung
8. Zusammenfassung
Mehrdeutigkeiten (1/2)
Kellerautomat (2/4)
Eine Grammatik gilt als Mehrdeutig, wenn ein Satz mit (mind.) zwei
verschiedenen Ableitungsbäumen abgeleitet werden kann
Beispiel – linksseitige versus rechtsseitige Ableitung:
Grammatik:
expression -> identifier | number | - expression | ( expression ) |
expression operator expression
operator -> + | - | * | /
Das Eingabeband kann sich nur in eine Richtung bewegen.
Es existiert ein "Hilfsband", welches sich in beide Richtungen bewegen
kann.
Der Automat liest im ersten Schritt die jeweils erste Zelle beider Bänder.
Als Reaktion des Automaten kann entweder das Hilfsband vorwärts
bewegt und ein Zeichen in die nächste Zelle geschrieben werden oder
das Symbol gelöscht und das Hilfsband eine Zelle zurück bewegt
werden.
Eingabe: slope * x + intercept
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.65
8. Zusammenfassung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.66
8. Zusammenfassung
Klassen von Grammatiken und Parsern
Probleme mit der LL-Syntaxanalyse (1/4)
LL(k) Parser
Eingabe wird von links-nach-rechts
(1. L) abgearbeitet
linksseitige Ableitung (2. L)
“top down” oder “prädiktive”
(voraussagende) Parser genannt
LR(k) parsers
Eingabe wird von links-nach-rechts
(1. L) abgearbeitet
rechtsseitige Ableitung (2. R)
“bottom up” oder “schiebe-reduziere“
(shift-reduce) Parser genannt
“k” steht für die Anzahl von Symbolen
(token) für die in der Eingabe
vorausgeschaut werden muss um
eine Entscheidung treffen zu können
LL(k) – welche nächste Produktion auf
der rechten Seite ist bei einer
linksseitigen Ableitung zu wählen
LR(k) – ob zu schieben oder reduzieren
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Kontextfreie Grammatiken können von Kellerautomaten (Push
Down Automata, PDA) erkannt werden
PDAs sind eine Erweiterung der endlichen Automaten um ein
„einfaches“ Gedächtnis (Hilfsband)
Eigenschaften eines Kellerautomaten:
8.67
Linksrekursion
Produktionen von der Form:
A -> Aα
A -> β
Wenn eine Grammatik linksrekursive Produktionen enthält, dann kann
es dafür keinen LL Parser geben
LL Parser würden in eine Endlosschleife eintreten, wenn versucht wird eine
linksseitige Ableitung in solch einer Grammatik vorzunehmen
Linksrekursion kann durch das Umschreiben der Grammatik
ausgeschlossen werden
A -> βA’
A’ -> αA’ | є
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.68
8. Zusammenfassung
8. Zusammenfassung
Probleme mit der LL-Syntaxanalyse (3/4)
Beispiel für PREDICT-Mengen
Gemeinsame Präfixe
Tritt auf wenn zwei verschiedene Produktionen mit der gleichen linken
Seite mit den gleichen Symbolen anfangen
Produktionen der Form:
Kann durch Faktorisierung ausgeschlossen werden:
A -> bA’
A’ -> α | β
8.69
8. Zusammenfassung
A
True
{a,b,є}
{b,s,a}
S -> A B S B -> b
A -> a
B
True
{b, є}
{s,a,b}
S
False
{s,a,b}
{$}
PREDICT
A->B
{a,b,є,s}
A->a
{a}
B->є
{a,b,s}
B->b
{b, є}
S->s$
{s}
{a,b,s}
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
PREDICT-Mengen zeigen uns welche
Menge von look-ahead Symbolen die
rechte Seite einer Produktion selektiert
Diese Grammatik ist NICHT LL(1), da
es duplizierte Symbole in den
PREDICT-Mengen für alle drei
Nichtterminale gibt
Siehe Hervorhebungen (dick, rot)
8.70
8. Zusammenfassung
Ableitungsbäume und Parser mit rekursivem Abstieg (2/2)
Beispiel: Jedes nichtterminale Unterprogramm konstruiert einen
Ableitungsbaumknoten
node *factor (void) {
factor -> ( expr )
factor -> [ sexpr ]
FOLLOW
A -> B
S->ABS
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
FIRST
B -> є
S -> s$
A -> bα
A -> bβ
LL(1) Parser kann nicht entscheiden welche Regel auszuwählen ist, wenn A
in einem linksseitigen Ableitungsschritt zu ersetzen ist, weil beide rechten
Seiten mit dem gleichen Terminalsymbol anfangen
NULLABLE
Ausblick
Namen, Bindungen und Gültigkeitsbereiche (Kapitel 3)
Objektlebenszeit und Speichermanagement
Kontrollfluss (Kapitel 6)
Zusammenführung (Bau eines ausführbaren Programms) (Kapitel 9)
switch(next_token()) {
case ‘(‘:
node = factor_node(expr());
match(‘)’); break;
case ‘[‘:
node = factor_node(sexpr());
Nicht alle Symbole werden zu
einem Ableitungsbaumknoten
Beispiele: ‘(‘, ‘)’, ‘[‘, ‘]’
Diese Art von Ableitungsbaum
}
wird „Abstrakter Syntaxbaum“
(abstract syntax tree, AST) genannt
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
match(‘]’); break;
}
return node;
8.71
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.72
8. Zusammenfassung
8. Zusammenfassung
Zusammenfassung Namen und Bindungen
Gültigkeitsbereiche
Namen
Textueller Bereich eines Programms in welchem eine Bindung aktiv
ist
Es gibt grundsätzlich zwei Varianten:
Ein mnemonischer Zeichenname wird verwendet um irgendetwas
anderes zu repräsentieren oder zu benennen
Beispiel: Variable foo kann die Speicherstelle 10000 referenzieren
Statische Gültigkeitsbereiche (static scopes)
Es kann zur Compilezeit genau festgestellt werden welcher Name welches
Objekt an welchen Punkten im Programm referenziert
Bindungen
Dynamische Gültigkeitsbereiche (dynamic scopes)
Ist eine Assoziation zwischen zwei Dingen
Bindungen zwischen Namen und Objekten hängen vom Programmfluss zur
Laufzeit ab
Ein Name und das was er referenziert
Nähere Ausführung
Bindezeit
Der Prozess durch den eine Menge von Bindungen aktiv wird wenn die
Kontrolle in einen Gültigkeitsbereich eintritt
Die Bindezeit ist die Zeit zu der die Entscheidung über eine solche
Assoziation gemacht wird
Zum Beispiel die Allokation von Speicher um Objekte darin zu halten
Beispiel: Ist der Wert von foo in einem Register oder im Speicher?
(Entscheidung wird zur Compilezeit gemacht)
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.73
8. Zusammenfassung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.74
8. Zusammenfassung
Objektlebensdauer (1/3)
Objektlebensdauer (3/3)
Schlüsselereignisse während der Lebensdauer eines Objektes
Die Lebenszeit eines Objekts korrespondiert mit einem von drei
Hauptmechanismen der Speicherallokation
Objekt wird erzeugt
Bindungen zum Objekt werden erzeugt
Referenzen zu den Variablen, Unterprogrammen und Typen werden
durch Bindungen gemacht
Deaktivierung und Reaktivierung von temporär nicht verwendbaren
Bindungen
Vernichtung von Bindungen
Vernichtung des Objekts
Statische Allokation
Objekte werden zur Compilezeit oder Laufzeit zu festen Speicherplätzen
allokiert
Stack Allokation
Objekte werden zur Laufzeit wie benötigt allokiert, wobei eine last-in, first-out
Ordnung gilt
Beispiel: Lokales
Lebensdauer von Bindungen: Zeit zwischen Erzeugung und
Vernichtung einer Bindung
Heap Allokation
Beispiel: Zeit während der eine Java Referenz ein Objekt im Speicher
referenziert
Objekte werden zur Laufzeit in einer beliebigen Reihenfolge allokiert und
freigegeben
Beispiel: dynamisch allokierte Objekte
Lebensdauer von Objekten: Zeit zwischen Erzeugung und
Vernichtung eines Objekts
Beispiel: Zeit während der ein Objekt im Speicher „lebt“
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.75
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.76
8. Zusammenfassung
8. Zusammenfassung
Kategorien von Kontrollflussmechanismen
Peephole-Optimierung
Sequentialität (sequencing)
Bestimmt für ein gegebenes Paar von Berechnungen welches zuerst ausgeführt
wird
Auswahl (selection)
Wähle, basierend auf einer Laufzeitbedingung, welche von mehreren
Berechnungen ausgeführt werden soll
Iteration (iteration)
Führt eine Gruppe von Berechnungen mehrmals aus
Rekursion (recursion)
Erlaubt es Berechnungen durch sich selbst zu definieren (Allows computations to be
defined in terms of themselves)
Prozedurale Abstraktion (procedural abstraction)
Sehe dir den Zielcode an, wenige Instruktionen gleichzeitig, und
versuche einfache Verbesserungen zu machen
Versucht kurze, sub-optimale Folgen von Instruktionen zu finden
und ersetzt diese Sequenzen mit einer „besseren“ Sequenz
Sub-Optimale Sequenzen werden durch Muster (patterns)
spezifiziert
Meistens heuristische Methoden — Es gibt keinen Weg um zu
überprüfen ob das Ersetzen eines sub-optimalen Musters tatsächlich
das endgültige Programm verbessern wird
Einfach und ziemlich wirksam
Erlaubt es einer Gruppe von Berechnungen zu bennen, möglicherweise zu
parametrisieren und auszuführen wann immer der Name referenziert wird
Nebenläufigkeit (concurrency)
Erlaubt es Berechnungen „zur gleichen Zeit“ auszuführen
Keine Festlegung (Nondeterminancy)
Reihenfolge zwischen Berechnungen wird unspezifiziert gelassen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.77
8. Zusammenfassung
8.78
8. Zusammenfassung
Die Organisation eines typischen Compilers
Binden (linking)
Frontend
Beim Binden
werden mehrere
durch den
Assembler erzeugte
Objektdateien zu
einer einzelnen,
ausführbaren
Datei kombiniert,
welche durch ein
Betriebssystem
lauffähig ist
Führt Operationen aus
welche von der zu
kompilierenden Sprache
abhängen und nicht von
der Zielmaschine
Backend
Führt Operationen aus
welche etwas Wissen
über die Zielmaschine
haben müssen
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.79
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.80
8. Zusammenfassung
8. Zusammenfassung
Was haben Sie in diesem Kapitel gelernt?
Matrix der Kommunikationsformen
Programmiersprachen sind Abstraktionsmechanismen, welche:
ein Rahmenwerk zum Lösen von Problemen und erzeugen neuer
Abstraktionen bieten
Schirmen den Programmierer von niederen Detailebenen (low-level
details) der Zielmaschine (Assemblersprache, Verbinden (linken), etc.)
ab
Compiler sind komplexe Programme welche eine höhere
Programmiersprache in eine Assemblersprache umwandeln um
danach ausgeführt zu werden
Compilerprogrammierer handhaben die Komplexität des
Kompilationsprozesses durch:
aufteilen des Compilers in unterschiedliche Phasen
verwenden, ausgehend von der Spezifikation, eine Theorie für den Bau
von Compilerkomponenten
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.81
8. Zusammenfassung
Leitungsvermittlung
PaketVermittlung
Verbindungs
-los
IP über feste
ATM-Strecken
UDP über IP
im Internet;
NFS-Anwendung
Verbindungs
-orientiert
Telefon
TCP über IP im
Internet; Email; FTP
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.82
8. Zusammenfassung
Netztopologien und Medienzuteilung
Darstellung und Schichtung von Diensten
Stern
Dienstnutzer
einfache Wegwahl
geringe Ausfallsicherheit
Dienstnutzer
Dienstschnittstelle N
Ring
Dienstzugangpunkt N
N-Instanz 1
einfache Wegwahl
geringe Ausfallsicherheit
hoher Aufwand für die Steuerung
N-Instanz 2
Dienstschnittstelle N-1
Schicht N
Dienstzugangpunkt N-1
Bus
Stationen teilen sich ein Medium
gute Ausfallsicherheit
(N-1)-Instanz 1
(N-1)-Instanz 2
Schicht N-1
Liniennetz
konzeptionell einfach
mittlere Ausfallsicherheit
Position im Netz beeinflusst
Übertragungszeiten
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Die Bildung von Schichten ist ein grundlegendes Prinzip zur
Strukturierung von Kommunikationssystemen.
Dienste einer Schicht dürfen immer nur Dienstprimitive von Diensten
in direkt benachbarten Schichten in Anspruch nehmen.
8.83
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.84
8. Zusammenfassung
8. Zusammenfassung
Protokolldateneinheit (1/2)
Das ISO/OSI-Referenzmodell
Eine Protokolldateneinheit (PDU, Protokol Data Unit) ist eine
Informationseinheit, die zwischen Partnerinstanzen in
verschiedenen Stationen als Teil des Protokolls ausgetauscht wird.
Als Dienstdateneinheit (SDU, Service Data Unit) werden
Schnittstellendaten bezeichnet, die von einer Schicht an die nächst
niedrige oder umgekehrt übertragen werden.
PKI
PKI
N-Protokolldateneinheit
N-Header
N-BenutzerN-Trailer
daten
(N-1)-Protokoll(N-1)-Header
dateneinheit
Beispiele:
Folgenummer
Adressen
Application Process
Endsystem
Endsystem
Anwendung
Application
Darstellung
Presentation
Steuerung
Session
Transport
PKI
PKI
Anwendungsprozeß
(N-1)- Benutzerdaten
(N-1)-Trailer
Nachricht der N-Schicht
Fehlerprüfung
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Vermittlung
Network
Network
Sicherung
Data Link
Data Link
Bitübertragung
Physical
Physical
Medium
8.85
8. Zusammenfassung
Transport
Transitsystem
Media
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.86
8. Zusammenfassung
Protokollmechanismen die alle Schichten betreffen
LANs im ISO/OSI-Referenzmodell
Namensgebung (Naming): Identifikation von Objekten/Ressourcen
Segmentieren und Blocken
Verbindungen und Multiplexen
Synchronisation: Kontrolle in einer Umgebung mit
unvorhersehbarer Verzögerung und Fehlverhalten
Fehlerüberwachung: Fehlererkennung und -behebung
Flusskontrolle/Staukontrolle
Prioritäten
Die LAN-Protokolle sind in der zweiten Schicht des
ISO/OSI- Referenzmodells (Sicherungsschicht, data link
layer) angesiedelt.
Die Sicherungsschicht wird nach IEEE in zwei
Teilschichten aufgeteilt:
Die logical link control (LLC) Schicht realisiert die
normalerweise in der Schicht 2 vorhandenen
Sicherungsfunktionen.
Logical Link Control
Anwendung
Darstellung
Steuerung
Transport
Vermittlung
Sicherung
Media Access Control
Bitübertragung
Die media access control (MAC) Schicht regelt den
Zugang zum Übertragungsmedium.
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.87
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.88
8. Zusammenfassung
8. Zusammenfassung
IEEE 802.3 - CSMA/CD
Ablauf einer Kollision:
IEEE 802.5 – Prinzip
Station
A
Station
B
Token-Ring Übersicht
Ringtopologie mit Sternverkabelung.
Nur eine Senderichtung.
Typischerweise STP-Kabel (andere möglich,
z.B. koaxial).
4/16 Mbps, < 260 Stationen, < 100 m
zwischen den Stationen.
A beginnt zu senden:
B beginnt zu senden:
B erkennt die Kollision:
B sendet JAM Signal:
Backoff:
Beim i-ten Versuch wird die Übertragung nach n Slotzeiten wiederholt,
wobei n eine Zufallszahl aus dem Bereich 0 ... 2i-1 ist.
Die Slotzeit für ein 10 Mbps Koaxialkabel mit maximal 2.5 km Länge
entspricht 512 Bitzeiten oder 51.2 us.
Applet-Demo:
http://herodot.informatik.uni-mannheim.de/appverw/appletlist2.php
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Interface
Interface
8.89
8. Zusammenfassung
DD
Token
Token
AA
CC
BB
DD
MAC-Protokoll
Token rotation (token passing) protocol.
Unterstützung von Echtzeitdatenverkehr:
Concentrator
Concentrator
AA
beschränkte Wartezeit für den Medienzugriff
wegen begrenzter token holding time.
Prioritäten.
CC
BB
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.90
8. Zusammenfassung
Verbindung von Netzen
Zwischensysteme: Zusammenfassung
Klassifikation von Verbindungen:
Verbindung von homogenen Netzen über Brücken
Verbindung von heterogenen Netzen über Brücken oder Gateways
Zwischensysteme
Isolation des Verkehrs
Repeater und Hubs (bis Schicht 1)
Brücken (bridges) und Switches (bis Schicht 2)
Router (bis Schicht 3)
Gateways (bis Schicht 4 oder höher)
Plug & Play
Diese Zwischensysteme gibt es oft nicht in Reinform, da
verschiedene Funktionalitäten angeboten werden
Optimale Wegewahl
z.B. Router haben oft Funktionalitäten eines Gateways, wie
z.B. Port-Filter (für Firewalls)
Durchleiten ohne
Zwischenspeicherung
Die Bezeichnungen von Zwischensystemen werden auch
desöfteren falsch verwendet!
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.91
Hub
Brücke
Switch
Router
Nein
Ja
Ja
Ja
Ja
Ja
Ja
Nein
Nein
Nein
Nein
Ja
Ja
Nein
Ja
Nein
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.92
8. Zusammenfassung
8. Zusammenfassung
Die Internet-Protokollfamilie
Das Modell von IP
Datagramme
Web browser,
e-mail, ...
Other user
applications
Applications
Einzelne, unabhängig voneinander weitergeleitete Pakete, die sich
ihren Weg zum Ziel suchen
User
space
Application protocols:
HTTP, SMTP, FTP, ...
Routing-Tabellen
R2
geben den Ausgang zu
einem Ziel an
Application Programming Interface (API)
R3
R1
UDP
TCP
IGMP
ICMP
RIP
OS
kernel
OSPF
IP
RARP
„Best effort“-Dienst
Transport
Network
ARP
LAN DL
technology
WAN DL
technology
Data Link
R6
yx
yx
DA,SA
data
Routing tables
Router R1
Next hop
R3, R4
...
y
yx
Router R3
DA
y
...
Next hop
R6
...
yx
Router R6
DA
y
...
Next hop
...
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.93
8. Zusammenfassung
8.94
8. Zusammenfassung
IPv4-Adressen
Transportschicht: TCP und UDP
32 bits
Binäre und dezimale Darstellung
32
Dezimal
yx
DA
y
...
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Binär:
x
Praktisch keine Echtzeit
yx
R4
Keine Garantie für
Auslieferung eines Pakets
Korrekte Reihenfolge
R5
23
15
7
0
11010100 01111110 11010000 10000111
212
.
126
.
208
.
135
Hierarchische Adressierung
Zwei Möglichkeiten
Der grundlegende unzuverlässige Internetdienst genügt, dann verwende
UDP.
Er genügt nicht, dann verwende TCP.
End-To-End-Signifikanz:
Netzwerk-Nummer + Netzmaske (Classless Interdomain Routing
(CIDR), RFC 1519).
Bemerkung: IP-Adressklassen werden praktisch nicht mehr verwendet
(wg. Adressknappheit)
Netzangabe: 134.76.0.0/255.255.0.0 oder alternativ 134.76.0.0/16
(16 = Länge der Netzmaske)
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
Aufgabe der Transportschicht: Datentransport von einem Prozess
auf einem Rechner zu einem (oder mehreren) anderen Prozessen
auf anderen Rechnern im Internet
8.95
IP-Adressen identifizieren IP-Hosts und keine Applikationen.
IP besitzt daher eine Host-To-Host-Signifikanz.
Ein Transportendpunkt wird durch eine IP-Adresse und eine lokale
eindeutige Portnummer identifiziert.
TCP und UDP besitzen End-To-End-Signifikanz.
Für Standard-Dienste sind Portnummern fest definiert (well-known
ports).
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.96
8. Zusammenfassung
8. Zusammenfassung
DNS-Abfragen (1/2)
Geschafft
root NS
2(Q)
5(R) 4(R)
Compilerbau (Kapitel 6)
Iterative Abfragen
Rekursive Abfragen
root NS
Q = Query
R = Response
Rfr = Referral
3(Q)
Betriebssysteme (Kapitel 5)
3(Q) 4(Rfr)
sam.edu NS
(local)
bob.com NS
(authoritative)
sam.edu NS
(local)
bob.com NS
(authoritative)
Maschinenorientierte Programmierung (Kapitel 4)
1(Q)
6(R)
1(Q)
2(Rfr)
5(Q)
6(Rfr)
vega.sam.edu
Query: “Address of
sun.bob.com”
5(R)
5(R)
von-Neumann-Rechner (Kapitel 3)
sun.bob.com
Query: “Address of
sun.bob.com”
Vega sam.edu
bob.comNS
NS
sam.eduNS
NS root
rootNS
NS bob.com
Vega
1(Q)
1(Q)
2(Q)
2(Q)
3(Q)
3(Q)
6(R)
6(R)
vega.sam.edu
sun.bob.com
4(R)
4(R)
Vega sam.edu
bob.comNS
NS
sam.eduNS
NS root
rootNS
NS bob.com
Vega
1(Q)
1(Q)
2(Rfr)
2(Rfr)
3(Q)
3(Q)
4(Rfr)
4(Rfr)
5(Q)
5(Q)
6(R)
6(R)
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.97
8. Zusammenfassung
Speicher
Zahlen und logische Schaltungen (Kapitel 2)
Kommunikation (Kapitel 7)
von-Neumann-Rechner
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8. Zusammenfassung
ENDE
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.98
ENDE
8.99
Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe
Informatik II - SS 2004
8.100
Herunterladen