Grundlagen der Datenverarbeitung (Vorlesung + Mitschrieb)

FH Isny 2003 - 2004 Grundlagen der Datenverarbeitung (Vorlesung + Mitschrieb) Sorber (29.09.2003) Zuletzt aktualisiert am 7. August 2004. * Dank...
19 downloads 0 Views 3MB Size
FH Isny

2003 - 2004

Grundlagen der Datenverarbeitung (Vorlesung + Mitschrieb)

Sorber

(29.09.2003)

Zuletzt aktualisiert am 7. August 2004.

* Dank geht an LATEX

1

Inhaltsverzeichnis

1 Allgemeine Einf¨ uhrung 1.1 Einteilung der Informatik . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Geschichte der Informatik . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Informationsdarstellung im Computer 2.1 Analoge und digitale Daten . . . . . . . . . . . 2.2 Codes . . . . . . . . . . . . . . . . . . . . . . . 2.3 Zahlen und Zahlensysteme . . . . . . . . . . . . 2.3.1 Stellenwertsystem . . . . . . . . . . . . . 2.3.2 Zifferndarstellung f¨ ur gebrochene Zahlen 2.3.3 Zahlen und Zeichendarstellungen . . . . 2.3.3.1 BCD - codierte Dezimalzahlen . 2.3.3.2 Vorzeichenlose Dezimalzahlen . 2.3.3.3 Dualzahlen mit Vorzeichen . . . 2.3.3.4 Reelle Zahlen . . . . . . . . . . 2.3.3.5 Darstellung von Zeichen . . . . 2.3.4 Konvertierung ganzer Zahlen . . . . . . . 2.3.5 Konvertierung gebrochener Zahlen . . . 2.3.6 Dualzahlarithmetik . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

6 6 6 9 9 9 11 11 12 15 15 15 15 17 19 20 21 22

3 Aussagen- und Pr¨ adikatenlogik 26 3.1 Aussagenlogik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2 Einf¨ uhrung in die Pr¨adikatenlogik . . . . . . . . . . . . . . . . . . . . . . 30 4 Boolesche Algebra und Schaltnetze 4.1 Boolesche Algebra . . . . . . . . . . . . . . . . . . . . 4.2 Boolesche Ausdr¨ ucke und ihre Darstellung . . . . . . 4.2.1 Tabellarische Darstellung . . . . . . . . . . . . 4.2.2 Darstellung in Diagrammen . . . . . . . . . . 4.2.3 Darstellung in Normalform . . . . . . . . . . . 4.3 Technische Realisierungen von Booleschen Funktionen 4.4 Minimierung Boolescher Funktionen . . . . . . . . . . 4.4.1 Algebraisches Verfahren . . . . . . . . . . . . 4.4.2 Grafische Verfahren . . . . . . . . . . . . . . .

2

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

36 36 38 39 40 43 45 47 47 48

Inhaltsverzeichnis 5 Der 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10

WS/SS 2003-04

Von-Neumann - Computer Prinzipieller Aufbau und Funktionsweise Elektrische Schalter . . . . . . . . . . . . Schaltnetze . . . . . . . . . . . . . . . . Schaltwerke . . . . . . . . . . . . . . . . Rechenwerke . . . . . . . . . . . . . . . . Arbeitsspeicher . . . . . . . . . . . . . . Steuerwerk und Programmausf¨ uhrung . . Bus/Bussystem . . . . . . . . . . . . . . Periphere Ger¨ate . . . . . . . . . . . . . Abstraktionsstufen . . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

50 50 51 54 55 56 59 60 61 62 63

6 Weiterentwicklung des Von-Neumann-Rechners 6.1 Mehrregister - Maschinen . . . . . . . . . . . . 6.2 Virtualisierung (virtuell - scheinbar) . . . . . . 6.3 Parallelit¨at in einzelnen Komponenten . . . . 6.4 Parallele Rechnerarchitekturen . . . . . . . . . 6.5 Rechnernetz . . . . . . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

64 64 64 66 68 70

. . . . . . . . . .

. . . . . . . . . .

7 Datenstrukturen 72 7.1 Datenstruktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 7.1.1 Definition einer Datenstruktur . . . . . . . . . . . . . . . . . . . . 72 7.1.2 Klassifizierung von Datenstrukturen . . . . . . . . . . . . . . . . . 72 7.1.3 Darstellung von Datenstrukturen . . . . . . . . . . . . . . . . . . 72 7.1.4 Lineare Felder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 7.1.5 B¨aume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 7.1.5.1 Speicherung von B¨aumen . . . . . . . . . . . . . . . . . 79 7.1.5.2 Bin¨arbaum und arithmetischer und logischer Ausdruck (Rechenbaum) . . . . . . . . . . . . . . . . . . . . . . . 79 7.1.6 Relationale Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . 80 7.1.6.1 Relationenalgebra . . . . . . . . . . . . . . . . . . . . . 80 8 Betriebsysteme 8.1 Aufbau von Betriebssystemen (BS) 8.2 Prozesse und ihre Zust¨ande . . . . 8.3 Prozesssynchronisation . . . . . . . 8.4 Ressourcenverwaltung . . . . . . . 8.4.1 E/A-Verwaltung . . . . . . 8.4.2 Arbeitsspeicherverwaltung . 8.5 Programmallokation . . . . . . . . 8.5.1 Binden und Laden . . . . . 8.5.2 Adressierungsarten . . . . .

3

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

84 84 87 89 92 93 94 96 96 97

Inhaltsverzeichnis

8.6

8.7

WS/SS 2003-04

8.5.3 Verfahren der Speicherallokation . . . . . . . . . . . . . . . . . . . 99 Dateiverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 8.6.1 Logische Organisationsformen von Dateien und Zugriffsmechanismen101 8.6.2 Speicherung von Dateien (phys. Organisationsform) . . . . . . . . 104 Auftragssteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 8.7.1 Ablaufplaner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 8.7.2 Auftragsabwickler . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 8.7.3 Auftragssteuersprache . . . . . . . . . . . . . . . . . . . . . . . . 107

9 Programmiersprachen und Systeme 9.1 Programmiersprachen . . . . . . . . . . . . . . . . . . . . . 9.2 Grundlagen zur Definition h¨oherer Programmiersprachen . 9.3 Problemorientierte Programmiersprachen . . . . . . . . . . 9.4 Binder und Lader . . . . . . . . . . . . . . . . . . . . . . . 9.4.1 Binder (Linker, linkage editor) . . . . . . . . . . . . 9.4.2 Urlader und Lader . . . . . . . . . . . . . . . . . . 9.5 Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.5.1 Ablauf der Compilation . . . . . . . . . . . . . . . 9.5.2 Lexikalische Analyse . . . . . . . . . . . . . . . . . 9.5.3 Syntaktische Analyse . . . . . . . . . . . . . . . . . 9.5.4 Semantische Analyse und Aufbau des Syntaxbaums 9.5.5 Codegenerierung . . . . . . . . . . . . . . . . . . . 9.5.6 Codeoptimierung . . . . . . . . . . . . . . . . . . . 10 Spezielle B¨ aume 10.1 Begriffe . . . . . . . . . . . . 10.2 Balancierte B¨aume . . . . . . 10.2.1 AVL-B¨aume . . . . . . 10.3 B-B¨aume (balancierte B¨aume)

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

11 Schl¨ usseltransformation 11.1 Hash-Funktion . . . . . . . . . . . . . . . . . ¨ 11.2 Hashverfahren mit Verkettung der Uberl¨ aufer 11.3 Offene Hashverfahren . . . . . . . . . . . . . . 11.3.1 Double Hashing . . . . . . . . . . . . . 11.3.2 Ordered Hashing . . . . . . . . . . . . 11.3.3 Coalesced Hashing (verschmelzen) . . . 11.4 Vergleich bzw. Analyse Hashverfahren . . . . .

. . . .

. . . . . . .

. . . .

. . . . . . .

. . . .

. . . . . . .

. . . .

. . . . . . .

. . . .

. . . . . . .

. . . .

. . . . . . .

. . . .

. . . . . . .

. . . . . . . . . . . . .

. . . .

. . . . . . .

. . . . . . . . . . . . .

. . . .

. . . . . . .

. . . . . . . . . . . . .

. . . .

. . . . . . .

. . . . . . . . . . . . .

. . . .

. . . . . . .

. . . . . . . . . . . . .

. . . .

. . . . . . .

. . . . . . . . . . . . .

. . . .

. . . . . . .

. . . . . . . . . . . . .

. . . .

. . . . . . .

. . . . . . . . . . . . .

108 108 109 112 114 114 116 116 116 116 117 117 118 121

. . . .

122 122 123 123 130

. . . . . . .

134 135 136 138 140 141 143 144

12 Sortieren 148 12.1 Elementare Sortierverfahren . . . . . . . . . . . . . . . . . . . . . . . . . 148 12.2 Quicksort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

4

Inhaltsverzeichnis

WS/SS 2003-04

12.2.1 Quicksort-Sortieren durch rekursives Teilen . . . . . . . . . 12.2.2 Quicksort-Varianten . . . . . . . . . . . . . . . . . . . . . 12.3 Heapsort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.4 Merge-Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.4.1 2-Wege-Merge-Sort . . . . . . . . . . . . . . . . . . . . . . 12.5 Radix-Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.5.1 Bin-Sort, Bucket-Sort oder Sortieren durch Fachverteilung

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

148 150 151 154 154 155 155

13 Datenkompression 157 13.1 Laufl¨angenkodierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 13.2 Kodierung mit variabler L¨ange . . . . . . . . . . . . . . . . . . . . . . . . 157 13.3 HUFFMAN - Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 14 Kryptologie 162 14.1 Einfache Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 14.2 Kryptosysteme mit ¨offentlichen Schl¨ usseln . . . . . . . . . . . . . . . . . 164 15 Pr¨ ufziffer 167 15.1 Verhoeffsche Fehlerstatistik . . . . . . . . . . . . . . . . . . . . . . . . . 167 15.2 Wichtung und mod-Division . . . . . . . . . . . . . . . . . . . . . . . . . 167 15.3 Fehlererkennung der angesprochenen Verfahren . . . . . . . . . . . . . . . 169 16 Client-/Server - Systeme 16.1 Allgemeines und Begriffe . . . . . . . . . . . . . . . . . . . . 16.2 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . 16.3 Ziele, Vor- und Nachteile . . . . . . . . . . . . . . . . . . . . 16.4 Verteilungsplattform . . . . . . . . . . . . . . . . . . . . . . 16.4.1 Basisdienste (Funktionen) von Verteilungsplattformen 16.4.2 Arten von Verteilungsplattformen . . . . . . . . . . . 16.4.2.1 RPC . . . . . . . . . . . . . . . . . . . . . . 16.4.2.2 Verteilte Objektsysteme . . . . . . . . . . . Literaturverzeichnis

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

170 170 171 173 174 177 180 180 182 186

5

1 Allgemeine Einfu ¨hrung Was ist Informatik ? : Kunstwort (Analogie zu Information und Mathematik) Informatik  (Strukturwissenschaft)  

@ R @

informatique

computer science

,→ keine einheitliche Def. f¨ ur Begriff Informatik Zentrale Begriffe: ¨ • Information −→ Ubermittlung von neuem unbekannten Wissen ¨ • Nachricht −→ Ubermittlung von Wissen schlechthin ⇒ Information ist gedeutete Nachricht ISO 2382: Information ist die von Menschen den Daten mittels Vereinbarung u ¨ber ihre Darstellung gegebene Bedeutung. alte Einteilung der Wissenschaften: • Naturwisschenschaften −→ Mathematik −→ Informatik −→ Strukturwissenschaft • Geisteswissenschaften

1.1 Einteilung der Informatik - Gliederung der Strukturwissenschaft Informatik

1.2 Geschichte der Informatik Ziffer

Zahlen

@ I@ I@ I@ I @@@@ @@@@ @@@@



2003

6

1.2. Geschichte der Informatik

WS/SS 2003-04

Stellenwertsystem: Zahl 2003 (Dezimalsystem)  @ I  

@ @



@



@ @



2 · 103

+

3 · 103

= 2000 + 3 = 2003

Dekadisches oder dezimales Zahlensystem, indisch - arabisches Zahlensystem (01.10.03) bin¨are (duale) Arithmetik: Leibnitz −→ Zahlendarstellung als Summe von Potenzen zur Basis 2 B B BN

duales Zahlensystem H. Hollerith B B BN

Lochkreis als Datenspeicher Babagge – Differenzmaschine (ist realisiert worden) C C CW

Baugruppen: (nicht realisiert worden) • vollautomatisches Rechenwerk f¨ ur Grundrechenarten • Zahlenspeicher f¨ ur 1000 Zahlen mit je 50 Stellen • Lochkartensteuereinheit • Dateneingabeger¨at f¨ ur Zahlen und Rechenvorschriften • Datenangabevorrichtung Zuse −→ 1941: 1. programmgesteuerter Rechenautomat der Welt Einschub: • 123,51 e: Festkommadarstellung • 123 45789 e: Gleitkommadarstellung

7

1.2. Geschichte der Informatik

WS/SS 2003-04

Bsp: Multiplikation mit und ohne Gleitpunkt im Dezimalsystem ohne Gleitpunkt

als Zehnerpotenz

0.000015 50000000

1.5 · 10−5 5 · 107

1. Faktor 2. Faktor Produkt

mit Gleitpunkt Exponent Mantisse -5 1.5 +7 5.0 2 7.5 = b 7.5 · 102

John von Neumann −→ Forderungen an Rechenautomaten: 1. Programm wird wie Daten codiert und in Maschine gespeichert. 2. Programm (Befehlsfolge) enth¨alt bedingte Befehle, die Vorw¨arts- und R¨ uckw¨artsverzweigung erm¨oglichen. 3. Jeder Befehl eines Programms mit Operations- und Adressteil kann von der Maschine selbst wie jeder andere Operand ge¨andert werden. 1. Generation: gekennzeichnet durch Elektronenr¨ohren 2. Generation: gekennzeichnet durch Transistoren Rechenzeiten: 1300 Additionen pro Sekunde 3. Generation: Rechenzeiten: 160000 Additionen pro Sekunde

8

2 Informationsdarstellung im Computer (07.10.2003)

2.1 Analoge und digitale Daten Physikalische Gr¨ossen wie Zeit und Temperatur k¨onnen als stetig verlaufende Werte dargestellt werden, sie haben in einem betrachteten Intervall beliebig viele Zwischenwerte. Diese Darstellung nennt man analog, weil diese Gr¨ossen auf eine analoge Gr¨osse L¨ange ” einer Strecke“ abgebildet werden. Ersetzt man diese unendlich vielen Werte der physikalischen Gr¨ossen durch endlich viele, nennt man das Rasterung oder Diskretisierung. Diskret (Sprachgebrauch der Mathematik + Informatik) - unstetig oder getrennt. Bei gen¨ ugend grossem Wertebereich wird der dadurch verursachte Fehler unter der Wahrnehmungsgrenze gehalten. Wenn man die endlich vielen Werte der diskretisierten Wertebereiche codiert, nennt man das Digitalisierung und das Ergebnis eine digitale Darstellung. Digital (lat.: digitus - Finger) – Ziffernhaft (eng.: digit - Ziffer)

2.2 Codes Code – Vorschrift der Zuordnung der Zeichen eines Zeichenvorrats zu den Zeichen eines anderen Zeichenvorrats. Klassifikation von Code nach ihrer Funktion: - externe Codes (Datentr¨ager - Codes) Sie dienen der Verst¨andigung zwischen Mensch und Computer - interne Codes (Codes die innerhalb des Computers verwendet werden (ASCII – Code, EBCDI – Code, Unicode)) Umwandlung von externer Zeichendarstellung in die interne, duale Darstellung der Zeichen u ubersetzer in den jeweiligen Eingabeger¨aten. ¨bernehmen Code¨ Der umgekehrte Vorgang findet bei der Ausgabe von Informationen statt. ASCII-Code (American Standard Code for Information Interface) weitverbreitetes Alphabet zur computerinternen Darstellung von alphanumerischen Zeichen und Steuerzeichen sowie grafischen Symbolen. ASCII-Code oder Teilmengen davon sind in fast allen Computern zu finden.

9

2.2. Codes

WS/SS 2003-04

EBCDI-Code (Extended Binary Code Decimal Interchange) 8-Bit-Code zur rechnerischen Darstellung von alphanumerischen Zeichen und Sonderzeichen. max. 28 = 256 Zeichen. Verwendung meist in gr¨osseren Rechnern. Darstellung der Zeichen in zwei Tetraden (Tetra = 4) zu je vier Bits. Die erste Tetrade heißt Zonenteil, die zweite Ziffernteil. ⇒ Codierungsvorschrift: Es existieren 16 Spalten (0 – 15) und 16 Zeilen (0 – 15). Bsp.: Ziffer 6 besetzt Position 15, Zeile 6 mit den Tetraden 1111 und 0110 ⇒ 1111 0110. d.h. Darstellung erfolgt Ziffernweise. Zahlen werden Ziffernweise dargestellt (Zonenteil ist 1111, Ziffernteil enth¨alt einzelne Ziffer als Dualzahl) . Bsp.: 0 1 0 12 = b 510 23 22 21 20 Bsp.: 2510 ist gebildet aus Bitfolgen 11110010 und 11110101, d.h. eine gesamte Darstellung ist redundant. Redundanz - Weitschweifigkeit & hoher Speicherbedarf Vorzeichen werden im Zonenteil der letzten Ziffer dargestellt: 1100 codiert positives Vorzeichen 1101 codiert negatives Vorzeichen + 2510 → 111100102 und |{z} 1100 01012

− 2510 → 111100102 und 1101 |{z} 01012 −

+

Gepackte Darstellung: nutzt Speicherplatz effektiver Sie verzichte auf Codierung des Zonenteils, so dass in jedem Byte zwei Ziffern codiert werden. Vorzeichen (VZ) wird in letzter Tetrade codiert. Bsp.: + 12310 −→ ungepackt: |1111{z0001} 1111 | {z0010} 1100 |{z} 00112 1 2 |V Z {z } 3

gepackt: |{z} 0001 0010 ⇒ 12 im EBCDI-Code = “+“ |{z} 0011 |{z} 1100 | {z }2 1

2

3

V Z(+)

10

2.3. Zahlen und Zahlensysteme

WS/SS 2003-04

− 12310 −→ ungepackt: |1111{z0001} 1111 | {z0010} 1101 |{z} 0011 |{z} 1

2

VZ

3

gepackt: |{z} 0001 0010 ⇒ 13 im EBCDI-Code = “-“ |{z} 0011 |{z} 1101 | {z }2 1

2

3

V Z(−)

Unicode Unicode ist System, in dem alle Zeichens¨atze und Systeme zur Verf¨ ugung stehen. Jedes Zeichen wird durch eine 2 Byte lange Zahl dargestellt → max. 65536 Zeichen. Vorteil des Unicodes: - sprachunabh¨angig - plattformunabh¨angig - programmunabh¨angig

2.3 Zahlen und Zahlensysteme 2.3.1 Stellenwertsystem Ein Stellenwertsystem ist durch 3 Merkmale gekennzeichnet: - die Basis B f¨ ur die Stellenwertigkeiten - Menge der Ziffern (Ziffernvorrat) bestehend aus B Elementen - Wertefunktionen, die jeder Ziffer einen Zahlenwert zuordnet Allgemeine Darstellung f¨ ur nat¨ urliche Zahlen im Stellenwertsystem: NBasis =

n−1 X

zi · B i = zn−1 · B n−1 + · · · + z1 B 1 + z0 B 0

i=0

Bsp.: (1) N10 = 1985 3 X = zi · 10i = 1 · 103 + 9 · 102 + 8 · 101 + 5 · 100 i=0

(2) N8 = 4711 3 X = zi · 8i = 4 · 83 + 7 · 82 + 1 · 81 + 1 · 80 i=0

11

2.3. Zahlen und Zahlensysteme

WS/SS 2003-04

2.3.2 Zifferndarstellung f¨ ur gebrochene Zahlen Allgemeine Darstellung im Stellenwertsystem: RB =

m X

(08.10.2003)

zi · B −i = z1 · B −1 + z2 · B −2 + · · · + zm · B −m

i=1

Bsp.: R10 = 0.53627 5 X = zi · 10−i = 5 · 10−1 + 3 · 10−2 + 6 · 10−3 + 2 · 10−4 + 7 · 10−5 i=1

Zahlsysteme und Zeichenvorrat System Basis Ziffern Wertefunktion

dual 2 0 ...1 Ziffer Wert 0 0 1 1

oktal 8 0 ...7 Ziffer dual Wert 0 000 0 1 001 1 2 010 2 3 011 3 4 100 4 5 101 5 6 110 6 7 111 7 |{z} Triade

dezimal 10 0 ...9 Ziffer Wert 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9

hexadezimal 16 0 ...F Ziffer dual Wert 0 0000 0 1 0001 1 2 0010 2 3 0011 3 4 0100 4 5 0101 5 6 0110 6 7 0111 7 8 1000 8 9 1001 9 A 1010 10 B 1011 11 C 1100 12 D 1101 13 E 1110 14 F 1111 15 |{z} Tetrade

Bsp.: 1. 110102 = 2610 2. 328 = 24 + 2 = 2610 3. 2610 = 2610 4. 1A16 = 1 · 161 + 10 · 160

12

2.3. Zahlen und Zahlensysteme

WS/SS 2003-04

Die Basis kann als Index an die Ziffernfolge angeh¨angt werden. Jede nat¨ urliche Zahl >1 l¨asst sich als Basis eines Zahlensystems verwenden. Aus technischen Gr¨ unden wird das Dualsystem als Basissystem bei Digitalrechnern verwendet. Unmwandlung einer Dezimalzahl in ein anderes ZS: Divisionsrestverfahren die Dezimalzahl wird fortlaufend durch die Basis des neuen ZS dividiert, bis der Quotient Null ist. Reste der Division ergeben die Ziffern im (Ziel)-ZS. Bei erster Division entsteht die wertniedrigste Stelle, bei letzter Division die werth¨ochste. Bsp.: 1. 2610 −→ Dualsystem 26 : 2 = 13 R 0 13 : 2 = 6 R 1 6:2=3R0 3:2=1R1 1:2=0R1

6

⇒ 110102 2. 2610 −→ Oktalsystem 26 : 8 = 3 R 2 3:8=0R3

6

⇒ 328 3. 2610 −→ Hexadezimalsystem 26 : 16 = 1 R 10 = b A16 1 : 16 = 0 R 1

6

⇒ 1A16 F¨ ur Stellen nach dem Dezimalpunkt gelten a¨hnliche Regeln. Die Stellenwertigkeiten sind Potenzen mit negativen Eponenten zur Basis des ZS. Umwandlung von Nachpunktstellen:

13

2.3. Zahlen und Zahlensysteme

WS/SS 2003-04

Dezimalstellen hiner einem Dezimalpunkt werden fortlaufend mit der Basis des Zielsystems multipliziert. Von dem Produkt, das dabei entsteht, werden die Stellen vor dem Dezimalpunkt als Stellen des Zielsystems subtrahiert, bis das Ergebnis Null ist. Der erste Schritt liefert die erste Stelle nach den Dezimalpunkt. Bsp.: 1. 0.687510 −→ Dualsystem 0.6875 0.3750 0.7500 0.5000

· · · ·

2 2 2 2

= = = =

1.3750 0.7500 1.5000 1.0000

= = = =

0.3750 + 1 0.7500 + 0 05000 + 1 0.0000 + 1

⇒ 0.10112 Probe: 0.10112 = 1 · 2−1 + 0 · 2−2 + 1 · 2−3 + 1 · 2−4 = 0.687510 2. 0.687510 −→ Hexadezimalsystem 0.6875 · 16 = 11.0 = 0.0 + 11 ⇒ 0.B16 In den F¨allen, in denen unendliche Br¨ uche entstehen, muss das Verfahren vorzeitig mit einem Rundungsfehler abgebrochen werden. → es entsteht ein Fehler ! Bsp.: 0.210 ⇒ unendlicher Dualbruch: 0.00110011... (mit der Periode “0011“) ¨ Ubung: 1. Stellen sie die Zahl 95610 im a) Quintalsystem b) Dualsystem dar. 2. Stellen sie die Zahl 57348 im Hexadezimalsystem dar. L¨osungen stehen auf den Bl¨attern !

14

2.3. Zahlen und Zahlensysteme

WS/SS 2003-04

2.3.3 Zahlen und Zeichendarstellungen 2.3.3.1 BCD - codierte Dezimalzahlen (14.10.2003) BCD – binar codierte Dezimalzahlen, d.h. jede Ziffer wird einzeln bin¨ar codiert, es bleibt das dezimale Zahlensystem erhalten. Ziffer:

0 1 0000 0001

2 0010

3 4 0011 0100

5 0101

6 7 0110 0111

8 9 1000 1001

(8 - 4 - 2 - 1 - Code) Bsp.: 123410 = 0001 |{z} 0010 |{z} 0011 |{z} 0100 | {z }2 1

2

3

4

Die Codes von 1010 |{z} bis 1111 |{z} heißen Pseudotetraden. A

F

Die BCD-Darstellung wird f¨ ur vorzugsweise kaufm¨annische Rechnung verwendet. C++ hat BCD als Datentyp zur Verf¨ ugung. (bcd.h) 2.3.3.2 Vorzeichenlose Dezimalzahlen In der vorzeichenlosen (unsigned) Form werden die Zahlen im Rechner als nat¨ urliche Dualzahlen ohne Vorzeichen gespeichert und verarbeitet. Je nach Speicherl¨ange ergeben sich die dezimalen Zahlbereiche: Speicher Bereich dezimal 8 Bits 0...255 32 Bits 0...4294967296 32 Bits 0...4294967296

C++ Datentyp unsigned char unsigned int unsigned long int

Vorzeichenlose Dualzahlen werden vorzugsweise f¨ ur Z¨ahler, f¨ ur Laufzeitvariablen in Schleifen und Indizes und als Adressen (Zeiger) verwendet. 2.3.3.3 Dualzahlen mit Vorzeichen Die logischen Schaltungen des RW eines Computers k¨onnen zun¨achst nur vorzeichenlose Dualzahlen addieren. Aus rechentechnischen Gr¨ unden hat man f¨ ur negative Dualzahlen eine Komplementdarstellung gew¨ahlt, die das negative Vorzeichen durch die Addition eines sog. Verschiebewerts beseitigt. Addiert man zu einer negativen Zahl einen Verschiebewert, der nur aus den gr¨oßten Ziffern (z.B. ”99” bzw. ”1111”) des jeweiligen Zahlsystems besteht, so entsteht das

15

2.3. Zahlen und Zahlensysteme

WS/SS 2003-04

(B-1)-Komplement. C CW

Basis-1 Komplement

(B-1)-Komplement ist im Dezimalsystem das Neunerkomplement, im Dualsystem das Einerkomplement Bsp.: − 2610 ⇒ Umwandlung in das Neunerkomplement

⇒ R¨ uckkomplementierung

Verschiebewert: negative Zahl: Neunerkomplement: Zehnerkomplement:

Zehnerkomplement: Neunerkomplement: +1: negative Zahl:

99 -26 73 74

74 25 1 -26

Komplementierungsregel: Jede Stelle der negativen Zahl wird von dem h¨ochsten Stellenwert des Zahlensystems (B-1) subtrahiert: Es entsteht das (B-1)-Komplement. Addiert man unter Ber¨ ucksichtigung der Stellen¨ ubertr¨age zus¨atzlich die Zahl 1, so entsteht das B-Komplement. Bei Dualzahlen (B=2) ergibt sich das Einerkomplement aus einer bitweisen Negation. Das Zweierkomplement entsteht durch Addition von 1 zum Einerkomplement. Bsp.: − 000110102 = b − 2610 ⇒ Komplementierung

⇒ R¨ uckkomplementierung

Verschiebewert: 11111111 negative Zahl: -00011010 Einerkomplement: 11100101 +1: 11 Zweierkomplement: 11100110

Zweierkomplement: Einerkomplement: +1: negative Zahl:

11100110 00011001 1 -00011010

Positive vorzeichenbehaftete (signed) Dualzahlen enthalten in der links stehenden Bitposition eine Null als positives Vorzeichen. Negative Dualzahlen werden im Zweierkomplement dargestellt. Das links stehende Vorzeichenbit ist immer 1. Speicher Bereich dezimal 8 Bits -128 bis 127 32 Bits ± 2147483648

Bereich als Zweierpotenz − 27 bis 27 − 1 ± 231

C++ Datentyp char int, long int

Betrachtet man nur Speicherinhalte ohne die Art der Zahlendarstellung zu kennen, so sind alle Bitkombinationen mit einer 1 in der links stehenden Bitposition doppeldeutig In der vorzeichenlosen Darstellung sind es Zahlen gr¨oßer als 127, in der vorzeichenbehafteten Darstellung sind es negative Zahlen.

16

2.3. Zahlen und Zahlensysteme

WS/SS 2003-04

Bsp.: Bitkombination 1111 1111 k¨onnte sein 25510 (vorzeichenlos) oder k¨onnte sein − 110 ( vorzeichenbehaftet) 2.3.3.4 Reelle Zahlen Festpunktdarstellung

Vorpunktstellen . Nachpunkstellen ↑ gedachte Darstellung des Dezimalpunkts

Bsp.: e-Preis: 999.99 Gleitpunktdarstellung Reelle Zahl x kann im Zahlsystem mit Basis B (B = 2, 8, 10, 16) dargestellt werden. x = Be m Wertbestimmende variable Bestandteile sind ganzzahliger Exponent e mit e = ± | e | und Mantisse m mit m = ± | m |. Vorzeichen von m ist identisch mit Vorzeichen von x. Normalisierung Bei Punktverschiebungen in m um eine Stelle nach rechts (links), bleibt der Wert von x erhalten, wenn gleichzeitig e um 1 erniedrigt (erh¨oht) wird. Bsp.: x = 100 · (+12.51) = 10−1 · (+125.1) = 105 · (+0.0001251) = 101 · (+1.251) = 102 · (+0.1251) Steht wie in den letzten beiden Darstellungen die erste von Null verschiedene Mantissenziffer stets unmittelbar vor bzw. hinter dem Dezimalpunkt, bezeichnet man x als normalisiert. Es gilt je nach Prozessor bzw. Gleitpunktprogramm eine der beiden Festlegungen: 10B > m ≥ 1B

(B = 2, 8, 10, 16)

Beachte ! Zahl 0 l¨asst sich nicht normalisieren und erfordert eine Sonderbehandlung. Charakteristik F¨ ur Exponenten gen¨ ugt ein relativ kleiner Wertebereich, um extrem kleine bis extrem grosse Zahlenbetr¨age darstellen zu k¨onnen. Die Vorzeichenbehandlung wird umgangen, indem man mittels einer Verschiebekonstante Kv zur Charakteristik u ¨berwechselt und damit der Wertebereich des Exponenten an den Anhang des positiven Zahlbereichs verschoben wird. C = e + Kv

17

2.3. Zahlen und Zahlensysteme

WS/SS 2003-04

Gleitpunktformat nach IEEE 754 Struktur eines Gleitpunktwertes: s

(15.10.2003) c

m

s: sign / Vorzeichenbit s = 1 → -1 (-) s = 0 → 1 (+) c: Charakteristik m: Mantisse IEEE-Gleitpunktstandard: Basis B = 2 Formate: Charakteristik c: Mantisse m: Verschiebekonstante KV : Wert:

Doppelwort 32 Bit 8 Bits 23 Bits 12710 =1111111 b 2

Quadwort 64 Bit 11 Bits 52 Bits 102310 =1111111111 b 2

(a)

c=0 m=0 x = (−1)s · 0 vorzeichenbehaftete Darstellung der Null

(b)

c=0 m 6= 0 x = (−1)s · 2Kv +1 · (0.m) Bei sehr kleinen Werten wird die Normalisierung aufgehalten

(c)

0 < c < 2 · Kv + 1

m bel.

x = (−1)s · 2c−Kv · (1.m)

Normalisierte Darstellung mit ”Verborgener 1”(hidden bit) vor dem Dezimalpunkt der Mantisse. Da es in Fall (c) stets den Wert 1 besitzt, muss es nicht im Maschinenwort mitgef¨ uhrt werden, wird jedoch bei allen anderen Operationen extern hinzugesetzt. Bsp.: x = −11.62510 = −1011.1012 = = −23 · 1.01110100...2 dargestellt im 32-Bit - Wort: 1 S

10000010 c 1111111 + 11

01110100...0 m

1111111

10000010

18

2.3. Zahlen und Zahlensysteme

WS/SS 2003-04

(d)

c = 2 · Kv + 1 m=0 x = (−1)s · ∞ vorzeichenbehaftete Darstellung von ∞

(e)

c = 2 · Kv + 1 m 6= 0 x = NaN NaN – not a number codiert unbestimmt oder nicht zugelassene Ausdr¨ ucke 0 wie z.B. ∞.0, ∞ − ∞, 0 usw.

Gleitpunktzahlen werden vorwiegend f¨ ur mathematische und technische Berechnung verwendet. Bei der Dezimalumwandlung von Nachpunktstellen, bei der Umwandlung in das Gleitpunktformat, sowie bei Rechenoperationen k¨onnen Umwandlungs- und Rundungsfehler auftreten, die numerische Instabilit¨aten zur Folge haben. Bsp.: • Festlaufende Additionen der Dezimalzahl 0.1 • Nach 3000 Additionen ergibt sich als Summe der float-Darstellung 3000.58 und somit 3000 wie ein double. 2.3.3.5 Darstellung von Zeichen Zeichen sind Buchstaben, Zahlen und Sonderzeichen. Ein- und Ausgabe von Zeichen: F¨ ur die Dezimal-Dual-Umwandlung wird nicht das Divisionsrestverfahren verwendet, sondern die dezimalen Stellenwertigkeiten werden im dualen Rechenwerk mit 1010 multipliziert und die Produkte addiert: Bsp.: Dez.: Dual.:

2 00000010

· 10 · 00001010

⇒ ⇒

20 + 6 = 00010100 + 00000110 =

26 00011010

Bei der dezimalen Ausgabe dualer Speicherinhalte wird der umgekehrte Weg gegangen. Zun¨achst Umwandlung aus dualem in dezimales System: Dazu wird die Dualzahl im dualen Rechenwert fortlaufend durch 1010 dividiert. Die Reste ergeben die Dezimalstellen, die ihrerseits wieder durch Addition von 48 in ASCIIZeichen zu u uhren sind. ¨berf¨ dezimal: 26 : 10 = 2

R6 +48 54 = b ’6’

dual: 00011010 : 00001010 = 00000010 Rest 00000100 + 00110000 00110110 = b ’6’

19

2.3. Zahlen und Zahlensysteme

WS/SS 2003-04

dezimal: 2 : 10 = 0 Rest 2 + 48 50 = b ’2’ dual: 00000010 : 00001000 = 00000000 R 00000010 + 00110000 00110010 = b ’2’ In h¨oheren Programmiersprachen wird dem Programmierer die Zahlenumwandlung bei der Ein- und Ausgabe durch umfangreiche Funktionsbibliotheken abgenommen. 2.3.4 Konvertierung ganzer Zahlen Unter Zahlkonvertierung wird die Umwandlung einer Zahl, die in einem Quell- oder Ausgangssystem dargestellt ist, in eine Zieldarstellung verstanden. Man unterscheidet Quellsystemverfahren und Zielsystemverfahren. .

&

Umwandlung in Quellsystem Quellverfahren (Divisionsrestverfahren) Bsp.:

Umwandlung im Zielsystem Zielsystem (Multiplikationsverfahren) Bsp.:

Darstellung 102010 im Oktalsystem

Darstellung 110010012 dezimal

1020 : 8 = 127 Rest 4 127 : 8 = 15 Rest 7 15 : 8 = 1 Rest 7 1 : 8 = 0 Rest 1 ⇒ 17748

Quellziffern 1 1 0 0 1 0 0 1 zu addieren – 2 6 12 24 50 100 200 Quellbasis 2 Stellensumme 1 3 6 12 25 50 100 201

Konvertierungsverfahren f¨ ur Zahlsysteme zur Basis 2n (21.10.2003) Zwischen den Darstellungen zur Basis 2, 8 und 16 bestehen wegen gemeinsamer Potenzenbasis einfache Zusammenh¨ange. Stehen also Quell- und Zielbasis in einem Zweierpotenzverh¨altnis zueinander, so bietet sich folgende Vereinfachung an: Mit einer dreistelligen Dualzahl (Triade) umfasst man genau den Ziffernvorrat des Oktalsystems bzw. mit einer vierstelligen Dualzahl (Tetrade) den Ziffernvorrat des Hexadezimalsystems. Es liegt daher nahe, dass man jede Oktal- bzw. Hexadezimalziffer f¨ ur sich getrennt in eine Dualzahl umwandelt und umgekehrt. Bsp.:

20

2.3. Zahlen und Zahlensysteme

WS/SS 2003-04

1. dual → oktal ←− Einteilung in Triaden 101 110 Dualzahl |{z} |{z} 010 |{z}2 5

6

28

Oktalzahl 2. dual → hexadezimal ←− Einteilung in Tetraden 0111 Dualzahl 1101 |{z} |{z} 1010 | {z }2 D

7

A16

Hexadezimalzahl 3. oktal → hexadezimal 76258 = 1111100101012 ←−

(Zwischendarstellung)

Einteilung in Tetraden

1111 |{z} 0101 |{z} 1001 | {z }2 F

9

Dualzahl

516

Hexadezimalzahl 2.3.5 Konvertierung gebrochener Zahlen Die Umwandlung gebrochener Zahlen ist nicht immer exakt m¨oglich. Im Zielsystem k¨onnen unendliche Br¨ uche auftreten, so dass lediglich gefordert wird, R(Q)uellsystem = R(Z)ielsystem + ε aber minimal bzgl. der Maschinengenauigkeit. Grundlage f¨ ur Konvertierung gebrochener Zahlen ist Darstellung nach Horner. Rechnen im Quellsystem: Quellverfahren (Multiplikationsverfahren) Durch fortgesetzte Multiplikation des gebrochenen Anteils mit der Zielbasis und Abspaltung des jeweiligen ganzzahligen Anteils, entsteht die Zieldarstellung. Bsp.: 0.1910 → dual

21

2.3. Zahlen und Zahlensysteme Schritt Operation 1 0.19 · 2 2 0.38 · 2 3 0.76 · 2 4 0.52 · 2 5 0.04 · 2 6 0.08 · 2 7 0.16 · 2 8 0.32 · 2 9 0.64 · 2

WS/SS 2003-04

¨ Zwischenergebnis Ubertrag 0.38 0 0.76 0 1.52 1 1.04 1 0.08 0 0.16 0 0.32 0 0.64 0 1.28 1

→ Abbruch ⇒ 0.0011000012 Rechnen im Zielsystem Zielverfahren (Divisionsmethode) 1. Kleinstwertige Ziffer durch die Quellbasis in deren Zieldarstellung dividieren. 2. Ergebnis zur n¨achst h¨oherwertigen Stelle addieren. 3. Ergebnis aus 2. wieder durch Quellbasis (in Zieldarstellung) dividieren. 4. 2. und 3. abwechselnd wiederholen, bis alle Stellen verbraucht sind. Bsp.: 0.010012 → dezimal Quellziffernvorrat ist im Zielsystem enthalten, d.h. es ist keine Ziffernkonvertierung notwendig. (in umgekehrter Reihenfolge) Quellziffer zu addieren Quellbasis 2 Quellsumme

1 –

0 0.5

0 0.25

1 0.125

0 0.625

1

0.5

0.25

1.125

0.625 0.2812510

0.28125

2.3.6 Dualzahlarithmetik Grundoperationen: F¨ ur die arithmetischen Operationen mit Dualziffern gelten folgende Regeln:

22

2.3. Zahlen und Zahlensysteme

WS/SS 2003-04

¨ Ubertrag auf die n¨achsth¨ohere Stelle

Operation

Ergebnis

0+0 0+1 1+0 1+1

0 1 1 0

0 0 0 +1

0-0 0-1 1-0 1-1

0 1 1 0

0 -1 0 0

0*0 0*1 1*0 1*1

0 0 0 1

0 0 0 0

¨ (Ubertragsbit)

(Borgbit)

Bsp.: Addition

10102 + 10112 101012

Multiplikation 1 1

= b 1010 = b 1110 = b 2110 02 1

1 Division 1 1 1 1 0 1 0 1 0 1 0

1 02 0 1 0 1 0 0

Subtraktion

* 1 0 12 1 0 0 0 0 1 1 0 1 1 1 02

11012 − 10102 00112

= b

6 * 5 = 30

= b

3010

= b 1310 = b 1010 = b 310

: 10102 = 112

Ganzzahlige Arithmetik (11.11.03) Bei der Darstellung ganzer Zahlen werden die Daten so dargestellt, dass der Dezimalpunkt ganz rechts steht. Es muss beachtet werden, dass gebrochene (Nachpunkt-) Anteile verloren gehen.

23

2.3. Zahlen und Zahlensysteme

WS/SS 2003-04

Bsp.: 19 = 1(.9) 10 Gleichpunktarithmetik Gleitpunktzahlen werden in normierter Darstellung gespeichert. Sind bei der Gleitpunktdarstellung die Charakteristika der beteiligten Operanden verschieden, f¨ uhrt der Rechner automatisch eine entsprechende Umwandlung durch. Dabei wird die Differenz der Charakteristika gebildet. Das Vorzeichen gibt an, welche Charakteristik kleiner ist, der Betrag der Differenz gibt an, um wieviel sie kleiner ist. Die Mantisse des kleineren Operanden wird um soviel Stellen nach rechts verschoben, wie der Betrag der Differenz der Charakteristika ausgibt. Bsp.: Addition Schritt Schritt Schritt Schritt Schritt Schritt Schritt

1: 2: 3: 4: 5: 6: 7:

Erkennen von Mantisse/Exponent Vergleich der Exponenten Angleichen der Exponenten Anpassen kleinerer Mantisse Addieren der Mantissen Normalisieren der Mantisse Angleichen der Exponenten

Operanden

Vorzeichen des Exponenten

0.740 ∗ 105 + 0.843 ∗ 103

e1 − e2 = 2

Angleichen von Exp. und Mantisse 0.740 ∗ 105 + 0.008 ∗ 105 0.748 ∗ 105 (Ergebnis der Addition)

Bsp.: Multiplikation Die Multiplikation erfolgt durch Multiplikation der Mantissen und durch Addition der Exponenten. Schritt 1: Schritt 2: Schritt 3: Schritt 4:

Multiplikation der Mantisse (mehrere Einzelmultiplikationen, Addition der Zwischenergebnisse) Normalisierung der Mantisse Angleichen des Exponenten Addition der Exponenten

24

2.3. Zahlen und Zahlensysteme

WS/SS 2003-04

Bsp.: 0.792 ∗ 105 ∗ 0.116 ∗ 10−3 1. 0.792 0.792 0.792 4.752

* * * *

0.116 10−1 10−2 10−3

Addition der Zwischenergebnisse: 0.792 ∗ 10−1 0.792 ∗ 10−2 0.475 ∗ 10−2

→ → →

0.792 ∗ 10−1 0.079 ∗ 10−1 0.047 ∗ 10−1



−1

0.871 ∗ 10

 

0.918 ∗ 10−1  (bereits normiert !)

2. entf¨allt ! 3. entf¨allt ! 4. 5 + (-3) + (-1) = 1 (Exponenten-Addition) ⇒ Gesamtergebnis: 0.92 ∗ 101

(bei Rechengenauigkeit)

25

3 Aussagen- und Pr¨ adikatenlogik 3.1 Aussagenlogik Charakteristische Eigenschaft einer Aussage ist, wahr oder falsch zu sein. In der Aussagenlogik ist der Wahrheitswert einer Aussage von Interesse. Man spricht von ausgeschlossenen Dritten ( tertium non datur“). ” Das Prinzip wird als Zweiwertigkeit bezeichnet. Da eine Aussage zwei Werte annehmen kann, spricht man von einer Aussagenvariablen. Die Definition einer Verkn¨ upfung von Aussagen A und B wird dadurch angegeben, dass der Wahrheitswert von A und B in Wahrheitstabellen angegeben wird. Aussagelogische Verkn¨ upfungen sind: Konjunktion (UND - Verkn¨ upfung) Operator (Junktor): ∧ Wahrheitswertetabelle: A w w f f

B w f w f

A∧B w f f f

Disjunktion (einschließliche ODER-Verkn¨ upfung) Operator: ∨ Wahrheitswertetabelle: A w w f f

B w f w f

A∨B w w w f

Implikation (Wenn-dann Beziehung) Operator: → Wahrheitswertetabelle: A w w f f

B w f w f

A →B w f w w

26

3.1. Aussagenlogik

WS/SS 2003-04

Zeigt, dass A → B genau w ist, wenn A falsch, A und B wahr sind. ⇒ Aus etwas falschem kann man alles Schlussfolgern. Begriffe: A (Pr¨amisse, also Voraussetzung) B (Konklusio, also Folgerung) ¨ Aquivalenz (dann und nur dann - Beziehung) Operator: ↔ Wahrheitswertetabelle: A w w f f

B w f w f

A ↔B w f f w

Zeigt also, dass A ¨aquivalent B genau dann wahr ist, wenn A und B wahr oder falsch sind. ¨ Junktoren Konjunktion, Disjunktion, Implikation und Aquivalenz sind bin¨ar. Daneben existiert der un¨ are Junktor (Umkehrung der Wahrheitswerte) Operator: ¬ Wahrheitswertetabelle: A w f

¬A f w

Mit den definierten Junktoren lassen sich in Verbindung mit vorgegebenen Aussagen kompliziertere Aussagen bilden. Sind A, B, C und D Aussagenvariable, so stellen die Ausdr¨ ucke: A ∧ ¬C → C ¬(A ∨ C) ∧ (A ↔ B) → B (A ∨ B) ∧ ¬(B ∧ (A ∨ C ∨ D)) Formeln der sog. Aussagenalgebra dar. Allgemein: Jede Aussage, die man durch Ver¨anderung von aussagelogischen Verkn¨ upfungen aus gewissen Ausgangsausssagen (Ausgangsvariable) enth¨alt, ist eine Formel der Aussagenlogik. Festlegung der Bindung der einzelnen Junktoren mit abnehmender Priorit¨at: ¬, ∨, ∧, →, ↔

27

3.1. Aussagenlogik

WS/SS 2003-04

Bsp.: ((A ∧ B) → (C ∨ D) ↔ ((A ∨ B) ∧ C) → D gleichwertig mit A ∧ B → C ∨ D ↔ (A ∨ B) ∧ C → D Begriff: Belegung mit Wahrheitswerte bedeutet die Zuordnung von Wahrheitswerten f¨ ur die einzelnen Ausgangsaussagen und die gesamte Formel. (12.11.03) Es sei B die Menge {w, f}. Eine Aussagenvariable ist eine Gr¨oße, die Worte aus B annehmen kann. Eine Formel der Aussagenlogik kann als Abbildung dargestellt werden. Sind A1 , A2 , ..., An die Ausgangsvariablen in der Formel, so ist die der Formel entsprechende Abbildung vom n-fachen kartesischen Produkt B n in B. Jede Belegung der Ai (i = 1, 2, ... n) mit der Wahrheitsbelegung w und f entspricht einem n-Tupel von B n und jedem dieser n-Tupel wird entweder w oder f als Wahrheitswert der Formel und somit als Funktionswert der Abbildung zugeordnet. A × B = {(x, y) | x ∈ A ∧ y ∈ B} Daraus folgt der Gleichheitsbegriff von Formeln. ¨ Aquivalenz von Formeln Zwei Formeln der Aussagenlogik heißen (logisch) gleichwertig oder ¨aquivalent, wennn sie bei jeder Belegung oder in ihren vorkommenden Aussagenvariablen denselben Wert annehmen. Oder etwas anders formuliert: Zwei Formeln heißen gleichwertig, wenn sie die selbe Abbildung B n → B definieren. ¨ Wesentliche praxisrelevante Aquivalenzen:

1. A1 ∨ A2 = A2 ∨ A1 2. A1 ∧ A2 = A2 ∧ A1

 KG f¨ ur ∨ und ∧

3. A1 ∨ (A2 ∨ A3 ) = (A1 ∨ A2 ) ∨ A3 4. (A1 ∧ A2 ) ∧ A3 = A1 ∧ (A2 ∧ A3 )

 AG f¨ ur ∨ und ∧

5. (A1 ∨ A2 ) ∧ A3 = A1 ∧ A3 ∨ A2 ∧ A3 6. (A1 ∧ A2 ) ∨ A3 = (A1 ∨ A3 ) ∧ (A2 ∨ A3 )

28

 DG f¨ ur ∨ und ∧

3.1. Aussagenlogik 7. A1 ∨ A1 = A1 8. A1 ∧ A1 = A1

WS/SS 2003-04  Idempotenzgesetz

9. ¬(A1 ∨ A2 ) = ¬A1 ∧ ¬A2 10. ¬(A1 ∧ A2 ) = ¬A1 ∨ ¬A2 11. A1 ∧ (A1 ∨ A2 ) = A1 12. A1 ∨ (A1 ∧ A2 ) = A1

 de Morgan-Gesetze

 Absorptionsgesetze

¨ Nachweis der Aquivalenz: 1. A1 w w f f

A2 w f w f

A1 ∨ A2 w w w f

A2 ∨ A1 w w w f

Gen¨ ugt zur Beschreibung einer Formel auch eine Teilmenge von Junktoren ? Reduzierte Anzahl von Junktoren (Satz) Jede aussagenlogische Formel ist ¨aquivalent mit einer Formel, die nur aus den Junktoren ∨ und ¬ bzw. ∧ und ¬ besteht. Beweis: Es gilt zun¨achst, dass man aus einer Formel eine dazu ad¨aquate erh¨alt, wenn man in ihr eine Teilformel durch eine ¨aquivalente ersetzt. Es gen¨ ugt daher zu zeigen, dass die Verkn¨ upfungen → und ↔ ¨aquivalent ersetzt werden k¨onnen durch ∨ und ¬. A→B

1. A w w f f

B w f w f

ist ¨aquivalent

A →B w f w w

¬A ∨ B

A ¬A B w f w w f f f w w f w f

¬A∨B w f w w

2.

A ∧ B ist ¨aquivalent ¬(¬A ∨ ¬B)

3.

A ↔ B ist ¨aquivalent (A → B) ∧ (B → A) ⇒ (¬A ∨ B) ∧ (¬B ∨ A) ⇒ ¬(¬(¬A ∨ B) ∨ ¬(¬B ∨ A))

29

3.2. Einfu adikatenlogik ¨ hrung in die Pr¨

WS/SS 2003-04

Tautologie Eine Formel der Aussagenlogik heißt allgemeing¨ ultig oder Tautologie, wenn sie f. a. Werte der in ihr auftretenden Aussagenvariablen den Wahrheitswert w annimmt. Bsp.: 1. A ∨ ¬A 2. A ∧ (A → B) → B Erf¨ ullbarkeit oder Unerf¨ ullbarkeit (Kontradiktion) Eine aussagenlogische Formel heißt erf¨ ullbar, wenn es (mindestens) eine Belegung gibt, f¨ ur die die Formel den Wert w annimmt. ur alle Eine aussagenlogische Fomel heißt unerf¨ ullbar oder kontradiktorisch, wenn sie f¨ Belegungen den Wert f annimmt. Bsp.: A ∧ ¬A

3.2 Einf¨ uhrung in die Pr¨ adikatenlogik Pr¨adikatenlogik ist eine ausdrucksst¨arkere Logik als die Aussagenlogik. Mit Aussagenlogik allein kann Mathematik und reale Welt nicht beschrieben werden. Formale (oder math.) Logik   

Aussagenlogik

B BBN

Pr¨adikatenlogik

(1. Stufe)

Im Mittelpunkt der Logik steht das logische Schliessen. Darauf beruht das gesamte Denkmodell. Bsp.: In diesem Denkmodell sieht man die Berechnung einer Gr¨oße c aus den gegebenen Gr¨oßen a und b als eine Relation zwischen den Gr¨oßen a, b und c an, die gelten kann oder nicht gelten kann. Satz des Pythagoras: c2 = a2 + b2 ⇓ Pr¨adikat (a, b, c) (Beschreibung der Relation zwischen a, b und c als logisches Pr¨adikat) Damit ist ein Pr¨adikat eine Beziehung zwischen Dingen, die wahr oder falsch sein k¨onnen. ¨ Einf¨ uhrung des Pr¨adikatbegriffs mit Menge der nat¨ urlichen Zahlen N. Uber Elemente

30

3.2. Einfu adikatenlogik ¨ hrung in die Pr¨

WS/SS 2003-04

dieser Menge k¨onnen Aussagen gemacht werden, die je nach gew¨ahltem Element wahr oder falsch sein k¨onnen. Bsp.: a ist eine gerade Zahl; b ist teilbar durch 3; c ist eine Primzahl; d ist die Summe von a und b . . . Eine solche Aussage u ¨ber einzelne Elemente oder u ¨ber Paare von Elementen oder allgemein u ¨ber n-Tupel wird als Pr¨adikat der Menge N bezeichnet. (18.11.03) n-stelliges Pr¨ adikat Ein n-stelliges Pr¨adikat auf der Menge M eine auf M n erkl¨arte Funktion mit dem Wertebereich {w, f}. einstellige Pr¨ adikate beschreiben Eigenschaften der Elemente der zugrundeliegenden Menge. Ein Element x ∈ M hat genau die durch das Pr¨adikat beschriebene Eigenschaft, wenn P(x) = w ist. zweistellige Pr¨ adikate entsprechen der bin¨aren Relation in M, wobei die (korrespondierende) Relation aus den geordneten Paaren besteht, f¨ ur die der Funktionswert des Pr¨adikats gleich w ist, d.h. P (x | y) = w. Pr¨adikate werden mit Großbuchstaben bezeichnet: P, Q, ... . Sie heißen Pr¨adikatsvariable. Menge M heißt auch Individuenbereich. Ihre Elemente heißen Individuen (Individuenkonstante). Sie werden durch Kleinbuchstaben a, b, c, ... repr¨asentiert. Variablen, an deren Stelle Individuen aus M beliebig eingesetzt werden k¨onnen, nennt man Individuenvariable. Sie werden ebenfalls durch Kleinbuchstaben bezeichnet: x, y, z, ... . Alle Konventionen der Aussagenlogik werden in der Pr¨adikatenlogik beibehalten. Pr¨adikatenlogik stellt eine Erweiterung dar. Formeln der Aussagenlogik sind auch Formeln der Pr¨adikatenlogik – Junktoren behalten Bedeutung. Es kommt ein neuer Typ von Formeln hinzu: Formeln der Gestalt P (a1 , ..., an ) ⇒ Individuenkonstanten und Q(x1 , ..., xn ) ⇒ Individuenvariablen, wobei P und Q n-stellige Pr¨adikate sind. Es sind neue Formeln erkennbar: Bsp.: 1. A ∧ B ∨ P (x, y) 2. P (x) → P (y)

31

3.2. Einfu adikatenlogik ¨ hrung in die Pr¨

WS/SS 2003-04

Die so erlangten Formeln sind wieder Aussagen oder Pr¨adikate. In der Pr¨adikatenlogik kommen weitere Junktoren dazu, um Aussagen folgender Art formulieren zu k¨onnen: ) • F¨ ur alle x ∈ N gilt das Pr¨adikat Q: “1 teilt x“ zweistellige Pr¨adikate • Es gibt ein x ∈ N, so dass das Pr¨adikat P: “3 teilt x“ wahr ist • Es gibt ein x ∈ N, so dass f¨ ur alle y und z ∈ N ein Pr¨adikat Q gilt

o

dreistelliges Pr¨adikat

Die beiden Junktoren, die das leisten heißen Allquantor und Existenzquantor. Allquantor Es sei P ein einstelliges Pr¨adikat u ¨ber M. Dann wird durch ∀x P (x) (lies: f¨ ur alle x ist p von x wahr) genau dann als wahre Aussage bezeichnet, wenn P f¨ ur alle x ∈ M den Wert w annimmt. P heißt dann Allquantor. Bsp.: ¨ Uber den nat¨ urlichen Zahlen gelte das dreistellige Pr¨adikat 1. S(x, y, z), wenn x + y = z ist. Formulieren sie den Satz in der Pr¨adikatenlogik ”F¨ ur alle x gilt: x + 0 = x” ⇒ ∀x S(x, 0, x) Pr¨adikat ist nur wahr, wenn y = 0 ist. 2. P(x, y, z), wenn x · y = z ist. Satz: ”F¨ ur alle x gilt: x · 1 = x” ⇒ ∀x P (x, 1, x) Pr¨adikat ist nur wahr, wenn y = 1 ist. In einer Formel der Pr¨adikatenlogik des Terms ∀x F (x) heißt x gebundene Variable, die anderen Variablen (nur diese Variablen sind im eigentlichen Sinn Variablen) heißen freie Variablen. Bsp.: ∀y Q(x, y)

⇒ x ist freie Variable

Wenn eine Formel im pr¨adikatenlogischen Sinn noch freie Variablen enth¨alt, so stellt sie ein Pr¨adikat dar, andernfalls eine Aussage.

32

3.2. Einfu adikatenlogik ¨ hrung in die Pr¨

WS/SS 2003-04

Existenzquantor Es sei P einstelliges Pr¨adikat u ¨ber der Menge M. Dann wird durch ∃x P (x) (lies: es existiert ein x, f¨ ur das P von x wahr ist) genau dann eine wahre Aussage bezeichnet, wenn es in M (mindestens) ein Element a gibt, f¨ ur das P den Wahrheitswert w annimmt. P heißt dann Existenzquantor. Es gelten alle Bemerkungen, die zum Allquantor gemacht worden sind analog. Erweiterung des Formelbegriffs: Ist F eine (pr¨adikatenlogische) Formel, die die Variable x frei enth¨alt, so ist auch ∃x F (x) eine Formel. allgemeinster Formelbegriff: Ist F eine Formel der Pr¨adikatenlogik, die x als freie Variable enth¨alt, so ist auch ∀x F (x) und ∃x F (x) Formel. Dabei k¨onnen auch in F die Symbole ∀ und ∃ auftreten. Die Regeln der Aussagenlogik zur Bindung von Formeln mit Hilfe der Junktoren bleiben in der Pr¨adikatenlogik bis auf folgende Einschr¨ankungen erhalten: Wenn ein Quantor (∀ oder ∃) u ¨ber einen anderen Quantor hinaus wirkt, so sind die zu diesem Quantoren geh¨orenden Individuenvariablen stets verschieden bezeichnet. Folgende Negativbeispiele zeigen das: 1. P (x) ∧ ∃y Q(x, y) ist keine Formel, die den vorgegebenen Regeln entspricht, da x zugleich frei und gebunden vorkommt. 2. ∀x (P (x) → ∃x Q(x, y)) ist keine Formel, weil bereits P (x) → ∃x Q(x, y) keine Formel ist und der Quantor ∀ sich noch auf das nach ∃x folgende bezieht. Bsp. f¨ ur Formeln: 1. ¬ ∀x P (x) ↔ ∃y ∃x Q(x, y) 2. ∃y ¬Q(x, y) → ∃y P (y) ∨ ∃y R(y) 3. ¬(∃x P (x) → ∀y Q(y)) Man spricht von einer Deutung von F (Formel der Pr¨adikatenlogik) u ¨ber einer nicht leeren Menge M, wenn man folgende Zuordnung vornimmt: 1. Jeder Aussagenvariablen wird entweder w oder f als Wert zugeordnet (Belegung im Sinne der Aussagenlogik).

33

3.2. Einfu adikatenlogik ¨ hrung in die Pr¨

WS/SS 2003-04

2. Jede in F vorkommende Pr¨adikatenvariable wird durch ein konkretes Pr¨adikat u ¨ber M ersetzt. – an allen Stellen ihres Auftretens. 3. Jede in F auftretende freie Individuenvariable wird durch ein Element ersetzt. – an allen Stellen ihres Auftretens. ⇒ Bei jeder Deutung entsteht ein Wahrheitswert w oder f. Erf¨ ullbarkeit einer Formel der Pr¨ adikatenlogik (19.11.03) Eine Formel F heißt erf¨ ullbar u ¨ber der Menge M, wenn es eine Deutung von F u ¨ber M gibt, f¨ ur die F in eine wahre Aussage u ¨bergeht. G¨ ultigkeit einer Formel der Pr¨ adikatenlogik Eine Formel der Pr¨adikatenlogik heißt g¨ ultig u ¨ber der nicht leeren Menge, wenn sie in allen Deutungen in eine wahre Aussage u ¨bergeht. Allgemeines einer Formel der Pr¨ adikatenlogik Eine Formel heißt allgemeing¨ ultig (oder Gesetz der Pr¨adikatenlogik), wenn sie in jeder nicht leeren Menge M g¨ ultig ist. Bsp.: Gesetz der Pr¨adikatenlogik 1. (A → B) ∧ (B → C) → (A → C) 2. (P (x) → ∃y Q(x, y)) ∧ (∃y Q(x, y) → c) → (P (x) → c) Weitere Bsp. f¨ ur pr¨adikatenlogische Objekte: 1. ¬∀x P (x) ↔ ∃x ¬P (x) nicht f¨ ur alle x ist P von x wahr ist ¨aquivalent zu es existiert (mindestens) ein x f¨ ur das P von x nicht wahr ist. 2. ∀x P (x) ↔ ¬∃x ¬P (x) 3. ¬∀x ¬P (x) ↔ ∃x P (x) 4. ∀x ¬P (x) ↔ ¬∃x P (x) 5. ∀x P (x) → ∃x P (x) 6. ∃x ∃y Q(x, y) ↔ ∃y ∃xQ(x, y) ∀x ∀y Q(x, y) ↔ ∀y ∀x Q(x, y) 7. ∃x ∀y Q(x, y) → ∀y ∃x Q(x, y) 8. ∀x (P (x) → R(x)) → (∀x P (x) → ∀x R(x))

34

3.2. Einfu adikatenlogik ¨ hrung in die Pr¨

WS/SS 2003-04

¨ Ubung ¨ Uber den nat¨ urlichen Zahlen gelte das Pr¨adikat S(x, y, z), wenn x + y = z. Entsprechend gelte P(x, y, z), wenn x * y = z ist und L(x, y), wenn x < y ist. Formulieren sie folgende S¨atze in der Pr¨adikatenlogik: a) zu jedem x und jedem y existiert ein z mit x+y=z b) kein x ist kleiner als 0 c) f¨ ur alle x gilt x+0=x d) f¨ ur alle x und y ist x*y=y*x e) es existiert ein x f¨ ur alle y mit x+y=y L¨osungen a) ∀x ∀y ∃z S(x, y, z) ↔ ∀x ∀y ∃z : x + y = z b) ¬∃x L(x, 0) ↔ ∀x ¬L(x, 0) c) ∀x S(x, 0, x) ↔ ∀x : x + 0 = x d) ∀x ∀y ∃z P (x, y, z) ↔ ∀x ∀y ∃z P (y, x, z) oder: ∀x ∀y P (x, y, x ∗ y) ↔ ∀x ∀y P (x, y, y ∗ x) e) ∃x ∀y S(x, y, y) ↔ ∃x ∀y : x ∗ y = y

35

4 Boolesche Algebra und Schaltnetze 4.1 Boolesche Algebra Boolesche Algebra ist ein Formalismus zur Beschreibung der Funktion digitaler Komponenten. George Boole (1815 - 1864) Vollst¨andige formale Festlegung der Booleschen Algebra 1904 durch Huntington. Er legte fundamentale Lehrs¨atze, sog. Axiome fest. Eine boolesche Algebra ist ein Tripel (M, Φ, Ψ), wobei M = {e1 , ..., en } eine nichtleere Menge ist. Φ und Ψ sind zwei auf M definierte Verkn¨ upfungen mit Φ, Ψ : M × M → M . Ausserdem gelten folgende Axiome: 1. KG: ei Φej = ej Φei ei Ψej = ej Ψei

 ∀ei , ej ∈ M

2. DG: ei Φ(ej Ψek ) = (ei Φej )Ψ(ei Φek ) ei Ψ(ej Φek ) = (ei Ψej )Φ(ei Ψek ) 3. Neutrale Elemente: In M sind zwei Elemente e und n bzgl. der Operationen Φ und Ψ dadurch gekennzeichnet, dass ihre Verkn¨ upfungen mit einem beliebigen Element ei ∈ M wieder ei ergibt:  ei Φe = ei ∀ei ∈ M e: Einselement, n: Nullelement ei Ψn = ei 4. Komplement: Zu jedem Element ei ∈ M soll auch das Komplement enthalten sein, das als ei geschrieben wird. Es gilt: ei Ψ ei = e ei Φ ei = n

36

4.1. Boolesche Algebra

WS/SS 2003-04

Die Zahl der Elemente im Wertebereich einer Booleschen Algebra muss stets eine Zweierpotenz sein. Zu diesen 4 Axiomen lassen sich weitere S¨atze herleiten: 5. AG: (ei Φej )Φek = ei Φ(ej Φek ) (ei Ψej )Ψek = ei Ψ(ej Ψek )

 ∀ei , ej , ek ∈ M

6. Idempotenzgesetz: ei Φei = ei ei Ψei = ei

 ∀ei ∈ M

7. Absorptionsgesetz: ei Ψ(ei Φej ) = ei ei Φ(ei Ψej ) = ei

 ∀ei , ej ∈ M

8. De Morgan-Gesetze ei Ψej = ei Φ ej ei Φej = ei Ψ ej

 ∀ei , ej ∈ M

Bsp.: Mengenlehre Geg. Menge E = {e1 , e2 , e3 }. M¨ogliche Teilmengen von E bilden den Wertebereich M der Booleschen Algebra: M

= {∅, {e1 }, {e2 }, {e3 }, {e1 , e2 }, {e2 , e3 }, {e1 , e3 }, {e1 , e2 , e3 } = {m0 , m1 , m2 , m3 , m4 , m5 , m6 , m7 }

Neutralelemente n und e sind die leere Menge ∅ (zu Ψ) und die volle Menge E = {e1 , e2 , e3 } (zu Φ) Der Operator Ψ wir durch Vereinigung (union), der Operator Φ durch Durchschnitt (inter) ersetzt. Das Komplement eines Elements eines Wertebereichs ist die Differenz zur Basismenge. Damit gilt: m0 = m7 = e

m1 = m6

37

4.2. Boolesche Ausdru ¨ cke und ihre Darstellung m2 = m5 m4 = m3 m6 = m1

m3 = m4 m5 = m2 m7 = m0 = n

Nachweis der G¨ ultigkeit DG: m1 ∩ (m6 ∪ m5 ) {e1 } ∩ {e1 , e2 , e3 } {e1 } {e1 }

WS/SS 2003-04

= = = =

(25.11.03)

(m1 ∩ m6 ) ∪ (m1 ∩ m5 ) ({e1 } ∩ {e1 , e3 }) ∪ ({e1 } ∩ {e2 , e3 }) ∅ ∪ {e1 } {e1 }

4.2 Boolesche Ausdr¨ ucke und ihre Darstellung Formeln der Aussagenalgebra werden in der Schaltalgebra als Ausdr¨ ucke bezeichnet. Ausdr¨ ucke kann man als Werte 0 oder 1 zuordnen, wenn den enthaltenen Variablen solche Werte zugewiesen werden. Damit ist ein Ausdruck eine Funktion, der in ihm enthaltenen Variable. Die Zahl aller nicht ¨aquivalenten Funktionen die aus n bin¨aren Variablen gebildet werden k¨onnen, ist n 22 . n Tabelle: 22 = 16 Funktionen f¨ ur 2 bin¨are Variablen. Funktionen sind nicht vollst¨andig unabh¨angig voneinander. Sie beschreiben, da bereits mit den Grundoperationen ∧, ∨, ¬ jede Funktion beschrieben werden kann. Darstellungsarten von booleschen Ausdr¨ ucken (Darstellung der logischen Funktionen) • Tabellarische Darstellung (Wahrheitswertetabelle) • Darstellung in Diagrammen • Darstellung in Normalform Bsp.: Addierer Zahl x: 1001 | 0101 ↑ ↑ Ziffer x und y seien zwei n-stellige Dualzahlen xi und y1 = Ziffern der Dualzahlen ¨ U¨i = Ubertrag der i-ten Stelle Si = i-te Ziffer der Summe

38

4.2. Boolesche Ausdru ¨ cke und ihre Darstellung

WS/SS 2003-04

Formale Beschreibung der 0-ten Stelle: U¨1 = x0 ∧ y0 Die 0-te Ziffer der Summe, ist genau dann 1, wenn genau die Ziffer den Wert 1 hat. S0 = x0 6≡ y0 = (x0 ∧ y0 ) ∨ (x0 ∧ y0 ) Die so festgestellten Variablen S0 und U¨1 werden, um einen n-stelligen Addierer zu beschreiben, zusammen mit den Ziffern x1 und y1 weiter verkn¨ upft. Die dabei entstehenden Ausdr¨ ucke werden mit U¨2 und S1 bezeichnet. ¨ 2 = x1 ∧ y1 ∨ (x1 6≡ y1 ) ∧ U¨1 U S1 = (x1 6≡ y1 6≡ U¨1 ) d.h., S1 hat immer dann den Wert 1, wenn die Anzahl der 1-ten rechts vom Gleichheitszeichen ungerade ist. ¨ auf der linken Seite der Gleichung mit inkrementiertem In U¨2 taucht die Variable U Index auf, gegen¨ uber der rechten Seite. Dieser Sachverhalt l¨asst sich durch Rekursion einfach beschreiben: Ui+1 = xi ∧ yi ∨ (xi 6≡ yi ) ∧ U¨i Si = (xi 6≡ yi 6≡ U¨i )

¨ 1 = x0 ∧ x2 U S0 = x0 6≡ y0 4.2.1 Tabellarische Darstellung

Bsp.: Funktionstabellen des Addierers x0 y0 U¨1 x0 y0 0 0 0 0 1 0 1 0 0 1 1 1 U¨1 = x0 ∧ y0

0 0 1 1

0 1 0 1

S0 0 1 1 0

S0 = x0 6≡ y0

39

 (i = 1, ..., n - 1)

4.2. Boolesche Ausdru ¨ cke und ihre Darstellung U¨i xi yi U¨i+1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 U¨i+1 = xi ∧ yi ∨ (xi 6≡ yi ) ∧ U¨i

U¨i 0 0 0 0 1 1 1 1

xi 0 0 1 1 0 0 1 1

WS/SS 2003-04

yi 0 1 0 1 0 1 0 1

Si 0 1 1 0 1 0 0 1 S1 = xi 6≡ yi 6≡ U¨i

4.2.2 Darstellung in Diagrammen Grafische Darstellungsform beruht auf zweidimensionaler Anordnung der Funktionswerte. Ausgangspunkt der Darstellung ist ein Rechteck, dann eine H¨alfte der nicht negierten Variablen (a) und dessen H¨alfte, die der negierten Variablen (a) zugeordnet ist: a

a

Zwei Konstruktionsprinzipien von Veitch und Karnaugh (amerik. Mathematiker) Veitch-Diagramm Veitch-Diagramm f¨ ur n+1 Variablen erh¨alt man, indem man das Diagramm f¨ ur n Variable entlang der unteren oder seitlichen Kante spiegelt. Darstellung einer logischen Funktion im Diagramm erfolgt so, das in jedes Feld des Diagramms der Wert eingetragen wird, den die Funktion bei der entsprechenden Variablenkombination liefert. ¨2 Bsp.: Addierer, Funktion U ¨ 2 = x1 ∧ y1 ∨ (x1 6≡ y1 ) ∧ U ¨1 U rechts u ¨bersetzen: ¨ 2 = x1 ∧ y1 ∨ (x1 6≡ y1 ) ∧ x0 ∧ y0 U x1 6≡ y1 = x0 ∧ y0 ∨ x1 ∧ y1 ¨ 2 = x1 ∧ y1 ∨ (y1 ∧ y1 ∨ x1 ∧ y1 ) ∧ x0 ∧ y0 U = x1 ∧ y1 ∨ x1 ∧ y1 ∧ x0 ∧ y0 ∨ x1 ∧ y1 ∧ x0 ∧ y0 Darstellung im Veitch-Diagramm f¨ ur 4 Variablen:

40

4.2. Boolesche Ausdru ¨ cke und ihre Darstellung a

a b

WS/SS 2003-04 a

a b c

b d c

Bsp.:

(26.11.03)

U2 → Variable: Darstellung im V.-Diagramm mit 24 = 16 Feldern

In diesem Diagramm werden schrittweise diejenigen Felder mit 1 markiert, zu deren entsprechenden Variablenkombinationen die Funktion den Wert 1 hat.

¨ 2 : x1 ∧ y1 1. Teilterm von U

¨ 2 : x1 ∧ y1 ∧ x0 ∧ y0 = x0 ∧ x1 ∧ y0 ∧ y1 2. Teilterm von U

41

4.2. Boolesche Ausdru ¨ cke und ihre Darstellung

WS/SS 2003-04

¨ 2 : x1 ∧ y1 ∧ x0 ∧ y0 = x0 ∧ x1 ∧ y0 ∧ y1 3. Teilterm von U

¨ 2 : x1 ∧ y1 ∨ x0 ∧ x1 ∧ y0 ∧ y1 ∨ x0 ∧ x1 ∧ y0 ∧ y1 Gesamtfunktion U Erl¨auterung: F¨ ur den Teilterm x1 ∧ y1 erh¨alt man die im Diagramm dargestellte Belegung. Im Diagramm wird dort eine 1 eingetragen, wo sich die Bereiche f¨ ur x1 = 1 und y1 = 1 u ¨berdecken. Legt man alle Teildiagramme u ¨bereinander, erh¨alt man die Gesamtfunktion als grafische Darstellung. Karnaugh-Diagramm Man gewinnt ein Diagramm f¨ ur n+1 Variable aus dem Diagramm f¨ ur n Variable durch direktes Aneinandersetzen der Felder.

42

4.2. Boolesche Ausdru ¨ cke und ihre Darstellung a b

a

a

a

b

WS/SS 2003-04

a

b c

d

b c

Charakteristisch ist das Zerreißen“ der Variablenbereiche. ” ⇒ h¨aufig auch wegen geringer Unterschiede: KV-Diagramm 4.2.3 Darstellung in Normalform Funktionen lassen sich in unterschiedlichen Formen darstellen, die zueinander ¨aquivalent sind. @ @ R @

Bei konjunktiver und disjunktiver Normalform ist die Darstellung boolescher Funktionen besonders einfach. Disjunktive Normalform, Minterm Eine boolesche Funktion ist in disjunktiver Form (DF), wenn sie ausschliesslich aus Konjunktionen Ki (i = 1, ..., n) besteht, die ihrerseits disjunktiv verkn¨ upft sind: y = K1 ∨ K2 ∨ K3 ∨ ... ∨ Kn Konjunktionen sind Terme, bei denen Variable (einfache oder negierte) ausschliesslich konjunktiv verkn¨ upft sind. Besteht eine Konjunktion aus allen Variablen (die in der Funktion vorkommen), so heisst diese Konjunktion Minterm. Umfasst jede Konjunktion alle Variablen der booleschen Funktion so spricht man von einer (vollst¨andigen) disjunktiven Normalform. (DNF) Konjunktive Normalform, Maxterm Eine boolesche Funktion ist in konjunktiver Form (KF), wenn sie ausschliesslich aus Disjunktionen Di (i = 1, ..., n) besteht, die ihrerseits konjunktiv verkn¨ upft sind: y = D1 ∧ D2 ∧ ... ∧ Dn Disjunktionen sind Terme, in denen Variablen ausschliesslich disjunktiv verkn¨ upft sind. Besteht eine Disjunktion aus allen Variablen, dann heisst sie Maxterm. Umfasst jede Disjunktion alle Variablen, so spricht man von (vollst¨andiger) konjunktiver Normalform. (KNF)

43

4.2. Boolesche Ausdru ¨ cke und ihre Darstellung

WS/SS 2003-04

Beide Formen k¨onnen ineinander u uhrt werden. ¨berf¨ Bsp.: DNF und DF in einer booleschen Funktion ¨ 2 = x1 ∧ y1 ∨ (x1 6≡ y1 ) ∧ U ¨1 U ¨ 2 = x1 ∧ y1 ∨ (x1 6≡ y1 ) ∧ x0 ∧ y0 −→ DNF: U Ersetzen der Operatoren 6≡, ∨, ∧ → durch ∧, ∨, ¬ : ¨ 2 = x1 ∧ y1 ∨ x1 ∧ y1 ∧ x0 ∧ y0 ∨ x1 ∧ y1 ∧ x 0 ∧ y0 U {z } {z } | | alle Variablen vorhanden

alle Variablen vorhanden

Um zur DNF zu gelangen, muss der 1. Term erweitert werden: ¨ 2 = (x0 ∨ x0 ) ∧ (y0 ∨ y0 ) ∧ x1 ∧ y1 ∨ x1 ∧ y1 ∧ x0 ∧ y0 ∨ x1 ∧ y1 ∧ x0 ∧ y0 U = x0 ∧ y0 ∧ x1 ∧ y1 ∨ x0 ∧ y0 ∧ x1 ∧ y1 ∨ x0 ∧ y0 ∧ x1 ∧ y1 ∨ ∨ x0 ∧ y0 ∧ x1 ∧ y1 ∨ x0 ∧ y0 ∧ x1 ∧ y1 ∨ x0 ∧ y0 ∧ x1 ∧ y1 ⇒ DNF Nach folgenden Regeln l¨asst sich aus jedem Ausdruck eine DF oder KF gewinnen: 1. Ersetzen der Operatoren 6≡, ∨, ∧ → durch ∧, ∨, ¬ nach Funktionentabelle 2. Wiederholte Anwendung von den De-Morganschen Gesetzen, solange, bis die Negation u ¨ber den einzelnen Variablen auftritt. 3. Eine DF erh¨alt man durch wiederholte Anwendung des DG: ei ∧ (ej ∨ ek ) = ei ∧ ej ∨ ei ∧ ek 4. Eine KF erh¨alt man duch die wiiederholte Anwendung des DG: ei ∨ (ej ∧ ek ) = (ei ∨ ej ) ∧ (ei ∨ ek ) Eine KF oder DF l¨asst sich folgendermaßen zur KNF oder DNF erweitern: • Um die DNF zu erhalten, werden bei jeder Konjunktion alle nicht vertretenen Variablen xi in der Form xi ∨ xi konjunktiv hinzugef¨ ugt und unter Anwendung des DG ausmultipliziert“: ” ei ∧ (ej ∨ ek ) = ei ∧ ej ∨ ei ∧ ek • Um die KNF zu erhalten, werden bei jeder Disjunktion alle nicht vertretenen Variablen xi in der Form xi ∧ xi hinzugef¨ ugt und nach dem DG addiert“: ” ei ∨ (ej ∧ ek ) = (ei ∨ ej ) ∧ (ei ∨ ek )

44

4.3. Technische Realisierungen von Booleschen FunktionenWS/SS 2003-04 Minterme und Maxterme bei 3 Variablen: a b 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1

c 0 1 0 1 0 1 0 1

Minterme (DNF) K0 = a ∧ b ∧ c K1 = a ∧ b ∧ c K2 = a ∧ b ∧ c K3 = a ∧ b ∧ c K4 = a ∧ b ∧ c K5 = a ∧ b ∧ c K6 = a ∧ b ∧ c K7 = a ∧ b ∧ c

Maxterme (KNF) D0 = a ∨ b ∨ c D1 = a ∨ b ∨ c D2 = a ∨ b ∨ c D3 = a ∨ b ∨ c D4 = a ∨ b ∨ c D5 = a ∨ b ∨ c D6 = a ∨ b ∨ c D7 = a ∨ b ∨ c

Darstellung Minterme und Maxterme im KV-Diagramm: Maxterm: D4 = a ∨ b ∨ c

Minterm: K4 = a ∧ b ∧ c

Von den beiden Normalformen wird die DNF bevorzugt, da man sich leichter vorstellen kann wie aus der Addition der einzelnen Felder das Funktionsmuster gewonnen wird – im Gegensatz zur KNF, wo durch Multiplikation von Maxtermen immer mehr Felder getilgt werden, bis schliesslich als Schraffur“ nur noch die Gesamtfunktion u ¨brigbleibt. ”

4.3 Technische Realisierungen von Booleschen Funktionen Kl¨arung der Frage: Wie k¨onnen Boolesche Funktionen in Schaltungen umgesetzt werden ? Unterscheidung von zwei Arten von Schaltungen im technischen Bereich: Schaltnetze

Schaltwerke

und

Schaltnetz Schaltnetz ist eine Anordnung von Verkn¨ upfungsgliedern, die Boolesche Variablen (Signale) derart verkn¨ upft, dass die Signale an den Ausg¨angen zu jedem beliebigen Zeitpunkt ausschliesslich von dem Wert der Schaltvariablen an den Eing¨angen abh¨angen.

45

4.3. Technische Realisierungen von Booleschen FunktionenWS/SS 2003-04 Man sagt diese Anordnung ist r¨ uckf¨ uhrungsfrei (d.h. R¨ uckf¨ uhrungen von Ausg¨angen einer Verkn¨ upfung auf Eing¨ange kommen nicht vor). Fragen: - Wie lassen sich Schaltnetze beschreiben ? - Gibt es eine Darstellung einer Booleschen Funktion, deren technische Realisierung besonders kosteng¨ unstig ist ? Schaltnetzbeschreibung: d.h. Schaltsymbole nach DIN40700 Teil 14 (Schaltzeichennorm). Ist eine Funktion als Gleichung gegeben, so kann daraus sofort die ¨aquivalente Schaltnetzdarstellung abgeleitet werden, indem man jede logische Verkn¨ upfung durch das ¨aquivalente Symbol 1:1 ersetzt. Bsp.: ¨ Schaltnetzdarstellung der Ubertragsfunktion des Addierers ¨ i+1 U

= = = = =

¨i xi ∧ yi ∨ (xi 6≡ yi ) ∧ U ¨i xi ∧ yi ∨ (xi ∧ yi ∨ xi ∧ yi ) ∧ U ¨ i ∨ xi ∧ yi ∧ U ¨i xi ∧ yi ∨ xi ∧ yi ∧ U (DF ) ¨ i ) ∨ xi ∧ yi ∧ U ¨i ∨ U ¨ i ∨ xi ∧ yi ∧ U ¨i xi ∧ yi ∧ (U ¨ i ∨ xi ∧ yi ∧ U ¨ i ∨ xi ∧ yi ∧ U ¨ i ∨ xi ∧ yi ∧ U ¨ i (DNF) xi ∧ yi ∧ U

¨ i angeh¨angt. In dieser Gleichung wird rechts noch zweimal der Term xi ∧yi ∧ U Dadurch ¨andert sich der Wert der Gleichung nicht, weil der Term bereits einmal in der Gleichung vorhanden ist. ¨i = xi ∧ yi ∧ U 1

¨i ∨ xi ∧ yi ∧ U 2

¨i ∨ xi ∧ yi ∧ U 3

¨i ∨ xi ∧ yi ∧ U 4

¨i ∨ xi ∧ yi ∧ U 5

Fasst man die Terme 1 und 2, 3 und 6, sowie 4 und 5 zusammen, so erh¨alt man: ¨ i+1 = xi ∧ yi ∨ yi ∧ U ¨ ∨x ∧ U ¨ U | {z } | {z }i | i {z }i 1+2

3+6

4+5

Diese DF l¨asst sich nun in ein zweistufiges Schaltnetz umsetzen:

46

¨i ∨ xi ∧ yi ∧ U 6

4.4. Minimierung Boolescher Funktionen

WS/SS 2003-04

4.4 Minimierung Boolescher Funktionen Kosten von Schaltnetzen h¨angen direkt von der Anzahl der verwendeten elektr. Bauelemente ab. D.h. Schaltungen weitgehend vereinfachen: Verfahren zur Minimierung: • algebraisch • grafisch • algorithmisch 4.4.1 Algebraisches Verfahren Eine in der KNF oder DNF vorliegende logische Funktion l¨asst sich i. A. durch Anwendung der Axiome und Gesetze der Booleschen Algebra vereinfachen: (a ∨ b) ∧ (a ∨ b) = a ∨ (b ∧ b) = a H¨aufig ergibt sich eine Vereinfachungsm¨oglichkeit, wenn man zuvor in folgender Weise verf¨ahrt: a = a ∨ a = a ∨ a ∨ ... ∨ a

a = a ∧ a = a ∧ a ∧ ... ∧ a

bzw.

Bsp.: 1. y

= a∧b∨a∧b∨a∧b = a∧b∨a∧b∨a ∧b

∨ | a{z∧ }b

erweitern, da bereits vorhanden

= a ∧ (b ∨ b) ∨ b ∧ (a ∨ a) | {z } | {z } a

y

b

= a∨b

47

4.4. Minimierung Boolescher Funktionen

WS/SS 2003-04

2. y =a∧b ∧c∨a∧b∧c∨a∧b∧c∨a∧b∧c∨a∧b∧c ¨ Bei der algebraischen Vorgehensweise wird in erster Linie die Uberdeckung von Termen oder die Unterscheidung in einer Variablen zur Reduzierung gen¨ utzt. y =a∧c∨a∧b∨a∧c 4.4.2 Grafische Verfahren Bsp.: ¨ 2 = x0 ∧y0 ∧x1 ∧y1 ∨ x0 ∧y0 ∧x1 ∧y1 ∨x0 ∧ y0 ∧x1 ∧y1 ∨ x0 ∧ y0 ∧x1 ∧y1 ∨x0 ∧y0 ∧ x1 ∧y1 ∨x0 ∧y0 ∧x1 ∧ y1 U

¨ 2 = x1 ∧ y1 ∨ x0 ∧ y0 ∧ x1 ∨ x0 ∧ y0 ∧ y1 U

(03.12.03) Das Prinzip des grafischen Verfahrens besteht darin, im KV-Diagramm m¨oglichst viele benachbarte Felder, die durch 1 markiert sind, zu großen Bl¨ocken zusammenzufassen. Dabei heißen zwei Felder benachbart, wenn sich die entsprechenden Minterme 1 in genau einer Variablen unterscheiden. Die Variable trifft dabei einmal negiert und einmal nicht negiert auf. Die Felder benachbarter Minterme m¨ ussen nicht unbedingt r¨aumlich aneinander grenzen, da KV-Diagramme in den Variablen auch nicht zusammenh¨angend sein m¨ ussen. Fasst man 2 benachbarte Minterme zusammen, so ergibt sich daf¨ ur ein neuer Term, bei dem die Variable entf¨allt, um die sich die beiden Minterme unterscheiden. Regeln (allgemein): Minterme, die durch zwei mit 1 besetzten benachbarten Feldern im KV-Diagramm repr¨asentiert sind, lassen sich wie folgt verk¨ urzen:

48

4.4. Minimierung Boolescher Funktionen

WS/SS 2003-04

1. Die Variable, um die sich die Felder unterscheiden, f¨allt weg. 2. Die benachbarten Minterme reduzieren sich auf einen Term mit den verbleibenden gemeinsamen Variablen 3. Alle gek¨ urzten Terme und die ungek¨ urzten Minterme werden diskunktiv miteinander verkn¨ upft. Der dabei entstehende Ausdruck stellt die Funktion minimal dar. Vorteil der grafischen Minimierung: Intuitives Erkennen durch Hinschauen“, welche Minterme zusammengefasst werden ” k¨onnen. Nachteil: Bei > 5 Variablen un¨ ubersichtlich ⇓ 3. Algorithmisches Verfahren (Quine Mc Cluskey-Verfahren – QMC) ¨ Einige Ubungen zu Mintermen

49

5 Der Von-Neumann - Computer 5.1 Prinzipieller Aufbau und Funktionsweise (09.12.03) Steuerwerk holt sich Befehl f¨ ur Befehl aus dem Arbeitsspeicher, f¨ uhrt die Befehle aus, indem es die Operanden dem Rechenwerk zuf¨ uhrt. Dort werden die entsprechenden Operationen ausgef¨ uhrt und anschliessend das Ergebnis in den Arbeitsspeicher zur¨ uckgebracht. Rechenwerk f¨ uhrt die Verkn¨ upfung der Operanden aus, also logische und arithmetische Operationen. Arbeitsspeicher bewahrt Programm (Befehle) und Daten auf. Ein- und Ausgabe u ¨bernimmt die Anlieferung/Auslieferung der Daten Prozessor (Zentraleinheit - CPU) enth¨alt Steuerwerk und Rechenwerk Systembus Prozessor l

RAM l

Systembus (Leitungssystem)

E / A-Ger¨ate E / A-Ger¨ate l l zentrale Verbindungsleitung

Alle Daten, die zwischen den einzelnen Komponenten eines Computers transportiert werden, werden durch bin¨are elektrische Spannungen dargestellt. Tpische Spannungswerte sind 0 V (Masse) f¨ ur die bin¨are 0 und 5 V f¨ ur die bin¨are 1. Der zeitliche Verlauf der Spannung auf einer Leitung bewegt sich immer sprunghaft zwischen den Werten 0 und 5 hin und her (niedrig und hoch oder down and high)

50

5.2. Elektrische Schalter

WS/SS 2003-04

¨ Uberg¨ ange zwischen den Zust¨anden 0 und 1 finden nicht tr¨agheitslos statt. (physische Gr¨ unde) Es kommt darauf an, die Leitung zu einem Zeitpunkt abzufragen, in dem sie ¨ sich nicht im Ubergang befindet. Aus diesem Grunde ist der gesamte Computer durch Taktsignale gesteuert – das sind kurze, gleichm¨aßige wiederholte Uhr-Impulse, die die Umschalt- und Abfragezeitpunkte aller anderen Signale steuern. =⇒ Ver¨anderungen der Spannungen, die letztlich auch Daten repr¨asentieren, verlaufen ruckartig zwischen der Abfrage. Das hat zur Folge, das in der Computertechnik von einem bestimmten Abstraktionsniveau aufw¨arts alle Vorg¨ange nicht mehr durch kontinuierliche Funktionen x(t) beschrieben werden, sondern durch eine diskrete Folge x0 , x1 , x2 , ... von Werten zu den Zeitpunkten 0, 1, 2, ... . Die Diskretisierung der Zeit hat eine spezielle mathematische Beschreibung zur Folge, die sog. diskrete Mathematik. (finite Mathematik, da die Anzahl der Ereignisse und die Objekte endlich ist.)

5.2 Elektrische Schalter Frage: Wie berechnet man (nahezu) rechteckf¨ormige Spannungsverl¨aufe ? −→ durch Schalter

51

5.2. Elektrische Schalter

WS/SS 2003-04

Einfacher Stromkreis aus Schalter und Widerstand:

Spannungsverlauf am Widerstand bei offenem und geschlossenem Kontakt:

¨ Schließen und Offnen des Schalters erfolgt zeitlos, was f¨ ur einen elektri¨ schen Schalter nahezu gilt. So ergeben sich die zeitlosen Uberg¨ ange einer Rechteckform. Unabh¨angig von seinem physischen Aufbau kann man einen Schalter als ein Element definieren, das nur Zust¨ande hat. ( ein“ und aus“) ” ” Von einem Schalter werden folgende Eigenschaften gefordert:

Vorstellung:

- m¨oglichst großer Widerstand im offenen Zustand (im Idealfall unendlich groß) - m¨oglichst kleiner Widerstand im geschlossenen Zustand (im Idealfall Null) (10.12.03) Heute werden Schalter aus Halbleitern verwendet - Transistoren. Halbleiter (grob): Nutzung des Effekts, dass bestimmte Materialien wie Silizium mit gezielten (dosierten) Verunreinigungen versehen, den Strom in einer Richtung leiten.

52

5.2. Elektrische Schalter

WS/SS 2003-04

Transistor Dreipol mit unterschiedlichen Bezeichnungen nach Bauart: bipolare Transistoren (Pole: Basis, Emitter, Kollektor) Bipolare Schaltungen sind sehr schnell, haben aber hohen Energieverbrauch, lassen keinen hohen Integrationsgrad zu.

MOS (metall ovial semiconductor) (Pole: Gate, Source, Drain) Schaltungen sind langsamer, geringer Energieverbrauch, hoher Integrationsgrad m¨oglich.

Funktionsweise: Die Strecke Source-Drain stellt Widerstand dar, dessen Gr¨oße durch eine Spannung am Gate ver¨andert werden kann. Wenn die Spannung zwischen Gate und Source Null ist, ist der Widerstand zwischen Source und Drain sehr ( → ∞) groß. Falls sie gleich der Spannung des Drains ist, ist sie (fast) Null. Damit wirkt der Transistor wie ein Schalter.

53

5.3. Schaltnetze

WS/SS 2003-04

Spannung am Gate ist positiv: Der Transistor bleibt, d.h. er verh¨alt sich wie ein geschlossener Schalter, an dem keine Spannung abf¨allt.

Keine Spannung am Gate: Der Transistor sperrt, d.h. er verh¨alt sich wie ein offener Schalter. In beiden F¨allen wirkt die Schaltung als Inverter und Verst¨arker. (kleine Eingangsspannung erzeugt großen Ausgangsstrom) =⇒

(integrierter Baustein durch Transistoren, Widerst¨ande, Verbindungsleitungen durch Diffusionsvorg¨ange untrennbar verbunden)   

Prozessoren

A A A

Speicherbausteine

5.3 Schaltnetze Zwei Arten von Schaltungen:

54

Chips mit Hilfsfunktion

5.4. Schaltwerke

WS/SS 2003-04

• Schaltnetze (Schaltungen ohne Speicherverhalten) • Schaltwerke (Schaltungen mit Speicherverhalten) Grundlegend sind Verkn¨ upfungsschaltungen. (Gatter) ↓ Verkn¨ upfung zweier bin¨arer Signale zu einem dritten bin¨aren Signal Blatt: UND-Gatter ODER-Gatter NICHT-Gatter MOS Symbole:

Boolesche Ausdr¨ ucke: A = E1 ∧ E2

A=E

A = E1 ∨ E2

Wahrheitswertetabelle: E 0 1

E 1 0

A 1 1

E1 0 0 1 1

E2 0 1 0 1

A 0 0 0 1

E1 0 0 1 1

E2 0 1 0 1

A 0 1 1 1

Bei Zusammensetzung von Gattern spricht man von logischen Schaltungen. (Logikschaltungen) Definition Schaltnetz ist eine Zusammensetzung von Verkn¨ upfungsschaltungen ohne Speicherverhalten.

5.4 Schaltwerke Bei Schaltwerken h¨angt das Ausgangssignal nicht nur von den Eingangssignalen ab, sondern auch vom Zustand der Schaltung.

55

5.5. Rechenwerke

WS/SS 2003-04

Das einfachste Speicherelement besitzt nur 2 Zust¨ande (0 und 1) und kann 1 Bit speiuckgekoppelte Gatterschaltung aus zwei ODER-NICHTchern. Hauptvertreter ist die r¨ Verkn¨ upfungen: Ungetaktetes Flip-Flop: Schaltnetz ohne Speicherverhalten Schaltwerk mit Speicherverhalten

Bild - Schaltung Wenn man den Ausgang mit einem der Eing¨ange des ersten ODER verkn¨ upft, entsteht eine R¨ uckkopplung, die die Schaltung zu einem Speicher macht. Wenn die beiden Eing¨ange S und R 0 sind, kann sich die Schaltung in zwei Zust¨anden befinden: Der Ausgang U kann 0 oder 1 sein. Beide Zust¨ande sind stabil, d.h. es gibt kein Hin- und Herschalten zwischen 0 und 1. Der Grund hierf¨ ur ist die R¨ uckkopplung: Ein 0 oder 1 am Ausgang h¨alt sich u uckkopplung.“ ¨ber die R¨ ” Wenn man den Eingang S auf 1 setzt (und R auf 0), wird der Ausgang in den Zustand 1 gezwungen. Der Ausgang bleibt in Zustand 1, auch wenn S wieder 0 geworden ist. Wenn man den Eingang R auf 1 setzt (und S auf 0 bel¨aßt), dann wird der Ausgang in den Zustand 0 gezwungen. Der Ausgang bleibt auch 0, wenn R wieder zu 0 geworden ist. S steht f¨ ur Setzen des Speichers auf 1, R steht f¨ ur R¨ ucksetzen auf 0.

5.5 Rechenwerke Einf¨ uhrung weiterer Schaltungen:

(16.12.03)

• Register

• Volladdierer

• Halbaddierer

• Akkumulator

56

5.5. Rechenwerke

WS/SS 2003-04

Register Register ist ein Speicher f¨ ur eine bestimmte Anzahl logisch zusammengeh¨orender Bits. Meist 1 Byte oder Maschinenwort oder 1 Bit (steuert bestimmte Maschinenvorg¨ange). Register besteht aus unverbundenen Flip-Flops. (getaktet) Symbol: (abstrakte Darstellung)

...

¨ Halbaddierer Realisierung der Addition x+y mit dem Ergebnis z und dem Ubertrag ¨ U zur n¨achst h¨oheren Stelle. Wertetabelle: x 0 0 1 1

y 0 1 0 1

z 0 1 1 0

Gatterschaltung:

Symbol:

¨ U 0 0 0 1

¨ = x+y Halbaddierer f¨ ur (z, U) Volladdierer Zur vollst¨andigen Addition zweier mehrstelliger Dualzahlen, also mit Ber¨ uck¨ sichtigung eines Ubertrags aus einer vorhergehenden Stelle geeignet.

57

5.5. Rechenwerke Wertetabelle: x 0 0 0 0 1 1 1 1

y 0 0 1 1 0 0 1 1

u ¨ 0 1 0 1 0 1 0 1

z 0 1 1 0 1 0 0 1

WS/SS 2003-04 Gatterschaltung:

Symbol:

¨ U 0 0 0 1 0 1 1 1

¨ = x+y+¨ Volladdierer f¨ ur (z, U) u Volladdierer addiert zwei einstellige Dualzahlen. Zur Addition zweier n-stelliger Dual¨ einer zahlen ben¨otigt man n Volladdierer, die eine Kette bilden, in der der Ausgang U Stelle mit dem Eingang u ¨ der n¨achst h¨oheren Stelle verbunden ist. Gatterschaltung f¨ ur n = 4:

Symbol:

58

5.6. Arbeitsspeicher

WS/SS 2003-04

Akkumulator (lat. accumulare: anh¨aufen) Zur Anh¨aufung zweier im Speicher stehender Zahlen x und y wird eine Addierkette und ein Register zusammengeschaltet.

Der eine Summand kommt vom Speicher in den Addierer; der zweite Summand kommt vom Register (Akkumulator AC). Die Summe liegt am Eingang des Registers und wird gleichzeitig im Register gespeichert. → Im AC wird die Summe akkumuliert. Im ersten Schritt l¨oscht man den Akkumulator.

5.6 Arbeitsspeicher Die Bytes (Adressierungseinheiten) werden bei 0 beginnend fortlaufend adressiert. → Kenngr¨osse Speicherkapazit¨at. Charakteristisch f¨ ur Arbeitsspeicher: Zugriff zu den einzelnen Adressierungseinheiten ist gleich schnell, unabh¨angig von der Adresse – wahlfreier Zugriff (random access). Es gehen n Leitungen zur Adressangabe in den Speicher hinein. (Bsp.: n = 24 zur Adressierung von 224 Bytes = b 16 MB). Eine Steuerleitung zur Unterscheidung des Lesens und Schreibens und eine Selektionsleitung, die den Zeitpunkt des Lesens oder Schreibens bestimmt. Die Daten werden u ¨ber n Leitungen zwischen Prozessor und Speicher u ¨bertragen. (Bsp.: n = 32 bei einer Wortl¨ange von 32 Bits). m

Daten

Arbeitsspeicher m Adressen

← lesen/schreiben ← selektieren

59

5.7. Steuerwerk und Programmausfu ¨ hrung

WS/SS 2003-04

5.7 Steuerwerk und Programmausf¨ uhrung Einadressmaschine Steuerwerk f¨ uhrt Befehle aus. Befehlsaufbau: - Operationsteil ⇒ gibt also an, welche Operation ausgef¨ uhrt werden soll - Adressteil ⇒ gibt Adresse des Operanden an Schematischer Aufbau eines einfachen Mikroprozessors:

BR: Befehlsregister BZ: Befehlsz¨ahlregister (kurz: Befehlsz¨ahler) Das BR wird mit einem Befehl u ¨ber den Datenbus geladen. Der Op-Teil des Befehls bestimmt die Operation, die als N¨achste ausgef¨ uhrt werden soll und veranlasst u uhrung. ¨ber die prozessor-interne Steuerung seine Ausf¨ Der Adressteil geht auf den Adressbus und damit an den Arbeitsspeicher zum Holen oder Speichern der Operanden. F¨ ur die Ausf¨ uhrung von Sprungbefehlen besteht auch eine Verbindung zum Befehlsz¨ahler. Der BZ wird normalerweise durch Addition der Befehlsl¨ange in jedem Befehlsausf¨ uhrungszyklus erh¨oht und liefert seinen Inhalt (eine Adresse) an den Adressbus. Befehlszyklus Die Programmausf¨ uhrung ist aus Sicht des Steuerwerks ein zyklischer Vorgang. ⇒ Grundlegend f¨ ur Verst¨andnis der Funktionsweise des Computers. • Programm steht als Folge von Befehlen im Arbeitsspeicher • Der Programmablauf besteht aus den Schritten: Befehl holen - Befehl ausf¨ uhren

60

5.8. Bus/Bussystem

WS/SS 2003-04

Befehlsarten: - Transportbefehle - arithmetische Befehle - unbedingte Spr¨ unge - bedingte Spr¨ unge

5.8 Bus/Bussystem (17.12.03) Informationsaustausch zwischen Komponenten innerhalb und ausserhalb der CPU u ¨ber Sammelleitungen – den Bus. Busverwaltung sorgt u ur zeitlich korrekten Ablauf. ¨ber Taktgenerator f¨ Gliederung Bussystem: • Datenbus • Adressbus • Steuerbus Adressbus Realisierung der Adress¨ ubertragung f¨ ur einen Datentransfer von/zu einer bestimmten Speicherstelle oder zu einer Datenleitung. ¨ Ubertragungen erfolgen unidirektional. Datenbus Realisierung des Datentransfers. (z.B. Datenverkehr zwischen CPU und Speicher oder CPU und Peripherie) Datenverkehr ist bidirektional. ¨ Ubertragung kann intern und extern (bezogen auf CPU) erfolgen. ¨ Steuerbus Realisierung der Ubertragung von Steuersignalen. (Bestimmung der Richtung des Datenflusses - lesen oder schreiben) Busbreite bestimmte Anzahl der gleichzeitig (parallel) u ¨bertragbaren und damit verarbeitbaren Bits. - Breite Adressbus: 20, 24, 32 Bits - Breite Datenbus: 16, 32, 64 Bits

61

5.9. Periphere Ger¨ ate

WS/SS 2003-04

Busse sind damit Verbindungsleitungen, die von angeschlossenen Ger¨ateeinheiten gemeinsam genutzt werden. Bewertungskriterien f¨ ur einen Mikrocomputer: • interne Architektur, besonders die Registerbreite • Adressraum, bestimmt durch die Breite des Adressbus • Transferleistung bestimmt durch die Breite des Datenbus • Taktfrequenz

5.9 Periphere Ger¨ ate Begriff Rechnerarchitektur Gesamtheit der Bauprinzipien eines Computers. Dazu geh¨ort Festlegung der internen Darstellung der Daten und den ihnen definierten Operationen, der Aufbau der Grundbefehle (Maschinenbefehle), die Struktur der Funktionseinheiten, die Definition der Schnittstellen zwischen den Funktionseinheiten und zu den externen Ger¨aten. Dazu geh¨ort auch ein Bauplan, mit dem die Funktionseinheiten nach bestimmten Anforderungen kombiniert werden k¨onnen. Klassifizierung der Rechnerarchitektur der Quantit¨at der Befehls- und Datenstr¨ome, die ein Rechner dieser Architektur gleichzeitig verarbeiten kann. Operationsgeschwindigkeit • MIPS (Mega Instructions per second) gewichtetes Maß: pro Sekunde wird die entsprechende Anzahl von 70% Additionsund 30% Multiplikationsbefehlen ausgef¨ uhrt. Bsp.: 1 MIPS = b 700000 Additionen + 300000 Multiplikationen pro Sekunde • MFLOPS (Mega floating point instructions per second) Bsp.: 1 MFLOPS = b 106 Gleitpunktoperationen pro Sekunde

62

5.10. Abstraktionsstufen

WS/SS 2003-04

5.10 Abstraktionsstufen Abstraktionsschicht  4

Programmierung

BB B

 B



Architektur

B



B

3

 B

 B Schaltungslogik  B  B  B Elektronik  B 

63

2 1

6 Weiterentwicklung des Von-Neumann-Rechners 6.1 Mehrregister - Maschinen Register werden durchnummeriert: R0 bis Rn (07.01.04) Unterschied von Ein- und Mehrregistermaschinen am Beispiel der Berechnung von z = (x + y) * (x – y) Einadressmaschine LOAD x ADD y STORE h (Hilfsvariable) LOAD x SUB y MULT h STORE z

Zweiadressmaschine LOAD R1, x LOADR R2, R1 ADDR R1, y SUB R2, y MULTR R1, R2 STORE z, R1

Einsparung eines Befehls und h¨ohere Geschwindigkeit durch Registeroperationen. Register als unterste Ebene eines dreistufigen Speichersystems:

 Externspeicher B BB   B B   B B (Hintergrundspeicher)   B B   B B   Geschwindigkeit B Arbeitsspeicher Kapazit¨at B   B B   B B   Register BN B  

¨ Registerverwendung erschwert die Ubersicht in der Programmierung.

6.2 Virtualisierung (virtuell - scheinbar) Programmierer kann Programm f¨ ur eine virtuelle Maschine schreiben, die so nicht existiert. Aufgabe der Hard- und Systemsoftware ist es, die virtuelle Maschine auf die reale abzubilden.

64

6.2. Virtualisierung (virtuell - scheinbar)

WS/SS 2003-04

Virtueller Speicher Ende der 60-er Jahre Idee der logischen Verkn¨ upfung von Arbeitsund Externspeicher so, dass er dem Programmierer wie ein großer Arbeitsspeicher erscheint. Annahme: Befehlsl¨ange der Maschine 32 Bits Einteilung in 8 Bit Operationsteil und 24 Bit Adressteil. 224 Bytes = b 16 MB direkt adressierbar (Adressraum oder virtueller Speicher). Realer Adressraum betrage 218 Bytes = b 256 KB. (Auszug aus dem virtuellen Speicher) Der gesamte von einem Programm verwendete Speicher (224 Bytes) ist vollst¨andig im Externspeicher untergebracht. 1. Teil der Idee: Einteilung des gesamten realen Adressraums in Teile fester L¨ange, sog. Seiten (z.B. 210 Bytes = 1 KB). D.h. realer Speicher w¨ urde 256 Seiten fassen k¨onnen. Arbeitsspeicher

Externspeicher

'

Seite 1 Seite 2 . . . . Seite 256

0 1024 2048

261120

$

10

0·2 1 · 210 3 · 210

Seite 1 & % . . . $ ' .

255 · 210

Seite 16384

&

2. Teil der Idee:

%

Programmierer kann gesamten virtuellen Adressraum (224 Bytes) direkt adressieren. Gelangt ein Programm w¨ahrend der Laufzeit zu einem Befehl, der nicht auf einer Seite im realen Adressraum steht, m¨ ussen Hard- und Betriebssystem daf¨ ur sorgen, dass die fehlende Seite in den Arbeitsspeicher geladen und der Befehl ausgef¨ uhrt wird. Ist in diesem Fall der Arbeitsspeicher vollst¨andig mit Seiten belegt, muss eine ¨altere“ Seite in den Externspeicher verdr¨angt werden. Das Verfahren der ” Virtualisierung des Speichers geht zu Lasten der Zeit. Seitenwechsel werden durch sog. Lokalit¨atseigenschaften von Programmen relativ klein gehalten. D.h. von Programmen angesprochene Adressen liegen meist dicht beieinander.

65

6.3. Parallelit¨ at in einzelnen Komponenten

WS/SS 2003-04

Cache ist ein Pufferspeicher, der dazu dient, Zugriffszeiten auf den Arbeitsspeicher zu minimieren. Er wird zwischen Prozessor und Arbeitsspeicher eingef¨ ugt (vor oder direkt auf Prozessorchip angeordnet). Verwaltung des Cache u ur den Programmierer ¨ber Cachemanagementschaltung (ist f¨ transparent = verborgen). Cacheregime Alle gerade ben¨otigten Daten werden als Kopie in den Cache eingetragen. Bei Lesezugriff auf die Daten erfolgt der Eintrag. Es werden außerdem alle Daten in unmittelbarer Umgebung im Cache gespeichert (Lokalit¨atsprinzip). Bei Schreibzugriff wird Aktualisierung ausgef¨ uhrt. Damit ist Cache auch ein virtueller Speicher. Unterscheidung ist Befehls- und Datencache. Virtuelle Rechnerarchitekturen Unterschiedliche reale Maschinen mit verschiedener Organisation k¨onnen durch ein Mikroprogramm so programmiert werden, dass sie nach außen hin wie die gleiche virtuelle Maschine wirken. Das Mikroprogramm l¨asst die Maschinenbefehle nicht direkt vom Steuerwerk ausf¨ uhren, sondern u ¨bernimmt diese Funktionen selbst. Alle solche Maschinen bilden eine Rechnerfamilie. Sie unterscheiden sich nur in Geschwindigkeit realer Speichergr¨oße und durch den Preis.

6.3 Parallelit¨ at in einzelnen Komponenten Zwei Wege zur Steigerung der Leistungsf¨ahigkeit von Computern: 1. Einsatz immer schnellerer Komponenten • schneller schaltende Bauelemente • Speicher mit geringeren Zugriffszeiten ⇒ physikalische Grenzen (begrenzte Miniaturisierung, Schaltgeschwindigkeit) 2. Parallelit¨at einzelner Komponenten Von-Neumann-Computer arbeitet rein sequentiell. Er hat nur einen Prozessor mit Befehlszyklus. ¨ Uberlegung: Bei Einsatz von n Prozessoren m¨ usste die Zeit auf n1 beschr¨ankt werden k¨onnen.

66

6.3. Parallelit¨ at in einzelnen Komponenten

WS/SS 2003-04

Praktische Informatik

Technische Informatik 

B



BBN

Parallele Programmierung

Parallele Prozessoren Einteilung in die Abschnitte:

(13.01.04)

- Parallelit¨at in einzelnen Komponenten (kaum Beeinflussung der Programmierung) - Parallele Rechnerarchitekturen (eigentliche Mehrprozessorsysteme) - Rechnernetze (Zusammenarbeit mehrerer vollst¨andiger und zu selbst¨andiger Arbeit f¨ahiger Computer) Parallelit¨at in einzelnen Komponenten: Fließbandverarbeitung (pipelining) Sequentieller Ablauf von Aktionen A1 , A2 , . . . , An , wobei jede der Aktionen wiederum aus einer festen Anzahl von Aktionen besteht, kann auf n Prozessoren verteilt werden. Dabei werden wie an einem Fließband mit n Stationen die Aktionen zeitlich u ¨berlappt ausgef¨ uhrt. Befehlsfließband f¨ ur den Befehlszyklus des Von-Neumann - Rechners:



Prozessor 1 Befehl holen

Prozessor 2 → Adressen berechnen



Prozessor 3 Operanden holen

Prozessor 4 → Befehl ausf¨ uhren

Befehl 1 Befehl 2 Befehl 3

@ @ R @ @ @ R @

Befehl 1 @ @ R @ Befehl 2 @ @ R @

:

Befehl 1 @ @ R @

Befehl 2

Befehl 1

@ @ R @

:

Befehl 2

?

Zeit

=⇒ Durchsatzerh¨ohung (Durchsatz ist Verarbeitungsmenge in der Zeiteinheit) Operationsfließband f¨ ur Gleitpunktaddition:

67



6.4. Parallele Rechnerarchitekturen Proz. 1 Operanden holen



WS/SS 2003-04

Proz. 2 →

Proz. 3

Exponenten vergleichen



Mantissen verschieben

Proz. 4 →

Mantissen addieren

Proz. 5 →

Ergebnis normalisieren

Prozessoren f¨ ur spezielle Zwecke: • f¨ ur Ein- und Ausgabe • f¨ ur Gleitpunktoperationen (Co-Prozessor als Programml¨osung) Supercomputer: NCC SX-4, CRAY T3-A (MIMD) Verwendung von RISC-Prozessoren CISC-Pozessor (complete instruction set computer) & vollst¨andiger Befehlssatz von ca. 250 Einzelbefehlen Teile des Befehlssatzes werden nicht genutzt, deshalb Einsatz von RISC-Prozessoren (reduced instructions set computer) mit einem reduzierten Befehlssatz: Befehlsumfang liegt bei ca. 80 Befehlen. Kompensierung der fehlenden Befehle durch Softwarel¨osungen → mehr Platz auf dem Chip f¨ ur Register, Cache und Hardwaretests.

6.4 Parallele Rechnerarchitekturen Von parallelen Rechnerarchitekturen spricht man erst dann, wenn der Programmierer in seinem Algorithmus die einzelnen Prozessoren eines Multiprozessorsystems explizit nutzt. Parallele Rechnerarchitekturen f¨ uhren parallelisierte Algorithmen aus. Bsp.: z=

(x − y) · (x + y) 2·x·y

sequentiell:

parallel:

1. h1 = x - y

1. h1 = x - y

2. h2 = x + y

2. h1 = h1 · h2

3. h1 = h1 · h2

3. z = h1 /h3

4. h2 = 2 · x

Proz. 1

5. h2 = h2 · y 6. z = h1 /h2

68

h2 = x + y

h3 = 2 · x h3 = h3 · y

Proz. 2

Proz. 3



6.4. Parallele Rechnerarchitekturen

WS/SS 2003-04

Gesetz von Andahl Wenn n1 der Schritte eines Algorithmus nicht parallelisierbar sind Zeitanteile f¨ ur Parallelisie– sie also sequentiell ausgef¨ uhrt werden m¨ ussen, bleiben n−1 k rung u ¨brig, die nicht ausreichen, die Gesamtgeschwindigkeit zu ver-n-fachen. Parallele Rechnerarchitekturen sind nur dann sinnvoll zu nutzen, wenn die zu bearbeitenden Algorithmen nahezu vollst¨andig parallelisiert werden k¨onnen. D.h. Nutzung nur f¨ ur Spezialaufgaben. Aufgaben stammen fast ausschliesslich aus dem Bereich der numerischen Mathematik (L¨osung großer partieller Differentialgleichungssysteme) Kommunikationsproblem Parallele Rechnerarchitekturen liegen erst dann vor, wenn mehrere Prozesse gleichzeitig arbeiten und auf gemeinsame Daten zugreifen bzw. Daten austauschen. 1 

u ¨ber gemeinsamen Speicher

PP q

u ¨ber Verbindungsleitungen

 Kommunikationsarten  P

Kommunikation u ¨ber gemeinsamen Speicher Proz. 1 l

...

Proz. 2 . . . l Arbeitsspeicher

Proz. n l

⇒ Problem: Schreib-/Lesezugriff auf den Speicher erfolgt immer exklusiv (nur durch einen Prozessor)

Anzahl der Prozessoren begrenzt auf max. 30, die Verwaltungsaufwand einer Sequentialisierung entsprechen. Kommunikationsarten u (14.01.04) ¨ber Verbindungsleitungen (nicht zu verwechseln mit Rechnernetz) Jeder Prozessor besitzt einen eigenen lokalen Speicher. Anzahl der Prozessoren ist theoretisch unbegrenzt. Technisches Problem der Verbindungswege ist kompliziert. Bei Verbindungen von n Prozessoren mit den anderen (n-1) Prozessoren f¨ uhrt zu n(n−1) 2 2 Verbindungsleitungen, d.h. ≈ n2 . Technisch und wirtschaftlich nur f¨ ur wenige Prozessoren sinnvoll machbar. Verbindungstopologien:

69

6.5. Rechnernetz

WS/SS 2003-04

Man unterscheidet zwei Klassen von Verbindungen: • direkte Verbindung • indirekte Verbindung → Sie stellen Kompromisse hinsichtlich Leistung und Kosten dar. Fazit: Parallele Rechnerarchitekturen sind nur f¨ ur bestimmte, stark eingeschr¨ankte Aufgabenklassen geeignet. Gegensatz: Von-Neumann Rechner ist universell einsetzbar.

6.5 Rechnernetz Rechnernetze sind Verbindungen autonomer Rechner, die i.A. nicht an einer gemeinsamen Aufgabe arbeiten. Kommunikationsm¨oglichkeit wird als zus¨atzlicher Dienst angeboten. Protokolle: (Regeln des Ablaufs) einheitlich festgelegt (standardisiert), Stichw¨orter: LAN, WAN, homogen, heterogen

70

6.5. Rechnernetz

WS/SS 2003-04

Hauptanwendung von Rechnernetzen • Datenverbund Austausch von Daten • Funktionsverbund Netz erh¨alt Rechnerknoten mit speziellen Eigenschaften • Lastverbund Verteilung der Belastung auf einzelne Rechnerknoten kann durch Lastverteiler gesteuert werden Verteilte Systeme (sp¨ater mehr dazu) bedeutender Schritt u ¨ber gew¨ohnliche Rechnernetze hinaus: Netz erscheint wie ein Rechner, Software und Daten werden auf Netzknoten verteilt. Da Netzknoten heterogen sein k¨onnen, gibt es eine sog. Verteilungsplattform zur u ¨bergeordneten Steuerung. Vorteile durch sehr gutes Kosten-/Nutzen - Verh¨altnis

71

7 Datenstrukturen In der Programmierung wird der Begriff der (abstrakten) Datenstruktur eingef¨ uhrt, um Datenelemente, die zueinander in bestimmten beschreibbaren Beziehungen stehen, zu einer Gruppe zusammenzufassen. (z.B. lineares Feld, Datei)

7.1 Datenstruktur 7.1.1 Definition einer Datenstruktur Datenelemente (Datenobjekte) werden also gruppiert, um manipuliert zu werden. Werte, der Datenobjekte werden durch n-Tupel von Zeichenfolgen dargestellt. ( n ≥ 1) Eine Datenstruktur wird definiert nach dem Typ der Relationen, der die einzelnen Datenobjekte zu einem strukturierten Gebilde zusammenfasst. 7.1.2 Klassifizierung von Datenstrukturen Es gibt 4 fundamentale Datenstrukturen: 1. lineare Ordnung (Bsp. sind ein- und mehrdimensionale Felder) 2. Partition (Bsp. sind B¨aume) 3. Assoziation ( Bsp. sind relationale Dateien) 4. Graph (Bsp. gerichtete Graphen) 7.1.3 Darstellung von Datenstrukturen Darstellung der Datenstruktur in drei Teilen (in programmtechnischer Hinsicht und im Hinblick auf Speicherung) Datenobjekt:

Identifikationsteil

Datenteil

Relationsteil

Identifikationsteil: dient eindeutiger Bezeichnung eines Datenobjekts einer Datenstruktur Datenteil: besteht aus Wert des Datenobjekts (n-Tupel von Dateien n ≥ 1)

72

7.1. Datenstruktur

WS/SS 2003-04

Relationsteil: Beschreibung der Beziehungen (Relationen zu anderen Datenobjekten (n-Tupel n ≥ 1 von Adressen)) Eine Datenstruktur heißt gespeichert, wenn jedem Element der Datenstruktur eindeutig eine Speicherstelle zugewiesen worden ist, die den Daten- und Relationsteil aufnimmt. Die Identifikation dieser Speicherstelle erfolgt u ¨ber deren Adresse. Die Speicherung der einzelnen Wertkomponenten des Relationsteils von gespeicherten Objekten kann sequentiell oder gekettet erfolgen. D.h. man spricht von sequentieller Speicherung einer Datenstruktur, wenn ihr Relationsteil sequentiell organisiert ist. Die sequentielle Realisierung einer Relation R ist nur dann m¨oglich, wenn jedes Objekt h¨ochstens einen Nachfolger hat. Bsp.: lineare Liste Kunde →

Kunde 2



Kunde 3



...



Kunde n

C++ Feld int i array[10] i array[0] i array[1] i array[2] : : i array[9] Bin¨ arbaum Kunde 1 @

R @

Kunde 2

Kunde n

...

Kunde 3 @ @ R @

R @

...

Kunde n

Sind mehrere Nachfolger m¨oglich, muss die Relation gekettet gespeichert sein. Der Relationsteil eines Datenobjekts gibt also s¨amtliche Nachfolger an. Man spricht von geketteter Speicherung. Darstellung der geketteten Speicherung:

73

7.1. Datenstruktur

WS/SS 2003-04

7.1.4 Lineare Felder Lineare Felder sind Datenstrukturen, bei denen die Datenobjekte direkt (unverzweigt) aufeinanderfolgend angeordnet sind. Jedes Objekt hat bis auf das Letzte genau einen Nachfolger. Speicherungsformen ... Datenobjekt 1 Datenobjekt 2 ... ...

... Datenobjekt 1 ... ... Datenobjekt 2 ... ... Datenobjekt n ...

sequentiell, dicht gespeicherte Liste → z.B. Array

... ...

gekettete Speicherung, Im Datenobjekt existiert ein Verweis auf den Nachfolger → z.B. lineare Liste

Anwendungen 1. Stack (Stapel) 2. Warteschlange (Queue) Bei sequentieller Speicherung ist das L¨oschen eines Datenobjekts und bei geketteter Speicherung das Auffinden des i-ten Objekts aufwendig. Deshalb beshr¨ankt man sich h¨aufig auf lineare Datenstrukturen, bei denen nur das Anfangs- oder Endobjekt manipuliert wird.

74

7.1. Datenstruktur

WS/SS 2003-04

• Stack ist ein lineares Feld, bei dem nur das oberste Datenobjekt bearbeitet wird. ein ↓

aus ↑

Stack als eingeschr¨ankter Datenspeicher

Die Datenobjekte werden in der Reihenfolge ihres Eintreffens auf den Stack gelegt und in umgekehrter Reihenfolge wieder entfernt. LIFO-Prinzip (Last In First Out) • Queue ist ein lineares Feld, bei dem nur am Anfang (Kopf) Objekte entfernt werden und am Ende (Schwanz) eingekettet werden. FIFO-Prinzip (First In First Out) Anwendung: BS und andere Anwendungen Spooling-System (bei Druckauftr¨agen) 7.1.5 B¨ aume B¨aume sind die wichtigsten nichtlinearen Datenstrukturen, die bei rechnergest¨ utzten Algorithmen verwendet werden. D.h. Datenstrukturen, bei denen Verzweigungsrelationen (wie sie in der Natur bei B¨aumen u ¨blich sind) beschrieben werden. Bsp.:

75

7.1. Datenstruktur

WS/SS 2003-04

Bin¨ arer Baum Ein Baum heißt bin¨arer Baum, wenn er geordnet und wenn jede ihm ¨ aufbauende Aquivalenzrelation eine bin¨are Zerlegung definiert. ¨ Unter einer Aquivalenzrelation einer Menge A versteht man folgendes: Wenn ein Pr¨adikat P(a), a ∈ A, das erf¨ ullt sein kann oder nicht, dazu benutzt wird, um eine Klassenzerlegung von A vorzunehmen. Dieses Pr¨adikat definiert zwei Teilmengen A1 und A2 ∈ A: ¨ - A1 = {a ∈ A | P (a) ist erf¨ ullt} Aquivalenzklassen HH j A = {a ∈ A | P (a) ist nicht erf¨ H ullt} 2 ¨ Durchaus m¨oglich, dass eine Aquivalenzklasse leer ist. Bsp.: K1

= {10, 7, 14, 4, 8, 6, 12, 18, 2, 13} = {a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 }

RP1 = 10 P1 : oj < 10 @ @ R @



K2 = { 7 , 4, 8, 6, 2} RP2 = 7 P2 : oj < 7

K3 = {10, 14 , 12, 18, 13} RP3 = 14 P3 : oj < 14

@

K4 = { 4 , 6, 2}    

@ @ R @

K5 = {7, 8 }

A A A

   U A



@ R @



K6 = {10, 12 , 13}

A A

   

A AU

K7 = {14, 18 }

A

 

A A AU

 

A A A AU

K8 = {2}K9 = {4, 6} K10 = {7}K11 = {8} K12 = {10}K13 = {12, 13} K14 = {14}K15 = {18}   

 A A A

 A  A  A  AU

U A

K16 = {4} K17 = {6}

K18 = {12}K19 = {13}

76

7.1. Datenstruktur

WS/SS 2003-04

Begriffsbildung:

(21.01.04)

• Wurzel (Anfangsknoten) • Knoten – innere Knoten – ¨außere Knoten, also Endknoten • Ast (sortierte Folge von Kanten (Verbindungslinien) zu einem Blatt) • Teilbaum (sortierte Folge von B¨aumen, die von einem Knoten zu den Bl¨attern f¨ uhren)

geordneter Baum, Bin¨ arbaum Ein Baum, in dem f¨ ur jeden Knoten Ki die Menge der Nachfolger linear geordnet ist, heisst geordneter Baum. Ein geordneter Baum heisst Bin¨arbaum, wenn jeder Knoten h¨ochstens zwei Nachfolger hat und diese als linker bzw. rechter Nachfolger gekennzeichnet sind. Eine h¨aufig geforderte Operation auf bin¨aren B¨aumen ist das Durchlaufen“, das Traversieren. ” Das Traversieren sucht jeden Knoten genau einmal auf. Arten des Traversierens: • Preorder-Traversieren • Inorder-Traversieren • Postorder-Traversieren

77

7.1. Datenstruktur

WS/SS 2003-04

Preorder-Traversieren

Vorg¨anger → linker Nachfolger → rechter Nachfolger

Inorder-Traversieren

linker Nachfolger → Vorg¨anger → rechter Nachfolger

Die Reihenfolge der Knoten bei der Traversierung entspricht der Sortierfolge der Knoten im Baum. Postorder-Traversieren

linker Nachfolger → rechter Nachfolger → Vorg¨anger

Bsp.:

Gegeben.: Bin¨arbaum Gesucht: Pre-, In-, Postorder Folge

Inorder: 2, 4, 6, 7, 8, 10, 12, 13, 14, 18 Preorder: 10, 7, 4, 2, 6, 8, 14, 12, 13, 18 Postorder: 2, 6, 4, 8, 7, 13, 12, 18, 14, 10

78

7.1. Datenstruktur

WS/SS 2003-04

7.1.5.1 Speicherung von B¨ aumen Standardspeicherung f¨ ur B¨aume ist die gekettete Speicherung. Jeder Knoten zeigt u ¨ber seinen Relationsteil auf seine Nachfolger. Ist die Anzahl der Nachfolger gross (bei Vielwegb¨aumen), kann der Relationsteil noch indirekt gespeichert werden. 7.1.5.2 Bin¨ arbaum und arithmetischer und logischer Ausdruck (Rechenbaum) B¨aume stellen meist eine u ¨bersichtliche Art dar, komplexe Strukturen darzustellen. Verbreitet ist die Anwendung f¨ ur die Darstellung arithmetischer und logischer Terme. Bsp.: Arithmetischer Ausdruck √ f = (a − b) ∗ c − (d/b + e) Darstellung des Ausdrucks durch einen Bin¨arbaum, indem jeder Operator (-, +, *, /, √ ) durch einen Knoten bezeichnet wird. Die vom Operatorknoten ausgehenden Nachfolger f¨ uhren zu seinem Operanden. Operanden werden durch Bl¨atter repr¨asentiert.

Bin¨arbaum in der InorderTraversierung der geg. Schreibweise

Aus dem Bin¨arbaum l¨aßt sich auch die polnische Notation (oder klammerlose Pr¨afixNotation) herleiten. Pr¨afix-Notation f¨ uhrt zu: √ f = − ∗ −abc + /db e und die umgekehrte polnische Notation (UPN) oder Postfix-Notation ableiten: √ f = ab − c ∗ db/e + − ¨ Ubungen zu Notationen und B¨aumen

79

7.1. Datenstruktur

WS/SS 2003-04

7.1.6 Relationale Dateien Relationale Dateien sind Verk¨orperungen der Assoziationen. (27.01.04) Dateien sind komplexe Datenstrukturen. Sie enthalten alle f¨ ur einen Verwendungszweck (inhaltlich) relevanten Informationen. Bsp.: Mitarbeiter-Datei Personal-Nr. 0815 4711 ... ...

Name Schulz Schmidt ... ...

Adresse ... ... ... ...

Qualifikation ... ... ... ...

... ... ... ... ...

Steuerklasse ... ... ... ...

Schema wird im Zusammenhang mit Dateien als Satz (Datei) bezeichnet. Das Schema enth¨alt Felder. Gesamtheit aller Datens¨atze bildet die Datei. Dem Dateibegriff liegt das relationale Datenmodell zugrunde. Es definiert Verbindungen, die zwischen den einzelnen Feldern eines Satzes existieren, in mathematischer Form mit Hilfe von Relationen. Der Benutzer einer solchen relationalen Datei manipuliert seine Daten nur in Form von Relationen (Tabellen). Begriffe: - Bezeichnungsweise des relationalen Datenmodells Bezeichnung der Tabelle, die eine Relation beschreibt, mit einem Namen. Tabellenspal¨ ten werden mit Uberschriften versehen, den Attributen. Die einzelnen Werte heissen Attributwerte. Die Objektmenge definiert also alle m¨oglichen Attribute der einzelnen Relationen Ri . In der Praxis wird h¨aufig statt mehrerer bin¨arer Relationen eine n-stellige (n ≥ 2) Relation pro Datei gespeichert, da dies weniger Speicheraufwand bedeutet. Die Datenstruktur heisst dann n-stellige relationale Datei. (28.01.04) 7.1.6.1 Relationenalgebra Relationale Dateien sind Dateien, deren (Schl¨ ussel) in Relationen zueinander stehen. Schwerpunkt liegt auf Betrachtung der Operationen auf diesen Relationen. Nutzer dieser Dateien manipulieren die entsprechenden Informationsinhalte mit Hilfe von Relationenoperationen. Die Operationen der Relationenalgebra umfassen die klassischen Mengenoperationen, wie Vereinigung, Durchschnitt, Differenzbildung zweier Mengen. Die Operationen im engeren Sinne sind: Projektion, Verbund, Restriktion, und Division.

80

7.1. Datenstruktur

WS/SS 2003-04

Projektion wird benutzt, um aus Relationen einzelne Attribute auszuw¨ahlen bzw. zu entfernen. Bsp.: 6 -stellige Relation Mitarbeiter PNR Name 1001 Hans Meier 1005 Walter Klein 2010 Lisa Wandel 2030 Karl May

Wohnort Stuttgart Ulm M¨ unchen Stuttgart

Geschlecht m m w m

Beruf Programmierer Techniker Informatiker Administrator

Steuerklasse 4 3 4 4

R sei n-stellige Relation und L eine Liste mit L = i1 , ..., ik mit k paarweise verschiedener Attributnummern ( k < n). Dann ist die Projektion ΠL (R) von R auf L definiert als eine k-stellige Relation, deren Attribute gerade zu den Indizes ij (j = 1, ..., k) korrespondierenden Attribute von L sind. Bsp.: Projektion der Relation Mitarbeiter auf die Attribute PNR und Name bzw. Attributnummern 1 und 2 (L = 1,2). ⇒ Kurzfassung der Relation Mitarbeiter

Π1,2

PNR 1001 (Mitarbeiter) = Mitarbeiterkurzfassung 1005 2010 2030

Name Hans Meier Walter Klein Lisa Wandel Karl May

Verbund Haben zwei Relationen denselben Wertebereich bzgl. eines Attributs, so k¨onnen sie zu einer neuen gr¨oßeren Relation verbunden werden. Sei R (Attribut A, Attribut C, ...) und S (Attribut B, Attribut D, ...) zwei Relationen, bei denen die Attribute A und B denselben Wertebereich W haben, so ist der Verbund R[A, B]S der Relationen R und S bzgl. der Attribute A und B wie folgt definiert: R[A, B]S = {r · s | r ∈ R, s ∈ S, r[A], s[B]} r · s = (A1 , ..., An ) · (b1 , ..., bn ) = (a1 , ..., an , b1 , ..., bn ) und r[A] bzw. r[B] sind wie folgt definiert: Ist LA = {(i1 , ..., ik ) | {i1 , ..., ik } ⊆ {1, ..., n}, k = 1, ..., j} die Liste von Attributkombinationen, die zu dem Attribut A (das im Allgemeinen Fall eine Attributkombination sein kann) geh¨oren, so wird r[A] definiert als r[A] = r[LA ] = (ai1 , ..., aik ).

81

7.1. Datenstruktur

WS/SS 2003-04

r[A] = s[W] definiert, dass die Attributwerte des Relationselements r bzgl. des Attributs bzw. der Attributkombination A identisch sind mit denjenigen des Relationselements s bzgl. B. Bsp.: R sei Relation Projekt und S die Relation Mitarbeiternummer Projekt: PJNR P1 P1 P2 P3

Mitarbeiternummer: PNR 1001 1005 2010 2030

PNR 1001 1005 2010 2030

Name Hans Meier Walter Klein Lisa Wandel Karl May

Das Resultat hat folgendes Ausehen: Projekt Mitarbeiter: PJNR P1 P1 P2 P3

PNR 1001 1005 2010 2030

Name Hans Meier Walter Klein Lisa Wandel Karl May

Restriktion Selektiert aus einer Relation R alle Tupel r, die eine gegebene Bedingung erf¨ ullen. R[Bedingung] = {r ∈ R | r erf¨ ullt Bedingung} Restriktion nimmt eine bin¨are Zerlegung von r vor und vernachl¨assigt die Teilmenge von r, die die Bedingung nicht erf¨ ullt. Bsp.: Suchen aller Mitarbeiter, die in einer bestimmten Stadt wohnen, z.B. Stuttgart Mitarbeiter-Stuttgart PNR 1001 2030

Name Hans Meier Karl May

Division In ihrer einfachsten Form kann die Operation f¨ ur bin¨are Operationen definiert werden. Es sei R ⊆ A × B eine bin¨are Relation und ai ein weggelassenes Element von A, dann wird die Division von R durch ai wie folgt definiert: R/ai = {(ai , bj ) ∈ R | (ai , bj ) ∈ R, bj ∈ B}

82

7.1. Datenstruktur

WS/SS 2003-04

Da in den verschiedenen Wertepaaren (ai , bj ) die erste Komponente stets unver¨andert ist, gen¨ ugt es die entsprechende Teilmenge von B anzugeben. B/ai = {bj ∈ B | (ai , bj ) ∈ R} Bsp.: R sei Relation Projekt und P 1 ein bestimmtes Projekt. Dann ist R/P 1 = {(P 1, 1001), (P 1, 1005)} und P N R/P 1 = {1001, 1005}. Anwendung: SQL (structured query language) ,→ M¨oglichkeit der Realisierung von assoziativen Anfragen an relationale Dateien (relationale DBS (RDBS)).

83

8 Betriebsysteme 8.1 Aufbau von Betriebssystemen (BS) BS u ¨bernimmt Steuerung aller internen Abl¨aufe Zweck eines BS Rechner m¨oglichst einfach, zuverl¨assig und wirtschaftlich zu nutzen. Vorraussetzung ist Vorhandensein zahlreicher Einzelfunktionen (Komponenten). Einzelfunktionen werden zu Komplexit¨atsstufen zusammengefasst. Schwerpunkt der Beschreibung liegt auf funktionalen Eigenschaften eines BS. Einteilung des Zwecks in 3 Aufgabengebiete 1. Bereitstellung von Hilfsmitteln zur Bearbeitung von Benutersoftware. M¨oglichkeit der gleichzeitigen (parallelen) Bearbeitung mehrerer Programme (Multiprogrammbetrieb), m¨oglichst von verschiedenen Benutzern (Multiprogramm/Multiuserbetrieb) 2. Keine Notwendigkeit der genauen Kenntnis von Hardwareeigenschaften und speziell BS-Komponenten (z.B. Ger¨atetreiber, Bedienungsprogramm f¨ ur Peripherieger¨ate) 3. Die Betriebsmittel (Ressourcen), alle Hard- und Softwarekomponenten eines Rechners, die zur Ausf¨ uhrung eines Programms ben¨otigt werden, m¨ ussen koordiniert und den jeweiligen Anforderungen an mehrere gleichzeitig arbeitende Benutzer aufgeteilt werden. Kritische Ressourcen sind CPU und Speicher. Allgemein vom BS angebotene Einzelfunktionen: 1. Unterbrechungsverarbeitung (interrupt handling) Identifikation jedes Unterbrechungssignals (Programm oder E/A) und Aktivierung der weiteren Aktionen (z.B. Start eines neuen Programms oder Fortsetzung eines E/A-Transfers) 2. Verteilung (dispatching) Umschalten des Prozessors von einem Auftrag zu einem anderen. 3. Betriebsmittelverwaltung (resource management) Ressourcen sind z.B. Arbeitsspeicher, Prozessor, E/A-Ger¨ate, Programme, Daten ...

84

8.1. Aufbau von Betriebssystemen (BS)

WS/SS 2003-04

BS stellt Funktionen zum Belegen, Freigeben und Betreiben dieser Ressourcen bereit. 4. Programmallokation (programm allocation) Vorgang umfasst das Binden (Linken) von Teilprogrammen zu einer Einheit, danach das Laden dieser Einheit in den Arbeitsspeicher und das “Verdr¨angen“ von Programmen aus dem Arbeitsspeicher, wenn ein zu ladendes Programm nicht in den Arbeitsspeicher passt. 5. Dateiverwaltung (file management) Organisation des Speichers in Form von Dateien (files) auf externen Datentr¨agern. Funktionen der Dateiverwaltung: • Speicherung • (Ver¨anderung) Modifikation • Wiedergewinnung (retrieval) von Informationen innerhalb von Dateien 6. Auftragssteuerung (job control) Festlegung der Reihenfolge in der die eingegangenen Auftr¨age (jobs) bearbeitet werden sollen. Existenz von Auftragssteuersprachen. 7. Zuverl¨assigkeit (reliability) St¨orungen und Ausf¨alle der Hardware, (logische) Fehler in der Systemsoftware oder falsches Verhalten“ von Anwendersoftware k¨onnen die Betriebsbereitschaft eines ” Rechners st¨oren. Die F¨ahigkeit eines BS auf solche unerw¨ unschten Ereignisse angemessen zu reagieren, wird als Zuverl¨assigkeit bezeichnet. Unterscheidung: Eigenschaft: • Korrektheit – funktional richtiges Verhalten • Robustheit – Sicherheit gegen Fehlbedienung, Aufrechterhaltung einer Mindestfunktionalit¨at • Toleranz – st¨andige Betriebsbereitschaft Betriebsarten und Gemeinsamkeiten von BS Betriebsarten: • Stapelbetrieb (batch mode) gekennzeichnet durch Sequenzialit¨at, keine M¨oglichkeit des Eingriffs in Programme

85

8.1. Aufbau von Betriebssystemen (BS)

WS/SS 2003-04

• Dialogbetrieb (timesharing mode) mehrere Nutzer benutzen den Rechner gleichzeitig mit Dialogger¨aten. Die einzelnen Auftr¨age werden konkurrierend abgearbeitet, nicht sequentiell; in einer vertretbar kurzen Zeitspanne. Regel, die diesen Zeitanforderungen gen¨ ugt, heißt Rundlaufsteuerung (round robin scheduling). Dabei erh¨alt jeder Teilnehmer am Dialogbetrieb eine kurze“ Zeitscheibe der Pro” zessorzeit (50 ms - 1 s) Ist das Programm am Ende der Zeitscheibe (nicht zu Ende bearbeitet), wird es unterbrochen und in einer Queue abgelegt, wo es auf die n¨achste Zeitscheibe wartet. • Echtzeitbetrieb (real time mode) Programme werden ebenfalls konkurrierend ausgef¨ uhrt. Programmsteuerung erfolgt allerdings nicht u ¨ber eine gleichverteilte Zeitinanspruchnahme, sondern u ¨ber eine Priorit¨atsvergabe f¨ ur Programme. Konstruktionsprinzipien von BS BS ist eine Folge von Abstraktionsstufen. Jede dieser Stufen kann man als abstrakte Maschine bezeichnen. Man spricht von virtueller Maschine. Hierarchie von abstrakten Maschinen Mi (i = 1, ..., n). Mi werden durch darunterliegende Programmschichten Pi implementiert. ///////// ///////// /////////

Mn Pn Mn−1 Pn−1 M1 P1

mit steigendem Index steigt der Abstraktionsgrad, die zeitkritischen Funktionen sind in der untersten Maschine M1 installiert.

realer Prozessor

86

8.2. Prozesse und ihre Zust¨ ande

WS/SS 2003-04

Exemplarische Darstellung einer BS-Hierarchie: (04.02.04) – nach oben offen / / / / / / / / / / / / / / / / / / / / / M4    Schale  Auftragssteuerung     / / / / / / / / / / / / / / / / / / / / / M3   alle darauf aufbauenden h¨oheren Programmallokation | Dateiverwaltung  Funktionen des BS  / / / / / / / / / / / / / / / / / / / / / M2   (Umfang abh¨angig vom Verwen   Ressourcenverwaltung   dungszweck des BS) / / / / / / / / / / / / / / / / / / / / / M1 Betriebssystemkern – minimaler Satz von Funktionen realer Prozessor M0 – (durch Standard geregelt) Die Struktur eines BS ergibt sich aus den Relationen zwischen den einzelnen Programmschichten. Diese Relationen sind stets gleichgerichtet (von oben nach unten). D.h. obere Schichten beauftragen untere Schichten; diese k¨onnen nur R¨ uckmeldungen nach oben bzgl. des letzten Auftrags geben.

8.2 Prozesse und ihre Zust¨ ande Prozessdefinition: (Prozess-Task) =⇒ rechnerinternes Modell, das einen technischen Vorgang beschreibt Programm statische Sequenz von Anweisungen Ein Prozess verk¨orpert ein in Abarbeitung (auf einem Rechner) befindliches Programm, mit entsprechenden Daten. L¨auft“ ein Programm mit unterschiedlichen Daten, werden also unterschiedliche Pro” zesse erzeugt. Damit ist ein Prozess die Beschreibungseinheit sowohl f¨ ur BS als auch f¨ ur Anwendungssoftware als funktionale und strukturierende (gliedernde) Betrachtung. Prozessumschaltung und Mehrprogrammbetrieb Prozesszust¨ ande 1. Bereit (ready) Prozess strebt Zuteilung des realen Prozessors an, hat aber bereits alle anderen erforderlichen Ressourcen zugeteilt bekommen. 2. Laufend (runnning) Prozessor f¨ uhrt den Prozess aus.

87

8.2. Prozesse und ihre Zust¨ ande

WS/SS 2003-04

3. Blockiert (blocked) Prozess strebt Prozessorzuteilung nicht an, da er noch auf die Erf¨ ullung einer Bedingung wartet. (z.B. Datentransfer ist noch nicht beendet) 4. Beendet (terminated) Prozess ist beendet (Anweisungsfolge des Programms ist ausgef¨ uhrt); die Ressourcen sind dem Prozess entzogen. Alle Prozesse, die nicht im Zustand “running“ sind, werden in Queues eingeordnet.

zust¨andige BS-Komponente ist der Dispatcher. Pseudoprozessor oder Prozesskontrollblock (BS-interne Datenstruktur) Verk¨orperung des verwaltungstechnischen Repr¨asentanten eines Prozesses. Pseudoprozessor speichert Abbild des kompletten Registersatzes des realen Prozessors mit Inhalt, eine Prozessidentifikation, Informationen zu Zustandsvariablen, Informationen u ¨ber ben¨otigte Ressourcen.

88

8.3. Prozesssynchronisation

WS/SS 2003-04

& MultitaskBetrieb ↓ MultiuserBetrieb

Einzelfunktionen und Prozesszust¨ ande

8.3 Prozesssynchronisation (15.03.2004) Im Multitaskbetrieb m¨ ussen Prozesse, falls sie abh¨angig sind, aufeinander abgestimmt werden.

89

8.3. Prozesssynchronisation

WS/SS 2003-04

abh¨ angige Prozesse sind datenabh¨angige Prozesse, d.h. Prozesse verwenden gemeinsame Daten. Prozesssynchronisation ist der allgemeine Begriff daf¨ ur, dass innerhalb abh¨angiger Prozesse eine vorgeschriebene Reihenfolge von Operationen, die durch Synchronisationsbedingungen festgelegt sind, eingehalten werden. Alle Synchronisationsprobleme dieser Art lassen sich auf zwei Grundklassen zur¨ uckf¨ uhren: • der wechselseitige Ausschluss (mutual exclusion) • die Kooperation (cooperation) Realisierung der Synchronisation im BS durch Semaphor-Konzept. • wechselseitiger Ausschluß muss sichergestellt sein, dass Operationen verschiedene abh¨angige Prozesse nicht gleichzeitig ausgef¨ uhrt werden. Reihenfolge startender Prozesse spielt keine Rolle. • Kooperation hier kommt es auf die Reihenfolge der Operationen abh¨angiger Prozesse an Semaphor-Konzept Semaphor-Signal Bin¨arsemaphor - zweistelliges Signal (einfachstes Synchronisationswerkzeug) Auf einem Semaphor sind nur zwei Operationen definiert: • (P)assiere - Operation • (V)erlasse - Operation P-Operation erniedrigt den Z¨ahler um eins und blockiert den diese Operation aufrufenden Prozess, wenn der Wert des Z¨ahlers negativ wird. Der Prozess wird in diesem Fall in eine Queue eingeordnet, die diesem Semaphor zugeordnet ist. Bei jeder V-Operation wird ein Z¨ahler um eins erh¨oht. Befindet sich ein Prozess in der Semaphor-Queue, wird er deblockiert und in den Bereit-Zustand versetzt.

-

kritischer Bereich

90

-

8.3. Prozesssynchronisation P-Op.: -1

WS/SS 2003-04

Mutex = 1

Prozess A Mutex = 0 Prozess B Mutex = -1 Einordnung in Queue: Mutex = 0

V-Op.: 1 Prozess A Prozess A

Prozess B Prozess C

Prozess B

Mutex = -1

Mutex wird zu Beginn auf 1 gestellt, d.h. es befindet sich kein Prozess im kritischen Bereich. Befindet sich ein Prozess (A) im kritischen Bereich und hat ein anderer Prozess (B) noch keine Operation ausgef¨ uhrt, so steht mutex = 0. F¨ uhrt B dann eine P-Operation aus, so wird er blockiert und in die Queue eingeordnet (mutex = 1). Erst durch das Signal der V-Operation von A wird B wieder bereit und beginnt seine Operationen direkt nach einer P-Operation. Bereiche (Anweisungsfolgen) innerhalb der einzelnen Prozesse, in denen auf eine kritische Ressource zugegriffen wird, heißen kritische Bereiche (critical region). Auf kritische Ressourcen kann nur exklusiv zugegriffen werden. Prozesskooperation Mehrere Prozesse arbeiten an einer gemeinsamen Aufgabe. Die Operationen der einzelnen Prozesse m¨ ussen koordiniert werden. Klassisches Bsp.: Erzeuger-Verbraucher-Problem → Ein Prozess erzeugt Daten, ein anderer Prozess konsumiert Bsp.: Erzeuger-Prozess stellt Messdaten bereit, Verbraucher-Prozess wertet Messdaten aus.

91

8.4. Ressourcenverwaltung

WS/SS 2003-04

Erzeuger darf Pufferelement nur f¨ ullen, wenn es leer ist. Verbraucher darf ein Pufferlement erst leeren, wenn es gef¨ ullt ist.

P(leer) F¨ ullen Puffer V(voll)

P(voll) Leeren Puffer V(leer)

F¨ ur die L¨osung des Problems werden zwei Semaphore VOLL und LEER definiert. Sie werden durch beide Prozesse wie folgt benutzt: - Semaphor VOLL wird mit 0 initialisiert - Semaphor LEER wird der Pufferkapazit¨at max. gleichgesetzt Typisch ist gekreuzte Anwendung der P- und V-Operation. → Anwendung im BS Unix: Pipe

8.4 Ressourcenverwaltung Ressourcen (Betriebsmittel) – alle zur Durchf¨ uhrung eines Prozesses notwendige Objekte (Prozessor, Speicher, Daten, Ger¨ate, Code usw.) Ressourcenzuteilung: • statisch vor Prozessbeginn erfolgt Zuteilung aller Ressourcen • dynamisch Zuteilung der Ressourcen erfolgt bei Bedarf (w¨ahrend der Laufzeit), ebenso der Entzug wenn Ressource nicht mehr ben¨otigt wird. Benutzungsart von Ressourcen kann

92

8.4. Ressourcenverwaltung

WS/SS 2003-04

- dediziert (dedicated): nur einem Prozess gewidmet → Gruppe - gemeinsam (shared) → Speicher erfolgen. Aufgaben der Ressourcenverwaltung 1. Administrative Aufgaben wie Nachweis u uhrung von Sta¨ber Ger¨atestatus und F¨ tistiken (z.B. Auslastung). Dazu existieren interne Datenstrukturen, z.B. Ressource-Tabelle. Zustandsinformationen: - Belegungsplan f¨ ur jede Ressource - Ressourcenbelegung f¨ ur jeden Prozess 2. Festlegung der Strategie der Ressourcenzuteilung (statisch/dynamisch) 3. Synchronisation von Prozessen beim Belegen und Freigeben von Ressourcen 4. Ausf¨ uhrung von Funktionen zur Betreibung von Ressourcen (Treiber-Prozesse) 8.4.1 E/A-Verwaltung (16.03.04) Funktionen der E/A-Verwaltung: 1. E/A-Ablaufplaner (I/O - Scheduler) 2. E/A-Treiberprozesse (I/O - Handler) Prozess fordert eine E/A-Operation auf einem Peripherieger¨at an, indem er das geeigneten Modul (Prozess) im Betriebssystem aufruft und einen Parameterversorgungsblock mitliefert, der die Art des gew¨ unschten E/A-Vorgangs pr¨azisiert. Vorg¨ange bleiben dem aufrufenden Prozess transparent. E/A-Ablaufplaner entscheidet, welcher E/A-Kanal zur Ressourcenanforderung zugeteilt wird und legt fest, welche Pfade zu dem Ger¨at genutzt werden sollen. Wenn Datentransfer beendet ist, wird Pfad wieder freigegeben. E/A-Treiberprozesse f¨ uhren den physischen E/A-Vorgang aus, indem sie dem jeweiligen E/A-Ger¨at zugef¨ uhrt werden. Hierzu z¨ahlen die Erzeugung eines Programms f¨ ur den Kanal, der Anstoss und die Durchf¨ uhrung der Daten¨ ubertragung und der zugeh¨origen Bearbeitung der Unterbrechungssignale. Administrativer Teil des I/O-Schedulers u uberwacher (I/O¨bernimmt der E/A-Verkehr¨ traffic controller). Er u uhrung der Statusfunktionen, verwaltet damit die internen Daten¨bernimmt die F¨ strukturen f¨ ur die Ressourcenverwaltung (z.B. Kontrollbl¨ocke f¨ ur Ger¨ate).

93

8.4. Ressourcenverwaltung

WS/SS 2003-04

8.4.2 Arbeitsspeicherverwaltung Anliegen ist hohe Auslastung der Ressource Arbeitsspeicher. Betriebssystem muss einzelnen Prozessen Arbeitsspeicher zuweisen. Aufgaben: Belegung und Freigabe von Arbeitsspeicher Grundfunktionen: Allocate ( → Zuteilung von Speichersegmenten) und Delocate ( → Freigabe von Speichersegmenten) ur einen Prozess gestreut u Arbeitsspeicher wird in Segmente eingeteilt, die f¨ ¨ber den gesamten Bereich verteilt sein k¨onnen. Starre Segmentierung Einfachste Form der Speichereinteilung – in n gleich große Segmente. Jedes der Segmente enth¨alt den Adressraum eines Prozesses: Arbeitsspeicher Segment 1 Segment 2 : : Segment n

Prozess 1 Prozess 2 : : Prozess n

M¨oglichkeit in diesem Zusammenhang, auch Segmente unterschiedlicher Gr¨oße starr anzulegen. Un¨okonomisch, da Segmentgr¨oßen nicht unbedingt an Prozessgr¨oßen ausgerichtet sind. Es wird unter Umst¨anden Speicherplatz verschenkt. Besser: Variable Segmentierung Segmentgr¨oße wird an die Prozessgr¨oße angepasst. Bsp.:

94

8.4. Ressourcenverwaltung

WS/SS 2003-04

Anfangszustand der Betrachtung Speicherbedarf f¨ ur neue Prozesse

0K

BS

(312 K)

312 K 320 K 352 K 384 K

Prozess 1 Prozess 2 // frei //

 (8 K)   (32 K)  )  (32 K)  

Prozess 3 504 K

(24 K)

Prozess 5

(128 K)

Prozess 6

(256 K)

 

(120 K)    ) 

// frei //

Prozess 4

(520 K)

Speicheradressen

Prozesse 2 und 3 sind beendet 0K

BS

(312 K)

Prozess 1 // frei // Prozess 4

(8 K) (32 K) (24 K)

// frei //

(128 K)

Prozess 5

(128 K)

Prozess 6

(256 K)

// frei //

(136 K)

312 K 320 K 352 K 376 K

504 K

632 K

888 K

1024 K

Speicherzuteilungsverfahren Beim First-Fit-Verfahren wir die sog. Freiliste nach den Adressen sortiert. Die Suche beginnt bei der niedrigsten Adresse und wird beendet, wenn das erste freie Segment

95

8.5. Programmallokation

WS/SS 2003-04

gefunden wird, den die Speicheranforderung befriedigen kann. Beim Best-Fit-Verfahren wird nach der Segmentgr¨oße sortiert. Es wird das kleinste freie Segment gesucht, das den Anforderungen entspricht. (Verwaltungsaufwand gr¨oßer) Kompaktifizierung und Relokation Wesentlicher Nachteil bei diesen Verfahren liegt bei der Fragmentierung des Speichers. Der totale freie Speicher wird in viele kleine Segmente zerlegt. Problem kann durch compactification gel¨ost werden. In periodischen Zeitabst¨anden werden die freien Segmente verdichtet. Man spricht von Speicherbereinigung (garbage collection). Im Detail muss daf¨ ur Sorge getragen werden, dass alle adressbehafteten Gr¨oßen des Prozesses ge¨andert werden, damit der Prozess im neuen Segment geordnet ablaufen kann. Typische Gr¨oßen, die von Adressen abh¨angig sind, sind Datenstrukturen, die Zeiger und Adressen ben¨otigen. Es ¨andern sich die Prozessanfangsadresse und alle Adressen innerhalb der Prozesse relativ zu dieser Anfangsadresse. ¨ exisiDer Vorgang der Adressausrichtung heisst Relokation (relocation). Ublicherweise tiert eine Hardwareunterst¨ utzung in Form eines Basis- oder Relationsregisters.

8.5 Programmallokation 8.5.1 Binden und Laden (22.03.04) Programmallokation umfasst alle Schritte, die zur Ausf¨ uhrungsf¨ahigkeit eines Programms f¨ uhren. Programmallokation als Vorgang gliedert sich in 3 Schritte: 1. Namensfunktion N transformiert symbolische, mehrdeutige Namen eines Anwendungsprogramms in eindeutige logische Adressen des AS. 2. Speicherfunktion S bildet eindeutige logische Adressen eines Anwendungsprogramms in physikalische Adressen des AS ab. 3. Inhaltsfunktion I transformiert jede Speicheradresse in den Wert, den sie enh¨alt.

96

8.5. Programmallokation

WS/SS 2003-04

Quellmodul in h¨oherer Programiersprache. Verwendung benutzereigener symbolischer Namen, die systemweit nicht eindeutig sind. Compiler u ¨bersetzt (transformiert) das Quellmodul in ein Objektmodul. Dieser enth¨alt zwar logische Adressen, die jedoch noch nicht eindeutig sind, da noch externe Referenzen (Aufrufe weiterer Quellmodule) im Objektcode vorhanden sind. Programm main

Linker (Binder) l¨ost solche externen Referenzen auf und vebindet die einzelnen Objektmodule miteinander, um daraus ein Gesamtpaket, das Lademodul, zu machen. Lademodul enth¨alt nur noch eindeutige logische Adressen. Aufgaben der Endfunktion werden vom Compiler und Linker u ¨bernommen. Aus Sicht des Betriebssystems ist nur die Funktion des Linker relevant. Durchf¨ uhrung der S-Funktion verlangt die Allokation des Arbeitsspeichers und den physischen Transfer des Programms (Lademodul) in den bereits zugeteilten Speicherbereich. Realisierung dieser beiden Aufgaben wird als Laden bezeichnet. Entsprechendes BS-Programm ist der sog. Lader (loader). Unter der Regie des Laders muss auch festgelegt werden, warum ein Programm in den Arbeitsspeicher zu laden ist (Nachschubstrategie) und wann alle Programme aus den Arbeitsspeicher verdr¨angt werden m¨ ussen. Man spricht von Verdr¨angung, wenn ein Prozess oder Teile davon vom Arbeitsspeicher auf den Hintergrundspeicher ausgelagert werden. 8.5.2 Adressierungsarten Man spricht von reeller Adressierung, wenn eine logische Adresse im Adressraum eines Prozesses auch im Arbeitsspeicher eindeutig und dort vorhanden ist. Reelle Adressierung liegt immer dann vor, wenn der logische Adressraum kleiner oder gleich dem physikalischen Adressraum ist. Wird das Betriebssystem dazu genutzt, jedem Prozess die Illusion“ eines besonders ” großen, privaten Arbeitsspeicher zu vermitteln, spricht man von virtueller Adressierung. Ist der logische Adressraum gr¨oßer als der wirklich vorhandene physikalische Adressraum, so kann der Benutzer eines Rechners seine Anwendung so groß auslegen, wie es der Hintergrund- (Extern-)speicher zul¨asst.

97

8.5. Programmallokation

WS/SS 2003-04

Seiten- und Segmentadressierung bzw. ihre Kombination ist vom Prinzip sowohl f¨ ur reelle als auch virtuelle Adressierung verwendbar. Seitenadressierung (paging) Speicher wird in St¨ ucke fester L¨ange (z.B.: 512 oder 1024 Worte) eingeteilt. Im logischen Adressraum werden die St¨ ucke Seiten (pages) genannt. Im physikalischen heissen die St¨ ucke h¨aufig Kacheln (page frames). Seiten und Kacheln sind gleich groß. Prinzip der Seitenadressierung: p = Seitenadresse

Seitentabellenregister p w 0 1 2 ... n

w = Wortadresse

( -------Kachel Wort --------



logische Adresse

} w

Seitentabelle Kacheln Die im Programmablauf auftretenden logischen Adressen werden in eine Seitenadresse p und eine Relativadresse bzgl. dieser Seite, die sog. Wortadresse w zerlegt. Eine Zuordnungstabelle, die Seitentabelle (page table), wird vom Betriebssystem verwaltet und in ein lineares Feld, das in der p-ten Komponente (Seitenadresse p) die Anfangsadresse der zugeordneten Kachel enth¨alt. Ein Seitentabellenregister enth¨alt die Anfangsadresse der Seitentabelle. Vorteil: Keine Fragmentierung des Speichers. Eine Seite wird immer durch eine gleich große ersetzt. Nachteil: Speicherbedarf eines Prozesses ist nicht ganzzahlig durch die L¨ange einer Seite dividierbar. Die logische Informationseinheit eines Prozesses wird auf mehre Seiten (Kacheln) verteilt und bildet daher keine Allokationseinheit.

98

8.5. Programmallokation

WS/SS 2003-04

Segmentadressierung (23.03.04) Verfahren, bei dem der logische Adressraum im Segment in variable L¨angen eingeteilt wird. Segment kann Programm oder Prozedur oder Datenbereich sein. Damit spiegeln Segmente die logische Gliederung einer Anwendung (Programmpaket) wider. Adressierung erfolgt auch u ¨ber 2-Komponenten-Adresse: s - Segmentadresse, w - Wortadresse (Relativadresse zu s) Eine Segmentabelle unterst¨ utzt (analog zur Seitenadressierung) die Abbildung der logischen Adressen in die physikalischen Adressen. Jeder Tabelleneintrag muss Anfangsadresse und L¨ange des Segments besitzen. Vorteil: Segmentadressierung erm¨oglicht die Bildung einer logischen Einheit und einer Allokationseinheit im Arbeitsspeicher. Nachteil: Fragmentierung des Arbeitsspeichers, die durch periodische Defragmentierung r¨ uckg¨angig gemacht werden muss. Segmentierung mit Seitenadressierung Kombination aus beiden verkn¨ upft Vorteile. Der logische Adressraum (virtueller Speicher) wird in Segmente unterteilt, die wiederum in Seiten gegliedert werden. Adressierung erfolgt u ¨ber Drei-Komponenten-Adresse: s, p, w (s: Anfangsadresse, p, w: Relativadresse) Unterst¨ utzung durch Segment- und Seitentabelle (Transformation → logische in physikalische Adressen) 8.5.3 Verfahren der Speicherallokation Speicherfunktion S teilt dem relokierbaren (verschiebbaren) Speicher die eindeutige physikalische Adresse zu. Zuteilungsart h¨angt von zwei Faktoren ab: • Adressierungsart • Zeitpunkt der Allokation Statische Zuteilung erfolgt vor der Programmausf¨ uhrung. Dynamische Zuteilung erfolgt w¨ahrend der Programmausf¨ uhrung.

99

8.5. Programmallokation

WS/SS 2003-04

Statische Zuteilung (Allokation) Vor Beginn Zuteilung des gesamten Speicherbedarfs; nach Ende des Prozesses vollst¨andiger Entzug. Anwendung: bei reeller Adressierung Dynamische Allokation Speicherzuteilung w¨ahrend des Prozessablaufs, wenn der Prozess ihn nicht mehr ben¨otigt. Speicher muss dabei nicht den gesamten Prozess aufnehmen k¨onnen. D.h. dem Prozess werden nur einige Seiten zugewiesen, die, sobald sie nicht mehr ben¨otigt werden, nach einer Verdr¨angungsstrategie, freigegeben werden. Anwendung: bei virtueller Adressierung spezieller Interrupt (page fault) ← Seitenfehler Die Allokationsstrategien f¨ ur Seiten- und Segmentadressierung k¨onnen in zwei Teilaufgaben gegliedert werden: 1. Nachschubstrategie (fetch policy) legt fest, wann eine Seite in den Arbeitsspeicher geladen wird. 2. Verdr¨ angungsstrategie (replacement policy) legt die Kriterien fest, nach denen eine alte“ Seite/Segment verdr¨angt wird, um ” auf den Externspeicher ausgelagert zu werden. Zwei u ¨bliche Strategien die Seiten/Segmente in den Arbeitsspeicher zu holen: 1. Auf Verlangen (demand paging) Seite/Segment wird erst bei Bedarf nachgeladen =⇒ u ¨bliche Strategie 2. Vorgeplant (preplanned paging) setzt Prozessverhalten als bekannt voraus; Vermeidung von Seitenfehlern Verdr¨ angungsstrategien 1. FIFO Seite/Segment wird verdr¨angt, die/das am l¨angsten im Arbeitsspeicher steht. 2. Am-l¨angsten-nicht-mehr-benutzt (least recently used: LRU) Strategie geht davon aus, dass die LRU auch weiterhin nicht benutzt wird 3. Am-wenigsten-h¨aufig-benutzt (least frequently used: LFU) Strategie geht davon aus, dass Seite/Segment auch in Zukunft nicht benutzt wird

100

8.6. Dateiverwaltung

WS/SS 2003-04

8.6 Dateiverwaltung 8.6.1 Logische Organisationsformen von Dateien und Zugriffsmechanismen Logische Organisationsformen orientieren sich an inhaltlichen Zusammenh¨angen zwischen einzelnen Datenobjekten, wie sie durch Relationen beschrieben werden. Mitarb.-key

PIN



Name

 @ I @ @ @ @

Adresse

...



HH Y

Sekund¨arschl¨ ussel

Prim¨arschl¨ ussel Felder eines Datensatzes einer Datei werden auch Schl¨ ussel genannt. Der Schl¨ ussel, der einen Datensatz eindeutig identifiziert, wird auch Prim¨arschl¨ ussel genannt. Alle anderen Schl¨ ussel werden auch Sekund¨arschl¨ ussel genannt. Ein Prim¨arschl¨ ussel kann aus einem oder mehreren Satzfeldern bestehen. Zugriffsmechanismen Grundoperationen: • Auwahl von S¨atzen einer Datei, die bestimmte Bedingungen erf¨ ullen • Verbindung zwischen einzelnen S¨atzen verschiedener Dateien Zugriffsmechanismen sind diejenigen Operationen, die den Zugriff auf einzelne S¨atze (Auswahl) einer Datei oder auf Satzmengen verschiedener Dateien (Verbindung) realisieren. Zugriffsmechanismen definieren Pfade, auf denen man zu den einzelnen S¨atzen oder Satzmengen hinfinden kann. Zugriffsmechanismen beziehen sich auf logische S¨atze (inhaltsbezogen), nicht auf physische S¨atze (gegliedert). Logische Struktur (Organisation) einer Datei legt die m¨oglichen Zugriffsarten auf die S¨atze der Datei fest. Zugriffsarten: • sequentiell • direkt

101

8.6. Dateiverwaltung

WS/SS 2003-04

Sequentieller Zugriff

(29.03.04)

ussel sortierten In einer sequentiell organisierten Datei werden die nach einem Prim¨arschl¨ Felder in einer Folge abgespeichert → Lineare Ordnung, deren Objekte die einzelnen Datens¨atze sind. Der Zugriff auf Datens¨atze erfolgt u ussel in Sortierrichtung. ¨ber Prim¨arschl¨ Bsp.: Datei Mitarbeiter bestehe je Satz aus 4 Feldern Mitarbeiter (Name, Adresse, Beruf, Alter) Sortierrichtung

−−−−−−−−−−−−−−→ Apel Isny Techniker 40

Ast Stuttgart Informatiker 35

Walter Wangen Mathematiker 53

Direkter Zugriff (wahlfreier) Bei einer direkt organisierten Datei existiert ein Zusammenhang zwischen dem Schl¨ ussel des Datensatzes (Prim¨arschl¨ ussel) und der physischen Speicheradresse. Zwei Arten, die Transformation Schl¨ ussel → logischer Satz → physischer Satz → Speicheradresse durchzuf¨ uhren: • Suchvorgang in Tabellen (sortiertes lineares Feld) • Suchen in B¨aumen, die als Verzeichnis benutzt werden (directory look-ups) • durch Berechnung (hash-coding) → Berechnung der physischen Speicheradresse aus dem Schl¨ ussel (hash-Transformation in Datenbankkonzepten) Index-Tabelle Unter Index-Tabelle (Index) versteht man die Ansammlung von S¨atzen der Form (s, b), die nach s sortiert in Tabellenform angeordnet sind. s ist Feldkombination (Attributkombination) und b ein Identifikator (Zeiger) f¨ ur einen oder mehrere S¨atze. Bsp.: Index

102

8.6. Dateiverwaltung

WS/SS 2003-04 10 1 

Name Apel Ast ... Maier ... Walter

Identifikator   10  35 ... 54 ... 76 XXXXX

 



Isny Techniker 40 35

-

Stuttgart Informatiker 35

Index kann sequentiell oder bin¨ar durchsucht werden.

76

XXX

XXX

Wangen Mathematiker 53 ur einen Sekund¨arschl¨ ussel Invertierte Organisation einer Datei liegt vor, wenn es einen Index f¨ gibt. Datei ist partiell invertiert organisiert, wenn sie nicht f¨ ur alle Sekund¨arschl¨ ussel invertiert organisiert ist. ur alle Sekund¨arschl¨ ussel. Vollst¨andig invertiert → f¨ XX z

Bsp.: Datei Mitarbeiter invertiert organisiert bzgl. der Felder (Attribute), Adresse und Beruf. 20 Apel Index Adresse 40 Index Beruf  *    Adresse Id   Beruf Id - 72 Isny 20, 72 M¨ uller Informatiker ... Ravensburg 30 30 Mathematiker 40 Stuttgart 35  Techniker ...    ... ...XX  XX  ... ... XXX 40   9 Wangen 40 , 53 z X Walter 53 Typisch f¨ ur invertierte Dateiorganisation ist, dass der Zugriff u ussel, ¨ber die Sekund¨arschl¨ die durch den Index realisiert werden, v¨ollig von den S¨atzen getrennt wird. Im Gegensatz dazu wird die sog. Multilist-Organisation einer Datei, der Zugriffspfad f¨ ur Sekund¨arschl¨ ussel, in die S¨atze selbst eingebaut.

103

8.6. Dateiverwaltung

WS/SS 2003-04

Es werden diejenigen Felder von Datens¨atzen, die denselben Wert haben, durch Zeiger zu einer Liste zusammengefasst. Damit zeigt der Zeiger b bei einem Indexeintrag (s, b) nur auf den ersten Satz. Alle nachfolgenden Satzfelder der zusammengeh¨orenden S¨atze sind durch Zeiger miteinander verbunden. Index - sequentieller Zugriff Eine Datei ist index-sequentiell organisiert, wenn sie sowohl direkt als auch sequentiell organisiert ist. Index-Tabelle 

A   A  U A  

...

direkter Zugriff

? sequentieller Zugriff

−−−−−−−−−−−−→

S¨atze

Index-Tabelle sortiert nach Schl¨ usseln, erm¨oglicht direkten Zugriff. Aufgrund der sequentiellen Organisation der Datei kann auf die Datens¨atze in der zeitlichen Reihenfolge ihrer Abspeicherung in der Datei zugegriffen werden.. Indexeintrag enth¨alt Satzadresse. 8.6.2 Speicherung von Dateien (phys. Organisationsform) Relationale Dateien Hauptaugenmerk ist Wiederfindung von Datens¨atzen. Datens¨atze werden sequentiell oder baumartig gespeichert. Bsp.: f¨ ur physischen Satz (Block) ist die Spur eines Plattenspeichers, d.h. in ihm sind mehrere logische S¨atze vereint. Die Anzahl der logischen S¨atze wird durch Blockungsfaktor angegeben. Anzahl der logischen S¨atze ist die Datenmenge, die in physische zusammenh¨angender Weise bei einem Kommandoaufruf des BS gelesen oder geschrieben wird. Unterscheidung in: • logische S¨atze fester L¨ange (fixed length record) • logische S¨atze variabler L¨ange (variable length record) → selten angewendet

104

8.6. Dateiverwaltung

WS/SS 2003-04

f¨ uhrt auch zu Bl¨ocken fester und variabler L¨ange. Die physische Organisation einer Datei ist damit die physische Realisierung der logischen Organisation auf einem Speichermedium. Sie definiert, welche Verbindungen zu Zeigern, Listen, Indizes und interne Datenstrukturen (z.B. Verzeichnisse) notwendig sind, um eine bestimmte logische Organisationsform auf einem speziellen Peripherieger¨at zu implementieren. Realisierung durch das BS, Komponente Dateiverwaltung. Physische Organisation unterscheidet kontinuierliche und gestreute Speicher von Bl¨ocken. Kontinuierliche Speicherung (30.03.04) S¨amtliche physischen S¨atze (Bl¨ocke) werden in physischen benachbarten Speicherbereichen abgelegt (direkt hintereinander ohne Einschub anderer Dateien), d.h. es wird sequentiell gespeichert. Bsp.: Magnetband Gestreute Speicherung Die physischen S¨atze einer Datei werden nicht kontinuierlich gespeichert. Bsp.: Magnetplatte, opto-elektronische Platten Die Datei wird u ¨ber nicht zusammenh¨angende Spuren oder Sektoren einer oder mehrerer Platten verteilt. Zur Speicherung einer gestreut gespeicherten Datei sind zwei Datenstrukturen erforderlich: • Datei-Verzeichnis (file directory – FCB)

auch: File-Deskriptor

• Platten-Verzeichnis (DOS – FAT) Datei-Deskriptor identifiziert eine Datei f¨ ur das gesamte Betriebssystem, gibt physische Lage einer Datei mit all ihren Bl¨ocken an. Bei Verwendung variabler Blockl¨ange enth¨alt der Deskriptor f¨ ur jeden einzelnen Block die zugeh¨orige physische Adresse und die L¨ange. Bei fester Blockl¨ange erfolgt die Angabe nur einmal. Angaben zur Dateicharakterisierung: • Dateiname • Identifikation des Benutzers (unter dieser Angabe ist der Benutzer bei Betriebssystem bekannt)

105

8.7. Auftragssteuerung

WS/SS 2003-04

• Passwort zum Schutz gegen unauthorisierte Benutzung einer bestimmten Benutzeridentifikation • Zugriffsrechte (Vergabe von Privilegien an Benutzer): d - delete p - protect w - write i - insert r - read x - execute Platten-Verzeichnis enth¨alt Namen und Adressen aller Deskriptoren (in normierter Form) aller zu einem bestimmten Zeitpunkt auf der Platte enthaltenen Dateien. Verzeichnis liegt auf fest vereinbartem Platz (z.B. Spur 0) einer Platte.

8.7 Auftragssteuerung Auftragssteuerung sorgt daf¨ ur, dass ein bestimmter Auftrag aus dem Eingabestream ausgew¨ahlt und sofern die notwendigen Ressourcen vorhanden sind, in einen oder mehrere Prozesse umgewandelt wird. Diese Prozesse muss die Auftragssteuerung initiieren und synchronisieren. Diese Komponente benutzt daf¨ ur Dienste der Datenverwaltung der Programmallokation und der Ressourcenverwaltung. Zwei wesentliche Funktionen: 1. Ablaufplanung (scheduling) legt Reihenfolge fest, in der die Auftr¨age in der Auftragsqueue ausgew¨ahlt und als Prozesse initiiert werden → Ablaufplaner (scheduler) 2. Auftragsabwicklung (job management) koordiniert den Ablauf der zuvor eingeleiteten Prozesse (job manager)

→ Auftragsabwickler

Im Stapelbetrieb werden durch eine Auftragssteuersprache (job control language) der scheduler und job manager direkt beeinflusst. 8.7.1 Ablaufplaner Auftragsplaner u ¨bernimmt aus Auftragsqueue Auftr¨age und initiiert Prozesse. Ablaufstrategie ist priorit¨atsorientiert. Informationen, auf die sich der Planer st¨ utzt, sind

106

8.7. Auftragssteuerung

WS/SS 2003-04

1. Auftragsumgebung (Laufzeit, ben¨otigte Ressourcen) 2. Rechnerumgebung (verf¨ ugbare Ressourcen, Auslastung des Prozessors, Auslastung der E/A-Kan¨ale, Speicherbelegung) Im einfachsten Fall wird Priorit¨atsbestimmung nur aus der Laufzeit des Jobs bestimmt, d.h. Jobs mit kurzer Laufzeit zuerst: shortest-job-first-Strategie Bei der Rundlaufstrategie, die zuerst im Dialogbetrieb eingef¨ uhrt wurde, werden Auftr¨age in der zeitlichen Reihenfolge ihres Eintreffens bearbeitet. 8.7.2 Auftragsabwickler Auftragsabwickler kann in laufenden Prozess eingreifen, unterbrechen und in die Queue zur¨ uckstellen, falls Planer Auftrag mit h¨oherer Prorit¨at ausgew¨ahlt hat. 8.7.3 Auftragssteuersprache Sie formuliert Anweisungen des Benutzers f¨ ur das Betriebssystem. Anweisungen enthalten folgende Informationen: 1. Benutzeridentifikation 2. Ressourcenangaben (gesch¨atzte Laufzeit, Arbeitsspeicherbedarf, usw.) 3. Operationsschritte, z.B. u ¨bersetzen, linken, ..., Datei kopieren, ... 4. E/A-Angaben, Spezifizieren der E/A-Medien Interpretation der Anweisungen erfolgt durch scheduler und job manager.

107

9 Programmiersprachen und Systeme ¨ Problemstellung: Ubertragung eines Algorithmus auf einen Rechner

9.1 Programmiersprachen Programmiersprachen stellen Schnittstelle zwischen Benutzer und Computer dar. Vermeidung von Mehrdeutigkeiten bei der Programmierung durch eindeutige Definiton von Syntax und Semantik einer Programmiersprache. Syntax regelt die Anordnung der einzelnen Sprachelemente wie Operand und Operator. Semantik beschreibt eindeutig den Sinn und die Wirkung von Operationen. Pragmatik erkl¨art die Zweckm¨aßigkeit der Festlegungen in Syntax und Semantik. Klassifikation von Programmiersprachen (abh¨angig vom Grund, mit dem die Hardware beachtet werden muss): • Maschinensprachen (direkte Programmierung der Hardware) • niedere, maschinenorientierte Programmiersprachen (Assembler-Sprachen) → Programmierung der Hardware mit symbolischen Namen • h¨ohere, problemorientierte Programmiersprache → von Hardware unabh¨angig und an zu l¨osenden Problemen orientiert (05.04.04) Jeder Programmiersprache liegt ein bestimmtes Konzept oder Denkschema zugrunde. Auf Basis dieser Konzepte existiert eine andere Einteilung der h¨oheren Programmiersprachen: • imperative Programmiersprachen (lat. imperare - befehlen) Programm besteht aus Befehlsfolge an den Computer. Wesentlich: Variablenkonzept. ⇒ Eingabewerte werden in Variablen gespeichert und weiterverarbeitet. Widerspiegelung des von-Neumann Konzepts. Bsp.: ADA, ALGOL 60, BASIC, C, COBOL, COMAL, ELAN, FORTRAN, MODULA-2, PL/1, PASCAL, SIMULA

108

9.2. Grundlagen zur Definition h¨ oherer Programmiersprachen WS/SS 2003-04 • funktionale Programmiersprachen Programm werden als Funktionen von Mengen von Eingabewerten in Mengen von Ausgabewerten betrachtet. Rein funktionale Programmiersprachen: Funktionen definiert durch Zusammensetzung h¨aufig einfacher Funktionen, wobei eine Reihe von Grundfunktionen vorgegeben ist. • applikative Programmiersprachen (lat. applicare - anwenden) Funktion wird als Anwendung (application) definiert von Funktionen auf ihre Parameter (Parameter k¨onnen selbst Funktionen sein). ⇒ Programme sind damit ein System von Funktionen Bsp.: LISP, LOGO • pr¨adikative Programmiersprachen (Logiksprachen) Programmierung als Beweis von Fakten und Schlussfolgerungen. Anwender gibt Menge von g¨ ultigen Pr¨adikaten vor (Fakten) und Regeln, aus denen neue Fakten abgeleitet werden. Aufgabe des Programms: gestelllte Frage als richtig“ oder falsch“ einsch¨atzen ” ” Bsp.: PROLOG • objektorientierte Programmiersprachen alle zur L¨osung eines Problems notwendigen Informationen (Daten und Funktionen) werden als Objekte aufgefasst. Objekte k¨onnen durch Senden von Nachrichten Informationen mit anderen Objekten austauschen. Nachrichten sind f¨ ur jedes Objekt festgelegt. Bsp.: SMALLTALK-80, C++, C, Java Programmiersprachen zur Darstellung der Parallelit¨at und des Nichtdeterminismus werden in Zukunft weiter entwickelt und verfeinert (Zentrum f¨ ur Parallelit¨at in Paderborn).

9.2 Grundlagen zur Definition h¨ oherer Programmiersprachen Formale Sprache soll definiert werden: Menge der Buchstaben (Alphabet) T - Terminalsymbole T* - Menge aller Buchstabenkombinationen, in dem Worte wie z.B. FOR, WHILE, ... m¨oglich sind und einzelne Zeichen und Zahlen zur Bindung von Namen, Konstanten, Kommentare. Auch leere Zeichenkette ε kann ein Element von T* sein. L(anguage) - Sprache ist eine echte Teilmenge von T*. Zur Sprache geh¨oren auch Regeln (grammatikalische), wie g¨ ultige S¨atze“ einer Programmier” sprache gebildet werden k¨onnen.

109

9.2. Grundlagen zur Definition h¨ oherer Programmiersprachen WS/SS 2003-04 Syntax, Semantik, Pragmatik Syntax Menge aller Regeln, die festlegen, welche Elemente aus T* zur (Sprache) L geh¨oren. Bsp.: Alphabet bestehe aus Elementen x und +, also T* = {x, +} zu T* geh¨oren Elemente wie ε, x, +, xx, x+, +x, ... . Also T* = {ε, x, xx, x+, +x, +, ...} Als Syntaxregel f¨ ur diese Sprache wird SUMME festgelegt: SUMME = {x, x + x, x + x + x, ...} ⊂ T ∗ Also geh¨oren Zeichenketten zur Sprache, die aus einem x gefolgt von n ≥ 0 Zeichenketten +x bestehen. Syntax legt damit die g¨ ultigen Zeichenketten einer Sprache fest, aber nicht deren Bedeutung. Semantik legt Bedeutung der Zeichenketten fest. Im Bsp. w¨ urde in der Sprache SUMME x die Bedeutung eines Operanden und + die Bedeutung eines Additionsoperators besitzen. Pragmatik legt Zweckm¨aßigkeit der Festlegung in Syntax und Semantik fest. Bsp.: Zweckm¨aßig, + als Additionsoperator zu verwenden. Definition h¨oherer Programmiersprachen durch Syntax und Semantik weitgehend formal m¨oglich. Syntax ist weitgehend formal ausgereift (Syntaxdiagramm, Backus-Naur-Form). Semantik wird meist verbal beschrieben und eigentlich erst eindeutig festgelegt durch einen Compiler, der die Sprachkonstrukte eindeutig interpretiert. Es besteht Bedarf auch die Semantik zu formalisieren. Bsp.: Grammatikalische Zerlegung einer Programmanweisung durch einen Compiler → Semantik. a = b + c ∗ d ; < x ) |{z} |{z} |{z} |{z} |{z} |{z} |{z} |{z} |{z} {z } | | {z } {z }

while ( |{z} a |



Ein Teil der Semantik wird durch Anweisungsanalyse schon klar.

110

9.2. Grundlagen zur Definition h¨ oherer Programmiersprachen WS/SS 2003-04 Darstellungsm¨ oglichkeiten der Syntax • Syntaxdiagramm Symbolische, grafische Darstellung • Backus-Naur-Form bzw. Erweiterte Backus-Naur-Form (ε) Beschreibungsform (kontextfreier Grammatiken) der Syntax vieler Programmiersprachen. Zur Definition von ALGOL 60 entwickelt. Die Nichtterminalsymbole der Grammatik werden in der Backus-Naur-Form (BNF) durch spitze Klammern dargestellt. Linke und rechte Seite einer so genannten (Produktions)regel werden durch das Symbol ::= getrennt. Mehrere rechte Seiten (Bedeutungen) f¨ ur ein Nichtterminalsymbol werden durch senkrechten Strich | getrennt. Bsp.: < Zif f er > ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 < Buchstabe > ::= A | B | C | . . . | Z Symbole oder Symbolfolgen, die innerhalb einer Regel auch weggelassen werden k¨onnen, werden in eckige Klammern [ ] eingelassen. Bsp.: < Bezeichner > ::= < Buchstabe > | [< Zeichenkette >] Symbole oder Symbolfolgen, die beliebig oft wiederholt oder weggelassen werden k¨onnen, werden in geschweifte Klammern {} eingelassen. Bsp.: < Bezeichner > ::= < Buchstabe > {< Buchstabe > |< Zif f er >} BNF ist eine so genannte Metasprache, also eine Sprache, die u ¨ber eine Sprache gesprochen wird (die die Syntax einer Sprache darstellt). Einf¨ uhrung in die Theorie k¨ unstlicher Sprachen (Chomsky - Grammatiken) Linguist (Sprachwissenschaftler)

111

9.3. Problemorientierte Programmiersprachen T T* ε L N P

S

WS/SS 2003-04

– – – – – –

Menge der Terminalsymbole. Menge der terminalen Wortsymbole. ε ∈ T* leere Zeichenkette. L ⊂ T* Menge der Nichtterminalsymbole (zur Beschreibung der Sprachkonstrukte). Menge der Produktionen (oder Produktionsregeln) gegliedert aus den Symbolmengen N und T und einigen syntaktischen Regeln. (u, v) – (u, v) ∈ P sind Regeln – ein Startsymbol

Chomsky – Grammatik ist ein Quadrupel (4 - Tupel) G = (N, T, P, S) f¨ ur das gilt: 1. N ist eine endliche, nicht leere Menge von Zeichen: Nichtterminalsymbole. 2. T ist endliche, nicht leere Menge von Zeichen: Terminalsymbol. 3. S ist ein Element von N ∪ T (∪ steht f¨ ur vereinigt) und heißt Startsymbol. 4. P ist endliche Menge von Paaren der Form u,v wobei gilt: u und v sind W¨orter aus Nichtterminalsymbolen und Terminalsymbolen, d.h. N ∪ T*(u, v) ∈ (N ∪ T*), wobei P mindestens ein Nichtterminalsymbol enthalten muss. P wird Produktionssystem oder Regelsystem genannt. Elemente von P werden Produktionsregeln oder Produktionen genannt.

9.3 Problemorientierte Programmiersprachen DIN 44300: Eine Programmiersprache heißt problemorientiert, wenn sie geeignet ist, Algorithmen aus einem bestimmten Anwendungsbereich unabh¨angig von einer bestimmten Rechenanlage abzufassen, und wenn sie sich an eine in dem betreffenden Bereich u ¨bliche Schreibund Sprechweise anlehnt. Anwendungsbereiche: • kommerzieller Bereich (geeignete Sprachelemente f¨ ur Dateiarbeit und tabellarischer Auflistung) • technisch-wissenschaftlicher Bereich (angemessene Formulierungsm¨oglichkeiten f¨ ur arithmetische Ausdr¨ ucke und Behandlung von rekursiven Strukturen) Wichtige Konzepte h¨oherer Programmiersprachen: Variablenkonzepte, Elemente wie Zeiger und dynamische Datenstrukturen

112

9.3. Problemorientierte Programmiersprachen

WS/SS 2003-04

Variablenkonzept Einf¨ uhrung des allgemeinen Begriffs Objekt. Primitives Objekt wird durch seine Bezeichnung und seinen Wert definiert, d.h. eine Konstante. Bsp.: 5 hat die Bezeichnung und den Wert 5 Objekt besteht aus Komponenten Ort (adressierbare Speicherstelle) und Wert (Bin¨arwert). Wird Ort ein symbolischer Bezeichner zugeordnet, dann entsteht ein spezielles Objekt (eine Variable). Daten Manipulation von Daten ist wesentliche Aufgabe von Programmen. Daten sind Programmbereiche, in die durch Anweisungen eines Programms Informationen ein- und ausgetragen werden. Datenobjekte sind benennbare Speichereinheiten eines bestimmten Datentyps. Datenobjekte k¨onnen vom Programmierer unter frei w¨ahlbaren Bezeichnern vereinbart werden. Strukturierte Datentypen Zwei wichtige Konzepte: Felder: Zusammenfassung von Objekten gleichen Typs zu einem Datenobjekt, wobei die Objekte indiziert werden. Verbunde: Zusammenfassung von Objekten unterschiedlichen Typs zu einem Datenobjekt. Verbunde erlauben in Verbindung mit Zeigern das freie Definieren von Datenstrukturen wie Listen und B¨aume. Zeiger und dynamische Datenobjekte Statische Datenobjekte werden zu Beginn eines Programms oder Blocks vereinbart und sind in diesem Bereich permanent u ¨ber einen Bezeichner verwendbar. ⇒ damit ist ihre Speicherbelegung vom Compiler pr¨ uf- und organisierbar. Dynamische Datenobjekte k¨onnen zu beliebigen Zeitpunkten unabh¨angig von der statischen Blockstruktur angelegt und freigegeben werden. (auch Zeiger- oder Zugriffsdatentypen genannt)

113

9.4. Binder und Lader

WS/SS 2003-04

Zeiger (pointer) spezieller Datentyp, der als Wert eine Adresse enth¨alt, die auf ein Datenobjekt zeigt. (19.04.04)

9.4 Binder und Lader 9.4.1 Binder (Linker, linkage editor) Eine komplexe L¨osung wird meist nicht in einem geschlossenen Programm realisiert. Gr¨ unde daf¨ ur: • Erstellung von Teilprogrammen durch verschiedene Personen (Parallelisierung). • Einbeziehung von vorgefertigten Teill¨osungen, die in Bibliotheken bereitstehen. Erstellung der Teill¨osungen in verschiedenen Programmiersprachen Funktionsweise des Binders

Binden erfolgt derart, dass der Binder im Hauptprogramm (Eintrittspunkt) beginnt, zu den externen Referenzen (Adressbez¨ uge) die zugeh¨origen Module aus Bibliotheken einzulesen. Falls in diesem Modul weitere Referenzen auftreten, sind auch diese aufzul¨osen. Findet der Binder zu einer externen Referenz kein Modul wird eine Fehlerinformation ausgegeben. Unterscheidung zwischen statischem und dynamischem Linken Statisches Linken: 1 KB Objektmodul

750 KB linken

−−−−−→

Library

751 KB liefert

−−−−→

nach Linkvorgang:

114

ausf¨ uhrbares Modul

9.4. Binder und Lader

WS/SS 2003-04

Dynamisches Linken: 1 KB Objektmodul

620 KB linken

−−−−−→

Library

z.B. 5 KB liefert

−−−−→

ausf¨ uhrbares Modul

Durch dynamisches Linken kann ein System eine große Sammlung von Bibliotheken mit einer Vielzahl von Leistungen bereitstellen. Das Programm fordert diese zur Laufzeit an. Beinhaltet das ausf¨ uhrbare Programm nur Dateinamen, die es dem Lader erm¨oglichen die Bibliotheksverweise (externe Referenzen) des Programms w¨ahrend der Laufzeit aufzul¨osen, spricht man von dynamischen Linken. (DLL = Dynamic Link Library) Statisches Linken – Durchlaufen der Laufzeit-Linken

Phasen

Link Editing

und

Laden

und

Bei der Ausf¨ uhrung werden vor dem Aufruf von main() die gemeinsam genutzten Datenobjekte im Prozess-Arbeitsspeicher abgelegt. Externe Funktionsaufrufe werden solange nicht aufgel¨ost, bis der Aufruf tats¨achlich erfolgt. ⇒ unproblematisch, eine Bibliothek zu linken, die nicht mehr ben¨otigt wird. Vorteile: • dynamisch gelinktes Programm ist wesentlich kleiner als statisch gelinktes. • alle dynamisch mit einer Bibliothek gelinkten Programme teilen sich w¨ahrend der Ausf¨ uhrung eine einzige Kopie dieser Bibliothek. ⇒ Verbesserung der Gesamtperformance. • neue Bibliotheksversionen k¨onnen einfach eingebunden werden. • w¨ahrend der Laufzeit ist Bibliotheksfunktion w¨ahlbar (z.B. effektive Speicherausnutzung, hohe Ausf¨ uhrungsgeschwindigkeit)

115

9.5. Compiler

WS/SS 2003-04

9.4.2 Urlader und Lader Urlader ROM – Festwertspeicher enth¨alt Ladeprogramm → Selbstladevorgang (Bootstrapping) wird ausgel¨ost. Betriebssystemkomponenten (residente) werden initiiert. Lader Der Lader (auch Absolutloader) liest ein compiliertes (assembliertes) Programm befehlsweise jeweils an die Stelle im Arbeitsspeicher, die als absolute Adresse vor jedem Befehl oder zu Programmbeginn angegeben wurde.

9.5 Compiler ¨ – dienen der Ubersetzung von h¨oheren Programmiersprachen in Maschinencode. 9.5.1 Ablauf der Compilation Nach Starten des Compilers wird Quellprogramm zeilen- und zeichenweise eingelesen. uhrt. Dabei werden die Grundsymbole des Dabei wird eine lexikalische Analyse durchgef¨ Programmtexts erkannt und in internen Kurzcode umgewandelt. Vorgang erfolgt in einem oder mehreren P¨assen. Ergebnis ist Aufruf von Routinen (Betriebssystem), die einen Syntaxbaum aufbauen. uhrt. Gleichzeitig wird eine semantische Analyse durchgef¨ Nach Erkennen eines syntaktischen Fehlers erfolgt Abbruch vor der Codegenerierung. Funktionen des Compilers: 9.5.2 Lexikalische Analyse Zust¨andiges Compilermodul ist der Scanner. Er filtert sog. Morpheme (kleinste Bedeutung tragende Einheiten) aus dem Quelltext heraus. Sie bilden Worte, aus denen die Anweisungen bestehen (Folge von terminalen und nichtterminalen Symbolen). Einteilung Morpheme: 1. frei w¨ahlbare Bezeichner alle vom Programmierer eingef¨ uhrten Namen → Eintrag in die Symboltabelle. An die syntaktische Analyse wird eine spezielle Kennung und der Index in der Symboltabelle u ¨bergeben. 2. Grundsymbole alle reservierten Schl¨ usselworte (main, for, ...)

116

9.5. Compiler

WS/SS 2003-04

3. Zahlen Zahlen sind Konstantenbezeichner f¨ ur Werte. Umwandlung in codeinterne Darstellung. 4. Zeichenkette In Quote eingeschlossene Zeichenfolgen, die ohne Konvertierung in den Zielcode u ¨bernommen werden. 5. Kommentare eingeleitet // bis Zeilenende /* Kommentar */ m¨ ussen erkannt und f¨ ur weitere Analyse ausgeblendet werden. 6. Steueranweisungen spezielle Compileroptionen bei Kommandozeilencompiler m¨ ussen erkannt und verarbeitet werden. Sie werden f¨ ur weitere Analyse des Quelltexts ausgeblendet. 7. Sonderzeichen Sie stellen verk¨ urzte Schl¨ usselworte dar (z.B. ;). (20.04.04) 9.5.3 Syntaktische Analyse Syntaktische Analyse wird vom Parser (Zerteiler) vorgenommen. Wichtiges Qualit¨atsmerkmal ist Fehlerbehandlung ! 9.5.4 Semantische Analyse und Aufbau des Syntaxbaums Ergebnis der syntaktischen Analyse ist Aufruf von Routinen zur semantischen Analyse und Aufbau des Syntaxbaum. Bsp.: (1) Typ linke Seite einer Zuweisung = Typ rechter Seite (2) Programmiersprachen, die explizite Vereinbarung erfordern: ¨ Uberpr¨ ufung, ob frei w¨ahlbare Bezeichner vorher deklariert werden. Wichtiges Ergebnis dieser Compilationsphase ist Syntaxbaum. Er repr¨asentiert die syntaktische Struktur eines Quelltexts und bildet Vorraussetzung f¨ ur Codegenerierung (Objekt). Bsp.: Syntaxbaum f¨ ur C++ Anweisung if

(

a

Suggest Documents