1. Organisatorisches und Überblick Informatik II Vorlesung: 4 Semesterwochenstunden Dienstag, 14:15-15:45 Uhr, MN67 Freitag, 14:15-15:45 Uhr, MN67 Informatik II Übung zur Vorlesung: 2 Semesterwochenstunden Dienstag, 16:00-17:30 Uhr, MN67 SS 2004 Teil 1: Einführung theoretische/praktische Tutorenstunden: 2 Semesterwochenstunden, Raum/Zeit je nach Gruppe Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik Übersicht Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 1. Organisatorisches und Überblick 1. Organisatorisches und Überblick Verantwortliche Personen Webseiten Vorlesung: Dipl.-Inform. Michael Ebner Vorlesungsseite: http://user.informatik.uni-goettingen.de/~info2/SS2004/ Forum: http://www.in-vent.info/forum/index.php Univis: http://univis.uni-goettingen.de (Vorlesungsverzeichnis -> Mathematische Fakultät -> ZFI -> Pflichtblöcke -> Informatik) Bachelor/Master Studiengang Informatik: http://www.informatik.uni-goettingen.de Email: [email protected] Telefon: (0551) 39-14409 1.2 Übung/Tutorien: Dipl.-Inf. René Soltwisch Email: [email protected] Telefon: (0551) 39-14413 Übung/Tutorien: Dipl.-Inform. Kerstin Richter Email: [email protected] Telefon: (0551) 39-14408 Gemeinsame email Adressen: [email protected]: Ebner, Soltwisch, Richter v_info2_1@, ..., v_info2_7@: Jeweiliger Tutor v_info2_all@: Dozenten und Tutoren Übersicht Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 1.3 Übersicht Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 1.4 1. Organisatorisches und Überblick 1. Organisatorisches und Überblick Tutorien Einteilung über verteilte Tutorenliste Gruppenwechsel sind in eigener Regie vorzunehmen und sind mit den Tutoren abzustimmen Wechsel zwischen theoretischer und praktischer Tutorenstunde entscheidet Tutor bzw. Gruppe NAM Computer-Account ist notwendig Termine Übungszettel I Ausgabe: Vor der Übung am Dienstag Montag 16-18Uhr und 18-20Uhr Dienstag 18-20Uhr Mittwoch 18-20Uhr Donnerstag 14-16Uhr und 18-20Uhr Freitag 11-13Uhr Tutorien beginnen ab dem 19. April Erste Ausgabe am 20. April Übungszettel gibt es nur in Papierform! Rückgabe: Dienstag, bis 12:55 Uhr, Info II Kästen in der NAM Voraussichtlich 11 Übungszettel á 100 Punkte max. zwei Studierende können einen Übungszettel gemeinsam abgeben (Gemeinsame Abgabe ist erwünscht!) 50% der Gesamtpunktzahl sind zum Bestehen der Übungszettel hinreichend Übersicht Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 1.5 Übersicht Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 1. Organisatorisches und Überblick 1. Organisatorisches und Überblick Übungszettel II Klausur Sollten wir anhand der gemachten Fehler erkennen, dass Übungszettel abgeschrieben worden sind, erkennen wir diese nicht an. Korrekt abgeschriebene Lösungen helfen Ihnen nicht, Ihr Wissen zu überprüfen und zu intensivieren und helfen uns nicht missverständliche Vorlesungsinhalte zu erkennen und ggf. zu verbessern bzw. zu wiederholen. Schriftliche Klausur über gesamten Stoff der Vorlesung Klausurdauer: 90 Minuten Klausurtermin: voraussichtlich 26. oder 27. Juli Kreditpunkte: 9 ECTS Anmeldung MUNOPAG/WOPAG für BScInf, WiInf,WiPäd, etc. Ansonsten erfolgt die Anmeldung über eine Liste im Sekretariat des Lehrstuhls für Telematik Leistungszertifikate und Scheine können nur über das Bestehen der Klausur erstanden werden Für Nebenfächler werden wahlweise benotete und unbenotete Scheine ausgestellt Übersicht Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 1.6 1.7 Übersicht Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 1.8 1. Organisatorisches und Überblick 1. Organisatorisches und Überblick Literatur Überblick I 1. Einführung Rechenberg & Pomberger: „Informatik-Handbuch“, Hanser Verlag, ISBN 3-446-21842-4 Walter Oberschelp & Gottfried Vossen: „Rechneraufbau und Rechnerstrukturen“, Oldenbourg Verlag, ISBN 3-486-27206-3 J. Kurose & K. Ross: „Computernetze: Ein Top-Down-Ansatz mit Schwerpunkt Internet“, Addison-Wesley Verlag Weitere Literaturangaben werden im Laufe der Vorlesung bekannt gegeben Vorstellung der beteiligten Personen Ablauf der Übungen Inhalt der Vorlesung 2. Zahlen und logische Schaltungen Nachrichten, Information, Daten Zahlensysteme und –darstellung Rechnerarithmetik logische Schaltungen boolesche Algebra 3. Von-Neumann-Rechner Rechnermodell 4. Grundlagen der maschinenorientierten Programmierung Assemblerprogrammierung Bezug zu Betriebssysteme Übersicht Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 1.9 1. Organisatorisches und Überblick Übersicht Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 1.10 1. Organisatorisches und Überblick Zusammenhang der Vorlesungsinhalte Überblick II Compilerbau (Kapitel 6) 5. Grundlagen von verteilten Systemen OSI Schichtenmodell Funktionsweisen von Rechnernetzen Internet Betriebssysteme (Kapitel 5) 6. Compilerbau (*) Aufbau und Funktionsweise von Compilern Lexer und Parser Maschinenorientierte Programmierung (Kapitel 4) 7. Automaten und formale Sprachen (*) Chomsky-Hierarchie deterministische und nicht deterministische Automaten von-Neumann-Rechner (Kapitel 3) Speicher Zahlen und logische Schaltungen (Kapitel 2) (*) sind noch in Bearbeitung, weswegen die Inhalte noch nicht endgültig festgelegt sind Kommunikation (Kapitel 7) von-Neumann-Rechner Übersicht Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 1.11 Übersicht Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 1.12 1. Organisatorisches und Überblick 1. Organisatorisches und Überblick Wie funktioniert ein Computer? Architektur und Programmierung Application (Netscape…) Networks Operating System Compiler (Unix, Linux, Assembler Windows…) Automata & formal language Software Hardware Processor Memory I/O system Instruction Set Architecture Grundidee: Ebenen der Abstraktion Verberge unnötige Implementierungsdetails Hilft zur Beherrschung realer, komplexer Systeme 1.13 1. Organisatorisches und Überblick Zusammenfassung Informatik II studiert die Funktionsweise von Rechnern Grundlegende Hardwarekomponenten: Datenpfad, Speicher, Eingabe/Ausgabe Geräte und Kontrolle; sowie die darunterliegende digitale Schaltungen/Logik Prinzipien von Software: Betriebssysteme, Kommunikationssysteme, Compiler; Automaten und formale Sprachen Prinzipien der Abstraktion sind wichtig zum Verstehen und Bauen von geschichteten Systemen Datenrepräsentation ist wichtig für die Leistung des Systems, Verwendung von Ressourcen und besseren Genauigkeit. Abstraktion und hierarchisches Design sind fundamentale Konzepte zur Handhabung von Komplexität Rohe Daten (Bitmuster) können alles bedeuten (integer, float, char, etc.). Erst ein Programm legt die Bedeutung fest Wissen über Rechnersysteme hilft beim Programmieren und beim Software-Engineering Übersicht Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Jeder Rechner hat 5 klassische Komponenten Compiler können optimierten Code für einen Prozessor erzeugen Betriebssysteme verwalten Ressourcen Gutes Eingabe/Ausgabe Verhalten ist für Datenbanken und Netzwerke wichtig Verwaltung der eigenen Daten/Code im Speicher Übersicht Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Wo und wie Daten abgelegt werden macht einen großen Unterschied. Schon das Umordnen von Statements kann hilfreich sein. Softwareentwicklung erfordert oftmals wissen über Rechnersysteme Informatik II Was passiert beim Übersetzen des Quellcodes? Warum ist Rechnerarithmetik manchmal falsch? Was ist ein Busfehler oder Speicherzugriffsfehler? Wie kann schneller ausführbarer Code erstellt werden? transistors, IC layout Datapath & Control Digital Logic Circuit Design Das Wissen über die Rechnerarchitektur hilft das Design von Programmiersprachen zu verstehen 1.15 Übersicht Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 1.14 2. Zahlen und logische Schaltungen Überblick Information und Informationsdarstellung Zahlensysteme Rechnerarithmetik Boolesche Algebra und Gatter Schaltwerke Informatik II SS 2004 Teil 2: Zahlen und logische Schaltungen Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Nachricht, Daten, Information (1) Nachricht, Daten, Information (2) Gleiche Informationen sind in verschiedenen Codierungen möglich Für verschiedene Empfänger hat die gleiche Information oft unterschiedliche Bedeutung Information muss für den Empfänger nicht neu sein, evtl. ist der Informationsgehalt auch leer Nachricht „Zeichen oder Kontinuierliche Funktion, die zum Zwecke der Weitergabe Information aufgrund bekannter oder unterstellter Abmachungen darstellen.“ (DIN 44300) Daten „Zeichen oder Kontinuierliche Funktion, die zum Zwecke der Verarbeitung Information aufgrund bekannter oder unterstellter Abmachungen darstellen.“ (DIN 44300) Information Information „Inhalt von Nachrichten oder Daten“ Nachricht Daten Information Codierung Information Codierung Information Weitergabe Verarbeitung Bedeutung/Inhalt Codierung 2.3 Interpretation Zweck Nachricht ‘5 Grad’ menschliche Sprache Duden Weitergabe der Information in einem Gespräch Datum ‘5 Grad’ 1011’0101 0010’0000 1100’0111 1111’0010 0110’0001 0110’0100 ASCII Weiterverarbeitung in einem Textverarbeitungsprogramm Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.2 Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.4 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Informationsdarstellung Analoge Daten & Digitale Daten Zur Übertragung von Nachrichten/Daten müssen diese in Signale umgesetzt werden. Analoge Daten Physikalische Prozesse werden im Allgemeinen durch kontinuierliche Funktionen beschrieben. Diese liefern im Prinzip unendlich viele Werte, wobei sich diese aufgrund der Unschärferelation nicht unbedingt unterscheiden lassen. Wo begegnen uns analoge Daten? Signal: physikalische Darstellung von Nachrichten/Daten Signaltypen: Radiowellen, Rauchsignale, Stromfluss, Schallwellen, usw. Quecksilberthermometer, Uhren, Schallplatten, Audio-Kassetten, Waagen Digitale Daten Signalparameter: Ausprägung eines Signals mit dessen Hilfe Nachrichten/Daten dargestellt werden. Parameterarten: Frequenz, Farbe, Form, Spannung, Lautstärke, usw. Signal Quantisierung, d.h. der eventuell unendliche Wertebereich wird auf endlich viele Werte abgebildet Wo begegnen uns digitale Daten? DVD, CD, Computerdisketten, digitale Uhren, digitale Thermometer Information/Wissen Nachricht/Daten Informationsdarstellung Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.5 2. Zahlen und logische Schaltungen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.6 2. Zahlen und logische Schaltungen Vorteile von digitalen Daten Wie kommt man in einer ‘analogen‘ Welt zu digitalen Daten? Auswahl diskreter Werte zur digitalen Interpretation erleichtert die rechnergestützte Verarbeitung und kann auch die Genauigkeit erhöhen Daten werden in Rechnern praktisch ausschließlich in digitaler Form dargestellt/verarbeitet. Meist in Form von „binären“ Signalen Binäre Signale: Signale, die nur zwei Zustände annehmen können. Beispiel: Digitalisierung von Sprache Analoge Telephonie basiert auf der “Ähnlichkeit” von elektronischen Wellen und Schallwellen Sprachübertragung in der analogen Telephonie (‘analog‘ ≅ ‘ähnlich‘) Zustand 1 0 Zeit Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.7 Anmerkung: Prinzip gilt auch für die Digitalisierung von Musik (z.B. MP3), erfordert aber eigene Annahmen. Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.8 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Sprach- und Signalisierungsübertragung Digitalisierung: Prinzip (1/3) „digital“ ≅ „ziffernmäßig“ Beispiel: Zusätzlich zur Nutzinformation werden Signalinformationen übertragen. Menge von Kartoffeln in einem Sack lässt sich durch zählen oder wiegen beschreiben. 100 kg lässt sich durch die Folge 1-0-0 im Dezimalsystem beschreiben Digitaltechnik: binärer Zeichenvorrat, d.h. 0 und 1 10010 ≅ 11001002 Ähnlich lassen sich elektrische Wellen in einem Telefon und der Telefonleitung beschreiben. Fazit: Elektrische Welle wird in regelmäßigen Abständen “abgehorcht” und der dann aktuelle Wert wird notiert Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.9 2. Zahlen und logische Schaltungen Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.10 2. Zahlen und logische Schaltungen Digitalisierung (2/3) Digitalisierung (3/3) Abtasttheorem Ein Signal muss mindestens mit einer (Abtast-) Frequenz abgetastet werden, die doppelt so hoch ist wie die höchste im Signal enthaltene Frequenz. Andernfalls kann das Signal nicht originalgetreu reproduziert werden. Abtastfrequenz = 1/(Abstand zwischen zwei Abtastpunkten) •Filter für Frequenzen >3400Hz Telephonie: Frequenzen (Töne): Abtastfrequenz: Tiefpass: 300 Hz bis 3400 Hz 8000 Hz Filter für Frequenzen > 3400 Hz •(------------ Hüllkurve angedeutet) Durch Abtastung entsteht eine Folge von Impulsen (Werten). Hüllkurve dieser Abtastwerte ergibt wieder das alte Signal. Verfahren: Pulsamplitudenmodulation (PAM) Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.11 Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.12 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Quantisierung (1/2) Quantisierung (2/2) Impulse sind ja immer noch analog, d.h. die gemessenen Werte sind für die digitale Repräsentation u.U. noch zu genau. Sie müssen zu digitalen Signalen verarbeitet werden. (⇒ Einschränkung auf eine darstellbare endliche Wertemenge) Maximal mögliche Amplitudenwert wird in eine endliche Anzahl von Amplitudenstufen unterteilt (=quantisiert) Je mehr Stufen (Quantisierungsschritte) benutzt werden, desto genauer wird das Originalsignal abgetastet und desto originalgetreuer kann es wieder gewonnen werden. Telekom-Netzbetreiber verwenden 28 = 256 Quantisierungsschritte (mit 8Bit darstellbar) Bitrate eines Fernsprechkanals? Abtastfrequenz: 8000Hz = 8000/s 8Bit * 8000/s = 64000 Bit/s = 64 kBit/s Informationsdarstellung Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.13 2. Zahlen und logische Schaltungen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.14 2. Zahlen und logische Schaltungen Zeitmultiplexverfahren Datenaufbewahrung Physikalische Prozesse mit deren Hilfe sich Signale und Informationen aufbewahren und wiederherstellen lassen Je nach Anwendung kann man zwischen RAM und ROM unterscheiden: Speichermedium ROM RAM 2.15 Wert 1 Webstuhl-Brettchen Bohrung Keine Bohrung Lochstreifen/Lochkarte Lochung Keine Lochung Kippschalter Kontakt zu Kontakt offen Magnetschicht ↑H ↓H Transistor 0,5 V 4,5 V Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Wert 0 Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.16 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Codierung - Grundlagen Codierung - Codes (1/2) Alphabet (Zeichenvorrat): Code: Endliche Menge von Zeichen, die zur Darstellung von Informationen benutzt wird Beispiele: Ziffern: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Alphanumerisches Alphabet: {a,...,z, A,...,Z, 0,...,9} Binärzeichen: {0, 1} zwei Zeichenvorräte: Urbildmenge und Bildmenge eindeutige Abbildung von der Urbildmenge auf die Bildmenge Binärcode: Code, bei dem jedes Zeichen der Bildmenge ein Wort aus Binärzeichen (Binärcode) ist. Wort: Folge von Zeichen, die in einem bestimmten Kontext als Einheit betrachtet werden Beispiele: Zahlwörter: Schreibwörter: Binärwörter: 105, 75, 73, 15, ... Kohlkopf, Hunger, Hund 001, 10010010, 1, 0, ... Bemerkungen zum Kontext: in Englisch hat das Wort ‘Kohlkopf’ keine Bedeutung ‘010’ kann von Rechner mit Wortlänge 8 nicht verarbeitet werden Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.17 2. Zahlen und logische Schaltungen Alphanumerische Codes Sind zur gemeinsamen Darstellung von Zahlen und Buchstaben in Texten notwendig. Alphabet: Beispiel: Codierung der Zahlen 0 ... 9 als Binärwörter Abkürzungen BCD: Binary Coded Decimal EBCDIC: Extended Binary Decimal Interchange Code ASCII: American Standard Code for Information Interchange BCD EBCDIC (Dualzahl) 0 1 2 3 4 5 6 7 8 9 + - 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 ASCII (P: Paritätsbit) 1111’0000 1111’0001 1111’0010 1111’0011 1111’0100 1111’0101 1111’0110 1111’0111 1111’1000 1111’1001 P011’0000 P011’0001 P011’0010 P011’0011 P011’0100 P011’0101 P011’0110 P011’0111 P011’1000 P011’1001 P010’1011 P010’1101 26 Großbuchstaben (A ... Z) 26 Kleinbuchstaben (a ... z) 10 Zahlen (0 ... 9) 62 Zeichen 62 Zeichen lassen sich in einem Binärwort der Länge 6 codieren (26 = 64). Was ist mit nationalen Sonderzeichen und Satzzeichen? Zum Beispiel: Ä Ü Ö , ; : - + ( ) Man benutzt daher einen 7 Bit Code mit dem sich 128 Zeichen (27 Zeichen) codieren lassen. Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.18 2. Zahlen und logische Schaltungen Codierung - Codes (2/2) Dezimalzahl Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.19 Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.20 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Bits P000 76543210 Codierung - ASCII Code (1/2) ASCII: American Standard Code for Information Interchange 8 - Bit Code: 7 Bit zur Codierung von Zeichen 1 Bit Paritätsbit P001 P010 P011 P100 P101 P110 P111 0000 NULL DC0 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 SOM EOA EOM EOT WRU RU BELL FE HT/SK LF DC1 DC2 DC3 DC4 ERR SYNC LEM S0 S1 S2 ! „ # $ % & ‘ ( ) * 1011 V/TAB S3 1100 1101 1110 1111 FF CR SO SI S4 S5 S6 S7 0 @ P ‘ p 1 2 3 4 5 6 7 8 9 : A B C D E F G H I J Q R S T U V W X Y Z a b c d e f g h i j q r s t u v w x y z + ; K , . / < = > ? L M N O Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.21 2. Zahlen und logische Schaltungen ↑ ← l m n o ACK UC ESC DEL Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.22 2. Zahlen und logische Schaltungen Codierung - ASCII Code (2/2) Der Unicode-Standard (1/4) Die meisten Computer arbeiten jedoch mit einer 8 Bit Codierung ohne Paritätsbit, d.h. anstelle von 27 (=128) Zeichen werden 28 (= 256) Zeichen kodiert. Man spricht dann von “Extended Character Sets“. Extended Character Sets werden z.B. benutzt um Linienzeichnungen (z.B. ⎤ oder ⎝) und andere wichtige Zeichen zu kodieren (z.B. ☺ oder ). Natürlich auch zur Berücksichtigung von nationalen Varianten (z.B. ß, ü, Ü, ö, Ö, ä, Ä, û, ú, ù, Æ, æ, è, é, Ó). Typischerweise reichen 256 Zeichen jedoch nur aus um eine nationale Variante zu unterstützen, wodurch es dann wieder viele verschiedene nationale Extended Character Sets gibt. Ein Ausweg aus diesem Chaos soll der Unicode sein, einer 16 Bit Kodierung von Zeichen, bei der die ersten 128 Kodierungen der normalen 7 Bit ASCII entsprechen. Allgemeines Universeller Standard zur Zeichencodierung Teilmenge von ISO/IEC 10646-1 second edition: Information Technology Universal Multiple- Octet Coded Character Set (UCS)-Part 1: Architecture and Basic Multilingual Plane Ziele: Codierung multilingualer Texte Einfacher Austausch von Textdateien über nationale Grenzen hinweg Einbeziehung mathematischer und technischer Symbole Unicode ist Standardcodierung bei Java Unterstützung in C++ durch Datentyp wchar_t und Klassenbibliotheken wie QT Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 k \ 2.23 Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.24 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Der Unicode-Standard (2/4) Der Unicode-Standard (3/4) Zeichenumfang Zeichencodierung Jedes Zeichen ist eindeutig einem 16-Bit-Codewert zugewiesen ≈ 65.500 Zeichen; ausreichend für die Codierung aller Zeichen aller geschriebenen Sprachen Aktuelle Codierung: Alphabetics, Symbols 10.236 CJK Ideographs 27.786 Hangul Syllables 11.172 Private Use 6.400 Surrogates 2.048 Controls 65 Unicode entspricht in Not Characters den unteren 128 Werten dem ASCII-Code Total assigned 16-bit code values 2 57.709 Unassigned 16-bit code values Unterstützte Sprachen: Latein, Griechisch, Chinesisch/Japanisch/Koreanisch, Kyrillisch, Arabisch, Bengalisch, Gujarati,... Zusammengesetzte Zeichen (z. B. Umlaute) können wahlweise dargestellt werden: durch „vorkomponierte“ Zeichen (aus Kompatibilität), z. B. ä, oder durch Kombination von Grundzeichen und Diakritika (vorteilhaft bei Sortierung), z. B. a“ Änderung der Schreibrichtung kann durch spezielle Zeichen eingeleitet werden, z. B. beim Wechsel zwischen Englisch und Arabisch Unicode legt nicht das Aussehen (glyph) von Zeichen fest; statt dessen Zuweisung eines Namens, z. B. „LATIN CAPITAL LETTER A“ 7.826 Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.25 Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Der Unicode-Standard (4/4) Codierung - Schichtenmodell Quellen Schichtenmodell als Gedankenmodell Unicode Consortium (http://www.unicode.org) The Unicode Standard, Version 3.0, Addison Wesley, 2000 (mit Korrekturen für Version 3.0) C3 C2 C1 C0 Beispiel: Codierungen sind häufig geschachtelt. D.h. eine höhere Schicht stützt sich auf die nächst tiefere ab. Die höhere Schicht nimmt Zeichen entgegen, ignoriert aber deren tiefere Codierung. C++ – Schlüsselwörter Großbuchstaben ISO ISO 7-Bit 8-Bit Bytes Binärstellen, Bits Schaltzustände Elektronenebene Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.26 2.27 Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.28 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Rückblick: Information und Informationsdarstellung Überblick Signal, Daten, Nachricht, Information Analoge Daten & digitale Daten Codierungen Information und Informationsdarstellung Zahlensysteme Rechnerarithmetik Boolesche Algebra und Gatter Schaltwerke Zahlencodes alphanumerische Codes Codes BCD Code EBCDIC Code ASCII Code Unicode Schichtung von Codierungen Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.29 2. Zahlen und logische Schaltungen Polyadische Zahlensysteme (2/2) Potenzen zu einer Basis B als Stellenwert n = ∑ai * Bi z.B. Codierung von 198510 BCD (kein polyadisches Zahlensystem): 0001 1001 1000 0101 (B, ai ∈ N0, B > 1) i=0 1 9 8 = ((...(aN-1 * B) + aN-2) * B + ...)*B + a1) *B + a0 (Horner Schema) besagt das <ZAHL> einen Wert im Zahlensystem mit der Basis <Basis> beschreibt. 123 im Dezimalsystem, z.B. 12310 11102 1110 im Dualsystem Dualsystem (Basis 2): 111110000012 = 1*210 + 1*29 + 1*28 + 1*27 + 1*26 + 0*25 + 0*24 + 0*23 + 0*22 + 0*21 + 0*20 =(((((((((1*2 + 1)*2 + 1)*2 + 1)*2 + 1)*2 + 0)*2 + 0)*2 + 0)*2+ 0)*2+ 0)*2+ 1 =198510 Zahlensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5 Dezimalsystem (Basis 10): 198510 = 1 * 103+9 * 102 +8 * 101 + 5 * 100 = ((1 * 10) + 9) * 10 + 8) *10 + 5 = aN-1 * BN-1 + aN-2 * BN-2 + ... + a1 * B1 + a0 Konvention: <ZAHL><BASIS> 2.30 2. Zahlen und logische Schaltungen Polyadische Zahlensysteme (1/2) N-1 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.31 Zahlensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.32 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Zahlensysteme mit Zweierpotenz als Basis Umrechnung zwischen Zahlensystemen Binärsystem (Basis 2) Vierersystem (Basis 4) Oktalsystem (Basis 8) Hexadezimalsystem (Basis 16) (Zeichenvorrat: 0...9, A...F) Einfache Umrechnung: „Umgruppieren der Binärstellen“ Beispiel: 146310 = 101101101112 = 01 01 10 11 01 11 1 1 2 3 1 3 = = 010 110 110 111 2 6 6 7 0101 1011 0111 5 B 7 Im allgemeinen reicht es nicht aus einfach nur die Binärstellen umzugruppieren. Empfehlung für die manuelle Umrechnung: I. Darstellung mit Basis B1 Multiplikative Umrechnung im Zielsystem (hier Basis 10) (1) * II. Darstellung mit Basis 10 = 1123134 Dividierende Umrechnung im Quellsystem (hier Basis 10) (2) / =26678 III. Darstellung mit Basis B2 =5B716 Zahlensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.33 2. Zahlen und logische Schaltungen Beispiel für manuelle Umrechnung (2/3) DB716 = ???7 (1) Multiplikative Umrechnung mit Basis 10 (2) D16 * 16102 + B16 * 16101 + 716 * 16100 = D16 * 25610 + B16 * 1610 + 716 = 1310 * 25610 + 1110 * 1610 + 710 = + + 710 332810 = 17610 351110 oder entsprechend dem Horner Schema DB716 Dividierende Umrechnung im Quellsystem (Quellsystem: Basis 10, Zielsystem: Basis 7) (Einfaches ‘Ausmultiplizieren’) = 2.34 2. Zahlen und logische Schaltungen Beispiel für manuelle Umrechnung (1/3) DB716 Zahlensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 351110 / 7 = 501 Rest 4 = a0 501 / 7 = 71 Rest 4 = a1 71 / 7 = 10 Rest 1 = a2 10 / 7 = 1 Rest 3 = a3 1 / 7 = 0 Rest 1 = a4 0 / 7 = 0 Rest 0 = a5 ... / 7 = 0 Rest 0 = a6 = ((D16 * 1610) + B16) * 1610 + 716 = ((1310 * 1610) + 1110) * 1610 + 710 ... ... ... ... ... ... ... ... ... = (20810 + 1110) * 1610 + 710 ... ... ... ... ... ... 0 = an = 350410 + 710 = 351110 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 (a4a3a2a1a0)7 = 131447 Zahlensysteme 2.35 Zahlensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.36 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Empfehlung für manuelle Umrechnung zwischen Zahlensystemen (Zusammenfassung) Beispiel für manuelle Umrechnung (3/3) Beispiel: DB716 = ???7 Also: I. Darstellung mit Basis B1 (1) Multiplikative Umrechnung im Zielsystem (hier Basis 10) * DB716 = 351110 = 131447 Schritt (1) Schritt (2) (Multiplikation) (Division) DB716 = ((D16 * 16) + B16) * 16 + 716 = ((13 * 16) + 11)*16 +7 = (208 + 11) * 16 + 7 = 219 * 16 + 7 = 3504 + 7 = 351110 II. Darstellung mit Basis 10 (2) Dividierende Umrechnung im Quellsystem (hier Basis 10) / 3511 501 71 10 1 :7 :7 :7 :7 :7 = 501 = 71 = 10 = 1 Rest = 0 Rest Zahlensysteme 2.37 2. Zahlen und logische Schaltungen Zahlensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.38 2. Zahlen und logische Schaltungen Direkte Umrechnung einer Zahlendarstellung mit Basis B1 in eine Zahlendarstellung mit der Basis B2 (1/2) Direkte Umrechnung einer Zahlendarstellung mit Basis B1 in eine Zahlendarstellung mit der Basis B2 (2/2) Dividierende Umrechnung im Quellsystem Multiplikative Umrechnung im Zielsystem Beispiel: DB716 = ???7 Beispiel: DB716 = ???7 Einfaches ‘Ausmultiplizieren’ DB716 4 = a0 4 = a1 1 = a2 = a3 = a4 DB716 = 351110 = 131447 III. Darstellung mit Basis B2 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Rest Rest Rest 3 1 = = = = D16 * 5147 167 * 5147 124637 131447 ( 1610 = 1016 = 227, 16102= 25610 = 5147) + + + B16 * 227 147 * 227 3417 + + + 716 107 107 DB716 / 716 = 1F516 1F516 / 716 = 4716 / 716 A16 / 116 / Rest 4 = a0 4716 Rest 4 = a1 = A16 Rest 1 = a2 716 = 116 Rest 3 = a3 716 = 016 Rest 1 = a4 oder entsprechend dem Horner Schema DB716 = = = = = ((D16 * 227) + B16) * 227 + 716 ((167 * 227) + 147) * 227 + 107 (4157 + 147) * 227 + 107 131347 + 107 131447 a4 a3 a2 a1 a0 = 131447 Zahlensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.39 Zahlensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.40 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Darstellung von Brüchen Handhabung von unechten Brüchen Brüche werden als negative Potenzen der Basis dargestellt. zB = -N ∑ai * Vor dem Komma anfallende Ziffern entsprechen dem Rest bei der Division im Quellsystem (vgl. Folie 2-35). (B, ai ∈ N0, B > 1, ai<B) Bi i=-1 Für Umrechnung Aufspalten in Horner Schema: z= 1 (a + -1 B 1 (a-2 + B 1 (a-3 + ... + B 1 (a-N+1 + B ganze Zahl und echter Bruch. 1 a-N) ... ) B zB = 0 , a-1 a-2 a-3 a-4 ... a-N Darstellung: Wiederholte Multiplikation mit der Basis B bringt die Ziffern ai vor das Komma: -N -N zB * B = a-1 + ∑ai * Bi (wobei immer gilt : ∑ai * Bi < 1) i=-2 z= a-1 + i=-2 1 (a + -2 B 1 B (a-3 + ... + 1 (a -N+1 + B 1 a ) ... ) -N B z.B.: 0.5310 * 1010 = 5,310 Zahlensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.41 2. Zahlen und logische Schaltungen 2.42 2. Zahlen und logische Schaltungen Umrechnung im Quellsystem Beispiel: Umrechnung im Quellsystem (1/2) Beispiel: 12,023 = ??,??2 Ganzahliger Anteil: 123 = 1012 Echter Bruch: 0,023 = 0,???2 Zahlensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 0,023 = 0,???2 (Bemerkung: 123 = 510) Dividierende Umrechnung im Quellsystem (vgl. Folie 2-35) bedeutet sukzessive Division durch 1/B (Division mit Bruch = Multiplikation mit Kehrwert des Bruches) Sukzessive Division durch 1/B entspricht einer Sukzessiven Multiplikation mit der Basis B. Der ganzzahlige Anteil bei den Multiplikationsschritten bildet die ai im Zielsystem. Zahlensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.43 Zahlensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.44 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen 0,023 * 23 = 0,113 a-1 = 0 0,113 * 23 = 0,223 a-2 = 0 0,223 * 23 = 1,213 a-3 = 1 Beispiel: Umrechnung im Quellsystem (2/2) Ergebnis: 12,023 Periode 0,213 * 23 = 1,123 a-4 = 1 0,123 * 23 = 1,013 a-5 = 1 0,013 * 23 = 0,023 a-6 = 0 0,023 * 23 = 0,113 a-6 = 0 0,113 ~ 5,2221710 5,210 Darstellung von Brüchen in unterschiedlichen Zahlensystemen kann zu Ungenauigkeiten führen. Zahlensysteme 3 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.45 2. Zahlen und logische Schaltungen wg. Darstellung als negativer Exponent der Basis heißt das Division Division nach Horner mit Anschreiben der Ziffern in umgekehrter Reihenfolge 5 1 7 1 * (3 + 71 * (6 + 7 5))) 1 1 = ((( 7 + 6) * 7 + 3) * 7 + 4) * 1 7 510 : 710 = 0,714310 6, 714310 : 710 = 0,959210 3, 959210 : 710 = 0,565610 4, 565610 : 710 = 0,652210 0, 4 3 6 5 7 Zahlensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.46 Umrechnen im Zielsystem (2/2) z.B. 0.43657 ???10 (Erinnerung: multiplikative Umrechnung, vgl. Folie 2-34) * (4 + Zahlensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2. Zahlen und logische Schaltungen Umrechnen im Zielsystem (1/2) 1 7 101,0011102 d.h. 0,023=0,0011102 0,22 0,43657 = = 2.47 0, 6 5 2 2 10 Zahlensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.48 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Überblick Zahlendarstellung und Rechnen im Dualsystem (1/3) Information und Informationsdarstellung Zahlensysteme Rechnerarithmetik Logische Schaltungen Boolesche Algebra Kombinierte logische Schaltungen Durch N Bits lassen sich 2N Zahlenwerte codieren Nur positive Zahlen, Wertebereich: 0 ... (2N–1) Positive und negative Zahlen: (N-1) - Bit Zahl mit Vorzeichen darstellbarer Wertebereich: [-2N-1 ... 0 ... 2N-1-1] „Most significant“ Bit als Vorzeichencodierung 7 ↑ N=8 N= 16 6 5 4 3 2 1 0 „most significant bit“ 0 = positive Zahl 1 = negative Zahl Wertebereich: 0 ... 255 oder -128 ... +127 Wertebereich: 0 ... 65535 oder -32768 ... +32767 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.49 2. Zahlen und logische Schaltungen 2.50 2. Zahlen und logische Schaltungen Zahlendarstellung und Rechnen im Dualsystem (2/3) Zahlendarstellung und Rechnen im Dualsystem (3/3) N Bits erlauben 2N Möglichkeiten zur Zahlendarstellung, d.h. nur eine Darstellung mit endlicher Genauigkeit. Was macht man? man führt Operationen auf einem Zahlenring durch Darstellung (Codierung) der Zahlen als Binärworte Bei positiven Zahlen: Zahlen n und n + BN sind nicht unterscheidbar (höchstwertige Bit geht verloren) Bei positiven und negativen Zahlen: Additionsüberlauf kann zu negativen Ergebnissen führen Beispiel: 0 1001110 78 + 0 1011000 1 0100110 | Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 + 88 166 > 128 -38 negatives Vorzeichen Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.51 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.52 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen 3 Darstellungsformen für Zahlen 1. 2. 3. Darstellung mit Vorzeichen und Betrag (1/2) Vorzeichen und Betrag (engl. Sign-/Magnitude) Stellenkomplement Basiskomplement Wortlänge N N-1 Bits beschreiben den Betrag der Zahl 1 Bit beschreibt das Vorzeichen der Zahl zwei Darstellungen für die NULL engl. ‘Sign-/Magnitude Representation‘ Die Vorzeichen und Betrag Darstellung entspricht dem was man so kennt. Warum 3 Darstellungsformen? Ziel: möglichst einfache ALU (CPU Baustein, der Rechenoperationen durchführt) Wie macht man das? Subtraktion wird auf die Addition zurückgeführt Multiplikation wird auf die Addition zurückgeführt Division wird auf die Multiplikation (d.h. Addition) zurückgeführt Rechnerarithmetik Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.53 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Darstellung mit Vorzeichen und Betrag (2/2) 0 Nachteile der Betrag-/Vorzeichen-Darstellung Man benötigt Addier- und Subtrahierwerk in der ALU Man benötigt spezielle Logik um zu bestimmen, ob addiert oder subtrahiert werden soll Beispiel: die Operanden x und y sollen addiert werden 011...1 100...0 111...1 -0 +0 111...1 10...0 00...0 es sind folgende Fälle zu unterscheiden: 011...1 Fall Beispiel für diese Darstellung: Dezimal Vorzeichen Betrag + 92 0000 0101 1100 - 92 1000 0101 1100 Operanden 2.55 +x ⇒ x≥0 –x ⇒ x < 0 +y ⇒ y≥0 –y ⇒ y < 0 Auszuführende Operation 1 +x +y (zwei positive Operanden) Addition 2 -x-y (zwei negative Operanden) Addition -(x + y) 3 |positiver Operand| ≥ |negativer Operand| +x, -y, |x| ≥ |y| bzw. +y, -x, |y| ≥ |x| Subtraktion x – y bzw. y – x 4 |negativer Operand| ≥ |positiver Operand| +x, -y, |x| < |y| bzw. +y, -x, |y| < |x| Subtraktion –(|y| – |x|) bzw. – (|x| – |y|) Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.54 x+y Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.56 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Komplementdarstellungen 1. 2. Stellenkomplement (1/2) C für das Stellenkomplement: N-1 C = BN – 1 Darstellung einer Zahl a: n = ∑ai * Bi i=0 Komplementbildung: Stellenkomplement (B-1 Komplement) Basiskomplement N-1 a= C–a= Ziel: Rückführung der Subtraktionen auf die Addition (BN-1) - ai * Bi i=0 Komplementbildung: b = C – b (für geeignetes C) Subtraktion durch Addition des Komplements: a+b = a–b+C ⇔ a–b = a+b–C N-1 = N-1 Bi+1 - N-1 Bi i=0 - i=0 ai * Bi i=0 | BN – 1 N-1 = d.h. wenn (1.) das Komplement leicht zu bilden ist und (2.) die Reduktion mod C einfach ist, dann kann die Subtraktion auf eine Addition des Komplements zurückgeführt werden ((B – 1) – ai) * Bi i=0 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.57 2. Zahlen und logische Schaltungen ((B – 1) – ai) bedeutet: (B-1)-Komplement kann für jede Stelle (= Stellenkomplement) gebildet werden. Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.58 2. Zahlen und logische Schaltungen Stellenkomplement für die Basis 2 Stellenkomplement und andere Basen N-1 N-1 Wie funktioniert die (B-1)-Komplementbildung für die Basis 2? einsetzen in die bekannten Formeln: N-1 a = ∑ai * 2i Formeln: a = ∑ai * Bi; a = ∑ ((2 – 1) - ai ) * 2i Man kann das Stellenkomplement auch auf andere Zahlensysteme (neben dem Dualsystem) anwenden, z.B. Dezimalsystem (d.h. B = 10): i=0 i=0 N-1 i=0 (1 – ai ) d.h. Invertierung jeder Stelle der Dualzahl → → → → → → x5 = 1 – x5 = 1 – 0 = 1 x4 = 1 – x4 = 1 – 1 = 0 x3 = 1 – x3 = 1 – 0 = 1 x2 = 1 – x2 = 1 – 0 = 1 x1 = 1 – x1 = 1 – 1 = 0 x0 = 1 – x0 = 1 – 0 = 1 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 i=0 x=357 Beispiel: x = x5 x4 x3 x2 x1 x0 = 0 1 0 0 1 0 x5 = 0 x4 = 1 x3 = 0 x2 = 0 x1 = 1 x0 = 0 ((B – 1) – ai) * Bi im Dualsystem: Komplementbildung ≅ „Bits stellenweise invertieren“ i=0 N-1 = ∑ (1 - ai ) * 2i a= x=101101 x2 = 3 → x2 = (10 – 1) – x2 = 9 – 3 = 6 x1 = 5 → x1 = (10 – 1) – x1 = 9 – 5 = 4 x0 = 7 → x0 = (10 – 1) – x0 = 9 – 7 = 2 x=642 Rechnerarithmetik 2.59 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.60 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Eigenschaften Stellenkomplement (Dualsystem) Zahlenring im Stellenkomplement Im Rechner werden die negativen Zahlen als Komplemente der positiven Zahlen dargestellt. Das „most significant Bit“ beschreibt das Vorzeichen der repräsentierten Zahl: -7 8 1000 positive Zahlen -3 12 1100 1 1 1 ... 1 0101 4 3 -2 13 1101 2 +- -1 14 1110 +(½ * BN – 1) 0110 5 negative Zahlen -4 11 1011 Zwei Darstellungen der Null Darstellbarer Zahlenbereich –(½ * BN – 1) ... 6 -5 10 1010 1 ⇒ – Und 0111 -6 9 1001 0 ⇒ + 0 0 0 ... 0 7 0 1 0100 0011 0010 0001 0000 1111 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.61 2. Zahlen und logische Schaltungen Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.62 2. Zahlen und logische Schaltungen Stellenkomplement: Reduktion mod C (1/7) Stellenkomplement: Reduktion mod C (2/7) 1. Fall: a, b > 0 ; a > b ⇒ d > 0 Erinnerung: Stellenkomplement ist nur sinnvoll, wenn Abschätzung: BN ≤ a + b < 2*BN d.h.: Es tritt ein Überlauf von 1 in die (nicht existierende) (N+1).te Stelle auf. Warum? C – b) a+b= a+( Komplementbildung einfach ist (Stellenweise invertieren) Reduktion mod C einfach ist | Reduktion mod C: d = a – b = a + b –C Es sind 3 Fälle zu unterscheiden: = = a+( a–b BN – 1 – 1 + BN – b) | 0 < d < BN 1. Fall (zwei positive Zahlen) a, b > 0 ; a > b ⇒ d>0 2. Fall (zwei positive Zahlen) a, b > 0 ; a ≤ b ⇒ d≤0 3. Fall (zwei negative Zahlen) d = –a – b < 0 ; |d| = a + b Ignorieren des Übertrags entspricht einer Subtraktion von BN Aufaddieren einer 1 entspricht dann einer Subtraktion von C = BN – 1 d.h. man muß den Überlauf addieren um zum richtigen Ergebnis zu gelangen. Stichwort: “Einserrücklauf“ Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.63 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.64 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Stellenkomplement: Reduktion mod C (3/7) Stellenkomplement: Reduktion mod C (4/7) 1. Fall: 3 Beispiele 1. Fall: 3 Beispiele I. Dezimalsystem (N = 3) a–b 65 – 43 III. Dualsystem (N = 5) Dezimal a+b–1 14 01110 – 0 + 11111 1 01101 1 14 01110 a+b–1 065 + 956 1 021 Komplementbildung 43 = 999 – 043 = 956 1 022 22 II. Dualsystem (N = 5) a–b 01110 ⇒ –00111 a+b–1 01110 + 11000 1 00110 1 00111 Bemerkung 1: 00000 = 11111 Bemerkung 2: „negative Null stört nicht“ Dezimal (Komplement) – ⇒ 14 7 7 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.65 2. Zahlen und logische Schaltungen Stellenkomplement: Reduktion mod C (6/7) 2. Fall: a, b > 0 ; a ≤ b ⇒ d ≤ 0 3. Fall: d = –a – b < 0 ; |d| = a + b Differenz d = a – b ist negativ, d.h. d muß selbst in der Komplementdarstellung vorliegen: d ⇒ C – |d| d in Komplementdarstellung d = C - |d| ist erwünscht a + b = (C – a) + (C – b) = (C – (a + b)) + C = (C – |d|) + C = |d| + (BN – 1) d = – |d| = a + b – C ⇔ C – |d| = a + b ≤ C = BN – 1 verschwindet durch ignorieren des Überlaufs und Einserrücklauf d.h. die Addition des Komplements liefert bereits d in der richtigen Darstellung! Es tritt kein Überlauf in die (N+1).te Stelle auf, weil: a + b ≤ BN – 1 Beispiel: 5 – 7 – 2 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.66 2. Zahlen und logische Schaltungen Stellenkomplement: Reduktion mod C (5/7) dezimal Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 a+b dual – 00101 00111 Gewünschte Ergebnis ⇒ + 00101 11000 11101 Rechnerarithmetik 2.67 Überlauf in die (N+1).te Stelle und Einserrücklauf liefern |d| in Komplementdarstellung (d.h. das gewünschte Ergebnis) Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.68 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Stellenkomplement: Reduktion mod C (7/7) Basiskomplement (B-Komplement) 3. Fall: d = –a – b < 0 ; |d| = a + b C für das Basiskomplement: C = BN Komplementbildung: N-1 N-1 Ba = BN – ai * Bi = (BN-1) – ( ai * Bi ) + 1 Beispiel: – 7 – 5 Dual 1100 + 0 1101 0 1 1001 0 = B-1a i=0 i=0 +1 d.h. die Komplementbildung ist für das Basiskomplement etwas aufwendiger (B–1)–Komplement bilden Aufaddieren einer 1 Beispiel: – 1 2 1 10011 (12 ≅ 0 1 1 0 0) (B-1)-Komplement: 5 ≅ 00101 B–15 ≅ 11010 Aufaddieren von 1: + ≅ B5 1 11011 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.69 2. Zahlen und logische Schaltungen Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2. Zahlen und logische Schaltungen Eigenschaften Basiskomplement (Dualsystem) Zahlenring im Basiskomplement -8 1000 Negative Zahlen werden als Komplemente der positiven Zahlen dargestellt. Das „most significant Bit“ beschreibt das Vorzeichen der Zahl. -7 9 1001 8 0111 6 -5 11 1011 1 ⇒ – Es gibt nur eine Null Bemerkung: Komplement der Null liegt beim Basiskomplement, anders als beim Stellenkomplement, nicht mehr im darstellbaren Zahlenbereich (Übertrag in die (n+1).te Stelle). negative Zahlen -4 12 1100 positive Zahlen +(½ * – 1) 3 2 -1 15 1111 2.71 0101 4 -3 13 1101 -2 14 1110 BN 0110 5 0 0000 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7 -6 10 1010 0 ⇒ + Darstellbarer Zahlenbereich –(½ * BN ) ... 2.70 1 0100 0011 0010 0001 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.72 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Reduktion mod C im Basiskomplement (1/2) Reduktion mod C im Basiskomplement (1/2) einfach, da C = BN, d.h. Überlauf in die (N+1).te Stelle ignorieren entspricht bereits der Subtraktion von BN ⇒ „kein Einserrücklauf“ Beispiele: Dezimalsystem (N=3) 065 – 043 B043 = 956 + 1 ⇒ 022 Beispiele: Dualsystem (N=5) dezimal 5 – 065 + 957 1 022 ⇓ 022 Dual 7 –2 00101 + 11001 11110 (≅ B2) Fall d < 0: Ergebnis ist bereits in Komplementdarstellung Dualsystem (N=5) dezimal – Dual 14 01110 7 + 11001 7 1 00111 (≅ B7) Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.73 2. Zahlen und logische Schaltungen Stellen- und Basiskomplement (2/2) Überschreiten des zulässigen Zahlenbereichs Fall 1: a, b > 0 Bei Operanden mit ungleichem Vorzeichen ist ein Überschreiten des zulässigen Zahlenbereichs nicht möglich: oder |a – b| ≤ |b| Ein Fehler entsteht dann, wenn gilt a + b ≥ BN-1 Das vorderste (‚most significant‘) Bit wird gesetzt und als falsches Resultat entsteht eine negative Zahl. Es gibt jedoch keinen Überlauf in die (N+1).te Stelle. Fall 2: Überschreitung möglich, wenn: a, b < 0 a, b < 0 Ein Fehler entsteht dann, wenn gilt |a| + |b| > BN-1 (Basiskomplement) (Stellenkomplement) ≥ BN-1 Das Vorzeichenbit wird dann zurückgesetzt, es gibt einen Überlauf in die (N+1).te Stelle und es entsteht ein falsches ‚positives‘ Resultat. Beim Stellenkomplement führt dieses normalerweise zum Einserrücklauf oder a, b > 0 da das oberste Bit das Vorzeichen repräsentiert, kann bei Überschreitung des Zahlenbereichs das Vorzeichen wechseln. In so einem Fall muß: - ein Überlauf angezeigt werden, - eine arithmetische Fehlerbedingung aktiviert werden - „Overflow error“ angezeigt werden, - .... - usw. Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.74 2. Zahlen und logische Schaltungen Stellen- und Basiskomplement (1/2) |a – b| ≤ |a| Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.75 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.76 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Gegenüberstellung der 3 Zahlencodierungen Rechenwerk Multiplikation und Division (1/2) Negation Einserrücklauf Vorzeichen-/ Betrag Add / Sub Vorzeichen invertieren Stellenkomplement Add Ziffern komplementieren Ja Basiskomplement Stellenkomplement+ 1 Add Nein Nein zurückführen auf Addition (bzw. Subtraktion) Multiplikation: Wiederholtes Verschieben (Shift-Operationen) und Addieren im Dualsystem 010110101 * 0 1 0 0 0 0 0 1 0 Stellenkomplement: Verzögerung beim Rechnen wg. Einserrücklauf Zwei Darstellungen der NULL + Basiskomplement Mehraufwand beim Herstellen des Komplements Verzögerung beim Negieren 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 Shift-Operationen 1 0 1 0 0 0 1 1 0 Praxis: heute fast nur noch Basiskomplement (Genügend Wortbreite für das Resultat angenommen) Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.77 2. Zahlen und logische Schaltungen BCD–Darstellung & BCD–Arithmetik (1/4) Division: – 1 1 0 0 0 1 0 0 0 0 0 0 1 – 1 1 0 0 1 1 1 0 0 1 0 1 0 0 0 1 1 0 0 : 10010 4.te Alternative zur Darstellung und zum Rechnen mit ganzen Zahlen BCD–Darstellung und BCD–Arithmetik wird von verschiedenen Mikroprozessoren direkt unterstützt BCD–Codierung: = 10111 Rest: 1 0 1 1 0 0 0 1 1 0 1 1 010 110 210 310 410 510 610 710 810 910 Wiederholtes Verschieben und Subtrahieren im Dualsystem Schwierig bei negativem Divisor eine Lösung: rechnen mit absoluten Beträgen und anschließend Vorzeichenrechnung Fehlermeldung für Divisor = 0 („Zerodivide“) ≅ ≅ ≅ ≅ ≅ ≅ ≅ ≅ ≅ ≅ 0000BCD 0001BCD 0010BCD 0011BCD 0100BCD 0101BCD 0110BCD 0111BCD 1000BCD 1001BCD ‘+‘ ≅ 1010 ‘-‘ ≅ 1011 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.78 2. Zahlen und logische Schaltungen Multiplikation und Division (2/2) 1 1 0 –1 0 0 1 0 – 1 1 – Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.79 1100 1101 1110 ungenutzte Werte 6 Codierungen, die nicht zur Zahlendarstellung benutzt werden 1111 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.80 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen BCD–Darstellung & BCD–Arithmetik (2/4) Beispiel 1: dezimal BCD–Darstellung & BCD–Arithmetik (3/4) Beispiel 3: 4739 + 1287 = 6026 BCD –Darstellung 23 0010 0011 0100 0111 0011 1001 +14 0001 0100 0001 0010 1000 0111 1 37 0011 0111 normale Dualzahlenaddition liefert hier das korrekte Ergebnis Beispiel 2: dezimal BCD –Darstellung 29 0010 1001 +14 0001 0100 3? (6) 0011 1101 0110 43 0100 1 → ungültiger BCD Code → Korrektur 0011 Bei Überträgen und beim Erreichen von ungültigen BCD-Codierungen liefert die Addition von 610 (= 0110BCD) das richtige Ergebnis 0101 1001 1100 0000 0110 → Übertrag →+6 0101 1001 1100 0110 → ungültiger BCD Code 1 0110 0101 1010 0010 1 0110 0110 0000 0010 0110 ⇓ 0 ⇓ 2 ⇓ 6 ⇓ 6 →+6 0110 → ungültiger BCD Code →+6 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.81 2. Zahlen und logische Schaltungen Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.82 2. Zahlen und logische Schaltungen BCD–Darstellung & BCD–Arithmetik (4/4) Gleitkommazahlen: Motivation Häufig berichteter Fehler in GCC (GNU Compiler Collection) Abschließende Bemerkungen: Der BCD-Code erlaubt auch das Rechnen mit Festzahlen, d.h. Zahlen bei denen die Anzahl der Stellen hinter dem Komma festliegt Wenn der Ablauf „Zahleneingabe, Arithmetik, Zahlenausgabe“ ohne Umwandlung ins Binärsystem erfolgen soll, wird der BCD-Code bevorzugt. Der BCD-Code wird vorwiegend im technischen Bereichen verwendet, z.B. für 7-Segment-Anzeigen zur Darstellung von Zahlen. Quelle: http://gcc.gnu.org/bugs.html#known (Stand 19. April 2004) Non-bugs: „The following are not actually bugs, but are reported often enough to warrant a mention here.“ Inkorrekte Handhabung von Gleitkommazahlen, z.B.: #include <iostream> int main() { double a = 0.5; double b = 0.01; std::cout << (int)(a / b) << std::endl; return 0; } In Abhängigkeit von der verwendeten Genauigkeit und Rundung wird als Ergebnis 50 (korrekt) oder 49 (falsch) geliefert. Kein Fehler des Compilers, sondern Einschränkung von Gleitkommazahlen Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.83 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.84 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Gleitkommazahlen: „Floating Point Numbers“ (1/3) Gleitkommazahlen: „Floating Point Numbers“ (2/3) Rechner speichert die Position des Dezimalpunktes z.B. 0.473 * 1015 oder 0.3715 * 10-7 Allgemein: X = m * Be (m: Mantisse, B: Basis, e: Exponent) Bit-Darstellung: Darstellung negativer Exponenten: bereits bekannte Möglichkeiten: Vorzeichen-/Betragdarstellung Komplementdarstellung (Stellen- oder Basiskomplement) aber, die allgemein übliche Form ist die Darstellung mittels einer sog. Charakteristik ch = e + K Mantisse (z.B. 23 Bit) z.B. mit K = BN/2 (sog. BIAS) (bei N-stelligen Exponenten) Exponent (z.B. 8 Bit) d.h. anstelle des Exponenten wird die Charakteristik dargestellt Vorzeichen (1 Bit) Speziell: X Exponent wird meist zur Basis 2, 10 oder 16 angegeben. Führende Nullen der Mantisse sollten möglichst vermieden werden (‚Normalisieren‘) = m * Bch (m: Mantisse, B: Basis, ch: Charakteristik) Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.85 2. Zahlen und logische Schaltungen Gleitkommadarstellung nach IEEE Standard 754 (1/5) Beispiel: +26.625 soll als 32 Bit Gleitkommazahl dargestellt werden Format: 1 Bit Vorzeichen, 8 Bit Exponent (Charakteristik), 23 Bit Mantisse Schritt: Dezimalzahl 31 S Schritt: Normalisieren (Anpassen der Mantisse m, 1/B ≤ m < 1) (11010.101)2 * 20 = (0.11010101)2 * 25 3. Normenvorschlag der IEEE Computer Society, der von fast allen Mikrocomputer-Herstellern übernommen worden ist (z.B. Intel 80X86, Motorola 680X0) 32 Bit Format: Dualzahl +(26,625)10 = +(11010.101)2 2. 30 23 22 Charak. E 0 Mantisse M Schritt: Charakteristik berechnen: X = (-1)S * 2E-127 * (1.M)2 N=8 Mantisse ist normiert: 1.M, d.h. K = 27 = 128 ch = e + K = 510 + 12810 (101)2 + (10000000)2 = (10000101)2 31 30 0 10000101 11010101000000000000000 ch M Vorz 23 = 22 (Basis 2) mit 0 < E < 255, Bias = 127 führende 1 wird nicht dargestellt Erhöhung der Genauigkeit um eine Stelle 0 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.86 2. Zahlen und logische Schaltungen Gleitkommazahlen: „Floating Point Numbers“ (3/3) 1. Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.87 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.88 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Gleitkommadarstellung nach IEEE Standard 754 (2/5) Gleitkommadarstellung nach IEEE Standard 754 (3/5) Zahlenbereiche Beispiel: x= -1.5 x = (-1)S * 2E-127 * (1.M)2 1 * 2-126 ≤ |x| ≤ (2 – 2-23) * 2127 mit 0 < E < 255 oder dezimal umgerechnet 1.18 * 10-38 ≤ |x| ≤ 3.40 * 1038 Bias = 127 darstellbare negative Zahlen 31 30 1 S 01111111 Charakteristik E (-1)1 -1 23 2127-127 * * 20 22 0 darstellbare positive Zahlen negativer Überlauf 1 0 0 0 ..................................... 0 Mantisse M positiver Überlauf 0 -(2 – 2-23) * 2127 * (1.1)2 = * (1.1)2 = -(1.1)2 = -1.510 -1.0 * 2-126 Rechnerarithmetik 2.89 2. Zahlen und logische Schaltungen Abschließende Bemerkungen: Not-a-Number: Darstellung „ungültiger“ Zahlen, z.B. Division durch 0, Wurzel aus negativer Zahl. Überlauf wird als unendlich dargestellt, d.h. es kann mit unendlich (∞) weitergerechnet werden. Unterlauf kann denormalisiert dargestellt werden, d.h. es kann mit geringerer Genauigkeit weitergerechnet werden. Null: eigene Darstellung E M x Erklärung 255 ≠0 =0 NaN Not a Number beliebig ≠0 =0 0 (-1)S ∗ ∞ ±∞ (-1)S∗2E-127∗(1.M)2 (-1)S∗2126∗(0.M)2 (-1)S ∗ 0 Normalbereich Neben dem 32-Bit Format existieren noch 64- und 80-Bit Formate. Sie erlauben das Rechnen mit größerer Genauigkeit, aber prinzipiell folgt die Darstellung dem vorgestellten Mechanismus. Die Norm geht davon aus, dass zuerst mit beliebiger Genauigkeit gerechnet wird und danach auf das jeweilige Zielformat gerundet wird. Daher verwenden die meisten Implementierungen eine höhere Genauigkeit für interne Berechnungen. Moderne Gleitkommarecheneinheiten ermöglichen z.B. auch trigonometrische und logarithmische Operationen. Links zu Demonstrationswerkzeugen und weitergehende Informationen über IEEE 754 sind auf der Vorlesungsseite angegeben. Denormalisiert 0 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.90 Gleitkommadarstellung nach IEEE Standard 754 (5/5) Besonderheiten des IEEE Formats 0 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2. Zahlen und logische Schaltungen Gleitkommadarstellung nach IEEE Standard 754 (4/5) 0 < E < 255 (2 – 2-23) * 2127 Es existiert eine Lücke im Bereich der darstellbaren Zahlen, die insbesondere die 'NULL' enthält. Man benötigt eine eigene Darstellung der 'NULL' Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 255 1.0 * 2-126 2.91 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.92 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Gleitkommaarithmetik: Multiplikation Gleitkommaarithmetik: Addition und Subtraktion Z = X ∗ Y = (m[X] ∗ m[Y]) ∗ Be[X]+e[Y] Z = X + Y = (m[X] * Be[X]-e[Y] + m[Y]) ∗ Be[Y] m[X]: Mantisse von X, m[Y]: Mantisse von Y e[X]: Exponent von X, e[Y]: Exponent von Y Multiplikation der Mantissen Addition der Charakteristiken (- Bias) für: e[x] ≤ e [y] m[X]: Mantisse von X, m[Y]: Mantisse von Y e[X]: Exponent von X, e[Y]: Exponent von Y 1. 2. VX CHX MX ∗ 3. VY CHY 4. = - Bias (127) = MY VZ CHZ MZ ⊕ + Berechne e[X] – e[Y] Skalieren: Angleichen der Mantisse des kleineren Exponenten Addition der Mantissen gegebenenfalls Normalisieren = Gegebenenfalls normalisieren Division entsprechend Sonderregeln für 0 als Operand Subtraktion entsprechend Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.93 2. Zahlen und logische Schaltungen 2.94 2. Zahlen und logische Schaltungen Gleitkommaarithmetik: Beispiel für Addition Überblick Basis = 10, vierstellige Mantisse Z = X + Y; X = 0.5320 ∗ 10-2; Y = 0.4162 ∗ 101 Berechne e[X] – e[Y]: Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Information und Informationsdarstellung Zahlensysteme Rechnerarithmetik Boolesche Algebra und Gatter Schaltwerke -2 – 1 = -3 Skalieren von m[X]: 0.5320 * 10-3 = 0.0005320 * 100 (Verschieben um 3 Stellen nach Rechts, evtl. mit Genauigkeitsverlust) Addition der Mantissen: Übernahme des größeren Exponenten + 0.4162 0.0005 0.4167 ∗ ∗ ∗ 101 101 101 Normalisieren entfällt Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.95 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.96 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Ziel: Rechnerarithmetik implementieren Darstellung binärer Größen Bitweise logische Operationen E E=A?B In digitalen Systemen werden Informationen in binärer Form dargestellt. Binäre Größen können von jedem Baustein dargestellt werden, der nur 2 Operationszustände besitzt. = x"34" ? x"1C" Beispiel: Schalter. Zuweisung der Zustände 0 für offen und 1 für geschlossen ermöglicht die Darstellung binärer Werte. Typischerweise werden folgende Spannungen zugewiesen: ? ... beliebige logische Verknüpfung a5 a4 a3 a2 a1 a0 Operand A 1 1 0 1 0 0 Operand A b5 b4 b3 b2 b1 b0 Operand B 0 1 1 1 0 0 Operand B e5 e4 e3 e2 e1 e0 Ergebnis E 1 0 0 0 0 0 Ergebnis E Binäre 1: Eine beliebige Spannung zwischen 2V und 5V Binäre 0: Eine beliebige Spannung zwischen 0V und 0.8V Spannungen zwischen 0.8V und 2V werden nicht genutzt und können zu Beschädigungen führen. Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.97 2. Zahlen und logische Schaltungen Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2. Zahlen und logische Schaltungen Boolesche Algebra (1/2) Boolesche Algebra (2/2) Boolesche Algebra: Definition der Booleschen Algebra Die Booleschen Algebra (speziell die Aussagenlogik) ist ein Formalismus zur Beschreibung der Funktion digitaler Komponenten. Binäre oder Boolesche Variable (BV): Variable, die nur zwei Werte annehmen können. Diese Werte werden mit L - H , wahr - falsch oder 0 - 1 bezeichnet. Boolesche Variable sind logische Variable. Boolesche Operatoren: Auf Boolesche Variable können Boolesche Operatoren angewendet werden: NOT, OR, AND,XOR, ... Boolesche Ausdrücke, Boolesche Funktionen: Boolesche Ausdrücke oder Boolesche Funktionen ergeben sich durch Verknüpfung von Boolesche Variable mit Booleschen Operatoren. Die Booleschen Algebra ist eine algebraische Struktur. Sie besteht aus einer Menge M = {e1, e2, …}, den Operatoren ψ und φ, Axiomen und wichtigen Sätzen. Eine spezielle Boolesche Algebra ist die Aussagenlogik. Sie wird charakterisiert durch folgende Eigenschaften: M: {0,1} e: 1 wahr n: 0 falsch ψ: ∧ zweistellige Operation φ: ∨ zweistellige Operation Die Boolesche Algebra wurde von George Boole um 1850 entwickelt Claude Shannon verwendete um 1937 die Boolesche Algebra als erster für den Schaltungsentwurf Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.98 2.99 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.100 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Operation Wahrheitstabellen Eingaben Funktion x1,..,xn f(x) Darstellung der Abhängigkeiten zwischen der Eingabe und Ausgabe Alle möglichen Kombinationen der Eingabe (A,B) werden mit der korrespondierenden Ausgabe (X) angegeben. Beispiel: Ausgabe y Eingabe Funktion von n Eingangsvariablen: Ausgabe ? A B Nur vom gegenwärtigen Wert der Eingänge anhängig, kein "Gedächtnis" y = f(x) = f(xn, ... ,x3,x2,x1), xi ∈ {0,1} Für n Eingangsvariablen gibt es 2n Wertekombinationen. Die Wertekombinationen heißen auch die Belegungen Xj der Eingangsvariablen Logische Operationen können auf zwei, sinngemäß gleiche Wege dargestellt werden: B 0 0 1 1 X Boolesche Algebra und Gatter 2.101 2. Zahlen und logische Schaltungen Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.102 2. Zahlen und logische Schaltungen UND-Operator ODER-Operator Name UND (AND) Tabelle b 0 0 1 1 Schriftlich X 0 0 0 1 Die Ausgabe ist nur 1, wenn beide Eingaben 1 sind. Boolescher Ausdruck: endlich, aber nicht eindeutig Wahrheitstabelle: endlich und eindeutig Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 A 0 1 0 1 a 0 1 0 1 y 0 0 0 1 UND wird verwendet, um Bits gezielt auf 0 zu setzen. Dazu hat die Maske an allen Bitpositionen, die übernommen werden sollen, eine 1 und an den Stellen, die rückgesetzt werden sollen, eine 0. y = a ∧ b oder = ab oder =a*b Name ODER (OR) Tabelle b 0 0 1 1 x“14“ = x"34" ∧ x"1C" 1 1 0 1 0 0 Operand A 0 1 1 1 0 0 Operand B Schriftlich Gatter & a 0 1 0 1 y 0 1 1 1 OR wird verwendet, um Bits gezielt auf 1 zu setzen. Dazu hat die Maske an allen Bitpositionen, die übernommen werden sollen, eine 0 und an den Stellen, die gesetzt werden sollen, eine 1. y = a ∨ b oder =a+b x“3C“ = x"34“ ∨ x"1C" 1 1 0 1 0 0 Operand A 0 1 1 1 0 0 Operand B 1 1 1 1 0 0 Ergebnis E ≥1 Gatter 0 1 0 1 0 0 Ergebnis E Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.103 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.104 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen NICHT-Operator Gängige logische Operationen: XOR Name NICHT (NOT) Tabelle a 0 1 NICHT wird auch als Inverses oder Komplement bezeichnet. y 1 0 Name XOR Tabelle b 0 0 1 1 x“0B“ = ~x"34" Schriftlich y=a 1 1 0 1 0 0 Operand A 0 0 1 0 1 1 Ergebnis E Schriftlich 1 Gatter a 0 1 0 1 y 0 1 1 0 XOR wird verwendet, um Bits gezielt zu invertieren. Dazu hat die Maske an allen Bitpositionen, die invertiert werden sollen, eine 1 und an allen sonstigen Stellen eine 0. x“28“ = x"34" x"1C" y = a b oder =a⊕b Sprache "C" 1 1 0 1 0 0 Operand A 0 1 1 1 0 0 Operand B 1 0 1 0 0 0 Ergebnis E y=a^b Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.105 2. Zahlen und logische Schaltungen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.106 2. Zahlen und logische Schaltungen Gatter (1/2) Gatter (2/2) Funktion Elektrische Realisierung mittels Schalter: Relais, Knipser, Röhren, bipolare Transistoren, Feldeffekt – Transistoren (MOS-FET) Funktion Realisierung Knipser Realisierung NOT Knipser MOS-FET L a Gatter Q=ā a Gatter MOS-FET _ a a + + AND Q A b a Q b & Q B Q a b NAND A & Q B + + OR A a b a Q Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 b >=1 Q Q B NOR 2.107 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 a b A >=1 Q B + 2.108 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen 10 Regeln für logische Operationen Boolesche Variablen a, b Elemente aus {0,1} a∨0=a a∧0=0 R1 a∨1=1 a∧1=a R2 a∨a=a a∧a=a R3 a∨a=1 a∧a=0 R4 a=a a ∧ (b ∧ c) = (a ∧ b) ∧ c = a∧b ∧c R6 Kommutativgesetz a∨b=b∨a a∧b=b∧a R7 Distributivgesetz a ∨ (b ∧ c) = (a ∨ b) ∧ (a ∨ c) a ∧ (b ∨ c) = (a ∧ b) ∨ (a ∧ c) R8 Absorptionsgesetz a ∨ (a ∧ b) = a a ∧ (a ∨ b) = a R9 De Morgan'sches Gesetz Vereinfachung von Ausdrücken Beispiel 1: Y = A ∧ B ∧ C ∧ D ∨ A ∧ B ∨ ( B ∨ (A ∧ A) ) R4 = A ∧ B ∧ C ∧ D ∨ A ∧ B ∨ ( B ∨ 0) ) R1 ... =A∧B∧C∧D∨A∧B∨B =A∧B∧C∧D∨B =B R5 a ∨ (b ∨ c) = (a ∨ b) ∨ c = a∨b ∨c Assoziativgesetz Anwendung der Regeln (a ∨ b) = a ∧ b (a ∧ b) = a ∨ b Beispiel 2: R5: De Morgan: R10 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.109 2. Zahlen und logische Schaltungen (a ∨ b) = a ∧ b (a ∨ b) Q NOR B A & Q 1 Alternative NOR Darstellung A a∧b A NAND & (a ∧ b) Q B 1 & 1 B >=1 Q a∨b 1 A B >=1 Q Name NAND Tabelle b 0 0 1 1 Schriftlich y=a∧b Das NAND-Symbol ist abgesehen von dem kleinen Kreis am Ausgang identisch mit dem AND-Symbol. Der kleine Kreis stellt die Invertierung dar. a 0 1 0 1 y 1 1 1 0 1 1 0 1 0 0 Operand A 0 1 1 1 0 0 Operand B 1 0 1 0 1 1 Ergebnis E & Alternative NAND Darstellung Q B 2.110 NAND-Operator (a ∧ b) = a ∨ b B A a∧b >=1 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2. Zahlen und logische Schaltungen Implikationen aus dem De Morgan'schen Gesetz A Y=(A∧B∧C) +(D∧E∧F) Y = ( A ∧ B ∧ C ) + (D ∧ E ∧ F ) Y = ( A ∧ B ∧ C ) ∧ (D ∧ E ∧ F ) Gatter a∨b Invertieren Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.111 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.112 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen NOR-Operator Name NOR Tabelle b 0 0 1 1 Schriftlich a 0 1 0 1 Alternative Darstellung von Gattern Das NOR-Symbol ist abgesehen von dem kleinen Kreis am Ausgang identisch mit dem OR-Symbol. Der kleine Kreis stellt die Invertierung dar. Für die Gatter UND, ODER, NICHT, NAND und NOR gibt es eine Alternative Darstellung Invertiere jeden Eingang und Ausgang des Standardsymbols Ändere das Operationssymbol von UND zu ODER, oder von ODER zu UND y 1 0 0 0 1 y=a∨b 1 0 1 0 0 Die alternative Darstellung repräsentiert den gleichen physikalischen Baustein. Beispiele: Operand A A Gatter 0 ≥1 1 1 1 0 0 NOR Operand B Invertieren 0 0 0 0 1 1 Ergebnis E Q B A NAND A >=1 & Q >=1 Q B & A Q B B Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.113 2. Zahlen und logische Schaltungen Normalformen (1/2) Ein vollständiges Operatorensystem erlaubt die Darstellung aller möglichen Funktionen Es gibt keinen eindeutigen booleschen Ausdruck für eine boolesche Funktion Bei zweistelligen, booleschen Funktionen sind dies 16 Möglichkeiten Die folgenden Systeme sind u.a. vollständig: Beschränkung auf ein vollständiges Operatorensystem reicht nicht für Eindeutigkeit Die Normalformen dienen dazu, anhand von Zustandstabellen Schaltungen zu entwickeln. Dabei werden logische Funktionen in Schaltkreise umgesetzt. UND, ODER, NICHT UND, NICHT ODER, NICHT NAND NOR Randbedingungen: die Zahl der Schaltkreise sollte möglichst gering sein die einzelnen Bauelemente sollten möglichst gleich sein Beispiel für NAND: Standarddarstellung im Operatorensystem UND/ODER/NICHT a∧a (a∧b)∧(a∧b) (a∧a)∧(b∧b) Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.114 2. Zahlen und logische Schaltungen Vollständige Operatorensysteme NICHT: UND: ODER Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.115 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.116 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Normalform (2/2) Übersetzungsregel für disjunktive Normalform Disjunktive Normalform (DNF) Man geht von der Einsstellenmenge aus. disjunktive Verknüpfung von Konjunktionen Konjunktionen müssen alle Variablen enthalten (bejaht oder negiert) Konjunktionsterme werden Minterme genannt In der DNF werden alle UND – Verknüpfungen (Konjunktionen) disjunktiv verknüpft (ODER- verknüpft), deren Ausgangsvariablen den Wert „1“ annehmen. amerikanischer Ausdruck: “sum of products“ (SOP) Für jede Belegung ersetzt man die 1 durch eine bejahte Variable die 0 durch eine negierte Variable und bildet eine UND Verknüpfung (Minterm). Konjunktive Normalform (KNF) Konjunktive Verknüpfung von Disjunktionen Disjunktionen müssen alle Variablen enthalten (bejaht oder negiert) Disjunktionsterme werden Maxterme genannt In der KNF werden alle ODER – Verknüpfungen (Disjunktionen) konjunktiv verknüpft (UND- verknüpft), deren Ausgangsvariablen den Wert „0“ annehmen. Die Maxterme werden ODER verknüpft “Disjunktive Normalform“ DNF Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.117 2. Zahlen und logische Schaltungen 2.118 2. Zahlen und logische Schaltungen DNF Übersetzung Übersetzungsregel für konjunktive Normalform Man geht von der Nullstellenmenge aus. Für jede Belegung ersetzt man die 0 durch eine bejahte Variable die 1 durch eine negierte Variable und bildet eine ODER Verknüpfung (Maxterm). Die Maxterme werden UND verknüpft “Konjunktive Normalform“ KNF Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.119 Oktal Index (x4,x3,x2,x1) f -> y 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 0,0,0,0 0,0,0,1 0,0,1,0 0,0,1,1 0,1,0,0 0,1,0,1 0,1,1,0 0,1,1,1 1,0,0,0 1,0,0,1 1,0,1,0 1,0,1,1 1,1,0,0 1,1,0,1 1,1,1,0 1,1,1,1 -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 0 0 0 1 0 0 1 0 0 1 - Beispiel: Durch 3 teilbare BCD Ziffern Logische 1 für: x4 = 0, x3 = 0, x2 = 1, x1 = 1 x4 x3 x2 x1 Logische 1 für: x4 = 0, x3 = 1, x2 = 1, x1 = 0 x4 x3 x2 x1 Logische 1 für: x4 = 1, x3 = 0, x2 = 0, x1 = 1 x4 x3 x2 x1 E = {3, 6, 11} 3 (0,0,1,1) 6 (0,1,1,0) 11 (1,0,0,1) y= x4 x3 x2 x1 ∨ x4 x3 x2 x1 ∨ x4 x3 x2 x1 2.120 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Übersetzung DNF Gleichung in Hardware Beschreibung von logischen Schaltnetze Jede Gleichung läßt sich 1:1 in Hardware umsetzen Logische Schaltnetze können mit den grundlegenden logischen Verknüpfungen UND, ODER und NICHT beschrieben werden: y = x4 x3 x2 x1 ∨ x4 x3 x2 x1 ∨ x4 x3 x2 x1 1. x4 1 x3 1 x2 1 x1 1 2. 3. & & >1 y & x = AB ∨ C x = (A ∨ B) C x = (A ∨ B) C ∨ A Die Verwendung nur eines Gattertyps erleichtert die technische Realisierung, weswegen NAND oder NOR basierte Systeme oftmals verwendet werden. Logische Schaltnetze können durch die Minimierung der logischen Verknüpfung minimiert werden In vielen Fällen sind einfachere Schaltungen schneller Weniger Gatter reduziert die Kosten Es wird weniger Energie benötigt Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.121 2. Zahlen und logische Schaltungen Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.122 2. Zahlen und logische Schaltungen Minimierung Minimierungsverfahren DNF liefert relativ aufwendige Lösungen Es gibt 3 Arten von Minimierungsverfahren Baut auf den Mintermen auf Jedes UND Gatter enthält alle Eingangsvariablen Nicht praktikabel in „echten“ Anwendungen Die Suche nach einer einfacheren Lösung ist Ziel der Optimierung (Minimierung). Voraussetzung jeder Optimierung: Kostenfunktion beschreibt Ziel. In unserem Fall: Möglichst wenige, möglichst kleine Gatter Genauer: Die Anzahl der Eingänge in alle Gatter soll minimal werden. In einer Gleichung ist dann die Anzahl der Variablen aller Terme plus die Anzahl der Terme (Länge) minimal. _ _ _ Y = (D C B A) ∨ (D C B) ∨ (E C) => L = 4+3+2+3 = 12 algebraische Verfahren graphische Verfahren (z.B. KV-Diagramme) tabellarische/algorithmische Verfahren (z.B. Quine/McCluskeyVerfahren) Algebraische Verfahren werden praktisch nicht verwendet Graphische Verfahren sind für bis zu 6 Variablen handhabbar Tabellarische Verfahren sind auch für mehr als 6 Variablen geeignet Wie erzielen wir möglichst kleine Gatter? Wir versuchen, durch Anwendung der Rechenregeln, die einzelnen Terme kürzer zu machen. Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.123 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.124 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Algebraische Minimierung Blöcke Zwei Belegungen, die sich nur in einer Komponente unterscheiden, heißen benachbart. Vereinfachung durch Ausklammern und Anwendung der Regeln: _ _ _ _ _ _ _ Bsp: y = c b a ∨ c b a = c a (b ∨ b) = c a 1 = c a Die identischen Komponenten heißen "gebundene", die unterschiedlichen "freie" Komponenten. In Belegungsschreibweise c b a y _ c b a 0 1 1 -> 1 _ _ c b a 0 0 1 -> 1 Die freien Komponenten werden durch einen "-" gekennzeichnet. Es entsteht ein (Belegungs-) Block. Ein Block mit r freien Komponenten enthält ("überdeckt") 2r Belegungen. Wir suchen Belegungen, die Beispiel: Einsstellen sind und sich nur in einer Komponente unterscheiden (benachbart sind) 4 (0,1,0,0) (0,1,0,-) 5 (0,1,0,1) Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.125 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Minimierung über Nachbarschaftsbeziehungen Oktal Index 0 1 2 3 4 5 6 7 (x3,x2,x1) f -> y 0,0,0 0,0,1 0,1,0 0,1,1 1,0,0 1,0,1 1,1,0 1,1,1 -> -> -> -> -> -> -> -> 0 0 0 0 1 1 0 1 Bildung größerer Blöcke Zugehörige DNF: Oktal Index 0 1 2 3 4 5 6 7 y = (x3 x2 x1) ∨ (x3 x2 x1) ∨ (x3 x2 x1) Benachbarte Belegungen: Minimierte Gleichung: 4: 5: Block: y = (x3 x2) ∨ (x3 x2 x1) 1, 0, 0 1, 0, 1 1, 0, - (x3,x2,x1) f -> y 0,0,0 0,0,1 0,1,0 0,1,1 1,0,0 1,0,1 1,1,0 1,1,1 -> -> -> -> -> -> -> -> 0 0 0 0 1 1 1 1 Benachbarte Belegungen: 4: 1, 0, 0 5: 1, 0, 1 Block: 1, 0, 1, 0, 1, 1, 6: 1, 1, 0 Block: 1, -, 7: 1, 1, 1 Block: 1, 1, - Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.126 2.127 Zugehörige DNF: y = (x3 x2 x1) ∨ (x3 x2 x1) ∨ (x3 x2 x1) ∨ (x3 x2 x1) Minimierte Gleichung: y = x3 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.128 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Blockbildung bei komplizierteren Funktionen Oktal Index 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 (x4,x3,x2,x1) f -> 0,0,0,0 0,0,0,1 0,0,1,0 0,0,1,1 0,1,0,0 0,1,0,1 0,1,1,0 0,1,1,1 1,0,0,0 1,0,0,1 1,0,1,0 1,0,1,1 1,1,0,0 1,1,0,1 1,1,1,0 1,1,1,1 -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> Minimierte Gleichung: y Zusammenfassung Blockbildung Mögliche Blöcke: Die Bildung von Blöcken kann zur Minimierung herangezogen werden. 1 0/2: 00-0 0 2/6: 0-10 1 2/12: -010 0 5/7: 01-1 0 5/15: -101 1 5/7/15/17: -1-1 6/7: 0111 6/16: -110 6/7/16/17: -111 0 7/17: -111 2/12/6/16: --10 1 11/15: 1-01 1 12/16: 1-10 0 15/17: 11-1 0 16/17: 1111 1 1 _ _ _ _ _ y = x4x3x1 ∨ x4x2x1 ∨ x3x1 ∨ x2x1 Betrachtet werden nur die Einsstellen Benachbarte Belegungen werden zu Blöcken zusammengefasst. Benachbarte Blöcke können zu größeren Blöcken zusammengefasst werden es gelten dieselben Regeln. Blöcke bestehen immer aus 2r Belegungen (r = Anzahl der Striche) Ein Block, der sich nicht mehr vergrößern lässt, heißt "Primblock" Gesucht ist die minimale Anzahl von möglichst großen Blöcken, die alle Einsstellen überdeckt. Übergang zur disjunktiven Form Für Blöcke gelten dieselben Übersetzungsregeln, aber freie Komponenten ("Striche") werden ignoriert. Ein aus einem Primblock entstehender Term heißt "Primimplikant" Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.129 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Minimierung per KV-Diagramm Karnaugh-Veitch-Diagramme Erstellung durch wechselweise horizontales und vertikales Spiegeln x1 KV-Diagramme bieten einen graphischen Weg zur Minimierung Es können minimale konjunktive oder disjunktive Formen gebildet werden 0 KV-Diagramm: 0 1 2 3 x1 x2 0 1 5 4 2 3 7 6 x1 x2 Boolesche Algebra und Gatter 2.131 Koordinatendarstellung der Funktionstabelle Jede Zelle entspricht einer Belegung (Achtung: Zahlen sind im Oktalsystem angegeben) 1 x1 x2 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.130 x5 x3 x1 x1 0 1 5 4 0 1 5 4 24 25 21 20 2 3 7 6 2 3 7 6 26 27 23 22 12 13 17 16 12 13 17 16 36 37 33 32 10 11 15 14 10 11 15 14 34 35 31 30 x3 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 x2 x4 x4 x3 Boolesche Algebra und Gatter 2.132 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen KV-Diagramm Minimierung per KV-Diagramm x5 x2 x2 Eintragung in das KV-Diagramm x1 x1 0 1 5 4 24 2 3 7 6 26 25 27 2 3 21 20 23 22 33 32 12 13 17 16 36 10 11 15 14 34 35 31 30 50 51 55 54 74 75 71 70 52 53 57 56 76 77 73 72 42 43 47 46 66 67 63 62 40 41 45 44 64 65 61 60 37 Oktal Index 0 1 2 3 4 5 6 7 x4 (x3,x2,x1) f -> y 0,0,0 0,0,1 0,1,0 0,1,1 1,0,0 1,0,1 1,1,0 1,1,1 -> -> -> -> -> -> -> -> 0 0 0 0 1 1 0 1 __ __ x3 x2 __ x1 ∨ x3 x2 x1 ∨ x3 x2 x1 x6 x1 x2 x3 2.133 x2 x1 0 0 0 0 0 x2 0 0 0 x2 0 0 0 0 1 0 0 0 x3 x1 0 __ __ x3 x2 x1 0 1 0 x3 x2 x1 0 x2 0 0 0 1 0 0 x3 0 x3 x1 Darstellung der DNF einer Schaltfunktion x2 0 1 1 0 __ __ x3 x2 x1 x3 x1 0 1 0 0 1 x3 __ __ x3 x2 x1 __ __ x3 x2 x1 ∨ x3 x2 __ x1 ∨ __ x3 x2 __ x1 __ ∨ x3 x2 x1 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 0 0 1 0 Boolesche Algebra und Gatter 2.134 Blockbildung im KV-Diagramm x1 0 1 2. Zahlen und logische Schaltungen Interpretation eines KV-Diagramms 1 1 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2. Zahlen und logische Schaltungen 0 0 x3 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 0 2.135 Fall D C B A Z 0 0 0 0 0 1 1 0 0 0 1 1 2 0 0 1 0 1 3 0 0 1 1 1 4 0 1 0 0 0 5 0 1 0 1 0 6 0 1 1 0 0 7 0 1 1 1 0 10 1 0 0 0 0 11 1 0 0 1 1 12 1 0 1 0 0 13 1 0 1 1 1 14 1 1 0 0 0 15 1 1 0 1 0 16 1 1 1 0 0 17 1 1 1 1 0 A 1 B 1 0 1 1 2 1 12 0 3 10 __ _ _ 0 13 7 0 17 11 1 4 0 0 1 0 5 0 6 16 0 15 D 14 0 0 C __ _ _ _ _ __ DNF: Z = A B C D ∨ A B C D ∨ A B C D ∨ A B C D Minterme: 0: 0000 1: 0001 13: 1011 00-0 (Blöcke) 2: 0010 3: 0011 00-1 11: 100110-1 _ _ _ __ _ Minimierte Gleichung: Z = A C D ∨ A C D ∨ ACD Primblöcke: 00-- -0-1 __ _ Minimierte Gleichung mit Primtermen: Z = C D ∨ A C Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Boolesche Algebra und Gatter 2.136 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Beispiel für Blockbildung in KV-Diagrammen x1 x2 Blockbildung bei unvollständig definierten Schaltfunktionen x1 1 0 0 1 1 0 0 1 x2 x3 x1 1 0 0 1 1 0 0 1 x3 Vorläufige Blöcke. Es entfällt je x3. x2 1 0 0 1 1 0 0 1 Freistellen (do not care Stellen) können 0 oder 1 sein. Festlegung derart, dass maximal große Blöcke entstehen. x3 Endgültiger Block. Es entfällt x2. x1 Kann ein vorläufiger Block nicht mehr durch einen weiteren, symmetrisch gelegenen gleich großen Block vergrößert werden, so erhält man den maximal großen Block: Primblock Der zugehörige Term heißt Primterm. x2 x1 0 1 - 0 0 1 - - x2 0 1 0 1 x1 - 0 =1 =0 =1 x3 - x3 x2 0 1 0 1 - 0 =1 =0 =1 - x3 Jede vollständige Blocküberdeckung ist eine gültige Darstellung einer Funktion. Vollständig: Jede Einsstelle wird von einem Block überdeckt. Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.137 2. Zahlen und logische Schaltungen Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2. Zahlen und logische Schaltungen Minimierung per KV-Diagramm Minimierung per KV-Diagramm (1/3) Minimierungsverfahren Minimierungsverfahren 1. Spezifikation der Funktion durch Terme 2. Eintragung in das KV-Diagramm 3. Bestimmen der Primblöcke Beispiel Sukzessive Bildung von Blöcken mit 2, dann 4, dann 8 Belegungen, usw. Verfolgung aller möglichen Kombinationen Wenn Blockbildung abbricht, sind alle Primblöcke gefunden. Bereits erledigt: 1. Spezifikation der Funktion durch Terme 2. Eintragung in das KV-Diagramm Ergebnis: 4. Auswahl der kleinsten Anzahl Primblöcke, die zur vollständigen Überdeckung nötig sind x1 Identifikation der Kerne: Markierung aller Primblöcke, welche alleine eine Funktionsstelle überdecken. Falls diese bereits alle Stellen überdecken, ist minimale Lösung erreicht. Reichen diese nicht zur Überdeckung aller Stellen aus, müssen weitere Primblöcke hinzugenommen werden. 5. Bildung eines kürzesten Ausdrucks (DMF: disjunktive Minimalform) 0 1 1 0 x2 0 0 1 1 0 0 1 - 1 0 0 x3 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.138 2.139 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 x4 Boolesche Algebra und Gatter 2.140 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Minimierung per KV-Diagramm (2/3) Minimierung per KV-Diagramm Beispiel (3/3) x1 Beispiel 4. Auswahl der kleinsten Anzahl Primblöcke, die zur vollständigen Überdeckung nötig sind • Identifikation der Kerne: Markierung aller Primblöcke, welche alleine eine Funktionsstelle überdecken. • Falls diese bereits alle Stellen überdecken, ist minimale Lösung erreicht. • Reichen diese nicht zur Überdeckung aller Stellen aus, müssen weitere Primblöcke hinzugenommen werden. 3. Bestimmen der Primblöcke • Sukzessive Bildung von Blöcken mit 2, dann 4, dann 8 Belegungen, usw. • Verfolgung aller möglichen Kombinationen • Wenn Blockbildung abbricht, sind alle Primblöcke gefunden. w2 x1 w4 Primimplikanten: 0 x2 1 1 w3 0 0 0 1 1 0 0 1 - - 1 0 0 w1 = x3 x2 __ __ w2 = x4 x2 x1 __ w3 = x4 x3 x1 __ __ w4 = x3 x2 x1 __ __ w5 = x4 x3 x2 w1 => x4 w5 x3 Grau gekennzeichnete Blöcke: Primblöcke x2 x2 2. Zahlen und logische Schaltungen 0 1 2 3 4 5 6 7 Blöcke: 10– 1-1 (x3,x2,x1) f -> y 0,0,0 0,0,1 0,1,0 0,1,1 1,0,0 1,0,1 1,1,0 1,1,1 -> -> -> -> -> -> -> -> 0 0 0 0 1 1 0 1 Kern-Blöcke: 101-1 0 0 0 1 1 0 0 1 - - 1 0 0 x4 x3 0 1 1 0 0 0 1 1 0 0 1 - - 1 0 0 x4 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.142 2. Zahlen und logische Schaltungen Minimierung mittels KV-Diagramm Oktal Index 1 x3 Boolesche Algebra und Gatter 2.141 1 x1 5. Bildung eines kürzesten Ausdrucks (DMF: disjunktive Minimalform) Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 0 Minimierung in der konjunktiven Form x1 0 x2 0 0 2 0 0 1 3 1 1 5 7 1 0 4 6 x3 •• • >1 •• • >1 & y •• • •• • Minimierte Gleichung: __ y = x3 x2 ∨ x3 x1 >1 z.B. _ _ y= (a ∨ b ∨ c) (a ∨ b ∨ c) Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.143 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.144 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Ermittlung der Maxterme Beispiel Durch 3 teilbare BCD Ziffern Bei BCD kodierten Ziffern können nur Werte von 0 bis 9 vorkommen: Das Verhalten der Schaltung bei Eingangswerten > 9 (118) ist gleichgültig. R = { 12,13,14,15,16,17} E = { 3,6,11} N = {0,1,2,4,5,7,10} Oktal Index (x4,x3,x2,x1) f -> y Oktal Index (x4,x3,x2,x1) f -> y 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 0,0,0,0 0,0,0,1 0,0,1,0 0,0,1,1 0,1,0,0 0,1,0,1 0,1,1,0 0,1,1,1 1,0,0,0 1,0,0,1 1,0,1,0 1,0,1,1 1,1,0,0 1,1,0,1 1,1,1,0 1,1,1,1 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 0,0,0,0 0,0,0,1 0,0,1,0 0,0,1,1 0,1,0,0 0,1,0,1 0,1,1,0 0,1,1,1 1,0,0,0 1,0,0,1 1,0,1,0 1,0,1,1 1,1,0,0 1,1,0,1 1,1,1,0 1,1,1,1 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> 0 0 0 1 0 0 1 0 0 1 - 2.145 2 (0,0,1,0) 4 (0,1,0,0) 5 (0,1,0,1) 7 (0,1,1,1) 10 (1,0,0,0) x4 ∨ x3 ∨ x2 ∨ x1 = 0 • •• •• • Logische 0 für: _ x4 ∨ x3 ∨ x2 ∨ x1 = 0 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.146 Minimierung mit KV-Diagramm x1 y= 0 1 (0,0,0,1) Logische 0 für: 2. Zahlen und logische Schaltungen KNF für Beispiel 0 (0,0,0,0) 0 0 0 1 0 0 1 0 0 1 - Boolesche Algebra und Gatter 2. Zahlen und logische Schaltungen N = {0,1,2,4,5,7,10} -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> (x4 ∨ x3 ∨ x2 ∨ x1) _ ∧ (x4 ∨ x3 ∨ x2 ∨ x1) _ ∧ (x4 ∨ x3 ∨ x2 ∨ x1) _ ∧ (x4 ∨ x3 ∨ x2 ∨ x1) _ _ ∧ (x4 ∨ x3 ∨ x2 ∨ x1) _ _ _ ∧ (x4 ∨ x3 ∨ x2 ∨ x1) _ ∧ (x4 ∨ x3 ∨ x2 ∨ x1) x2 0 0 2 12 - 0 1 1 5 3 0 4 0 0 7 13 - 17 - 10 11 0 1 15 - 1 6 16 14 - x4 x3 y = (x2 ∨ x4) ∧ (x1 ∨ x3) _ _ ∧ (x3 ∨ x1) Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.147 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.148 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Kombinatorische Schaltelemente (Schaltnetze) Multiplexer (1/2) A Spezielle Verknüpfungselemente für Computer 2:1 Mux B Signalauswahl: A y B S Registerauswahl: Dekoder y 0 A 1 B _ SA ∨ SB Werte vergleichen Vergleicher Addierer Arithmetisch-Logische Einheit (ALU) 2. Zahlen und logische Schaltungen S1 S0 E S1,S0 y (S1 S0 __ B) ∨ (S1 S0 C) ∨ (S1 S0 D) H S2 S1 S0 2.150 B A 8:1 Mux A B C D E F G H Boolesche Algebra und Gatter A y B y1 y2 y3 y4 2 bit Dekoder F S2 S1 S0 0, 0, 0 0, 0, 1 0, 1, 0 0, 1, 1 1, 0, 0 1, 0, 1 1, 1, 0 1, 1, 1 G Dekoder/Demultiplexer C H S2,S1,S0 y Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 B G y 8:1 Mux F A E C 2. Zahlen und logische Schaltungen Multiplexer (2/2) D B D Boolesche Algebra und Gatter 2.149 y D 0, 0 A 0, 1 B 1, 0 C 1, 1 D Si .. Selektionseingänge __ __ (S1 __ S0 A) ∨ Addieren Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4:1 Mux C S Multiplexer Demultiplexer A C 3 bit Dekoder y1 y2 y3 y4 y5 y6 y7 y8 S2,S1,S0 y B, A y4,y3,y2,y1 C,B,A y8,y7,y6,y5,y4,y3,y2,y1 0, 0, 0 0, 0, 1 0, 1, 0 0, 1, 1 1, 0, 0 1, 0, 1 1, 1, 0 1, 1, 1 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 0, 0, 1 0, 1, 0 0, 1, 1 1, 0, 0 1, 0, 1 1, 1, 0 1, 1, 1 0, 0, 0, 0, 0, 0, 0, 1, A B C D E F G H 0 1 0 1 0, 0, 1, 0, 0, 1, 0, 0, 1 0 0 0 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.151 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1 0 0 0 0 0 0 0 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.152 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Vergleicher A3 A2 A1 A0 B3 B2 B1 B0 A B Addierer (1/4) A=B B, A s A HA B c B, A s, c 0, 0, 1, 1, 0, 1, 1, 0, 0 1 0 1 Mehrstelliger Addierer 0 0 0 1 A0 B0 s0 HA c A3,B3, A2,B2, A1,B1, A0,B0, A>B,A=B,A<B A>B,A=B,A<B 4 > < = = = = = = = = = A>B A=B A<B 4 A>B A=B A<B 0 1 B≠A B=A 4 bit Identität Halbaddierer A=B 4 bit Größe > < = = = = = = = > < = = = = = > < = = = 1 0 1 0 0 0 1 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 1 0 1 0 1 0 1 0 0 1 2.153 2. Zahlen und logische Schaltungen ci-1 Ai Bi HA s HA VA c B1 si c s2 ≥1 A2 ci B2 c VA c Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.154 2. Zahlen und logische Schaltungen Addierer (2/4) Addierer (3/4) Einstelliger Addierer für Addition zweier Binärzahlen A und B, Ergebnis Summe S und Übertrag (Carry) C B 0 1 0 1 Volladdierer Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 A 0 0 1 1 s1 A1 S 0 1 1 0 C 0 0 0 1 A =1 „Serienaddierer“: ökonomisch, aber langsam A0 S B0 B Mehrstellige Additionsaufgabe Beispiel: 5 + 7 (5) 0101 (7) 0111 .. 1 1 1 <- Übertrag (Carry) 1100 & C c1 s1 A1 Allgemein: 1. Summand 2. Summand Übertrag Summe s0 HA VA c2 B1 A4 B4 C5 S5 A3 B3 C4 S4 A2 B2 C3 S3 A1 B1 C2 S2 A0 B0 C1 0 S1 S0 Si = (Ai + Bi ) + Ci (+ = Addition) Ci+1 = Ci Ai v CiAi v AiBi s2 A2 B2 VA c3 Beschleunigung mittels Parallelisierung durch Carry-Vorausberechnung: „carry look-ahead“ G = generate carry (erzeuge Übertrag Cn+1 = (BnAn) ∨ (Cn(Bn An)) Gn Cn+1 = Gn ∨ CnPn C2 = C3 = = C4 = C5 = Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.155 Pn C = propagate carry (leite Übertrag weiter) G1 ∨ C1P1 G2 ∨ C2P2 = G2 ∨ (G1 ∨ C1P1)P2 G2 ∨ G1 P2 ∨ C1P1P2 G3 ∨ G2 P3 ∨ G1P2P3 ∨ C1P1P2P3 G4 ∨ G3 P4 ∨ G2P3P4 ∨ G1P2P3P3 ∨ C1P1P2P3P4 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.156 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Addierer (4/4) Addierer-Subtrahierer 4 bit Paralleladdierer mit „carry look-ahead“ (paralleler Übertrag) C2 = C3 = = C4 = C5 = G1 ∨ C1P1 Cn+1 G2 ∨ C2P2 = G2 ∨ (G1 ∨ C1P1)P2 G2 ∨ G1 P2 ∨ C1P1P2 G3 ∨ G2 P3 ∨ G1P2P3 ∨ C1P1P2P3 G4 ∨ G3 P4 ∨ G2P3P4 ∨ G1P2P3P3 ∨ C1P1P2P3P4 S4 S3 S2 S1 Z B4 | | | = (BnAn) ∨ (Cn(Bn An)) Gn Pn A4 | | | & & B3 | | | A3 | | | B2 | | | & & & A2 | | | B1 | | | & & A1 | | | & B4 A4 B3 A3 B2 A2 B1 A1 C1 | | | | | | | | | Σ4 =1 =1 =1 =1 =1 =1 Σ4 C5 | | Z4 | | Z3 | | Z2 | | Z1 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.157 0 0 C1 0 0 1 C1-1 0 0 1 0 C1-1 0 0 1 1 C1-2 S2 S1 0 Komplement | | | | | C5 Z4 Z3 Z2 Z1 0 S4 0 S3 0 Auswahl =1 0 =1 1 0 0 C1+A 1 0 1 C1-A-1 0 1 1 0 C1+A-1 0 1 1 1 C1-A-2 1 0 0 0 C1+B 1 0 0 1 C1+B-1 1 0 1 0 C1-B-1 C1 1 0 1 1 C1-B-2 1 1 0 0 C1+A+B 1 1 0 1 C1+B-A-1 1 1 1 0 C1+A-B-1 1 1 1 1 C1-A-B-2 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2. Zahlen und logische Schaltungen 2.158 2. Zahlen und logische Schaltungen Arithmetisch-Logische Einheit (ALU) (1/2) Arithmetisch-Logische Einheit (ALU) (2/2) Register X funktionale Kern eines Digitalrechners führt arithmetische und logische Operationen aus Eingabe: Daten und Steuersignale Ausgabe: Ergebnis und Statussignale Meist nur für Festkommazahlen (Gleitkomma wird oft von einem speziellen Arithmetik-Coprozessor ausgeführt oder in Festkommazahlen unterteilt) Register Y s1 Multiplexerschaltnetz cin zero sign overflow s2 arithmetisch-logisches Schaltnetz s3 s4 s5 cout Schiebeschaltnetz s6 s7 Register Z Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.159 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.160 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Schaltwerke x1 x2 Eingangs- x 3 variablen Überblick Information und Informationsdarstellung Zahlensysteme Rechnerarithmetik Boolesche Algebra und Gatter Schaltwerke Schaltnetze xn y1 y2 y3 Ausgangsvariablen yn Schaltwerk Speicher elemente Takt Reset Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.161 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2. Zahlen und logische Schaltungen 2.162 2. Zahlen und logische Schaltungen Takt Moore- oder Zustandsautomat Schaltwerke befinden sich zu gegebener Zeit in einem Zustand Q. Ein solcher Zustand ist beispielsweise durch die Werte der Ausgangsleitungen zu diesem Zeitpunkt charakterisiert. Zustände ändern sich nur zu bestimmten diskreten Zeitpunkten, bei Eintreffen eines Taktes, das heißt, wenn eine 1 auf der Taktleitung anliegt oder bei Pegeländerung auf der Taktleitung, d.h. bei positiver oder negativer Flanke. Ausgangsbelegungen sind nur vom Zustand des Schaltwerkes abhängig X Schaltnetze Speicher Schaltnetze Y Takt Takt=1 Flanke 1 0 Takt=0 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Zeit Schaltwerke 2.163 Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.164 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Mealy- oder Übergangsautomat Speicherelemente Ausgangsbelegungen sind vom Zustand und vom Wert der Eingangsbelegungen abhängig X Schaltnetze Speicher Binäre Speicherelemente: kleinste logische Bausteine zur Aufbewahrung von Information. Speicherung durch Einnahme der Zustände “0” oder “1”. Realisierung als Schaltwerke. Schaltnetze Y D Q En Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.165 2. Zahlen und logische Schaltungen Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2. Zahlen und logische Schaltungen RS-Flipflop Realisierung eines RS-Flipflop Ein RS-Flipflop besitzt zwei besondere Eingänge zum • Setzen (auf “1”; Set) und • Rücksetzen (auf “0”; Reset) des Inhalts. Funktionstabelle der Schaltfunktion für neuen Zustand Q(n+1) aus aktuellem Zustand Q(n) R Q(n) Takt T T=0: Zustand ändert sich nicht, T=1: Zustand kann sich ändern. Dann wird das RS-Flipflop durch folgende Tabelle beschrieben: S T Q(n+1) S 0 0 1 1 R 0 1 0 1 Q(n+1) Q(n) 0 1 nicht def. S 0 0 0 0 1 1 1 1 R 0 0 1 1 0 0 1 1 Q(n) 0 1 0 1 0 1 0 1 Q(n+1) 0 1 0 0 1 1 undef. undef. Nebenbedingung: r ∧ s = 0 Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.166 2.167 Q(n) R 0 1 1 1 0 0 - S __ __ Q(n+1) = R Q (n) ∨ S = R (Q (n) ∨ S) ________ Q(n+1) = R ∨ (Q (n) ∨ S) R ≥1 ≥1 S Q Rückkopplung _ Q Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.168 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Erweiterung zum RS-Latch RS-Latch und RS-Flipflop Funktionstabelle der Schaltfunktion für neuen Zustand Q(n+1) aus aktuellem Zustand Q(n) S 0 0 0 0 1 1 1 1 R 0 0 1 1 0 0 1 1 Q(n) 0 1 0 1 0 1 0 1 Takt (Pegelsteuerung), „Clock“: Clk Clk=0: Zustand ändert sich nicht, Clk=1: Zustand kann sich ändern. => VerUNDung von S und R mit Clk Q(n+1) 0 1 0 0 1 1 undef. undef. R ≥1 & Symbol Symbol Tabelle Tabelle Clk R S Q RSQ Q R Q Q# S 0 0 1 0 1 Q 0 0 0 1 1 0 1 - 0 1 0 1 verb. Q Q# R S 0 - - Q 1 - - Q ↑ 0 0 Q ↑ 1 0 0 ↑ 0 1 1 Clk Zeitdiagramm für das RS Latch Clk _ Q ≥1 & S S R R Q S Q Q Clk Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.169 2. Zahlen und logische Schaltungen Taktflankensteuerung (1/2) Taktflankensteuerung (2/2) X Clk t 1 0 Z 1 X & Clk 0V Z Z Taktflankensteuerung 2: Ersetzen der UND-Glieder durch Impulsglieder Positive Flankentriggerung Clk 1 Clk & Z 1 0 Z C Clk +5V 1 t R t Wir haben bisher ein taktpegelgesteuertes RS-NORFlipflop. X Taktflankensteuerung 1: Ersetzen der UND-Glieder durch Impulsglieder Negative Flankentriggerung 0 S X Clk & Z t 1 || + 5V 0 Q Clk t R Q S Q Clk Q Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.170 2. Zahlen und logische Schaltungen Wir haben bisher ein taktpegelgesteuertes RS-NORFlipflop. 1 Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.171 Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.172 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Taktflankengesteuerte Flipflops D-Latch und D-Flipflop Negative Flankentriggerung X Clk X 1 & 0 Clk 1 t 0 t Z Positive Flankentriggerung X Clk X 1 Z 0 Clk 1 t 0 t Z t R ≥1 & ≥1 S R S Z Eingangsseitige Erweiterungsbeschaltung von R und S. S 0 0 0 0 1 1 1 1 t R Q Clk Häufig ist es wünschenswert, dass statt Set und Reset nur ein Eingangssignal benutzt wird. Der Wert des Eingangssignals wird dann beim entsprechendem Enable- oder Taktsignal übernommen. & ≥1 Q & ≥1 _ Q Clk _ Q S Q Q# R S Clk Q Q# Clk R 0 0 1 1 0 0 1 1 Q(n) 0 1 0 1 0 1 0 1 Q(n+1) __ R 0 R=S ≥1 & 1 0 Clk 0 1 ≥1 & En 1 S D undef. undef. D: „Vorbereitungseingang“ Q 1 & & _ Q Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.173 2. Zahlen und logische Schaltungen D-Flipflop Tabelle Symbol En Q Q# En 2.174 2. Zahlen und logische Schaltungen D-Latch D Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 0 1 Q Q D D = Delay D Q Q# Clk Clk Q 0 1 ↑ Q Q D Tabelle Symbol Tabelle Symbol D Clk Zeitdiagramm Q Q# Clk Q 0 1 ↓ Q Q D Zeitdiagramm (positiv flankengetriggert) En Clk D D Q Q Meistgebrauchtes Flipflop: Basis-Flipflop für alle Register in Prozessoren und in Controllern Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.175 Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.176 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen T-Flipflop T-Flipflop Soll bei jeder Taktflanke den Zustand wechseln, wenn an einem Steuereingang der Signalpegel 1 anliegt, sonst nicht („gesperrt“). Symbol R1 R2 & & ≥1 Q & ≥1 _ Q T = Toggle Clk Clk S1 S2 Q Q# Clk R & S Tabelle Symbol Clk T Q Q T Erweiterung des RS-Flipflop Tabelle 0 1 ↑ ↑ ↑ 0 1 1 0 1 Q Q Q 1 0 Clk T Q Q T Q Q# Clk 0 1 ↓ ↓ ↓ 0 1 1 0 1 Q Q Q 1 0 Zeitdiagramm (positiv flankengetriggert) Clk & T R & ≥1 Q T & ≥1 _ Q Q Clk Clk & S Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.177 2. Zahlen und logische Schaltungen JK-Flipflop (2/2) Symbol Möglichst vielseitiges Flipflop: Speicherfall, Setzfall, Rücksetzfall, Kippfall: Auswahl durch 2 Steuerleitungen (J=Jump, K=Kill) T R & & 2.178 K Clk & ≥1 Q S & ≥1 _ Q Zeitdiagramm Symbol Tabelle Clk J K Q Q# J Clk Clk Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2. Zahlen und logische Schaltungen JK-Flipflop (1/2) Modifikation des T-Flipflops Hauptanwendung: Zählerschaltungen 0 1 ↑ ↑ ↑ ↑ 0 1 0 1 Tabelle Q - Q - Q 0 Q 0 1 1 0 1 /Q J K Clk Q Q# Clk J K Q 0 1 ↓ ↓ ↓ ↓ 0 1 0 1 - Q - Q 0 Q 0 1 1 0 1 /Q Clk K & ≥1 Q & ≥1 _ Q J Clk Clk J R & & S K Q Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.179 Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.180 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Bevorrechtigte Eingänge Asynchrone bevorrechtigte Eingänge Symbol: D-Flipflop mit Setz- und Rücksetzeingang Oft möchte man Flipflops gezielt auf einen Wert setzen Beispiele: Rücksetzen einer Schaltung beim Einschalten oder "Reset Taster" Gezieltes Laden eines Zählers auf einen Wert Daher besondere Eingänge eines Flipflops zum Setzen / Rücksetzen müssen nicht beide vorhanden sein Reset häufiger als Set. S D Clk R man nennt das asynchron Vorteil: Wirkt immer, auch ohne Takt Nachteil: Auch kurze Impulse können Reset auslösen (gefährlich!) Also: ok für General-Reset, nicht für logische Funktion R S Clk DQ 0 1 1 1 1 1 Q Q# Zeitdiagramm Sondereingänge können direkt wirken Tabelle 1 0 0 0 0 0 1 ↑ ↑ 0 1 0 1 Q Q 0 1 Clk R Gegensatz: Synchrone Eingänge wirken mit der Taktflanke D Auch für Logikfunktionen nutzbar Aber: Taktgenerator muss laufen, sonst funktioniert z.B. Reset nicht. Q Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.181 2. Zahlen und logische Schaltungen S D Clk R Q Q# Zeitdiagramm 2.182 Wichtige Zeiten am Beispiel D-Flipflop 1 / fmax Tabelle Clk Clk R S D Q 0 1 ↑ ↑ ↑ ↑ 0 1 1 1 1 0 0 0 1 Q Q 0 1 0 1 R und S wirken nicht ohne Takt. D tDS tDH Q tDS Data Setup Time tCO Zeit vor der aktiven Taktflanke: Vorbereitungseingang darf sich während dieser Zeit nicht ändern! Falls doch: Wert des FF ist undefiniert, manche schwingen auch. -> Sehr wichtige Zeit, die unbedingt einzuhalten ist. Clk tDH Data Hold Time Zeit nach der aktiven Taktflanke: Vorbereitungseingang muss noch solange konstant bleiben. Bei modernen Flipflops ist diese Zeit 0 . R tCO Clock to Output Delay D Q Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2. Zahlen und logische Schaltungen Synchrone bevorrechtigte Eingänge Symbol: D-Flipflop mit Setz- und Rücksetzeingang R und S wirken auch ohne Takt. R ist bevorrechtigt. 2.183 Verzögerung von aktiver Flanke bis Ausgangs-Änderung: Soll nicht zu kurz sein. Grund: Durchschieben von Änderungen fmax Maximale Taktfrequenz: Höchstfrequenz, mit der FF betrieben werden kann Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.184 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Das Register (1/2) Das Register: Anwendung (2/3) Ein Register ist Anwendung: Standardspeicher in Prozessoren eine Aneinanderreihung von D-Flipflops, z.B. 8, oder 16 oder 32 Stück ("Breite" des Registers) Der Takt ist allen FFs gemeinsam D4 D3 D2 Für den Benutzer sichtbare Register Viele Register für Zwischenwerte Ein Register hat oft bevorrechtigte Eingänge D1 Wie bei den Einzelflipflops, z.B. Set oder Reset (synchron oder asynchron) Ein Eingang wirkt auf alle Flipflops des Registers Clk Clr Clk Clk Clk Clk Q3 S D R S D R S D R S D R Q4 Q2 Typischer bevorrechtigter Eingang: Clock Enable CE muß 1 sein, damit Register synchrone Operation ausführt Effekt: Register behält den alten Wert bei, "hält seinen Zustand„ Typische Anwendung zur Auswahl eines bestimmten Registers Q1 Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.185 2. Zahlen und logische Schaltungen Das Register (3/3) Tabelle Clk Q 0 1 ↑ Qi Qi Di Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.186 2. Zahlen und logische Schaltungen mit Reset Der Zähler (1/3) mit Enable Asynchronzähler Besteht aus Flipflops, die nicht durch einen gemeinsamen Takt gleichzeitig 1 geschaltet werden. T Asynchrone Dualzähler Q Q T Duales Zahlensystem, Q# Clk Q# Aufbau aus T-Flipflops 0 Zeitdiagramm für Register mit Enable E Q0 2 0 __ Q0 1 Q1 2 1 __ Q1 0 Q2 2 2 __ Q2 1 Q3 2 3 __ Q3 Prinzipieller Aufbau Clk Clk G Q0 D X"00" Q X"??" X"55" X"AA" X"55" X"FF" Q1 X"AA" Q2 Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.187 Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.188 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Der Zähler (2/3) Clk Qi ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0000 Carry 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 Der Zähler (3/3) Grundsätzliche Zähler-Tabelle Symbol Tabelle (Kurzform) mit bevorrechtigten Eingängen Clk Qi Carry Clk, R, Ld,En,Di ↑ Qi 0 1111 1 Qi+1 0 ↑ ↑ ↑ - 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 Qi Carry Zeitdiagramm - 0000 0 Di Di 0 Qi 0 - Qi+1 0 - 1111 0 - 1111 1 Clk Clr Wird zur Kaskadierung mit dem Enable-Eingang des nachfolgenden Zählers verbunden, der dann bei der nächsten positiven Flanke hochzählen kann. Achtung: En beeinflusst Carry Load EnP/T D Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.189 X"0" X"5" X"6" Schaltwerke 2.190 2. Zahlen und logische Schaltungen Das Schieberegister (1/5) Das Schieberegister (2/5) Aneinanderreihung von N Flipflops, deren Ausgang jeweils mit dem Eingang des nachfolgenden Flipflops verbunden ist und mit gemeinsamer Taktleitung. Q1 Q X"?" Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2. Zahlen und logische Schaltungen Beispiel 4-bit Schiebregister: X"A" X"5" Clk 1 2 3 4 5 1 2 3 4 5 D Q1 Schieberichtung Q2 Q2 Q3 Q4 Q3 Q4 D Clk S D Clk R Q# S D Clk R Q# S D Clk R Q# S D Clk R Q Q# Clk D Q1 Q2 Q3 Das Signal, das an D anliegt, wird mit jedem Clock-Signal zum nachfolgenden Flipflop weitergeschoben. Q4 Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.191 Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.192 2. Zahlen und logische Schaltungen 2. Zahlen und logische Schaltungen Das Schieberegister (3/5) Tabelle Clk, SerIn ↑ ↑ ↑ ↑ ↑ 1 1 0 1 1 0 Das Schieberegister (4/5) Q 0000 0001 0010 0101 1011 0110 Anwendung: Serielle Datenübertragung Parallel – Serienwandlung Serien – Parallelwandlung Verzögerung Rechenoperationen verschiedene Implementierungen Verschiedene Ausführung, je nach Anwendung: Nur Serien-Eingang und –Ausgang für Verzögerungen Serien-Eingang und -Ausgang plus FF-Ausgänge zur Seriell-Parallel Wandlung Serien-Eingang und -Ausgang plus FF Eingänge zur Parallel-Seriell Wandlung Universal Schieberegister: Alle Ein- Ausgänge Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.193 2. Zahlen und logische Schaltungen Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.194 2. Zahlen und logische Schaltungen Das Schieberegister (5/5) Ausblick (1/2) Bevorrechtigte Eingänge: Mit diesen Bausteinen kann man nun komplexe Schaltwerke aufbauen, die aus in der Größenordnung 107 (!) Gattern und Latches bestehen. Solch hochkomplexe Systeme kann man natürlich nicht manuell und unsystematisch aufbauen. Generell gilt: Reset: setzt alle FFs auf 0 Set ist ungebräuchlich Load: paralleles Laden des Registers Shift Enable: Es wird geschoben wenn Enable 1 ist. Direction: Nach rechts oder links schieben. Realisiere Funktionen durch Gatterschaltungen Realisiere Register und kritische Speicherplätze durch Master Slave Latches Benutze zur Konstruktion Hardwarebeschreibungssprachen (Hardware Description Languages, HDL) und übersetze sie in Schaltungen, so wie man Programme in Maschinenprogramme transformiert. Mathematische Bedeutung des Schiebens: Bsp: 0000 0010 dezimal 2 0000 0100 dezimal 4 0000 1000 dezimal 8 Schieben nach links: Multiplikation mit 2 Schieben nach rechts: Division durch 2 Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.195 Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.196 2. Zahlen und logische Schaltungen Ausblick (2/2) Compilerbau (Kapitel 6) Betriebssysteme (Kapitel 5) Maschinenorientierte Programmierung (Kapitel 4) von-Neumann-Rechner (Kapitel 3) Speicher Zahlen und logische Schaltungen (Kapitel 2) Kommunikation (Kapitel 7) von-Neumann-Rechner Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 2.197 3. Rechnerarchitektur Informatik II SS 2004 Teil 3: Rechnerarchitektur Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 3. Rechnerarchitektur 3.2 3. Rechnerarchitektur Von Neumann Prinzipien (1946) ZIEL DER VORLESUNG: Verstehen lernen, was in einem Rechner vorgeht. Wie er aufgebaut ist und wie die einzelnen Bits und Bytes den Rechner steuern…. 1. Haupt- bzw. Arbeitsspeicher für Programme und Daten Steuerwerk Rechenwerk (ALU) Ein- / Ausgabewerk (I/O) 2. 0000 0010 0010 0100 0000 0010 0000 0000 0001 0000 1010 0101 0000 0010 0000 0010 0010 0100 INHALT: Rechnerarchitektur Von Neumann Rechner Maschinensprache Assembler Programmierung 3. 4. 5. 6. 7. Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Rechner besteht aus vier Werken: 3.3 Programmsteuerung (universelle Hardware) Gemeinsamer Speicher Hauptspeicher besteht aus adressierbaren Zellen Programm besteht aus einer Folge von Befehlen Sprünge sind möglich (bedingte und unbedingte) Speicherung erfolgt binär Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 3.4 3. Rechnerarchitektur 3. Rechnerarchitektur Bestandteile eines von Neumann Rechners Keyboard, Maus, Scanner, ….. Drucker, Bildschirm, …. Festplatten / Magnetbänder Steuerwerk (auch Leitwerk genannt) Rechenwerk Datenbus, Adressbus, Steuerbus Ein- / Ausgabewerk (I/O) RAM, ROM Busse Haupt- bzw. Arbeitsspeicher für Programme und Daten Speicher Speichermedium und physikalischem Arbeitsprinzip Organisationsform Zugriffsart Leistungsparameter Preis Register Arithmetical Logical Unit (ALU) Steuerwerk + Rechenwerk = CPU Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 3.5 3. Rechnerarchitektur Schnittstelle Übertragungsgeschw. USB 1.0/1.1 1,5 MByte/s USB 2.0 Hi-Speed 60 MByte/s Firewire 50 MByte/s Serielle Schnittstelle 0,12 MByte/s Parallele Schnittstelle 0,12 MByte/s SCSI (SCSI 1)5 MByte/s 6m Fast SCSI (SCSI 2) 10 MByte/s Ultra SCSI 20 MByte/s Ultra Wide SCSI 40 MByte/s Ultra 2 Wide SCSI 80 MByte/s Ultra 3 Wide SCSI 160 MByte/s AGP / PCI South Bridge 3.6 Beispiel Busse Ein gemeinsam genutztes Medium Die Anzahl gleichzeitig übertragbarer Bits heißt Busbreite. Busse können hierarchisch organisiert sein über Brücken CPU direkt am Front Side Bus North Bridge Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 3. Rechnerarchitektur Busse Speicherwerk (Hauptspeicher, Arbeitsspeicher). Persistente Speicher wie Festplatten sowie Caches und Register zählen wir logisch nicht zum Speicher. Der Arbeitsspeicher besitzt einen eingeschränkten Adressumfang Ergänzung durch Hintergrundspeicher (z.B. Plattenspeicher, Magnetbandspeicher, etc.), die persistent sind. Die Zugriffsgeschwindigkeit zum Arbeitsspeicher sollte der Arbeitsgeschwindigkeit der CPU angepasst sein. Je schneller der Speicher desto teurer Æ Speicherhierarchie Für die verschiedenen Einsatzbereiche der Speicher werden unterschiedliche Speicherarten verwendet, die sich unterscheiden hinsichtlich: Seriell / Audio / USB / Firewire Max. Kabellänge 5m 5m 4,5 m 100 m 5m 3m 1,5 m 1,5 m 12 m 12 m Beispiel eines älteren PCs Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 3.7 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 3.8 3. Rechnerarchitektur 3. Rechnerarchitektur Ein- und Ausgabe (I/O für input / output) In den Bereich I/O fallen alle Geräte, die Daten ausgeben oder Eingaben annehmen wie Monitore oder Soundkarten Auch die Festplatten sind nach von Neumann I/O Geräte DMA – Direct Memory Access Bock Mode bei eigenem Cache I/O Geräte sind über den Bus mit Speicher und Prozessor verbunden Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 3.9 3. Rechnerarchitektur Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 3.10 3. Rechnerarchitektur Das Leitwerk (Steuerwerk, control unit) Das Leitwerk steuert die Arbeitsweise des Rechenwerks durch schrittweise Interpretation der Maschinenbefehle Der Befehlszähler (PC) enthält die Adresse des nächsten auszuführenden Befehls; Das Leitwerk erhöht diesen Wert vor jeder Operation um 1. (PC:=PC+1) Das Befehlsregister (IR) enthält den aktuellen Befehl Das Statusregister (SR) nimmt Rückmeldungen aus dem System auf Das Leitwerk decodiert den Befehl Der Operationsteil (auch Opcode genannt) bestimmt dabei welche Operationen ausgeführt werden sollen Operanden werden durch Angabe von Registern oder Speicheradressen bestimmt Direktoperanden können durch Konstanten angegeben werden Decodierung i.d.R. durch Mikroprogramme Das Leitwerk erzeugt die nötigen Steuersignale für das Rechenwerk Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 3.11 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 3.12 3. Rechnerarchitektur 3. Rechnerarchitektur Das Rechenwerk Rechneraufbau Das Rechenwerk bildet zusammen mit dem Steuerwerk die CPU Es besteht aus einer (oder mehreren) ALU und Registern arithmetische Operationen (Addition, Subtraktion, ...) logische Operationen (UND, ODER, NICHT, ...) Verschiebe-Operationen u. U. Bitmanipulation Vergleichs- und Bit-Test-Operationen Quelle: Rechenberg, Pomberger Informatik-Handbuch S. 301 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 3.13 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 3. Rechnerarchitektur 3. Rechnerarchitektur Der Befehlszyklus Der Befehlszyklus 1. 2. 3. 4. 5. FETCH – Befehlsholphase DECODE – Dekodierungsphase FETCH OPERANDS – Operanden nachladen EXECUTE – Befehl ausführen UPDATE PC – PC auf den nächsten Befehl zeigen lassen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 3.15 3.14 Die Gemeinsame Arbeitsweise von Leitwerk und Rechenwerk wird durch den Maschinenbefehlszyklus beschrieben Der Befehlszyklus wird von der CPU ständig durchlaufen Die Befehle stehen im Speicher Das Leitwerk "weiß" jederzeit, welcher Befehl als nächster auszuführen ist Die Adresse (= Nummer der Speicherzelle) des nächsten auszuführenden Befehls steht in einem speziellen Register des Leitwerks, dem Befehlszähler (PC) Üblicherweise stehen aufeinander folgende Befehle in aufeinander folgenden Speicherzellen, der zuerst auszuführende Befehl hat die niedrigste Adresse Zu Beginn des Programms wird der PC mit dessen Startadresse geladen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 3.16 3. Rechnerarchitektur 3. Rechnerarchitektur Ablauf des Befehlszyklus im Detail Programm-Unterbrechungen (Interrupts) – I (1a) Befehlsholphase: Speicherzugriff auf die vom PC angezeigte Adresse. (1b) Der Befehl wird in das Befehlsregister des Leitwerks gebracht. Anschließend wird der PC erhöht, er zeigt dann auf den nächsten Befehl. Besteht ein Befehl aus mehreren Speicherworten, so setzt sich diese Phase auch aus mehreren Speicherzugriffen zusammen, bis der Befehl vollständig im IR steht. Das Befehlsregister (instruction register IR) ist untergliedert in Opcode-Register (OR, Befehlsregister) und Adress- Register (AR). (2) Der Befehl im OR wird decodiert (Befehlsdecoder) und der Ablaufsteuerung zugeführt. Diese kann als Mikroprogramm oder hart verdrahtet realisiert sein. Die Ablaufsteuerung erzeugt die für die Befehlsausführung nötigen Steuersignale. (3) Benötigt der Befehl Operanden, so wird deren Adresse aus dem Inhalt des AR ermittelt. (4a) Nun erfolgt der Speicherzugriff auf die so festgelegte Operandenadresse. (4b) Die Operanden werden in das vom Opcode spezifizierte Register des Rechenwerks oder in ausgewählte Speicherzellen gebracht. (5) Falls die Art des Opcodes weitere Teiloperationen erfordern, werden diese nun ausgeführt. Dabei kann auch der Inhalt des PCs verändert werden (Sprungbefehle, Prozeduraufrufe). Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 3.17 3. Rechnerarchitektur RISC vs. CISC Als Reaktion auf eine Unterbrechungsanforderung geschehen zwei Dinge: Retten des aktuellen Programmzustands: Der Maschinenstatus, d.h. der Inhalt der Register der CPU, muss festgehalten werden. Dies geschieht durch Wegspeichern der Registerinhalte des gerade unterbrochenen Programms (Zustandsvektor) auf den Stack. Laden der Register mit dem Zustandsvektor der ISR (z.B. Startadresse der ISR): Der Zustandsvektor steht an einer festgelegten Adresse im Speicher (InterruptVektor). Das Programm wird nun ab der Startadresse der ISR fortgesetzt. Die Unterbrechung darf nicht mitten in einer Befehlsausführung erfolgen (undefinierter Prozessorstatus!), sondern erst nachdem der gerade laufende Befehl vollständig abgearbeitet ist, also am Ende des Befehlszyklus. Nach Ende der ISR wird der ursprüngliche Zustandsvektor wieder vom Stack geholt und das Programm an der Unterbrechungsstelle fortgesetzt. Während des Rettens des Programmzustands und des anschließenden Ladens des Zustandsvektors der ISR darf keine neue Unterbrechungsanforderung auftreten (Zustandsinformation unvollständig!). Der Befehlssatz der Prozessoren enthält daher spezielle Befehle zum Sperren und Freigeben von Unterbrechungsanforderungen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 3.18 3. Rechnerarchitektur Programm-Unterbrechungen (Interrupts) – II Der Programmablauf muss manchmal unterbrochen werden. Lesen von Daten, Terminal Eingaben usw. Die Unterbrechung erfolgt durch ein an die CPU gesandtes Signal, das interrupt request (IRQ) genannt wird. Die CPU veranlasst das gerade laufende Programm zu unterbrechen und eine Befehlsfolge auszuführen, die auf die Unterbrechung reagiert Nach dem Abarbeiten der interrupt service routine (ISR) fährt der Rechner mit der Ausführung des unterbrochenen Programms fort. 3.19 Die Intel x86 CPUs und Motorola 68000 Serie sind CISC Prozessoren – CISC (Complex Instruction Set Computer) Der RISC Prozessor ist einfacher aufgebaut (Reduced Instruction Set Computer) weniger Befehle gleiche Länge der Befehle kürzere Ausführungszeit pro Befehl pipelining feste Verdrahtung die arithmetischen Befehle werden nur auf Registern ausgeführt nicht auf den Speicher Auf den Speicher kann nur über Lade- und Schreibbefehle zugegriffen werden Das Konzept des Pipelinings wurde verfolgt Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 3.20 3. Rechnerarchitektur 3. Rechnerarchitektur Nicht von Neumann Architekturen Was ist möglich? Klassifikation nach Flynn SISD Single Instruction Single Data MISD Multible Instruction Single Data SIMD Single Instruction Multible Data MIMD Multible Instruction Multible Data Der Earth Simulator: Nach Daten und Instruktionen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 3.21 3. Rechnerarchitektur Benchmarking Analyse der Geschwindigkeit von Rechnern (Performance) Was sagen die MIPS (million instructions per second [nicht unser MIPS Prozessor!!!]) und Flops (Floating point Operations) aus? So genannte Mixe aus verschiedenen Operationen, um die Leistung zu bewerten. Der LINPACK-Benchmark ist wichtig für die Numerik Es gibt viele weitere: SPAC, WHETSTONE, DHRYSTONE, EDN, SSBA-Suite, …usw. Die Thematik ist sehr komplex und würde alleine eine ganze Vorlesung füllen. Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 3.23 5,120 (640 8-way Knoten) 500 MHz NEC CPUs 8 GFLOPS per CPU (41 TFLOPS total) 2 GB (4 512 MB FPLRAM modules) per CPU (10 TB total) shared memory in jedem Knoten 640 × 640 crossbar switch zwischen den Knoten 16 GB/s Bandbreite zwischen den Knoten 20 kVA Stromverbrauch pro Knoten Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Der Earth Simulator -- NEC SX Earth Simulation Center Yokohama – Japan http://www.es.jamstec.go.jp/ www.top500.org 3.22 4. Assembler Assembler Programmierung – Motivation Was ist ein Programm? Informatik II SS 2004 Problem: Teil 4-1: Assembler Programmierung Welche Befehle kennt der Prozessor? Sind das dieselben Befehle, die ein Mensch verwendet? Sich Schritt für Schritt dem Prozessor nähern… Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Eine Reihe von Befehlen, die der Ausführung einer Aufgabe dient Dazu wird das Programm sequentiell abgearbeitet und Befehl für Befehl abgearbeitet. Der Prozessor arbeitet dabei zustandsbasiert Anweisung: Addiere die Zahlen von eins bis hundert und speichere das Ergebnis! Integer: Ergebnis := Sum(1+2+3+4+…+100); ….aber das sind immer noch nicht die Befehle, die ein Prozessor versteht. Lehrstuhl für Telematik Institut für Informatik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4. Assembler 4. Assembler Assembler Allgemein – Befehle (Maschinensprache) Ausnahme: (aufwärts-) kompatible Rechnerfamilien Beispiel: 286, 386, 486, Pentium Der Befehl muss zwei Angaben enthalten (v. Neumann-Rechner): Assembler vs. Maschinensprache Die Befehle, die der Computer versteht und ausführen kann, sind Bitfolgen Maschinensprache, in der Regel für jede CPU unterschiedlich. Gesamtheit aller vom Prozessor ausführbaren Befehle (Maschinenbefehle) heißt Maschinensprache Prozessoren können nur numerische Instruktionen ausführen. durchzuführende Operation (Was!) Operations-Code verwendeter Operand (Womit!) Adresse Häufig gehen diese Angaben auch direkt in den Op-Code ein. Nach der Anzahl der Operanden im Adressteil unterscheidet man: 8-Bit-Mikrocomputer arbeiten fast immer mit Einadress-Befehlen (1. Quelle und Zieladresse implizit gegeben, z.B. Akkumulator), 16-Bit-CPUs dagegen oft mit Zweiadress-Befehlen. Ein Befehl kann aus einem oder mehreren Speicherworten bestehen Bei Computern mit großer Wortlänge können auch mehrere Befehle in einem Speicherwort stehen Bei 8-Bit-Mikros besteht der OP-Code aus einem Byte, der Adress-Teil aus einem oder zwei Bytes (= eine Adressangabe) Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.1-2 4.1-3 0000 0010 0010 0100 0000 0010 0000 Addiere den Inhalt der Register 17 und 18 und speichere das Ergebnis im Register 8 ab für den Menschen nicht gut verständlich Ein Assembler setzt die Befehle um und verwaltet symbolische Adressen Der Wortschatz eines Assembler heißt Assemblersprache oder auch einfach Assembler Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.1-4 4. Assembler 4. Assembler Assembler Vom Assembler zur Hochsprache Aber auch die Maschinenbefehle (bzw. Assemblerbefehle) sind für den Menschen schwer zu verstehen, selbst wenn er nicht direkt in der binären Maschinensprache programmieren muss. Es gibt keine Variablen Einige Befehle stehen nicht direkt zur Verfügung. Jeder Prozessor ist anders, also auch jeder Assembler Das bedeutet, dass ein Programmierer ein Assemblerprogramm (z.B. Summe von 1 bis 100) für jeden Prozessor neu schreiben muss. Lösung des Problems: eine Hochsprache Es werden dem Programmierer mehr Befehle angeboten Speicherverwaltung wird übernommen Die Befehle sind Prozessor unabhängig Wer vermittelt nun zwischen Hochsprache und Maschinensprache? Ein Compiler übersetzt das Hochsprachenprogramm in Assemblerprogramm. Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.1-5 4. Assembler Diesen Vorgang nennt man kompilieren Ein Assembler macht aus einem Assemblerprogramm ein Maschinensprachenprogramm Anstelle des Compilers kann auch ein Interpreter verwendet werden. Dieser erzeugt auch Maschinencode, aber erst zur Laufzeit. Im Unterschied zum Interpreter übersetzt der Compiler das gesamte Programm. Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.1-6 4. Assembler Wo wir jetzt sind – ein kurzes Fazit Vorher Zahlendarstellung / Gatter Æ ALU von Neumann Rechner Programm in einer temp = v[k]; Hochsprache (C, Java) v[k] = v[k+1]; Compiler Assembler Programm Jetzt Assembler Programmierung Später: (Spim für MIPS R2000) Assembler Compilerbau: Wie bekomme ich aus einer Hochsprache ein Assemblercode? Wie optimiere ich den Compiler? In welcher Sprache schreibe ich einen solchen Compiler? Formale Sprachen: Formale Analyse der Sprachen und ihrer Mächtigkeit, usw. Maschinensprache Programm (MIPS R2000) v[k+1] = temp; lw lw sw sw 4.1-7 $15, $16, $16, $15, 0($2) 4($2) 0($2) 4($2) 0000 1001 1100 0110 1010 1111 0101 1000 1010 1111 0101 1000 0000 1001 1100 0110 1100 0110 1010 1111 0101 1000 0000 1001 0101 1000 0000 1001 1100 0110 1010 1111 Interpretation durch Leitwerk Registertransfer IR ← Imem[PC]; PC ← PC + 4 Anweisungen ALUOP[0:3] ⇐ InstReg[9:11] & MASK ° ° Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 C code Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Assemblerprogramm Maschinencode Registertransfer Anweisung 4.1-8 4. Assembler 4. Assembler Wie können wir nun Programmieren? Arbeitsweise des R 2000 Wir brauchen: Einen Simulator: 1. 2. MIPS R2000 – Stanford Projekt: Microprocessor without Internal Pipeline Stages RISC Prozessor SPIM (unser Simulator) unterliegt der GNU-Lizenz 3. 4. http://www.cs.wisc.edu/~larus/spim.html Linux: xspim; Windows© PCSpim 5. 4.1-9 Der Speicher Warum Hexadezimal? Größe des Speichers Jede Zelle ist 8 Bit (1 Byte) Groß und hat eine 32 Bit Adresse Kilobyte 1KB = 1024 Byte = 210Byte Megabyte 1MB = 1024 KB = 220 Byte Gigabyte 1GB = 1024 MB = 230 Byte Von Neumann-Rechner haben gemeinsamen Speicher für Daten und Programm Der Programmierer muss verhindern, dass der Rechner versucht, die abgelegten Daten als Programm auszuführen. Der Prozessor soll nicht das Programm mit Daten überschreiben Selbstmodifizierender Code ist möglich (Beispiel: Computer Viren) Lösung: Segmente für Daten, Programm, OS und Stack Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.1-10 4. Assembler Adressierung des Speichers Daten werden aus den Registern in den Speicher geschrieben Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4. Assembler z.B. der Inhalt von zwei Registern wird addiert und das Ergebnisse in ein anderes Register geschrieben. Zum Erstellen der Programme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Die zugehörigen Operanden werden geladen In Abhängigkeit des aktuellen Befehls werden die Register verändert. Einen Texteditor Der Befehl wird geladen Der Befehl wird decodiert Daten werden in die Register geladen 4.1-11 Mit den Direktiven .data und .text geben wir an, wohin die folgenden Befehle geschrieben werden Der Programmierer kann aber auch direkt in den Speicher schreiben. Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.1-12 4. Assembler 4. Assembler Hauptspeicher Verwaltung Datentypen Adresse 32 Bit Der Speicher besteht aus 232 Zellen à einem Byte .text und .data sind Direktiven, die angeben, was Programm und was Daten sind. Speicherzellen 8 Bit 0xFFFFFFFF Betriebssystem und ROM 0x80000000 0x7FFFFFFF Ganze Zahlen Stack Segment Zeichenketten Freier Bereich .word – 32-Bit-Zahlen .half – 16-Bit-Zahlen .byte – 8-Bit-Zahlen .ascii – 8Bit pro Zeichen (256 verschiedene Zeichen) .ascii “Das ist ein Beispieltext. Und ohne “ .asciiz “Zeilenumbruch geht es weiter.“ Floating Point wird vom Coprozessor unterstützt. Daten Segment 0x10000000 Text Segment 0x00400000 Reserved 0x00000000 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.1-13 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4. Assembler 4. Assembler Speicher – Litte Big Endian R 2000 Register Litte-Endian vs. Big-Endian Big Endian „denkt“, dass das erste Byte, das er liest, das größte ist. Little Endian „denkt“, dass das Adresse erste Byte, das er liest, das kleinste ist Little-Endian Darstellung von 1025 00 00000000 00000001 01 00000000 00000100 Beispiel: 00000000 00000000 02 00000100 00000001 (1025) 00000100 00000000 03 00000001 00000000 Daten sollten im Speicher ausgerichtet (Aligned) sein Big-Endian Darstellung von 1025 Big Endian: Mainfraim, IBM Litte Endian: PC, Intel, AMD Bi Endian: PowerPC Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.1-14 4.1-15 32 General Purpose Register mit 32 Bit Wortbreite $0 bis $31 oder per „Name“ $zero enthält immer(!) den Wert 0 $at temporäres Assemblerregister $v0, $v1 Funktionsergebnisse $a0 bis $a3 Argumente für Prozeduraufrufe $t1 bis $t9 temporäre Register $s0 bis $s7 langlebige Register $k0, $k1 Kernel Register $gp Zeiger auf Datensegment $sp Stack Pointer $fp Frame Pointer $ra Return Address Zusätzlich lo und hi (Spezialregister) Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 $zero $at $v0 $v1 $a0 $a1 $a2 $a3 $t0 $t1 $t2 $t3 $t4 $t5 $t6 $t7 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 $s0 $s1 $s2 $s3 $s4 $s5 $s6 $s7 $t8 $t9 $k0 $k1 $gp $sp $fp $ra 4.1-16 4. Assembler 4. Assembler Die Assembler Befehle Befehlsformat <Marke>: <Befehl1> <Arg_1> <Arg_2> <Arg_3> # <Kommentar> <Marke>: <Befehl2>, <Arg_1>, <Arg_2>, <Arg_3> # <Kommentar> Sequentielle Abarbeitung von Befehlen Befehle Assembler Programme Lade- / Speicherbefehle Arithmetische Operationen (+ , * , - , / ) Logische Operationen (AND , OR , XOR , NAND , …) Schiebe- / Rotationsbefehle Sprungbefehle Sprünge sind möglich Nur ein Befehl pro Zeile „#“ leitet einen Kommentar ein „<name>:“ ist ein Label Das Label „main:“ muss immer vorhanden sein Label können angesprungen werden z.B. „while:“ oder „for:“ Den Namen des Labels entscheidet der Programmierer (bis auf „main:“) Pseudobefehle werden vom Assembler in mehrere Befehle umgesetzt Æ in die Befehle, die der Prozessor verarbeiten kann. Direktiven sind Assembleranweisung, die NICHT in Befehle umgesetzt werden; z.B. um Platz zu lassen für Variablen (beginnen mit einem Punkt z.B. „.data“) Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.1-17 4. Assembler Assember Programm – ein Beispiel Register Format (R) rsrs 6 5 rtrt rd rd 5 5 shamt shamt 5 # Beispielprogramm V. 001 # berechnet den Umfang eines Dreiecks mit den Kanten x, y, z # kein sehr sinnvolles Programm .data x: .word 12 y: .word 14 z: .word 5 u: .word 0 .text main: lw $t0, x lw $t1, y lw $t2, z add $t0, $t0, $t1 # $t0 := x + y add $t0, $t0, $t2 # $t0 := x + y + z sw $t0, u # u := x + y + z li $v0, 10 # EXIT syscall funct funct 6 Immediate Format (I) Op-Code Op-Code rsrs rtrt 16--Bit Bit Konstante Konstante(Imm) (Imm) 16 6 5 5 16 Sprung Format (J) Op-Code Op-Code 4.1-18 4. Assembler Die drei Instruktionsformate Op-Code Op-Code Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 26Bit BitSprungadresse Sprungadresse 26 6 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 26 4.1-19 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.1-20 4. Assembler Ladebefehle und Adressierungsarten I lw Rd, Adr Der Befehl lw (load word) lädt ein Wort in ein Register Rd und Adr sind die Argumente. Adr ist die Adresse im Hauptspeicher, von wo der Befehl in das Register Rd geladen wird. Informatik II SS 2004 Adressierungsmodi I – „...wie wird die Adresse angegeben?“ Teil 4-2: Assembler Programmierung Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Register Indirekt (RS): Der Wert steht an der Adresse, die im Register RS angegeben ist. Direkt: Die Adresse wird direkt angegeben über ein Label oder Label + Konstante. Indexierte – Label (RS): Der Wert wird durch ein Label angegeben + den Wert aus Register RS (+ Konstante) Lehrstuhl für Telematik Institut für Informatik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4. Assembler 4. Assembler Ladebefehle und Pseudoinstruktionen … und nun das Ganze noch mal zum Speichern Weitere Befehle lb Rd, Adr lbu Rd, Adr lh Rd, Adr lhu Rd, Adr ld Rd, Adr : load byte 8 Bit : load unsigned byte 8 Bit : load halfword 16 Bit : load unsigned halfword 16 Bit : load double-word ist eine Pseudoinstruktion Pseudoinstruktionen werden vom Assembler aufgelöst ld Rd, Adr 4.2-2 := sw Rs, Adr sb Rs, Adr sh Rs, Adr sd Rs, Adr ush Rs, Adr usw Rs, Adr store word store byte store halfword store double-word (Pseudoinstruktion) unaligned store halfword unaligned store word lw Rd, Adr lw Rd+1,Adr+4 Daten müssen aligned im Speicher sein Adressen von Wörtern müssen durch 4 teilbar sein Adressen von Halbwörtern müssen gerade sein Oder es werden die Befehle ulw, ulh und ulhu verwendet Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.2-3 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.2-4 4. Assembler 4. Assembler Register Transfer Befehle und Adressierungsarten II Arithmetische Befehle (Addition & Subtraktion) Register direkte Adressierung: Es wird direkt auf die Register zugegriffen unter Nennung der Registernamen Rd (destination) und Rs (source). move Rd,Rs move Rs Können nur direkt auf den Registern ausgeführt werden Addition und Subtraktion (mit Overflow) add Rd, Rs1, Rs2 addi Rd, Rs1, Imm sub Rd, Rs1, Rs2 Rd Unmittelbare Adressierung: Dort wird eine Konstante unmittelbar in ein Register übertragen. Die Konstante ist Teil des Programmcodes, nicht der Daten. Rd := Rs1 + Rs2 Rd := Rs1 + Imm Rd := Rs1 – Rs2 add kann auch mit einer Konstanten (unmittelbaren Operanden) verwendet werden. Der Assember benutzt dann automatisch addi. sub und alle weiteren arithmetischen Befehle können mit einer Konstanten verwendet werden. ☺ li Rd, Imm load immediate (Imm ist dann eine Konstante) lui Rs, Imm load upper immediate Rs Imm * 216 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.2-5 4. Assembler 4.2-6 4. Assembler Überläufe und Ausnahmen Addition ohne Überlauf Was passiert, wenn die Summe zweier positiver Zahlen negativ wird? Es tritt eine Ausnahme (Exception) auf. Ausnahmen sind Fehler, die während der Laufzeit des Programms auftreten. Der Exception Handler beendet in diesem Fall das Programm! addu addiu aubu Rd, Rs1, Rs2 Rd, Rs1, Imm Rd, Rs1, Rs2 U sollte nicht durch unsigned übersetzt werden, da auch bei Addition von vorzeichenlosen Zahlen Überläufe auftreten können. Ein klassisches Beispiel ist auch die Division durch Null. Beispiel: Die Halfbytes (4 Bit) a und b werden addiert. A= 0111 B= 0001 + -------------S= 1000 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7 1 ---8 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.2-7 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.2-8 4. Assembler 4. Assembler Multiplikation und Division Multiplikation und Division Problem eines Überlaufs ist sehr wahrscheinlich und es werden sogar doppelt so viel Bits zum Speichern benötigt. Beispiel: (1 * 232) * (1* 232) = 1 * 232+32 = 1* 264 Der MIPS verfügt über zwei Spezialregister hi und lo Es gibt aber nur 4 Maschinenbefehle für Multiplikation und Division div Rd, Rs divu Rd, Rs mult Rd, Rs multu Rd, Rs hi:=Rd MOD Rs; lo:= Rd DIV Rs hi:=Rd MOD Rs; lo:= Rd DIV Rs hi:=Rd * Rs DIV 216; lo:=Rd * Rs MOD 216 hi:=Rd * Rs DIV 216; lo:=Rd * Rs MOD 216 hi:=Rd MOD Rs; lo:= Rd DIV Rs hi:=Rd MOD Rs; lo:= Rd DIV Rs hi:=Rd * Rs DIV 216; lo:=Rd * Rs MOD 216 hi:=Rd * Rs DIV 216; lo:=Rd * Rs MOD 216 Logische Operationen Sprünge Jetzt erst mal weiter mit dem SPIM Ein- und Ausgaben… 4.2-9 4. Assembler Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.2-10 4. Assembler SPIM – Ein- und Ausgaben Syscall Parameter Der Befehl syscall Der Befehl hat keine Argumente. Ein Parameter wird über das Register $v0 übergeben. Das Verhalten des Simulators ist abhängig vom Register $v0 $v0=1 print_int Wert in $a0 wird dezimal ausgegeben auf dem Bildschirm $v0=4 print_string Die mit Chr0 endende Zeichenkette wird ausgegeben. $a0 muss die Adresse enthalten, an der die Zeichenkette im Speicher beginnt. Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 div Rd, Rs1, Rs2 divu Rd, Rs1, Rs2 Mult Rd, Rs multu Rd, Rs Die Ergebnisse werden immer in hi und lo gespeichert. Die Ergebnisse von Maschinenbefehlen werden immer in hi und lo gespeichert. Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Es gibt auch Pseudobefehle, die direkt auf den Registern arbeiten. 4.2-11 Vor Aufruf von syscall muss der Parameter in $v0 gegeben werden 1 print_int Wert in $a0 wird dezimal ausgegeben 2 print_float 32 Bit Gleitkommazahl aus Register $f12/13 wird ausgegeben 3 print_double 64 Bit … 4 print_string Die an ($a0) beginnende und auf Chr 0 endende Zeichenkette wird ausgegeben. 5 read_int Schreibt eine Dezimalzahl in $v0 6 read_float Schreibt eine Gleitkommazahl in $f0 (32 Bit) 7 read_double Schreibt eine Gleitkommazahl in $f0/1 (64 Bit) 8 read_string Schreibt eine Zeichenkette bis Chr 0 in den Speicher. Startadresse: $a0 Max. Länge $a1 9 sbrk Reserviert Speicher 10 exit Beendet das Programm Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.2-12 4. Assembler 4. Assembler Logische Befehle and Rd, Rs1, Rs2 andi Rd, Rs, Imm nor Rd, Rs1, Rs2 or Rd, Rs1, Rs2 ori Rd, Rs, Imm xor Rd, Rs1, Rs2 xori Rd, Rs, Imm not Rd, Rs Rotations- und Schiebebefehle Rotation: Alle Bits in einem Register werden nach links oder rechts verschoben; das Letzte kommt dann an den Anfang. Schiebebefehle: Wie Rotation allerdings fällt das letzte Bit weg. Das erste Bit wird durch 0 ersetzt (logische Schiebebefehle) oder das höchstwertige Bit wird übernommen, damit das Vorzeichen erhalten bleibt (arithmetische Schiebebefehle). Rd:=Rs1 AND Rs2 Rd:=Rs AND Imm Rd:=Rs1 NOR Rs2 Rd:=Rs1 OR Rs2 Rd:=Rs AND Imm Rd:=Rs1 XOR Rs2 Rd:=Rs AND Imm Rd:= NOT(Rs) := xori Rd, Rs, -1 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 rol Rd, Rs1, Rs2 rotiert Rs1 um Rs2 Stellen nach links (ror für rechts) sll und sllv (shift left logical); srl und srlv (shift right logical); sra und srav (shift right arithmetic) V steht für Variable, was bedeutet, dass ein Register die Anzahl der Schritte bestimmt; ansonsten ist der Wert eine Konstante. 4.2-13 4. Assembler Sprünge Es werden zwei Werte verglichen und wenn die Bedingung (z.B. gleich, > , < ,….) erfüllt ist, wird in das Zielregister eine 1 geschrieben und sonst eine 0. Beispiel: seq Rd, Rs1, Rs2 Falls (Rs1)=(Rs2) Rd:=1, sonst Rd:=0 sne – ungleich; sge – größer oder gleich; sgeu – größer oder gleich (unsigned) usw. Bei den Vergleichen gibt es nur 4 Maschinenbefehle: Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.2-14 4. Assembler Vergleiche slt Rd, Rs1, Rs2 sltu Rd, Rs1, Rs2 slti Rd, Rs1, Imm sltui Rd, Rs1, Imm Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 set less than set less than unsigned set less than immediate set less than immediate unsigned Sprünge machen Programme erst mächtig. Der Spim unterstützt bedingte und unbedingte Sprünge (jumping) an eine Marke (Label). Im Gegensatz zu Hochsprachen unterstützt der Assembler bedingte Sprünge nur aufgrund von Größenvergleichen zweier Register oder eines Registers mit einer Konstanten. b label – unbedingter Sprung zum Label beq Rs1, Rs2 label – bedingter Sprung falls Rs1 = Rs2 Es gibt insgesamt 21 Befehle für bedingte Sprünge, die auch =,<>,<=,>=,<,>,=0, usw. abfragen. Mit den Sprüngen können wir die Schleifenkonstrukte und Fallunterscheidungen der Hochsprachen nachbilden. Eigentlich erwartet der Assembler einen Offset zu PC (Branching), wir verwenden allerdings Marken, damit sind die Befehle j und b identisch im Spim. 4.2-15 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.2-16 4. Assembler Kontrollstrukturen Sprünge (bedingte und unbedingte) If-then-else, Case Loop (n Durchläufe) While (Abbruchbedingung) Informatik II SS 2004 Teil 4-3: Assembler Programmierung Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4. Assembler 4. Assembler Beispiel: While in Assembler Beispiel: if–then–else in Assembler if ($t8 < 0) $s0 = $t1 = } else{ $s0 = $t2 = } main: 4.3-2 $v0 = 1; while ($a1 < $a2) do{ $t1 = mem[$a1]; $t2 = mem[$a2]; if ($t1 != $t2) go to break; $a1 = $a1 +1; $a2 = $a2 –1;} return break: $v0 = 0 return then{ 0 - $t8; $t1 + 1; $t8; $t2 + 1; bgez sub addi b $t8, else $s0, $zero, $t8 $t1, $t1, 1 next # # # # if ($t8 is > or = zero) branch to else $s0 gets the negative of $t8 increment $t1 by 1 branch around the else code ori addi $s0, $t8, 0 $t2, $t2, 1 # $s0 gets a copy of $t8 # increment $t2 by 1 li $v0, 1 # Load $v0 with the value 1 bgeu lb lb bne addi addi b $a1, $t1, $t2, $t1, $a1, $a2, loop # # # # # # # li $v0, 0 loop: else: next: $a2, done 0($a1) 0($a2) $t2, break $a1, 1 $a2, -1 If( $a1 >= $a2) Branch to done Load a Byte: $t1 = mem[$a1 + 0] Load a Byte: $t2 = mem[$a2 + 0] If ($t1 != $t2) Branch to break $a1 = $a1 + 1 $a2 = $a2 - 1 Branch to loop break: # Load $v0 with the value 0 done: Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.3-3 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.3-4 4. Assembler 4. Assembler Komplexe Datenstrukturen – Felder Beispiel: Schleifen in Assembler $a0 = 0; Wir können im MIPS Felder deklarieren, indem wir die Felder explizit belegen. Beispiel: .data feld: .word 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 For ( $t0 =10; $t0 > 0; $t0 = $t0 -1) do { $a0 = $a0 + $t0; } li $a0, 0 # li $t0, 10 # Initialize loop counter to 10 $a0 = 0 Oder wir reservieren den Platz für 13 Wörter Beispiel: .data feld: .space 52 Hier wird nur Platz reserviert, aber nicht initialisiert! loop: add $a0, $a0, $t0 addi $t0, $t0, -1 # Decrement loop counter bgtz $t0, loop # If ($t0 >0) Branch to loop Ein Feld ist vergleichbar mit einem Array sw $t0, feld($t0) # feld[i] := i Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.3-5 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4. Assembler 4. Assembler Der Stack Keller für mehr Daten Ein LIFO Speicher Kellerzeiger (SP) zeigt auf 0x7FFF FFFC Einige CISC Prozessoren verfügen über Extrabefehle (push, pop) zum Einkellern von Daten. Beim Spim müssen wir die Kellerverwaltung selbst übernehmen. Unterbrechungen müssen beachtet werden sw $t0, ($sp) addi $sp, -4 Besser: addi $t0, -4 sw $t0, 4($sp) 4.3-6 # tep. Reg. $t0 auf Stack # Stack Pointer neu setzen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.3-7 Für den Fall, dass man mehrere Daten speichern will addi $sp, -12 sw $t0, 12($sp) sw $t1, 8($sp) sw $t2, 4($sp) #gleich für 3 Worte der SP setzen # t0 sichern # t1 sichern # t2 sichern Lesen analog mit dem Befehl lw Erst den Lesebefehl und dann den SP wieder neu setzen. Wir sind nun in der Lage, die ganzen temporären Register zu sichern. Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.3-8 4. Assembler 4. Assembler Unterprogramme Beispiel: Das Unterprogramm swap als C Programm Aus Hochsprachen ist das Konzept von Unterprogrammen bekannt. In Hochsprachen heißen sie Prozeduren, Methoden, Subrotinen oder Funktionen Der Grund von Unterprogrammen ist die Wiederverwendung von Programmteilen. Programme können leichter verständlich werden, wenn Unterprogramme sinnvoll eingesetzt werden. Auch Assembler unterstützen das Konzept von Unterprogrammen. Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.3-9 swap vertauscht v[k] mit v[k+1] swap (int v[], int k) { int temp; temp = v[k]; v[k] = v [k+1]; v[k+1] = temp; } Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4. Assembler 4.3-10 4. Assembler Swap als MIPS Assembler Programm Unterprogramme swap: Das Unterprogramm wird mit „jal swap“ aufgerufen. Die Parameter müssen in $4, $5 übergeben werden. Die Rückkehradresse wird automatisch in $31 gespeichert. jr $31 ist der Rücksprung aus dem Unterprogramm und entspricht einem Return. addi sw sw sw sll add $29, $29, -12 $2, 4($29) $15, 8($29) $16, 12($29) $2, $5, 2 $2, $4, $2 lw lw sw sw lw lw lw addi jr $15, 0($2) $16, 4($2) $16, 0($2) $15, 4($2) $2, 4($29) $15, 8($29) $16, 12($29) $29, $29, 12 $31 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 # # # # # # # # # # # # # # # # reserve space on stack save $2 on stack save $15 on stack save $16 on stack reg $2 = k * 4 reg $2 = v + (k*4) $2 con. addr. of v[k] $15 <-- v[k] $16 <-- v[k+1] $16 --> v[k] $15 --> v[k+1] restore $2 from stack restore $15 from stack restore $16 from stack restore stackpointer return 4.3-11 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.3-12 4. Assembler 4. Assembler Konventionen für Prozeduren (Prolog) Für den Aufrufer (Caller) Konventionen für Prozeduren (Epilog) $fp als letztes Register wieder herstellen $sp = $sp – Größe des Frames Caller 4.3-13 Auf dem Stack gesicherten Register wieder herstellen Argumente vom Stack nehmen ( Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.3-14 4. Assembler Pipelining Ein-Zyklus-Maschinenbefehle Möglichst alle Befehle laufen in einem Taktzyklus ab. IF Instruction Fetch ID Instruction Decode OF Operand Fetch OE Operation Execute OS Operand Store Phasen-Pipelining im RISC Ohne Pipelining Load/Store-Architektur Nur über Load/Store-Befehle Zugriff auf den Hauptspeicher. Alle anderen Befehle: Reg.-Reg. Keine Mikroprogrammierung Möglichst wenige Befehle und Adressierungsarten IF ID OF OE OS IF ID OF OE OS Festverdrahtete Ablaufsteuerung Typischerweise ca. 50 Befehle, 2 Adressierungsarten: PC-relativ und indiziert. Nur Befehle aufnehmen, wenn sie eine deutliche Geschwindigkeitssteigerung im Mittel bringen. Einheitliches Befehlsformat Return (jr $ra) RISC- Prozessoren und Pipelining 4. Assembler Stackframe entfernen $fp, $ra, $s0 - $s7 Achtung Fehlerquelle: der Befehl jal verändert $ra Erstelle $fp durch $sp + Stackframe Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Platz für Stackframe reservieren. Sichere alle „callee-saved“ Register, die verändert werden. Rückgabe des Funktionswerts in $v0, $v1 Register wieder herstellen Für den Aufgerufenen (Callee) Callee Sichere $a0-$a3, $v0, $v1, da diese in der Prozedur verändert werden dürfen. Speichere die zu übergebenden Argumente in $a0 bis $a3. Weitere Argumente werden über den Stack übergeben (das fünfte ist das letzte Argument auf dem Stack) Beachte: Call-by-Value vs. Call-by-Reference. Prozedur wird mit jal gestartet. 1 Wort = 1 Befehl (einfache Dekodierung) IF Mit Phasen-Pipelining ID OF OE OS IF ID OF OE OS IF ID OF OE OS IF ID OF OE Aufwandsverlagerung in den Compiler Optimierender Compiler erzeugt Code (später mehr dazu). Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.3-15 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 OS 4.3-16 4. Assembler 4. Assembler Pipelining Optimierung des Phasen-Pipelinings Der Befehl wird nicht schneller ausgeführt, aber es können mehr Befehle pro Zeit ausgeführt werden. Data Forwarding Æ Parallelität und damit eine Geschwindigkeitssteigerung um die Anzahl der Pipelinestufen. Delayed Load Pipelinekonflikte Datenfluss-Konflikt durch Datenabhängigkeiten (Data Interlock) Beispiel: add $t0, $t1, $t2 # $t0 Å $t1 + $t2 addi $t0, 1# $t0 Å $t0 + 1 add ID $t1,$t2 + $t0 addi ID $t0 +1 4.3-17 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4. Assembler 4.3-18 4. Assembler Steuerfluss-Konflikte Fazit und Ausblick Delayed Branch (verzögerter Sprung) Verzweigung wird erst ab dem übernächsten Befehl wirksam. Das „Loch“ wird durch einen Befehl, der eigentlich vor dem Branch hätte ausgeführt werden sollen, gestopft. Beim Ladebefehl darf nicht sofort im nächsten Befehl auf den geladenen Operanden zugegriffen werden, sondern erst im übernächsten. Es wird die „Blase“ vermieden, dafür müssen evt. nop Befehle eingeschoben werden. Mit „Blase“ ist die Zeit gemeint, in der der Prozessor nicht weiß, was er tun soll und auf das Rückspeichern wartet. $t0 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Operand kann vor dem Rückspeichern an den nächsten Befehl übergeben werden. Für den Programmierer lästig, für optimierende Compiler kein Problem. traditioneller Sprung verzögerter Sprung LOAD X, R1 ADD 1, R1 BRANCH L ADD R1, R2 SUB R3, R2 L: STORE R1, Y LOAD X, R1 ADD 1, R1 BRANCH L NOP ADD R1, R2 SUB R3, R2 L: STORE R1, Y Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 RISC hat sich durchgesetzt optimierter verzögerter Sprung LOAD X, R1 BRANCH L ADD 1, R1 ADD R1, R2 SUB R3, R2 L: STORE R1, Y 4.3-19 Moderne CICS- Prozessoren haben mehr und mehr RISC Techniken übernommen Einsatz in PCs, Workstation, Parallelrechnern und zunehmend auch in Mikrocontrollern z.B. Intel Pentium-Familie Neue Technologien besonders RISC geeignet (z.B. Galliumarsenid) Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 4.3-20 5. Grundlagen Betriebssysteme Literatur Bücher: Informatik II SS 2004 Teil 5: Grundlagen Betriebssysteme Foliensätze (aus denen ev. teilweise Folien übernommen wurden): Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Tanenbaum: http://www.cs.vu.nl/~ast/books/mos2/ Stallings: http://www.williamstallings.com/OS4e.html Universität Karlsruhe, Herr Liefländer: http://i30www.ira.uka.de/teaching/currentcourses/lecture.php?courseid=91 Lehrstuhl für Telematik Institut für Informatik W. Stallings: „Betriebssysteme - Prinzipien und Umsetzung“, Prentice Hall, 2003, ISBN 3-8273-7030-2 (englisch: „Operating Systems: Internals and Design Principles“, 2001) A. Tanenbaum: „Moderne Betriebssysteme“, Prentice-Hall, 2002, ISBN 3-8273-7019-1 (englisch: „Modern Operating Systems“, 2001) A. Silberschatz, P. Galvin, G. Gagne: „Operating System Concepts“, John Wiley & Sons, 2002, ISBN 0-471-41743-2 Universität Braunschweig, Prof. Dr. S. Fischer: http://www.ibr.cs.tu-bs.de/lehre/ss04/bsn/ Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Architektur eines Pentiumsystems Potentielle Systemkomponenten Task Semantic Objects Example Operation GUI/shell window execute shell script Application a.out quit, kill, … File System directories, files open, close, read, Devices printer, display open, write, ... Communication ports send, receive, … Virtual Memory segments, pages write, fetch Secondary Store chunks, blocks allocate, free, Processes task queue exit, create… Threads ready queue wakeup, execute, Interrupts interrupt handler invoke, mask, ... Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.2 5.3 Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.4 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Was ist ein Betriebssystem? Motivation Silberschatz: „An operating system is similar to a government... Like a government the operating system performs no useful function by its self.“ DIN 44300: „Die Programme eines digitalen Rechensystems, die zusammen mit den Eigenschaften dieser Rechenanlage die Basis der möglichen Betriebsarten des digitalen Rechensystems bilden und die insbesondere die Abwicklung von Programmen steuern und überwachen.“ Wo gibt es Betriebssysteme? Beispiele Arbeitsplatzrechner, Großrechner Netzwerkgeräte, wie Router, Bridges, Gateways, etc. Auto Flugzeug-Cockpit Waschmaschine Chipkarte PDAs Mobile Telefone etc. Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.5 Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Ziele und Randbedingungen Definitionen eines Betriebssystems Ziele eines Betriebssystems 5.6 Definition Betriebssystem als virtuelle Maschine Anpassung der Benutzerwelt an die Maschinenwelt Organisation und Koordination des Betriebsablaufs Steuerung und Protokollierung des Betriebsablaufs Ein Betriebssystem ist eine virtuelle Maschine, die dem Anwender eine einfache (dateiorientierte) Schnittstelle zur Hardware zur Verfügung stellt und einen Programmierung dieser Hardware auf hohem logischen Niveau ermöglicht. Randbedingungen Effizienter Einsatz von Betriebsmitteln Geringer Rechenaufwand Robustheit Sicherheit Definition Betriebssystem als Ressourcenverwalter Ein Betriebssystem bezeichnet alle Programme eines Rechensystems, die die Ausführung der Benutzerprogramme, die Verteilung der Ressourcen auf die Benutzerprogramme und die Aufrechterhaltung der Betriebsart steuern und überwachen. Definition Ressourcen (Betriebsmittel) Die Ressourcen (Betriebsmittel) eines Betriebssystems sind alle Hardund Softwarekomponenten, die für die Programmausführung relevant sind. Betriebsmittel: Prozessor, Hauptspeicher, I/O-Geräte, etc. Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.7 Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.8 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Schichten eines Rechnersystems Bank- Flugsystem Reservierung Compiler Editor Spiele Kommandointerpreter Zwei Sichten auf ein Betriebssystem Anwendungsprogramme Anwendersicht: • Top-Down-Sicht • Betriebssystem ist eine virtuelle Maschine Systemprogramme Betriebsystem BS-Entwicklersicht: • Bottom-Up-Sicht • Betriebssystem ist ein Maschinensprache Mikroprogrammierung Betriebsmittel(Ressourcen-) Verwalter Hardware Physikalische Geräte Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.9 Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Aufgaben eines Betriebssystems (1/5) Aufgaben eines Betriebssystems (2/5) Prozessverwaltung (Ein Prozess oder auch Task ist ein in Ausführung befindliches Programm) Erzeugen und Löschen von Prozessen Prozessorzuteilung (Scheduling) Prozesskommunikation Synchronisation nebenläufiger Prozesse, die gemeinsame Daten benutzen Verwaltung des Dateisystems Logische Sicht auf Speichereinheiten (Dateien) Zuteilung des verfügbaren physikalischen Speichers an Prozesse Einbeziehen des Hintergrundspeichers (Platte) durch virtuelle Adressierung, demand Paging, Swapping (= Ein-/Auslagern von Prozessen), etc. Benutzer arbeitet mit Dateinamen. Wie und wo die Dateien gespeichert werden, ist ihm egal. Systemaufrufe für Dateioperationen Speicherverwaltung Erzeugen, Löschen, Öffnen, Lesen, Schreiben, Kopieren, etc. Strukturierung mittels Verzeichnissen (Directory) Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.10 5.11 Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.12 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Aufgaben eines Betriebssystems (3/5) Aufgaben eines Betriebssystems (4/5) Verwaltung des Dateisystems (cont.) Schutz von Dateien und Verzeichnissen vor unberechtigtem Zugriff Geräteverwaltung Unix: 9-Bit für Zugriffsrechte (Read, Write, eXecute) Datei/Verzeichnis gehört einem Eigentümer (user) und einer Benutzergruppe (group, z.B. Mitarbeiter, Projekt, etc.) z.B. Monitoring, Accounting, Auditing user rwx group r-- Dateiname Uebung.txt Befehl: others r-- Dateiname Uebung.txt Aktuelle Auslastung Aktueller freier Speicher Netzverkehr Optionale Aufgaben > chmod g+w Uebung.txt führt zu: group rw- Erstellen & Verwalten von Systemstatistiken others r-- user rwx Auswahl und Bereitstellung von I/O-Geräten Anpassung an physikalische Eigenschaften der Geräte Überwachung der Datenübertragung Laufzeit von Prozessen mitprotokollieren Speicherbedarf von Prozessen mitprotokollieren Eingeloggte Benutzer mitprotokollieren etc. Einführung Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.13 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Aufgaben eines Betriebssystems (5/5) Strukturen von Betriebssystemen Weitere wichtige Aspekte: Graceful Degradation: Beim Ausfall einzelner Komponenten läuft das System mit vollem Funktionsumfang mit verminderter Leistung weiter. Fehlertoleranz wird durch Redundanz erkauft. Realzeitbetrieb Fehlertoleranz Betriebssystem muss den Realzeit-kritischen Prozessen die Betriebsmittel so zuteilen, dass die angeforderten Zeitanforderungen eingehalten werden. Für zeitkritische Systeme: Meßsysteme, Anlagensteuerungen, etc. Modularisiert in Komponenten und Subsysteme Kern („kernel“) läuft ständig und parallel zu anderen System- und Anwendungsprozessen Systemprogramme werden nur bei Bedarf geladen Dämonen („daemons“) sind Hilfsprozesse, die ständig existieren, aber meist passiv sind. Benutzeroberflächen 5.14 Warten auf ein Ereignis oder schauen selbst zeitgesteuert nach, ob Arbeit da ist. Betriebssystem muss eine ansprechende Benutzerschnittstelle für die eigene Bedienung enthalten. Betriebssystem muss Funktionen bereitstellen, mit denen aus Anwendungsprogrammen heraus auf die Benutzerschnittstelle zugegriffen werden kann. Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.15 Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.16 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme User und Kernel Mode CPUs laufen in zwei Modi, kernel mode und user mode Benutzermodus (user mode) Einstiegspunkte in ein Betriebssystem Prozessor bearbeitet ein Anwendungsprogramm Befehlssatz und verfügbare Register sind beschränkt Mögliche Beschränkung des Zugriffs auf die Hardware (hardware protection) Direkter Zugriff auf andere in Ausführung befindliche Programme ist verboten niedrigere Priorität synchron (z.B. Division durch 0) Fehler wird an Applikation weitergeleitet Hardware Interrupt (Unterbrechung) Prozessor bearbeitet Betriebssystem Alle Befehle und Register sind verfügbar Direkter, uneingeschränkter Zugriff auf die Hardware Manipulation interner Daten laufender Programme möglich höhere Priorität synchron Parameterübergabe über z.B. Register oder Stack Hardware Traps Betriebssystemmodus (kernel mode) Systemaufrufe asynchron (z.B. Modem) Software Interrupt (Unterbrechung) asynchron Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.17 Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Formen von Betriebssystemen Architekturen von Betriebssystemen (1/2) Stapelverarbeitung (batch processing) Dialogverarbeitung (time sharing) Echtzeitverarbeitung (real-time processing) Verteilte Verarbeitung (distributed processing) Eingebettete Betriebssysteme Smart-Card Betriebssysteme ... Monolithische Systeme Sammlung von Prozeduren und Funktionen ohne (oder nur mit minimaler) Struktur („The big mess.“, A. Tanenbaum) Geschichtete Systeme (oder Hierarchische oder Schalen) mehrere Schichten wobei Schicht n+1 auf Schicht n aufbaut und neue Funktionalität bereitstellt Vereinfachte Fehlersuche und Qualitätssicherung Funktionszuweisung zu einer Schicht schwierig Strikte Einhaltung der Schichten und strenge Parameterprüfung erhöht den Overhead an den Schichtübergängen Virtuelle Maschinen Abstraktion betrifft nicht nur die Hardware, sondern kann auch höhere Funktionen betreffen. Emulation der Hardware zu so genannten virtuellen Maschinen (VM) Gleichzeitig verschiedene Betriebssysteme auf den VMs z.B. Java Virtual Machine, VMware, VirtualPC, User Mode Linux (UML) Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.18 5.19 Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.20 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Architekturen von Betriebssystemen (2/2) Allgemeine Schalenstruktur von UNIX und Linux Minimale Kerne (engl. microkernel) Kern mit minimalen Betriebssystemfunktionen (Kommunikationsprimitive und elementares multi-programming) um einen großen Hardware-nahen Kern zu vermeiden Minimale Kerne folgen dem Client-Server-Modell in verteilten Systemen Server können im Benutzermodus laufen und in einem Netzwerk verteilt werden (zentralisierte und verteilte Realisierung möglich) Vermehrte Kommunikation führt zu mehr Overhead Trennung von Mechanism und Strategien Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.21 Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Windows Architektur Standardisierung Einige relevante Standards AT&T: System V Interface Definition (SVID) 1985 OSF: OSF: Distributed Computing Environment (DCE) Motif 2.0 Graphical User Interface Toolkit 1995 1994 X/OPEN Portability Guide (XPG-1, ..., XPG-4) 1984 IEEE Portable Operating System Interface based on UNIX (POSIX) 1989 OpenGroup: Single UNIX Specification Version 2 OpenGroup: Common Desktop Environment (CDE) 1.0 1997 1996 ANSI/ISO: Programmiersprache C (X3.159, ISO/IEC 9899) ANSI/ISO: Programmiersprache C++ (X3J16) 1989 1998 Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.22 5.23 Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.24 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme POSIX Standards Ausblick Standardisierung von Betriebssystemfunktionen mit dem Ziel, die Portabilität von Programmen zu verbessern. POSIX-Standards werden durch eine Arbeitsgruppe des Institute of Electrical and Electronics Engineers (IEEE) ausgearbeitet und lehnen sich an UNIX an. POSIX Standards (Stand 1994) POSIX.0 POSIX.1 POSIX.2 POSIX.3 POSIX.4 POSIX.5 POSIX.6 POSIX.7 POSIX.8 POSIX.9 POSIX.10 Guide and overview Library functions Shell and utilities Test methods and conformance Real-time extensions Ada language binding to POSIX.1 Security extensions System administration Transparent file access Fortran 77 binding to POSIX.1 Supercomputing profile POSIX.11 POSIX.12 POSIX.13 POSIX.14 POSIX.15 POSIX.16 POSIX.17 POSIX.18 POSIX.19 POSIX.20 POSIX.21 Transaction processing Protocol independent communication Real-time profiles Multiprocessor profile Batch/supercomputer extensions Language-independent POSIX.1 Directory/name services Basic POSIX system profile Fortran-90 binding to POSIX.4 Ada binding to POSIX.4 Distributed real-time Kurzer Blick auf Konzepte zur Realisierung der Aufgaben eines Betriebssystems Einfluss auf Programmierung von Anwenderprogrammen Es werden Teilgebiete der folgenden grundlegenden Konzepte betrachtet Prozessverwaltung Speicherverwaltung Ein- und Ausgabe Dateisysteme Studenten des Studienganges „Angewandte Informatik“ wird der Besuch der Spezialvorlesung dringend empfohlen! Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.25 Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Prozessverwaltung Prozesse Prozesse und Threads Prozess-Scheduling Verklemmungen Interprozesskommunikation Ein Prozess ist der Ablauf eines sequentiellen Programms. Benötigt Betriebsmittel (CPU, Speicher, Dateien, etc.) und ist selbst ein Betriebsmittel. Wird vom Betriebssystem verwaltet (Erzeugung, Terminierung, Scheduling, etc.) Ein Prozessor führt in jeder Zeiteinheit maximal einen Prozess aus. Laufen mehrere Prozesse, dann finden Prozesswechsel statt. Das Betriebssystem entscheidet über die Prozesswechsel. Prozesse sind gegeneinander abgeschottet, d.h. jeder besitzt (virtuell) seine eigene Betriebsmittel, wie etwa den Adressraum. Das BS sorgt für die Abschottung. Wir gehen von voneinander unabhängigen Prozessen aus. Bei Kooperation ist eine explizite Synchronisation erforderlich. Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.26 5.27 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.28 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Eigenschaften von Prozessen Prozesszustände Program Code: Folge von Maschinenbefehlen (text section) Internal State: Aktueller Zustand durch Programmzähler und Registerinhalte Stack: Inhalt des Stapelspeichers, wo temporäre Variablen und Parameter für Funktionsaufrufe verwaltet werden Data Section: Inhalt des Speichers, in dem die globalen Daten gehalten werden External State: Beziehung zu anderen Betriebsmitteln Typische definierte Prozesszustände und Zustandsübergänge New Admit Assign Ready Running Terminate Exit Release Block Unblock Blocked Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.29 5. Grundlagen Betriebssysteme Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.30 5. Grundlagen Betriebssysteme Win-NT’s Sieben-Zustände Modell Unix Prozesszustandsmodell Lazy versus eager loading New Admit Ready Deblock Preselect Assign Standby Release Running Terminate Exit Block on event i Blocked Blocked Reinitialize Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.31 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.32 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Mögliche Attribute für einen Prozessleitblock (PCB) PCB Struktur Kontext Scheduling Familie Zeit Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.33 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Prozessbäume Leichtgewichtsprozesse (Threads) Alle existierenden Prozesse sind in einer Prozesstabelle gespeichert Prozesse können neue Prozesse erzeugen, wodurch eine Hierarchie (Baum) von Prozessen entsteht Cascading termination möglich, falls erzeugte Prozesse nicht ohne erzeugenden Prozess existieren dürfen/sollen Mutterprozess und Kinderprozesse teilen keine/einige/alle Ressourcen Threads sind parallele Kontrollflüsse, die nicht gegeneinander abgeschottet sind laufen innerhalb eines Adressraumes, innerhalb eines „echten“ Prozesses teilen sich gemeinsame Ressourcen Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.34 5.35 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.36 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Threads besitzen eigenen Stack Thread Beispiel Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.37 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Charakterisierung von Threads Vorteile/Nachteile von Threads Pro Prozess Kontextwechsel ist effizienter Adressraum Globale Variablen Offene Dateien Kinderprozesse Unerledigte Alarme Signal und Signalkontroller Informationen für Systemstatistiken Pro Thread Programmzähler Register Stack Zustand kein Wechsel des Adressraumes kein automatisches Scheduling (Kernelthread bei BS, Benutzerthread bei Anwendung) kein Retten und Restaurieren des kompletten Kontextes (nur Programmzähler und Register) Pro Zeiteinheit sind viel mehr Threadwechsel als Prozesswechsel möglich -> Leichtgewichtsprozesse Gleichzeitige Aktivitäten können besser modelliert werden, z.B. falls einige Aktivitäten von Zeit zu Zeit blockieren/warten Bessere Performance bei Erzeugung/Zerstörung und bei Mischung mit I/O intensiven Aufgaben (kein Vorteil bei reiner CPU-Nutzung) Nachteile Schutzfunktionen fallen weg (z.B. getrennte Adressräume) Synchronisation erforderlich Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.38 5.39 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.40 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Prozesswechsel Prozess-Scheduling (1/2) Mehrere Prozesse teilen sich einen Prozessor, weshalb Prozesswechsel notwendig sind Das Betriebssystem entscheidet über die Prozesswechsel Komponenten des Scheduling Prozesswechsel sind relativ teuer wegen Sicherung des Kontextes Warteschlangenmodelle Anforderungen Prozesswechselkosten Wartende Prozesse werden in internen Warteschlangen gehalten Auswahlstrategie der Warteschlangen haben wesentlichen Einfluss auf Systemverhalten Entscheidungspunkte Scheduling-Verfahren Fairness Effizienz Antwortzeit Verweilzeit Durchsatz Erzeugung eines neuen Prozesses Prozess terminiert oder blockiert I/O-Unterbrechungen (Interrupts) Zeitscheibe läuft ab Verfahren: nicht-präemptiv: laufender Prozess wird nicht von außen unterbrochen präemptiv: laufende Prozesse können von außen unterbrochen werden Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.41 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Prozess-Scheduling (2/2) Scheduling-Verfahren Deterministische und probabilistisches Scheduling Verfahren hängt von gewünschten Eigenschaften ab Fairness Effizienz (Nutzung der Ressourcen) Umsetzung der gewünschten Policy Interaktive Systeme Realzeit-Systeme Maximierung des Durchsatzes (Jobs/Zeit) Maximierung der einzelnen Laufzeiten Maximierung der CPU-Nutzung First-Come First Served (FCFS) Shortest Job First (SJF) Shortest Remaining Time Next (SRTN) Interaktiv: Batch-Systeme Batch: Alle Systeme 5.42 Round-Robin Priority Scheduling Shortest Process Next Echtzeit: Earliest Deadline First (EDF) Minimierung der Antwortzeit Einhalten von Deadlines, Vermeidung von Datenverlusten Vermeidung von Qualitätsverlusten in Multimedia-Systemen Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.43 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.44 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Prozessverwaltung Interprozesskommunikation (IPC) Prozesse und Threads Prozess-Scheduling Interprozesskommunikation Verklemmungen Prozesse arbeiten oft nicht allein, sondern müssen Informationen austauschen, um eine gemeinsame Aufgabe zu erfüllen. Beim diesem Austausch müssen drei wichtige Fragen beantwortet werden: Wie werden die Daten ausgetauscht? Über gemeinsame Variablen? Über Nachrichtenaustausch? Wie wird sicher gestellt, dass die Prozesse nicht gleichzeitig auf gemeinsame Information zugreifen? Wie wird die richtige Reihenfolge des Zugriffs sicher gestellt (ProducerConsumer-Problem)? Die beiden letzten Fragen beschreiben das Synchronisationsproblem. Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.45 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Kommunikationsformen Gemeinsame Variablen: vor allem in Ein-Prozessor und Multiprozessor-Systemen mit gemeinsamem physikalischen Speicher Erzeuger/Verbraucher-Problem Nachrichtenaustausch: vor allem bei verteilten Systemen, also Kommunikation über Rechnergrenzen hinweg Prozess Netz Prozess Zwei Prozesse besitzen einen gemeinsamen Puffer mit einer festen Länge (bounded buffer). Eine Prozess schreibt Informationen in den Puffer (producer), der andere liest Informationen aus dem Puffer (consumer). Der Erzeuger darf nicht in den vollen Puffer einfügen. Der Verbraucher darf nicht aus dem leeren Puffer lesen. Eine fehlerhafte Lösung: while (true) { produce(&item); while (count == N) sleep(1); buffer[in] := item; in := (in + 1) % N; count := count + 1; } Speicher Prozess Problemstellung: Rechner Rechner Prozess Rechner Erzeuger insert 5.47 Puffer while (true) { while (count == 0) sleep(1); item = buffer[out]; out := (out + 1) % N; count := count - 1; consume(item); } remove Verbraucher Prozessverwaltung Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.46 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.48 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Sychronisationsproblem Die Anweisungen count := count + 1 und count := count - 1 werden typischerweise zu den folgenden Maschinenbefehlen: P1: register1 := count P2: register1 := register1+1 P3: count := register1 Race Conditions C1: register2 := count C2: register2 := register2-1 C3: count := register2 Nehmen wir an, der Wert von count sei 5. Was liefert die Ausführung der Befehle in der Reihenfolge (a) P1, P2, C1, C2, P3, C3 und die Ausführung in der Reihenfolge (b) P1, P2, C1, C2, C3, P3? (a) liefert den falschen Wert 4, (b) liefert den falschen Wert 6. Diese Werte sind falsch, da ja ein Element eingefügt und eines entfernt wird, der Wert müsste also bei 5 bleiben. Die angegebene Lösung erzeugt falsche Ergebnisse, die von der Bearbeitungsreihenfolge der Prozesse abhängen. Jede Situation, in der mehrere Prozesse gemeinsame Daten manipulieren, kann zu derartigen Synchronisationsproblemen (race conditions) führen. Synchronisationsverfahren garantieren, dass immer nur ein Prozess zu einem bestimmten Zeitpunkt gemeinsam benutzte Daten manipulieren kann. Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.49 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Kritischer Abschnitt (1/2) Kritischer Abschnitt (2/2) Ein kritischer Abschnitt (critical section) eines Programms ist eine Menge von Instruktionen, in der das Ergebnis der Ausführung auf unvorhergesehene Weise variieren kann, wenn Variablen, die auch für andere parallel ablaufende Prozesse oder Threads zugreifbar sind, während der Ausführung verändert werden. Prinzipieller „Lebenszyklus“ eines Prozesses oder Threads: Das Problem besteht darin, ein „Protokoll“ zu entwerfen, an das sich alle Prozesse oder Threads halten und das die Semantik des kritischen Abschnitts realisiert. Anforderungen an eine Lösung: Eingangsabschnitt Prozess wartet auf Erlaubnis Kritischer Abschnitt Ausgangsabschnitt 5.50 Prozess gibt bekannt, dass er den kritischen Abschnitt verlassen hat Zwei Prozesse dürfen nicht gleichzeitig in ihrem kritischen Abschnitt sein (safety). Es dürfen keine Annahmen über die Bearbeitungsgeschwindigkeit von Prozessen gemacht werden. Kein Prozess, der außerhalb eines kritischen Bereichs ist, darf andere Prozesse beim Eintritt in den kritischen Abschnitt behindern. Kein Prozess darf ewig auf den Eintritt in den kritischen Abschnitt warten müssen (fairness). Möglichst passives statt aktives Warten, da aktives Warten einerseits Rechenzeit verschwendet und andererseits Blockierungen auftreten können, wenn auf Prozesse/Threads mit niedriger Priorität gewartet werden muss. Unkritischer Abschnitt Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.51 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.52 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Lösungen für die Synchronisation Es wurden eine Reihe von Lösungen für die Synchronisation von Prozessen entwickelt, von denen wir die wichtigsten besprechen: Semaphore Semaphore Mutexe Monitore Ein Semaphor ist eine geschützte Variable, auf die nur die unteilbaren (atomaren) Operationen up (signal, V) und down (wait, P) ausgeführt werden können: down(s) { s := s - 1; if (s < 0) queue_this_process_and_block(); } Dies sind Lösungen für die Synchronisation bei Nutzung gemeinsamer Variablen. Bei Nachrichtenkommunikation wird diese Form der Synchronisation nicht benötigt. up(s) { s := s + 1; if (s >= 0) wakeup_process_from_queue(); } Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.53 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Eigenschaften von Semaphoren & Mutexe Erzeuger/Verbraucher mit Semaphoren Semaphore Semaphore können zählen und damit z.B. die Nutzung gemeinsamer Betriebsmittel überwachen. Semaphore werden durch spezielle Systemaufrufe implementiert, die die geforderten atomaren Operationen up und down realisieren. Semaphore können in beliebigen Programmiersprachen benutzt werden, da sie letztlich einem Systemaufruf entsprechen. Semaphore realisieren ein passives Warten bis zum Eintritt in den kritischen Abschnitt. Mutexe Oft wird die Fähigkeit zu zählen bei Semaphoren nicht benötigt, d.h., es genügt eine einfache binäre Aussage, ob ein kritischer Abschnitt frei ist oder nicht. Dazu kann eine einfacher zu implementierende Variante, der sogenannte Mutex (von „mutual exclusion“), verwendet werden. Das Erzeuger/Verbraucher Problem lässt sich elegant mit drei Semaphoren lösen: 1. Ein Semaphor zum Betreten der kritischen Abschnitte (mutex). 2. Ein Semaphor, das die freien Plätze im Puffer herunter zählt und den Prozess blockiert, der in einen vollen Puffer schreiben will (empty). 3. Ein Semaphor, das die belegten Plätze im Puffer herauf zählt und den Prozeß blockiert, der von einem leeren Puffer lesen will (full). while (true) { produce(&item); down(&empty); down(&mutex); add(&item); up(&mutex); up(&full); } semaphore mutex = 1, empty = N, full = 0; Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.54 5.55 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 while (true) { down(&full); down(&mutex); remove(&item); up(&mutex); up(&empty); consume(item); } Prozessverwaltung 5.56 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Implementierung von Semaphoren Probleme bei Semaphoren Semaphore lassen sich als Systemaufrufe implementieren, wobei kurzzeitig sämtliche Unterbrechungen unterbunden werden. (Da zur Implementation nur wenige Maschinenbefehle benötigt werden, ist diese Möglichkeit akzeptabel.) Auf Mehrprozessor-Systemen muss ein Semaphor mit einer unteilbaren Prozessor-Operation implementiert werden, die das Semaphor vor gleichzeitigen Änderungen in anderen Prozessoren schützt. Beispiel: Test-And-Set-Lock (TSL): beim Ausführen der Operation wird der Memory-Bus für alle anderen Operationen gesperrt Programmierfehler bei der Benutzung eines Semaphors können zu Verklemmungen oder inkorrekten Ergebnissen führen. Typische Fehler: Sprünge aus kritischen Bereichen, ohne das mutex-Semaphor freizugeben. Sprünge in kritische Bereiche, ohne das mutex Semaphor zu setzen. Vertauschungen von Semaphoren zum Schutz von kritischen Abschnitten und Semaphoren, die vorhandene Betriebsmittel zählen. Alles in allem sind Semaphore eine „low-level“-Lösung, die erhebliche Disziplin vom Programmierer verlangt. Eine komfortablere Lösung bieten Monitore. Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.57 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Monitore Bedingungsvariable eines Monitors Ein Monitor ist eine Sammlung von Schematischer Aufbau eines Monitors: Prozeduren, Variablen und Datenstrukturen, die in einem Modul gekapselt sind. Prozesse können die Prozeduren des Monitors aufrufen, aber keine internen EingangsGemeinsame Daten ändern. warteschlange Daten Monitore besitzen die Eigenschaft, dass immer nur genau ein Prozess im Monitor aktiv sein kann. Monitore sind Konstrukte einer Programmiersprache und erfordern daher spezielle Compiler. Es ist die Aufgabe des Compilers, Operationen Maschinenbefehle zu generieren, die den wechselseitigen Ausschluss im Initialisierung Monitor garantieren. Bedingungsvariablen (condition variables) eines Monitors mit den zugehörigen Operationen wait() und signal() erlauben es, im Monitor auf andere Prozesse zu warten: ... wait(c): Der aufrufende Prozess blockiert, bis ein signal() auf der Bedingungsvariablen c ausgeführt wird. Ein anderer Prozess darf den Monitor betreten. signal(c): Ein auf die Bedingungsvariable c wartender Prozeß wird aufgeweckt. Der aktuelle Prozess muss den Monitor sofort verlassen. Der durch signal() aufgeweckte Prozess wird zum aktiven Prozess im Monitor, während der Prozess, der signal() ausgeführt hat, blockiert. Bedingungsvariablen sind keine Zähler. Ein signal(c) auf einer Variablen c ohne ein wait(c) geht einfach verloren. Prozessverwaltung Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.58 5.59 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.60 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Erzeuger/Verbraucher-Problem mit einem Monitor monitor ProducerConsumer condition full, empty integer count; procedure enter if count = N then wait(full); enter_item() count := count + 1; if count = 1 then signal(empty); end; procedure remove if count = 0 then wait(empty); remove_item(); count := count - 1; if count = N-1 then signal(full); end; count := 0; end monitor; Kritische Abschnitte mit Compilerunterstützung in Java procedure producer while (true) do begin produce_item; ProducerConsumer.enter; end end; procedure consumer while (true) do begin ProducerConsumer.remove; consume_item; end end; In Java können kritische Abschnitte als Anweisungsfolge geschrieben werden, denen das Schlüsselwort synchronized voran gestellt wird. Die kritischen Abschnitte schließen sich bzgl. des Sperrobjekts gegenseitig aus. 5.61 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Synchronisation in Windows Es stehen verschiedene Mechanismen zur Verfügung: Pipes, Named Pipes (Kommunikation auf einem Rechner) Mailslots (ähnlich Pipes, mit leicht anderen Eigenschaften) Sockets (Kommunikation zwischen Rechnern) Remote Procedure Calls Shared Files Verfügbare Mechanismen Semaphoren Mutexe Kritische Sektionen Ereignisse Synchronisation findet auf Thread-Ebene statt (andere Threads in einem Prozess sind nicht betroffen) Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.62 5. Grundlagen Betriebssysteme Beispiel: IPC in Windows public sychronized int remove() { int res = pool[out]; out = (out + 1) % size; count--; return res; } } 5. Grundlagen Betriebssysteme public synchronized void insert(int i) { pool[in] = i; in = (in + 1) % size; count++; } public synchronized int cardinal() { return count; } Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 class Buffer { private const int size = 8; private int count = 0, out = 0, in = 0; private int[] pool = new int[size]; 5.63 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.64 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Prozessverwaltung Verklemmungen/Deadlocks Prozesse und Threads Prozess-Scheduling Interprozesskommunikation Verklemmungen Prozesse benötigen Betriebsmittel, meist sogar mehrere Was passiert wenn sich zwei Prozesse jeweils ein Betriebsmittel reservieren, das der andere auch benötigt? Drucker Festplatte Speicher (z.B. in internen BS-Tabellen) Diese Situation wird als Deadlock bezeichnet Definition: Eine Menge von Prozessen befindet sich in einer Verklemmung (deadlock), wenn jeder Prozess der Menge auf ein Ereignis wartet, dass nur ein anderer Prozess aus der Menge auslösen kann. Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.65 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Deadlock – Illustration/Beispiel Ressourcen und deren Nutzung Zwei Typen von Ressourcen (a) Ein potenzieller deadlock. (b) Ein tatsächlicher deadlock. 1. Aufruf von x 2. Aufruf von p Thread 2 class A synchronized void x( ) {... } synchronized void y( ) {... } 4.Aufruf von g durch x blockiert preemptable: vorzeitige Rückgabe möglich (z.B. Speicher) non-preemptable: vorzeitige Rückgabe ist NICHT möglich (z.B. DVD, Drucker) Zuweisung, Nutzen Thread 1 5.66 von BS oder selbst verwaltet Beispiel für Selbstverwaltung: gemeinsame Variablen Bei der Selbstverwaltung sind Deadlocks am häufigsten 3. Aufruf von y durch p blockiert class B synchronized void p( ) { ...} synchronized void g( ) { ...} Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.67 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.68 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Notwendige Bedingungen für eine Verklemmung 1. Wechselseitiger Ausschluss (mutual exclusion): Ein Betriebsmittel ist entweder genau einem Prozess zugeordnet oder es ist verfügbar. 2. Betriebsmittel-Zuweisungsgraph Ein Betriebsmittel-Zuweisungsgraph ist ein gerichteter Graph, der zur Beschreibung von Verklemmungen verwendet wird: Wartebedingung (hold and wait): Es gibt einen Prozess, der ein Betriebsmittel belegt und auf ein anderes Betriebsmittel wartet, das von einem anderen Prozess belegt wird. 3. Keine Verdrängung (no preemption): Einem Prozess kann ein Betriebsmittel nicht entzogen werden. 4. Zirkuläres Warten (circular wait): Der Graph besteht aus einer Menge von Prozessen P={P1, P2,..., Pn}, einer Menge von Betriebsmitteln R={R1, R2,..., Rm} und gerichteten Kanten. Eine gerichtete Kante von einem Prozess Pi zu einem Betriebsmittel Rj beschreibt, dass der Prozess Pi ein Exemplar der Betriebsmittels Rj angefordert hat (request edge). Eine gerichtete Kante von einem Betriebsmittel Rj zu einem Prozess Pi beschreibt, dass ein Exemplar des Betriebsmittels Rj dem Prozess Pi zugewiesen ist (assignement edge). Ein Zyklus im Graph bedeutet das Vorhandensein einer Verklemmung. Es gibt eine Menge {P1, P2,..., Pn} von Prozessen, so dass P1 auf ein Betriebsmittel wartet das P2 belegt, P2 wartet auf ein Betriebsmittel das P3 belegt, ..., und Pn wartet auf ein Betriebsmittel das P1 belegt. Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.69 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Beispiel R1 Eigenschaften von Zuweisungsgraphen R3 P1 R2 5.70 P2 P3 R4 P1 hat R1angefordert; R1 ist jedoch schon P2 zugeordnet. P2 wartet auf R3, die aber schon P3 zugewiesen ist. P3 wartet auf R2. R2 ist zweimal vorhanden, aber beide Instanzen sind bereits P1 bzw. P2 zugewiesen. Î Verklemmung Enthält ein Betriebsmittel-Zuweisungsgraph keine Zyklen, dann existiert auch keine Verklemmung. Besitzt ein Betriebsmittel-Zuweisungsgraph einen Zyklus und existiert von jedem beteiligten Betriebsmittel nur genau ein Exemplar, dann existiert eine Verklemmung. Besitzt ein Betriebsmittel-Zuweisungsgraph einen Zyklus und von den beteiligten Betriebsmitteln existieren mehrere Exemplare, so ist eine Verklemmung möglich, aber nicht unbedingt auch eingetreten. R1 P1 P2 P3 P4 R2 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.71 Der Zyklus P1, R1, P3, R2, P1 beschreibt keine Verklemmung, da Prozess P4 beendet werden kann, womit ein Exemplar von R2 wieder verfügbar wird. Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.72 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Behandlung von Deadlocks Verhinderung von Verklemmungen (1/4) Dem Deadlock-Problem kann mit einer von vier Strategien begegnet werden: 1. 1. Ignorieren: meist keine gute Idee ... Wird eine der vier notwendigen Bedingungen für das Entstehen von Verklemmungen negiert, so können keine Verklemmungen mehr entstehen. Verhinderung von wechselseitigem Ausschluss: 2. Deadlock-Entdeckung und –Auflösung: lasse Deadlocks passieren und behandle sie dann 3. Deadlock-Vermeidung durch vorsichtige dynamische RessourcenAllokation 4. Strukturelle Deadlock-Verhinderung durch das Negieren einer der vier notwendigen Bedingungen Auf alle Betriebsmittel kann von mehreren Prozessen aus gleichzeitig zugegriffen werden. Beispiel: Drucker Anstatt einen Drucker Prozessen exklusiv zuzuordnen, werden Druckausgaben in Dateien abgelegt und in eine Warteschlange eingefügt. Ein spezieller Prozess (printer daemon) erhält exklusiven Zugriff auf den Drucker und arbeitet die Warteschlange ab. Dieser Prozess fordert selbst keine weiteren Betriebsmittel an. Problem: Nicht alle Betriebsmittel (z.B. Speicher, Einträge in der Prozesstabelle) können zwischen Prozessen geteilt werden. Im Beispiel kann der Plattenplatz zur Ablage von Druckausgaben selbst als Betriebsmittel betrachtet werden, das Auslöser für eine Verklemmung ist. Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.73 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Verhinderung von Verklemmungen (2/4) 2. Verhinderung von Verklemmungen (3/4) Verhinderung der Wartebedingung: 3. Jeder Prozess darf nur dann Betriebsmittel anfordern, wenn er selbst keine anderen Betriebsmittel belegt. Alternative 1: Jeder Prozess fordert sämtliche Betriebsmittel an, bevor seine Bearbeitung beginnt. Problem: Geringe Effizienz, da alle Betriebsmittel eines Prozesses während seiner Ausführung belegt sind. Die meisten Prozesse kennen ihre Betriebsmittelanforderungen nicht, bevor sie starten. Entzug von zugewiesenen Betriebsmitteln: 5.75 Beispielsweise können einem Prozess, der bereits auf ein Betriebsmittel wartet, seine bereits belegten Betriebsmittel entzogen werden, um Betriebsmittelanforderungen anderer Prozesse befriedigen zu können. Die entzogenen Betriebsmittel werden zu der Liste der Betriebsmittel hinzugefügt, auf die der Prozess wartet. Probleme: Ein Prozess muss alle Betriebsmittel abgeben, bevor er weitere anfordern kann. Problem: Es ist einem Prozess nicht immer möglich, alle Betriebsmittel freizugeben, bevor er weitere Betriebsmittel belegt (z.B. der Eintrag in der Prozesstabelle). Außerdem kann diese Methode dazu führen, dass die Bearbeitung eines Prozesses unendlich verzögert wird, da ein benötigtes Betriebsmittel immer von einem anderen Prozess belegt ist (starvatíon). Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Bereits belegte Betriebsmittel können einem Prozess entzogen werden. Beispiel: Alternative 2: 5.74 Normalerweise besitzen die zugewiesenen Betriebsmittel einen Zustand, der beim Entzug gesichert und später wieder restauriert werden muss. Nicht jedes Betriebsmittel (z.B. Drucker) erlaubt es, den Zustand zu sichern und später wieder zu restaurieren. Verwendung: Das Verfahren findet häufig Anwendung bei Betriebsmitteln, deren Zustand leicht gesichert werden kann, wie z.B. CPU-Registerinhalte oder Hauptspeicherbereiche. Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.76 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Verhinderung von Verklemmungen (4/4) 4. Vermeidung von Verklemmungen Verhinderung von zirkulärem Warten: Es wird eine totale Ordnung auf den vorhandenen Betriebsmitteln definiert. Ein neues Betriebsmittel darf nur dann angefordert werden, wenn das Betriebsmittel bezüglich der Ordnung größer ist als alle bereits belegten Betriebsmittel eines Prozesses. Mehrere Exemplare eines Betriebsmittels müssen in einer Anfrage angefordert werden. Probleme: Es ist schwierig, eine totale Ordnung für Betriebsmittel zu definieren, die allen Einsatzmöglichkeiten eines Betriebssystems gerecht wird. Benötigt ein Prozess ein Betriebsmittel mit geringerer Ordnung, so müssen zunächst sämtliche Betriebsmittel freigegeben werden. Ansatz: Sichere Zustände: Anhand von zusätzlichen Informationen werden nur die Betriebsmittelanforderungen gewährt, die nicht zu einer Verklemmung führen können. Im Vergleich zur Verhinderung werden Betriebsmittel effizienter genutzt und der Systemdurchsatz erhöht. Annahme: Die maximale Anforderung von Betriebsmitteln ist a-priori bekannt. Ein System ist in einem sicheren Zustand, wenn es jedem Prozess seine maximale Betriebsmittelanforderung gewähren kann, ohne dass das System in eine Verklemmung geraten kann. Unsichere Zustände: Es existiert die Möglichkeit einer Verklemmung. Prozessverwaltung Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.77 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Deadlock-Entdeckung und Beseitigung Es existiert nicht mehr als ein Exemplar von jedem Betriebsmittel: Aus dem Betriebsmittel-Zuweisungsgraphen wird ein Wartegraph (wait-for graph) konstruiert, wobei alle Knoten, die Betriebsmittel repräsentieren, entfernt werden. Eine Kante vom Prozess Pi zum Prozess Pj existiert im Wartegraph genau dann, wenn der Betriebsmittel-Zuweisungsgraph zwei Kanten Pi Rq und Rq Pj besitzt. Eine Verklemmung existiert genau dann, wenn ein Zyklus im Wartegraph existiert. Das Betriebssystem überprüft periodisch, ob eine Verklemmung vorliegt. Behebungsverfahren (recovery algorithm): Erkennung von Verklemmungen (1/2) Erkennungsverfahren (detection algorithm): Im Fall einer Verklemmung ergreift das Betriebssystem Maßnahmen, um die Verklemmung aufzulösen. Notwendige Randbedingungen: P5 Die notwendigen Informationen über belegte und angeforderte Betriebsmittel muss einfach zugänglich sein. Der Aufwand zur Entdeckung von Verklemmungen muss vertretbar sein. (Man beachte, dass während der Ausführung des Erkennungsverfahrens keine Betriebsmittel angefordert oder freigegeben werden dürfen.) Die Kosten zur Behebung von Verklemmungen müssen vertretbar sein. R1 R3 5.79 R4 P1 P2 P3 R2 P4 R5 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.78 P5 P1 P2 P3 P4 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.80 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Erkennung von Verklemmungen (2/2) Beseitigung von Verklemmungen Es existieren mehrere Exemplare von jedem Betriebsmittel: Zwangsweise Beendigung von Prozessen (process termination): Einfach zu implementieren und sehr effektiv. Auswahl der zu beendenden Prozesse schwierig. Zwangsweise Beendigung von Prozessen kann Inkonsistenzen erzeugen. Bereits verbrauchte Rechenzeit ist normalerweise verloren. Verklemmungen lassen sich erkennen, indem man versucht, eine Abarbeitungsfolge der Prozesse P1,..., Pn zu finden, so dass alle bekannten Betriebsmittelanforderungen erfüllt werden können. Dafür kann z.B. der Bankers-Algorithmus verwendet werden. Zwangsweiser Entzug von Betriebsmitteln (resource preemption): Betriebsmittel werden zwangsweise einem Prozess entzogen, um damit die Verklemmung aufzuheben. Auswahl des Prozesses, dem Betriebsmittel entzogen werden, ist schwierig. Nicht jedes Betriebsmittel (z.B. Prozesstabelleneintrag) kann entzogen werden. Rücksetzen von Prozessen (rollback of processes): In speziellen Fällen können Prozesse auf einen vorher gesicherten Zustand (checkpoint) zurückgesetzt werden. Insbesondere Datenbank-Prozesse verwalten häufig ein Logbuch über durchgeführte Transaktionen, so dass ein Prozess ohne Datenverlust gerade soweit zurückgesetzt werden kann, wie zur Behebung der Verklemmung notwendig. Prozessverwaltung Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.81 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Speicherverwaltung 5.82 Einführung Einführung Swapping Virtual Memory Seitenersetzungsstrategien Segmentierung Verschiedene Arten von Speichern, hierarchisch organisiert: Cache-Speicher Hauptspeicher Sekundärspeicher Archiv-Speicher Eigenschaften des Hauptspeichers: Der Hauptspeicher besteht aus einer Menge von Wörtern oder Bytes, die jeweils über eine eigene Adresse verfügen. Sowohl die CPU als auch E/A-Geräte greifen auf den Hauptspeicher zu. Ausführbare Programme befinden sich zumindest teilweise im Hauptspeicher. Die CPU kann normalerweise nur auf Daten im Hauptspeicher direkt zugreifen Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.83 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.84 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Speicher und dessen Verwaltung Grundlegende Speicherverwaltung Betriebssystemteil verantwortlich für Speichermanagement: Memory Manager Aufgaben Buchhaltung: welche Speicherbereiche werden benutzt, welche sind frei Speichervergabe und -rücknahme an/von Prozessen Datenverschiebung zwischen den Speicherhierarchien Speichermanagement: grundsätzlich zwei Klassen: Verschieben von Prozessen vom Hauptspeicher auf Festplatte und zurück (Swapping, Paging) Oder nicht (einfache Variante) Bei Verzicht auf Swapping und Paging: Monoprogramming: immer nur ein Prozess sowie das OS im Speicher Einsatzgebiet: frühe Batchsysteme, eingebettete Systeme Multiprogramming mit festen Partitionen Speicher wird in feste Blöcke eingeteilt, Programme bekommen einen Speicherbereich zugewiesen Einsatz im OS/360 von IBM Oft wurde die Größe der Partitionen einmal am Tag festgesetzt Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.85 Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Abbildungen von Speicheradressen Compiler symbolische Namen Präzisierung der Aufgaben Ein Compiler/Assembler übersetzt symbolische Adressen (Namen von Variablen und Funktionen) in absolute oder relative Speicheradressen. Quelltext 5.86 Objektmodul absolute/relative Adressen Ein Linker bindet mehrere Objektmodule mit relativen Adressen und die benötigten Bibliotheken zu einem ausführbaren Programm (executable). Objektmodule Linker relative Adressen Bereitstellung und Zuweisung des Speicherplatzes an die Prozesse (allocation). Einrichtung und Koordination von Speicherbereichen, die von mehreren Prozessen gemeinsam benutzt werden können (shared memory). Schutz der Informationen im Hauptspeicher vor fehlerhaften oder unbefugten Zugriffen. Abbildung von logischen Adressen auf physikalische Adressen (address translation). Executable statisch/dynamisch gebunden Prozessor logische Adresse 346 Bibliotheken statisch/dynamisch Speicheradresse 14000 MMU 14346 (memory management unit) Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Hauptspeicher relocation register 5.87 Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.88 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Moderne Speicherverwaltung Heutige Computer haben andere Anforderungen an die Verwaltung des Speichers Insbesondere Speicherverwaltung Laufen meist viele Prozesse Haben die Prozesse oft mehr Speicherbedarf als physikalischer Speicher vorhanden ist Einführung Swapping Virtual Memory Seitenersetzungsstrategien Segmentierung Zwei wichtige Lösungen: Swapping: Verschieben von Prozessen zwischen Hauptspeicher und Platte Virtual Memory: Prozesse sind nur zum Teil im Hauptspeicher Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.89 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Prinzip des Swapping 5.90 Speichersegmente und Fragmentierung Der komplette Adressraum eines Prozesses wird beim Prozesswechsel auf den Hintergrundspeicher ausgelagert und ein anderer Adressraum eingelagert. Ist im Betriebssystem ohne weitere Hardware-Unterstützung zu realisieren. Extrem aufwändige Prozesswechsel, da die Zugriffszeiten auf den Hintergrundspeicher im allgemeinen um Größenordnungen langsamer sind als Zugriffe auf den Hauptspeicher. Betriebssystem Wurde von MS Windows 3.* benutzt, um Prozesse auszulagern. Wird bei UNIX-Systemen benutzt, swap out P1 um bei einer Überbelegung des BenutzerP2 programmswap in Hauptspeichers einigen Prozessen bereich das Betriebsmittel Hauptspeicher Hintergrundspeicher zwangsweise zu entziehen. Der Hauptspeicher wird vom Betriebssystem in Segmente variabler Länge eingeteilt, die den Prozessen zugewiesen werden. Zur Verwaltung dienen Segmenttabellen. Segmente können verschiedene Zugriffsrechte besitzen, zwischen Prozessen geteilt werden, oder bei Bedarf wachsen. Durch das Entfernen und Einfügen von Segmenten entstehen langristig kleine unbenutzte Speicherbereiche (externe Fragmentierung). Beispiel: Hauptspeicher Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.91 Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.92 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Kompaktifizierung Speicherbuchhaltung Durch das Verschieben von Segmenten im Speicher können viele kleine Löcher zu einem großen Stück freien Speichers zusammengefügt werden (Kompaktifizierung, compaction). Kompaktifizierung setzt voraus, dass die Adressen dynamisch abgebildet werden. 0K 0K 0K 0K Die Suche BetriebsBetriebsBetriebsBetriebssystem system system system nach einer 300K 300K 300K 300K optimalen P1 P1 P1 P1 500K 500K 500K Kompaktifizie- 500K P2 P2 P2 P2 600K 600K 600K 600K rungsstrategie P3 800K 400K ist schwierig. P4 Kompaktif. 1000K 1000K 1000K P4 900K P3 P3 benötigt viel 1200K 1200K 1200K CPU-Zeit. 300K 1500K 1500K P4 900K 1900K 200K 2100K 2100K Ausgangssituation 600K verschoben 2100K 400K verschoben P4 900K 1900K 2100K Wie merkt sich der Memory Manager, welche Speicherbereiche frei bzw. belegt sind? Zwei Lösungen: Bitmaps oder verkettete Listen Beispiel: Jedes Bit identifiziert einen kleinen Speicherbereich, daher feste Größe. Listen vereinfachen die dynamische Verwaltung. Wichtige Frage: Wie finde ich das passende Segment, wenn ein neuer Prozess Speicher anfordert? P3 200K verschoben Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.93 Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Positionierungsstrategien 5.94 Speicherverwaltung best fit: Auswahl des kleinsten Loches, das das Segment aufnehmen kann. Diese Strategie lässt einerseits große Löcher lange bestehen, während sie andererseits eine Vielzahl kleiner und nutzloser Überreste erzeugt. worst fit: Auswahl des jeweils größten Loches. Dieses Verfahren tendiert dazu, alle Löcher auf etwa die gleiche Länge zu bringen, die dann aber eventuell zu klein zur Aufnahme eines bestimmten Segments sein kann. first fit: Auswahl des ersten hinreichend großen Loches. Dieses Verfahren liegt in seinem Verhalten zwischen den beiden anderen und ist sehr effizient. next fit: Dieses Verfahren ist eine Variation von first fit. Um zu verhindern, dass sich Löcher einer bestimmten Größe an einer Stelle des Speichers häufen, beginnt jede Suche am Ende der vorherigen Suche. Der Speicher wird also ringförmig durchsucht. buddy system: Die Löcher werden in k Listen so einsortiert, dass die i-te Liste jeweils Löcher der Länge größer gleich 2i für i=1,...,k enthält. Dabei können zwei benachbarte Löcher der i-ten Liste effizient zu einem Loch der i+1-ten Liste zusammengefügt werden. Umgekehrt kann ein Loch der i-ten Liste einfach in zwei Löcher der i-1-ten Liste aufgeteilt werden. Einführung Swapping Virtual Memory Seitenersetzungsstrategien Segmentierung Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.95 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.96 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Virtual Memory Idee (Fotheringham, 1961): ist ein Programm größer als der zur Verfügung stehende Hauptspeicher, dann halte immer nur die aktuell notwendigen Teile im Speicher; lade andere Teile bei Bedarf nach Wichtige Fragen: Paging Welche Teile sind notwendig? Welche Teile behalte ich tunlichst im Speicher? Æ Lade- und Ersetzungsstrategien Zweistufiges Adressensystem: virtuelle Adressen, die die Programme benutzen, werden von der Memory Management Unit in physikalische Adressen umgewandelt und dann erst an den Speicher gegeben Wichtigste Technik: Paging Der physikalische Speicher wird in Kacheln (frames) fester Größe eingeteilt. Der logische Adressraum wird in Seiten (pages) gleicher Größe eingeteilt. Logische Adressen werden in eine Seitennummer (page number) und eine seitenrelative Adresse (page offset) aufgeteilt. Eine Umsetzungstabelle (page table) bildet die Seiten auf die verfügbaren Kacheln ab. Die Seiten eines Adressraums können beliebig auf die verfügbaren Kacheln verteilt sein. Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.97 Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Page Tables 5.98 Eigenschaften des Paging In der Seitentabelle gibt der Index die Nummer der virtuellen Seite an; der Tabelleneintrag gibt dann die zugehörige physikalische Seite an. Beispiel: 16 mögliche virtuelle Seiten werden auf 8 vorhandene physikalische Kacheln abgebildet. Ein spezielles Bit gibt an, ob die virtuelle Seite vorhanden ist. Keine externe Fragmentierung. Allerdings wird die letzte Seite eines logischen Adressraums normalerweise nicht vollständig genutzt (interne Fragmentierung). Gemeinsamer Speicher lässt sich mit Hilfe von gemeinsamen Seiten realisieren. Speicherschutz wird durch Schutzbits realisiert. Weitere Bits geben an, ob eine Kachel gültig ist (valid) oder ob eine Kachel modifiziert wurde (modified). Es muss nicht der gesamte Adressraum eines Prozesses im Speicher sein, um ihn auszuführen. Zugriffe auf gerade nicht geladene Seiten lösen einen Seitenfehler (page fault) aus. Das Betriebssystem behandelt Seitenfehler, indem es die benötigte Seite in eine freie Kachel einlagert und den Befehl, der den Seitenfehler auslöste, neu startet. Realisierungsprobleme: Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.99 Die Adressabbildung muss sehr schnell sein. (In manchen Fällen sind mehrere Umsetzungen für einen Maschinenbefehl notwendig.) Die Umsetzungstabelle kann extrem groß werden. (32-Bit Adressen erfordern bei einer Seitengröße von 4096 Bytes eine Tabelle mit ca. 1 Million Einträgen.) Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.100 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Behandlung von Seitenfehlern Speicherverwaltung 1. Die Hardware erkennt den Seitenfehler und erzeugt eine Unterbrechung. 2. Das Betriebssystem sichert die Register des Prozesses. 3. Die Prozedur zur Behandlung von Seitenfehlern ermittelt die Adresse der fehlenden Seite. 4. Das Betriebssystem prüft, ob auf die Adresse überhaupt zugegriffen werden darf. 5. Das Betriebssystem wählt eine freie Kachel aus. Falls keine freie Kachel existiert, wird eine belegte Kachel ausgewählt. 6. Falls die ausgewählte Kachel belegt ist und modifiziert wurde, wird sie auf dem Hintergrundspeicher gesichert. Ein Prozesswechsel findet statt, sofern rechenbereite Prozesse existieren. 7. Sobald eine freie Kachel da ist, wird eine E/A-Operation gestartet, um die benötigte Kachel vom Hintergrundspeicher zu laden. Ein Prozesswechsel findet statt, sofern rechenbereite Prozesse existieren. 8. Sobald die Kachel geladen ist, wird die Umsetzungstabelle aktualisiert. 9. Der Befehlszähler wird auf den Befehl zurückgesetzt, der den Seitenfehler auslöste. 10. Der Prozess wird in den Zustand ready gesetzt und in die CPUWarteschlange eingereiht. Einführung Swapping Virtual Memory Seitenersetzungsstrategien Segmentierung Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.101 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Ladestrategien Ersetzungsstrategien Die Ladestrategie bestimmt, wann Seiten in den Hauptspeicher geladen werden: 5.102 Swapping: Übertragung eines ganzen Adressraums mit einem einzigen Zugriff auf den Hintergrundspeicher. Demand-Paging: Die benötigten Seiten werden genau dann in den Speicher geladen, wenn auf sie zugegriffen wird. Pre-Paging: Es werden Seiten geladen, auf die in der Zukunft ein Zugriff erwartet wird. Erfordert Kenntnisse über typische Zugriffsmuster. Page-Clustering: Gemeinsame Übertragung von mehreren zusammengehörigen Seiten. Ermöglicht die Nutzung großer Seiten auf Hardware, die nur geringe Seitengrößen unterstützt. Die Ersetzungsstrategie (replacement algorithm) bestimmt, welche der belegten Kacheln ausgelagert werden, damit wieder freie Kacheln zur Einlagerung von benötigten Seiten vorhanden sind. Lokale Strategien weisen jedem Prozess eine konstante Anzahl von Seiten zu. Seitenfehler wirken sich daher nur auf den verursachenden Prozess negativ aus. Bei globalen Strategien wird der gesamte Speicher dynamisch auf alle Prozesse verteilt, um eine effiziente Nutzung des Hauptspeichers zu erreichen. In der Praxis dominiert Demand-Paging, obwohl dies bei Transportkosten, die nicht monoton mit der Anzahl der transportierten Seiten wachsen, nicht unbedingt optimal ist. Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.103 Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.104 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Lokalitätsprinzip Lokalität bezeichnet das Verhalten eines Programms, innerhalb einer bestimmten Zeit seine Speicherzugriffe auf einen kleinen Teil seines Adressraums zu beschränken. Das Lokalitätsprinzip gilt für Seitenzugriffsverhalten mit folgenden Eigenschaften: Ersetzungsstrategien Zu jeder Zeit verteilt ein Programm seine Speicherzugriffe in nicht gleichförmiger Weise über seine Seiten. Die Korrelation zwischen den Zugriffsmustern für unmittelbare Vergangenheit und unmittelbare Zukunft ist im Mittel hoch, und die Korrelation zwischen sich nicht überlappenden Referenzstrings geht mit wachsendem Abstand zwischen ihnen gegen 0. Die Referenzdichten der einzelnen Seiten, d.h. die Wahrscheinlichkeit mit der eine Seite zum Zeitpunkt t zum Referenzstring gehört, ändern sich nur langsam, d.h. sie sind quasi stationär. Praktische Gründe für die Gültigkeit des Lokalitätsprinzips sind Schleifen und Modulbereiche von Programmen. Allerdings ist Lokalität bei manchen Programmen oder Algorithmen nicht unbedingt gegeben (z.B. Datenbanken oder einige Verfahren zur Manipulation sehr großer Matrizen). Beladys Optimalalgorithmus (BO) Es wird die Seite ersetzt, auf die in der Zukunft am längsten nicht zugegriffen wird (Realisierbarkeit??). Least Recently Used (LRU) Least Frequently Used (LFU) First In First Out (FIFO) Second Chance (SC) ; Es wird die Seite ersetzt, auf die am längsten nicht mehr zugegriffen wurde. Es wird die Seite ersetzt, auf die am wenigsten zugegriffen wurde. Es wird die Seite ersetzt, die bereits am längsten im Speicher steht. Es wird wie beim FIFO ersetzt. Allerdings werden Seiten übersprungen, auf die seit dem letzten Seitenfehler zugegriffen wurde, sofern es Seiten gibt, auf die nicht zugegriffen wurde. Zusätzlich wird oftmals betrachtet, ob die Seite modifiziert wurde oder nicht, da eine unmodifizierte Seite nicht auf dem Hintergrundspeicher gesichert werden muss. Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.105 Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Beladys Anomalie Speicherverwaltung Intuitiv erwartet man, dass sich Seitenfehler reduzieren, wenn man den verfügbaren Hauptspeicher vergrößert. Älteste Seite 1 2 3 4 1 2 5 5 5 3 4 4 1 2 3 4 1 2 2 2 5 3 3 1 2 3 4 1 1 1 2 5 5 Speichergröße m=3 (9 Seitenfehler) 1 2 3 4 1 2 3 1 2 1 4 3 2 1 4 3 2 1 5 4 3 2 ABER: folgendes Beispiel: Referenzstring w = 1 2 3 4 1 2 5 1 2 3 4 5 und FIFO Ersetzungsstrategie: Jüngste Seite 5.106 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 Einführung Swapping Virtual Memory Seitenersetzungsstrategien Segmentierung 5 4 3 2 Speichergröße m=4 (10 Seitenfehler) Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.107 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.108 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Segmentierung Segmentierung Bisher: eindimensionaler Adressraum, in dem alle Tabellen, Programmtext etc. in ein- und demselben Adressraum abgelegt werden. Problem: was passiert, wenn die Tabellen nach dem Anlegen und der fortschreitenden Übersetzung eines Programms zu groß werden und in einen anderen Bereich „hineinwachsen? Alle „Lösungen“ mit einem Adressraum erfordern Modifikationen am Compiler, die man vermeiden möchte. Andere Idee: stelle jedem Programm mehrere virtuelle Adressräume zur Verfügung, die es für die jeweiligen Daten verwenden kann Æ Segmentierung des virtuellen Adressraums Eine Adresse besteht dann aus Segment-Nummer und Adresse. Vorteile der Segmentierung Segmente können wachsen, Management durch das BS Linken wird wegen der jeweiligen Startadresse 0 stark vereinfacht Shared Libraries können leicht realisiert werden (Schutz!) Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.109 Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Vergleich Paging - Segmentierung Kombination von Segmentierung und Paging Segmentierung und Paging kann gleichzeitig eingesetzt werden, um die Vorteile beider Ansätze zu kombinieren. Zum Beispiel wird es sinnvoll sein, Segmente aufzuteilen, wenn sie nicht komplett in den Hauptspeicher passen. Moderne Prozessorfamilien unterstützen meist beide Modelle, um für beliebige Betriebssysteme offen zu sein. Ein Pentium besitzt insgesamt 16 K Segmente, wobei jedes bis zu 109 32-Bit-Worte speichern kann. Diese Segmentgröße ist relativ groß. Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.110 5.111 Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.112 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Shared Libraries Speicherverwaltung in Windows Windows besitzt ein sehr anspruchsvolles virtuelles Speichersystem. Jeder Benutzerprozess hat 4 GB virtuellen Speicher verfügbar (32Bit-Adressen). Seitengröße für Paging: 4 KB Shared files (shared libraries) können verwendet werden Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.113 Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Ein- und Ausgabe 5.114 I/O-Hardware – Grundlagen Grundlagen von Ein-/Ausgabe-Hardware und –Software I/O-Software-Schichten Wir betrachten I/O-Hardware wie Hard Disks, Bildschirme, Drucker etc. hier eigentlich als Blackbox, die wir irgendwie programmieren müssen. Trotzdem: kurzer Überblick über den Aufbau solcher Geräte Hauptthema: wie bekomme ich Daten von und zu den Geräten Device Controller Memory Mapped I/O Interrupts Ein- und Ausgabe Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.115 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.116 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Device Controller I/O–Geräte haben zwei Komponenten: Memory-Mapped I/O mechanisch elektronisch Die elektronische Komponente ist der Device Controller (Gerätesteuerung) Aufgaben Wie kommuniziert die CPU/das OS mit dem Device Controller? Konvertiere seriellen Bitstrom in Datenblöcke Führe Fehlerkorrektur durch wenn notwendig Mache die Daten dem Hauptspeicher verfügbar Jeder Controller hat einige Steuerungsregister, in die die CPU Befehle schreiben kann Zusätzlich haben viele Geräte einen Datenpuffer, der vom OS geschrieben/gelesen werden kann (Beispiel: Videospeicher für Bildschirmpixel) Ansätze: Spezieller Speicher, spezielle Instruktionen zum Zugriff (I/O-Ports) Memory-Mapped: ein Teil des Hauptspeichers wird für die Kommunikation mit dem Gerät reserviert Ein- und Ausgabe Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.117 Ein- und Ausgabe Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Direct Memory Access (DMA) Interrupts I/O kann mittels DMA deutlich beschleunigt werden, da die CPU weniger belastet ist Prinzip: vergib einen Auftrag an DMA-Controller, erledige bis zum Ende der Bearbeitung andere Dinge Ablauf eines DMA-Transfers: Interrupts werden von Geräten verwendet, um das Ende eines Vorgangs anzuzeigen. Ablauf: Die CPU wird unterbrochen und beginnt etwas Neues – abhängig vom auslösenden Gerät wird ein bestimmter Interrupt-Handler aufgerufen und ausgeführt. Später macht die CPU an der „alten“ Stelle weiter. Ein- und Ausgabe Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.118 5.119 Ein- und Ausgabe Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.120 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme I/O-Software – Grundlagen Schichten der I/O-Software I/O-Software soll vor allem die Komplexität der Hardware vor dem OS bzw. dem Anwendungsprogrammierer verbergen. Wichtige Prinzipien daher: Typische Organisation: 4 Schichten Jede Schicht führt eine wohldefinierte Funktion aus und besitzt genauso ein wohldefiniertes Interface Geräteunabhängigkeit: ein „write“ funktioniert auf Disk genauso wie auf das Netzwerk Einheitliche Namensverwendung (alle Geräte sind bspw. über Pfade im Dateisystem erreichbar) Fehlerbehandlung so nah wie möglich an der Quelle (Hardware) Ein- und Ausgabe Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.121 Ein- und Ausgabe Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Interrupt Handler Device Driver Interrupts sind kompliziert und sollten deshalb möglichst weit unten verborgen werden. Beste Variante: der Device Driver startet einen Auftrag und blockiert dann, bis er vom Interrupt Handler wieder „geweckt“ wird. Handling von Interrupts benötigt meist auch größere Beteiligung der CPU, vor allem wenn Virtual Memory eingesetzt wird (Modifikation von Seitentabellen) Aufgabe: Verbergen der Komplexität der Registerbelegungen des Controllers Jedes Gerät benötigt üblicherweise seinen eigenen Device Driver Driver sind praktisch immer Teil des Kernels API für die darüber liegende Schicht: read- und writeAnfragen Ein- und Ausgabe Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.122 5.123 Ein- und Ausgabe Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.124 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Geräteunabhängige I/O-Software Beispiel: einheitliche Schnittstellen Wichtige Aufgaben: Bereitstellen einheitlicher Schnittstellen für Gerätetreiber erleichtert den Einsatz neuer Geräte Puffern von verfügbaren Daten erhöht die Performance (kein Interrupt pro ankommendes Datum, sondern pro Block); Problem: zu langes Liegen von Daten im Puffer, zu viele Kopien zwischen Speicherbereichen (Kernel, User Space, Gerät) Æ schlechte Performance Geräteunabhängige Fehlerbehandlung Spezielle Behandlung dedizierter Geräte (CD-ROM) z.B. durch explizites „open“ Bereitstellung einer einheitlichen Blockgröße Muss für jedes neue Gerät wieder neu programmiert werden Ein- und Ausgabe Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.125 Ein- und Ausgabe Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5.126 5. Grundlagen Betriebssysteme Buffering als Performance-Fresser I/O-Software im User Space Im wesentlichen Bibliotheken, die mit den Anwendungsprogrammen gelinkt werden Beispiele: write, read, open, close printf() Zum Teil einfach nur Abbildung auf die entsprechenden Systemaufrufe, zum Teil aber auch Aufgaben wie Formatierung der Daten (printf) Häufiges Kopieren kostet Zeit! Ein- und Ausgabe Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.127 Ein- und Ausgabe Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.128 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Dateisysteme Einführung Einführung Verzeichnisse Unix-Dateisystem Dateien sind Behälter für dauerhaft gespeicherte Informationen (Daten und Programme). Im einfachsten Fall enthalten Dateien eine nicht weiter strukturierte Folge von Bytes. Applikationen interpretieren in der Regel den Inhalt von unstrukturierten Dateien als ein bestimmtes Dateiformat (oftmals über Namenskonventionen identifiziert): Textdateien (.txt), Quelltexte (.c, .h, .cc, .java, ...), Objektdateien (.o, .obj, ...) Dateisysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.129 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Einführung: Dateiformate Dateiattribute Unterschiedliche Dateiformen besitzen unterschiedliche Formate Beispiel: (a) Executable (b) Archiv Neben einem Namen und den Daten besitzt eine Datei zusätzlich Attribute. Attribute geben wichtige Informationen über die Datei: Länge Erstellungsdatum Besitzer Schutz ... Dateisysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.130 5.131 Dateisysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.132 5. Grundlagen Betriebssysteme 5. Grundlagen Betriebssysteme Operationen auf Dateien (POSIX) Verzeichnisse Grundlegende Dateioperationen: Hierarchische Strukturierung des externen Speichers Öffnen einer Datei: int open(const char *filename, int flags, mode_t mode) int creat(const char *path, mode_t mode) Schließen einer geöffneten Datei: int close(int fd) Beispiel: UNIX Dateibaum Lesen/Schreiben von Daten aus/in eine geöffnete Datei: Verzeichnisse erzeugen einen hierarchischen Namensraum. Daten befinden sich in den Dateien an den „Blättern“ der Hierarchie. Namen von Dateien und Verzeichnissen auf einer Hierarchiestufe eindeutig. Absolute Namen durch Aneinanderreihung der Verzeichnisnamen und des Dateinamen. ssize_t read(int fd, void *buffer, size_t len) ssize_t write(int fd, const void *buffer, size_t len) Positionieren in einer göffneten Datei: bin off_t lseek(int fd, off_t offset, int whence) etc dev home lib usr var Verkürzen einer geöffneten Datei: int ftruncate(int fd, off_t size) ls Dateideskriptoren (file descriptors) identifizieren innerhalb eines Benutzerprozesses eine geöffnete Datei. cp mv tty fd hda1 Dateisysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.133 5.134 iNodes in UNIX V7 Das System ist in Baumform angeordnet, mit einem rootVerzeichnis. Datei- und Verzeichnisnamen können jeden ASCII-Buchstaben enthalten außer „/“ und NUL. Ein Verzeichniseintrag enthält einen Eintrag für jede Datei in diesem Verzeichnis. Verwendet wird das iNode-Schema. Ein iNode enthält für jede Datei die Attribute sowie die Adressen der Datei auf der Platte. Für kleine Dateien reicht ein iNode. Wenn die Dateien größer werden, müssen Indirektionen auf weitere iNodes verwendet werden Single indirect block Double indirect block Triple indirect block Dateisysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 lib 5. Grundlagen Betriebssysteme Beispiel: das Unix V7 Dateisystem etc Dateisysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5. Grundlagen Betriebssysteme bin 5.135 Dateisysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.136 5. Grundlagen Betriebssysteme Ausblick Compilerbau (Kapitel 6) Betriebssysteme (Kapitel 5) Maschinenorientierte Programmierung (Kapitel 4) von-Neumann-Rechner (Kapitel 3) Speicher Zahlen und logische Schaltungen (Kapitel 2) Kommunikation (Kapitel 7) von-Neumann-Rechner Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 5.137 6. Sprachen, Compiler und Theorie Literatur (1/3) Bücher Michael L. Scott : „Programming Language Pragmatics”, MKP 2000, ISBN 1-55860-578-9 http://www.cs.rochester.edu/u/scott/pragmatics/ Uwe Schöning: „Theoretische Informatik kurzgefaßt“, 2001, ISBN 3827410991 Rechenberg & Pomberger: „Informatik-Handbuch“, Hanser Verlag, ISBN 3-446-21842-4 Drachenbuch Informatik II SS 2004 Teil 6: Sprachen, Compiler und Theorie 1 - Einführung und Übersicht Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman: „Compilers - Principles, Techniques and Tools“. Addison-Wesley 1988, ISBN 0-201-10088-6 Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman: „Compilerbau.“ Oldenbourg Verlag 1999, Teil 1: ISBN 3-486-25294-1, Teil 2: ISBN 3-48625266-6 Wikipedia: http://en.wikipedia.org/wiki/Compilers:_Principles,_Techniques_and_Tools Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6.1-2 6. Sprachen, Compiler und Theorie Literatur (2/3) Literatur (3/3) Skripte Bücher Klassiker der Automatentheorie von Hopcroft/Ullman/Motwani Hopcroft, Motwani, Ullman : „Introduction to Automata Theory, Languages, and Computation“, 2001, http://www-db.stanford.edu/~ullman/ialc.html Hopcroft, Motwani, Ullman: „Einführung in die Automatentheorie, Formale Sprachen und Komplexitätstheorie“, Pearson Studium 2002, ISBN 3827370205 Asteroth, Baier: „Theoretische Informatik: Eine Einführung in Berechenbarkeit, Komplexität und formale Sprachen mit 101 Beispielen“, Pearson Studium 2002, ISBN 3-8273-7033-7 (insbesondere für Nebenfächler geeignet, da kaum Mathematikkenntnisse vorausgesetzt werden.) Compilerbau-Skript von Prof. Dr. Goltz, Universität Braunschweig http://www.cs.tu-bs.de/ips/ss04/cb/skript_cp.ps.gz Informatik-Skripte von Prof. Dr. Waack, Universität Göttingen http://www.num.math.uni-goettingen.de/waack/lehrmaterial/ Folien Informatik II - SS2003 Folien dienen als Grundlage und wurden übersetzt und ev. teilweise ergänzt. Es wird aber auch komplett neue Teile geben!!! http://user.informatik.uni-goettingen.de/~info2/SS2003/ Übersetzerbau I – Prof. Dr. Goos, Universität Karlsruhe http://www.info.uni-karlsruhe.de/lehre/2003WS/uebau1/ WWW: Wikipedia http://en.wikipedia.org/wiki/Compilers:_Principles,_Techniques_and_To ols http://de.wikipedia.org/wiki/Compiler Erfahrungsberichte von Studentenseite sind erwünscht Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-3 Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-4 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Weitere Quellen Einführung Katalog von Konstruktionswerkzeugen für Compiler http://www.first.gmd.de/cogent/catalog/ Inhalte Grundlegende Konzepte von Programmiersprachen Organisation von Compilern für moderne Programmiersprachen Einführung in die Theorie von formalen Sprachen und Automaten ANTLR, ANother Tool for Language Recognition: http:/www.antlr.org Konferenzen und Journale ACM Transactions on Programming Languages and Systems ACM SIGPLAN Conference on Programming Language Design and Implementation ACM SIGPLAN Conference on Programming Language Principles Als Grundlage dient das Buch “Programming Language Pragmatics” von Michael L. Smith Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-5 6. Sprachen, Compiler und Theorie Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-6 6. Sprachen, Compiler und Theorie Abstraktionen... Sprachen als Abstraktion Die menschliche Sprache ist ein Werkzeug für die Abstraktion von Gedanken Eliminiere Details welche unnötig zum Lösen eines speziellen Problems sind „Wenn es mir warm ist, dann schalte ich den Ventilator ein.“ Komplexität wird versteckt Eine einfache Absicht wird mitgeteilt, wobei aber die kognitiven und neurologischen Bedingungen, durch welche die Absicht aufkam, höchst wahrscheinlich für jeden zu komplex sind um sie zu Verstehen Die Bedeutung dieser Aussage ist dem Verständnis des Individuums welches es äußert und den Individuen die es hören überlassen Baue oft auf anderen auf Erlaubt das Lösen von zunehmend komplexeren Problemen (teile und herrsche, divide and conquer) Komplexität moderner Software ist ohne Beispiel (Präzedenzfall) Programmiersprachen sind ein Werkzeug zum Abstrahieren von Berechnungen Abstraktion ist ein grundlegender Bestandteil zum Handhaben von diesen komplexen Problemen if (temperatur() > 30.0) { schalte_ventilator_ein(); } Abstraktion Abstraktum Digitale Logik Computerarchitektur Assemblersprache Betriebssystem Computerkommunikation Transistoren Digitale Logik Maschinensprache Allokation von Ressourcen (Zeit, Speicher, etc.) (Physikalische) Netzwerke, Protokolle Beinhaltet eine komplexe aber konkrete Sequenz von Aktionen: Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-7 lese Thermostat; konvertiere den Ablesewert zu einer IEEE Fliesskomazahl nach der Celsiusskala; Vergleiche den Wert mit 30.0; wenn größer dann sende ein Signal an eine PCI Karte, welche ein Signal an ein Relais sendet, welches den Ventilator einschaltet Die Bedeutung dieses Ausdrucks ist festgelegt durch die formale Semantik der Programmiersprache und der Implementierung der Funktionen temperatur() und schalte_ventilator_ein(). Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-8 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Wie abstrahieren Programmiersprachen Berechnungen? (1/4) Biete eine Notation für den Ausdruck von Algorithmen welche 2. Verberge unterliegende (systemnahe) Details der Zielarchitektur Befehlsnamen der Assemblersprache, Registernamen, Argumentordnung, etc. Abbildung von Sprachelementen auf die Assemblersprache Arithmetische Ausdrücke, Bedingungen, Konventionen für Prozeduraufrufe, etc. wie der Algorithmus in einer Maschinensprache implementiert wird, wie Hilfsalgorithmen, z.B. Hash-Tabellen, Listen, implementiert werden, es dem Programmierer erlaubt seine eigene Abstraktion (Unterprogramme, Module, Bibliotheken, Klassen, etc.) zu bauen um die Weiterführung des Konzepts „Komplexitätsmanagement durch Schichtenbildung“ zu ermöglichen. if (a < b + 10) { do_1(); } else { do_2(); } RC SPA MI P .L1: .L2: add cmp bge call ba call … %l1,10,%l2 %l0,%l2 .L1; nop do_1; nop .L2; nop do_2; nop L1: L2: addi bge call b call … $t2,$t1,10 $t0,$t2,L1 do_1 L2 do_2 S Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-9 6. Sprachen, Compiler und Theorie Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Wie abstrahieren Programmiersprachen Berechnungen? (4/4) Biete Grundbefehle (primitives), Unterprogramme und Laufzeitunterstützung für übliche (lästige) Programmierpflichten Biete Merkmale welche eine besondere Art von Algorithmus oder Softwareentwicklung unterstützen (encourage) oder durchsetzen (enforce) Lesen und schreiben von Dateien Handhabung von Zeichenfolgen (Vergleiche, Erkennung von Teilzeichenfolge, etc.) Dynamische Allokation von Speicher (new, malloc, etc.) Rückgewinnung von unbenutztem Speicher (garbage collection) Sortieren etc. Strukturiertes Programmieren Unterprogramme Verschachtelte (Nested ???) Variablenbereiche ( scopes??) Schleifen Beschränkte Formen des „goto“ Befehls (statement??) Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-10 6. Sprachen, Compiler und Theorie Wie abstrahieren Programmiersprachen Berechnungen? (3/4) 3. SPARC (meistens) unabhängig von der Maschine ist auf welcher der Algorithmus ausgeführt wird, Fähigkeiten (features) auf höchster Ebene bietet und die Aufmerksamkeit des Programmierers mehr auf den Algorithmus fokussiert und weniger auf MIPS 1. Wie abstrahieren Programmiersprachen Berechnungen? (2/4) 6.1-11 Objekt-Orientierte Programmierung Klassen Vererbung Polymorphismus Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-12 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Kategorien von Programmiersprachen Imperative Sprachen (1/2) Alle Sprachen fallen in eine der beiden folgenden Kategorien: Die von Neumann Sprachen Imperative Sprachen erfordern die schrittweise Beschreibung durch Programmierer wie ein Algorithmus seine Aufgabe erledigen soll. Analogie aus der realen Welt: „Ein Rezept ist eine Art von imperativem Programm, welches einem Koch sagt wie ein Gericht zuzubereiten ist.“ Deklarative Sprachen erlauben die Beschreibung durch Programmierer was ein Algorithmus erledigen soll ohne exakt zu beschreiben wie es getan werden soll. schließen Fortran, Pascal, Basic und C ein stellen eine Reflektion der von Neumann Computerarchitektur dar, auf welcher die Programme laufen Führen Befehle aus welche den Zustand des Programms (Variablen/Speicher) ändern Manchmal auch Berechnung durch Seiteneffekte genannt Analogie aus der realen Welt: „Das Pfandgesetz ist ein deklaratives Programm welches Einzelhändlern mitteilt das sie ein Recyclingprogramm für Einwegflaschen und Dosen des eigenen Sortiments aufstellen müssen, ohne exakt mitzuteilen wie dies zu erfolgen hat. Beispiel: Aufsummieren der ersten n Ganzzahlen in C for(sum=0,i=1;i<=n;i++) { sum += i; } Einführung Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-13 6. Sprachen, Compiler und Theorie Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie Imperative Sprachen (2/2) Deklarative Sprachen (1/2) Die objekt-orientierten Sprachen Die funktionalen Sprachen schließen Smalltalk, Eiffel, C++, Java und Sather ein Sind ähnlich der von Neumann Sprachen mit der Erweiterung von Objekten Objekte enthalten ihren eigenen internen Zustand (Klassenvariablen, member variables) und Funktionen welche auf diesem Zustand operieren (Methoden) Berechnung ist organisiert als Interaktion zwischen Objekten (ein Objekt ruft die Methoden eines anderen Objektes auf) Die meisten objekt-orientierten Sprachen bieten Konstrukte (facilities) basierend auf Objekten welche objekt-orientierte Programmierung fördern Kapselung (encapsulation), Vererbung (inheritance) und Polymorphismus (polymorphism) Wir werden uns darüber später genauer unterhalten schließen Lisp/Scheme, ML, Haskell (Gofer) ein Sind eine Reflektion von Church‘s Theorie der rekursiven Funktionen (lambda calculus) Berechnung werden ausgeführt als Rückgabewerte von Funktionen basierend auf der (möglicherweise rekursiven) evaluation von anderen Funktionen Mechanismus ist als Reduktion bekannt Keine Seiteneffekte Erlaubt gleichungsbasiertes Problemlösen (equational reasoning), einfachere formale Beweise von Programmkorrektheit, etc. Beispiel: Aufsummieren der ersten n Ganzzahlen in SML fun sum (n) = if n <= 1 then n else n + sum(n-1) Einführung Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-14 6.1-15 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-16 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Deklarative Sprachen (2/2) Eine historische Perspektive: Maschinensprachen Die logischen Sprachen schließen Prolog, SQL und Microsoft Excel/OpenOffice OpenCalc ein Sind eine Reflektion von der Theorie der Aussagenlogik (propositional logic) Berechnung ist ein Versuch einen Wert zu finden welcher eine Menge von logischen Beziehungen erfüllt Die ersten Maschinen wurden direkt in einer Maschinensprache oder Maschinencode programmiert Langweilig, aber Maschinenzeit war teurer als Programmiererzeit Der meist verwendete Mechanismus um diesen Wert zu finden ist bekannt als Resolution (resolution) und Vereinheitlichung (unification) Beispiel: Aufsummieren der ersten n Ganzzahlen in Prolog sum(1,1). sum(N,S) :- N1 is N-1, sum(N1,S1), S is S1+N. MIPS Maschinencode für ein Programm zum Berechnen des GGT von zwei Ganzzahlen Einführung Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-17 6. Sprachen, Compiler und Theorie Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-18 6. Sprachen, Compiler und Theorie Eine historische Perspektive: Assemblersprachen (1/2) Eine historische Perspektive: Assemblersprachen (2/2) Programme wurden immer Komplexer Beispiel: zu schwierig, zeitintensiv und teuer um Programme in Maschinencode zu schreiben Assemblersprachen wurden entwickelt Für den Menschen lesbar ☺ Ursprünglich wurde eine eins-zu-eins Beziehung zwischen Instruktionen der Maschinensprache und Instruktionen der Assemblersprache bereitgestellt Schließlich wurden „makro“ Einrichtungen hinzugefügt um Softwareentwicklung durch anbieten von primitiven Formen von CodeWiederverwendung weiter zu beschleunigen Der Assembler war das Programm welches ein Assemblerprogramm in Maschinencode übersetzte mit welchem die Maschine laufen konnte Assembler Einführung Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-19 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-20 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Eine historische Perspektive: höhere Sprachen (1/2) Eine historische Perspektive: höhere Sprachen (2/2) Programme wurden immer Komplexer Beispiel: es war zu schwierig, zeitintensiv und teuer um Programme in Assemblersprache zu schreiben es war zu schwierig von einer Maschine zu einer anderen zu wechseln, welche eine andere Assemblersprache hatte Es wurden höhere Programmiersprachen entwickelt Mitte der 1950er wurde Fortran entworfen und implementiert es erlaubte numerische Berechnungen in einer Form ähnlich von mathematischen Formeln auszudrücken Der Compiler war das Programm welches ein höheres Quellprogramm in ein Assemblerprogramm oder Maschinenprogramm übersetzte. Ursprünglich konnten gute Programmierer schnellere Assemblerprogramme schreiben als der Compiler Andere höhere Programmiersprachen folgen Fortran in den späten 50er und frühen 60er int gcd (int i, int j) { while (i != j) { if (i > j) i = i – j; else Compiler j = j – i; } printf(“%d\n”,i); } Lisp: erste funktionale Sprache, basierte auf der Theorie der rekursiven Funktionen Algol: erste block-strukturierte Sprache Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-21 6. Sprachen, Compiler und Theorie Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie Ausführung von Programmen höherer Sprachen Entwurf eines Compilers Kompilation Programm wird in Assemblersprache oder direkt in Maschinensprache übersetzt Kompilierte Programme können so erstellt werden, dass sie relativ schnell in der Ausführung sind Fortran, C, C++ Interpretation Programm wird von einem anderem Programm gelesen und Elemente der Quellsprache werden einzeln ausgeführt Ist langsamer als kompilierte Programme Interpreter sind (normalerweise) einfacher zu implementieren als Compiler, sind flexibler und können exzellent Fehlersuche (debugging) und Diagnose unterstützen Java, Pyhton, Perl, etc. Compiler sind gut untersuchte, aber auch sehr komplexe Programme Daher sollte man nicht davon ausgehen, dass Compiler immer fehlerfrei arbeiten!!! Die Komplexität wird durch die Aufteilung der Compilerarbeiten in unabhängige Abschnitte oder Phasen bewältigt Typischerweise analysiert eine Phase eine Repräsentation von einem Programm und übersetzt diese Repräsentation in eine andere, welche für die nächste Phase besser geeignet ist Das Design dieser Zwischenrepräsentationen eines Programms sind kritisch für die erfolgreiche Implementierung eines Compilers Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-22 6.1-23 Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-24 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Der Kompilationsprozess (-phasen) Lexikalische Analyse Scanner (lexikalische Analyse) Lese Programm und konvertiere Zeichenstrom in Marken (tokens). Parser (syntaktische Analyse) Lese Tokenstrom und generiere Parserbaum (parse tree). Semantische Analyse Traversiere Parserbaum, überprüfe nicht-syntaktische Regeln. Zwischencodegenerierung Traversiere Parserbaum noch mal, gebe Zwischencode aus. Optimierung Untersuche Zwischencode, versuche ihn zu verbessern. Zielcodegenerierung Übersetze Zwischencode in Assembler-/Maschinencode Optimierung Maschinenebene Untersuche Maschinencode, versuche ihn zu verbessern. Eine Programmdatei ist nur eine Sequenz von Zeichen Falsche Detailebene für eine Syntaxanalyse Die lexikalische Analyse gruppiert Zeichensequenzen in Tokens Tokens sind die kleinste „Bedeutungseinheit“ (units of meaning) im Kompilationsprozess und sind die Grundlage (foundation) fürs Parsen (Syntaxanalyse) Die Compilerkomponente zum Ausführen der lexikalischen Analyse ist der Scanner, welcher oftmals ausgehend von höheren Spezifikationen automatisch generiert wird Mehr über Scanner in der nächsten Vorlesung Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-25 6. Sprachen, Compiler und Theorie Syntaktische Analyse Ein GGT Programm in C Token int int int { i ) ( j = j j – } “%d\n” ) gcd i j while != { i ) i ; = i printf , ; Die lexikalische Analyse erzeugt einen Strom von Tokens Falsche Detailebene für die semantische Analyse und Codegenerierung Die Syntaxanalyse gruppiert eine Zeichenfolge von Tokens in Parserbäume, was durch die kontextfreie Grammatik gelenkt wird, die die Syntax der zu kompilierenden Sprache spezifiziert ( , ) ( j if > i – else j ; ( I } conditional -> if ( expr ) block else block Parserbäume repräsentieren die Phrasenstruktur eines Programmes und sind die Grundlage für die semantische Analyse und Codegenerierung Die Compilerkomponente zum Ausführen der syntaktischen Analyse ist der Parser, welcher oftmals ausgehend von höheren Spezifikationen automatisch generiert wird Mehr über kontextfreie Grammatiken und Parser später Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-26 6. Sprachen, Compiler und Theorie Beispiel für lexikalische Analyse int gcd (int i, int j) { while (i != j) { if (i > j) i = i – j; else j = j – i; } printf(“%d\n”,i); } Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-27 Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-28 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Beispiel Syntaxanalyse Semantische Analyse conditional Token if > i – else j ; ( j = j j – } i ) i ; = i ( expr id comp id i > j if block ) Bestimmt die Bedeutung eines Programms basierend auf der Repräsentation des Parserbaumes Setzt Regeln durch, welche nicht durch die Syntax der Programmiersprache verwaltet werden block else statement id = j statement id = expr i id op id i - j Konsistente Verwendung von Typen, z.B. expr int a; char s[10]; s = s + a; illegal! id op id j - i Jeder Bezeichner (identifier) muss vor der ersten Verwendung deklariert sein Unterprogrammaufrufe müssen die richtige Argumentanzahl und Argumenttyp haben etc. Bringt die Symboltabelle auf den aktuellen Stand, welche neben anderen Dingen den Typ von Variablen, deren Größe und den Gültigkeitsbereich in welchen die Variablen erklärt wurden notiert Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-29 6. Sprachen, Compiler und Theorie Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-30 6. Sprachen, Compiler und Theorie Zwischencodegenerierung Zielcodegenerierung Parserbäume sind die falsche Detailebene für die Optimierung und Zwischencodegenerierung Zwischencodegenerierung verwandelt den Parsebaum in eine Sequenz von Anweisungen (statements) der Zwischensprache welche die Semantik des Quellprogramms verkörpert Die Zwischensprache ist genauso Mächtig, aber einfacher, wie die höhere Sprache z.B. die Zwischensprache könnte nur einen Schleifentyp (goto) haben, wogegen die Quellsprache mehrere haben könnte (for, while, do, etc.) Das Endziel eines Compilerprozesses ist die Generierung eines Programms welches der Computer ausführen kann Dies ist die Aufgabe der Zielcodegenerierung Schritt 1: durchlaufe (traverse) die Symboltabelle, weise Variablen einen Platz im Speicher zu Schritt 2: durchlaufe (traverse) den Parsebaum oder Programm in der Zwischensprache um arithmetische Operationen, Vergleiche, Sprünge und Unterprogrammaufrufe auszugeben, sowie Lasten und Vorräte von Variablenreferenzen Eine einfache Zwischensprache macht es einfacher nachfolgende Compilerphasen zu implementieren Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-31 Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-32 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Optimierung Warum Programmiersprachen und Compiler studieren? Zwischencode und Zielcode ist typischerweise nicht so effizient wie er sein könnte Einschränkungen erlauben es dem Codegenerator sich auf die Codeerzeugung zu konzentrieren und nicht auf die Optimierung Ein Optimierer kann aufgerufen werden um die Qualität des Zwischencodes und/oder Zielcodes nach jeder dieser Phasen zu verbessern Die Compilerkomponente zur Verbesserung der Qualität des generierten Codes wird Optimierer (optimizer) genannt. Optimierer sind die kompliziertesten Teile eines Compilers Optimierungsalgorithmen sind oftmals sehr ausgefeilt, benötigen erheblich viel Speicher und Zeit für die Ausführung und erzeugen nur kleine Verbesserungen der Programmgröße und/oder Leistung der Laufzeit Zwei wichtige Optimierungen Registerzuteilung – entscheide welche Programmvariablen zu einem bestimmten Zeitpunkt der Programmausführung in Registern gehalten werden können Unbenutzten Code eliminieren – entferne Funktionen, Blöcke, etc., welche niemals vom Programm ausgeführt würden Nach Aussage von Michael Scott (siehe Literaturangabe) Verstehe schwer verständliche Spracheigenschaften Wähle zwischen alternativen Wegen um etwas auszudrücken Mache guten Gebrauch von Debuggern, Assemblern, Linkern und andere verwandte Werkzeuge Simuliere nützliche Eigenschaften (features) welche in einer Sprache fehlen Nach Aussage von Kevin Scott (vorheriger Dozent) Compiler sind große und komplexe Programme: studieren dieser Programme hilft dir „große Software“ besser zu verstehen Viele Programme enthalten „kleine Programmiersprachen“ Unix shells, Microsoft Office Anwendungen, etc. Es ist nützlich etwas über Sprachdesign und –implementierung zu wissen, so dass Sie kleine Sprachen in die eigene Software einbauen können Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-33 6. Sprachen, Compiler und Theorie Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-34 6. Sprachen, Compiler und Theorie Weitere Fragen zum Nachdenken Plan für nächste Vorlesungen Was macht eine Programmiersprache erfolgreicher als andere? Werden Programmiersprachen mit der Zeit besser? An welchen Eigenschaften (features) mangelt es deiner bevorzugten Sprache um Sie mächtiger, zuverlässiger, einfacher in der Verwendung zu machen? Die nächsten Vorlesungen (Kapitel 2 vom Buch) lexikalische Analyse syntaktische Analyse Automatentheorie und automatische Generierung von Scannern und Parsern Reguläre und kontextfreie Grammatiken Nachfolgende 5 Vorlesungen Namen, Geltungsbereiche und Binden (Kapitel 3) Kontrollfluss (Kapitel 6) Unterprogramme und Kontrolle über Abstraktion (Kapitel 8) Zusammenbauen eines lauffähigen Programms (Kapitel 9) Objekt-orientierte Programmierung (Kapitel 10) Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-35 Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.1-36 6. Sprachen, Compiler und Theorie Der Kompilationsprozess (-phasen) Informatik II SS 2004 Scanner (lexikalische Analyse) Lese Programm und konvertiere Zeichenstrom in Marken (tokens). Parser (syntaktische Analyse) Lese Tokenstrom und generiere Parserbaum (parse tree). Semantische Analyse Teil 6: Sprachen, Compiler und Theorie 2 – Lexikalische Analyse Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik Traversiere Parserbaum, überprüfe nicht-syntaktische Regeln. Zwischencodegenerierung Traversiere Parserbaum noch mal, gebe Zwischencode aus. Optimierung Untersuche Zwischencode, versuche ihn zu verbessern. Zielcodegenerierung Übersetze Zwischencode in Assembler-/Maschinencode Optimierung Maschinenebene Untersuche Maschinencode, versuche ihn zu verbessern. Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6.2-2 6. Sprachen, Compiler und Theorie Lexikalische Analyse Beispiel für lexikalische Analyse Ein GGT Programm in C Die lexikalische Analyse gruppiert Zeichensequenzen in Tokens (Marken) bzw. Symbole Tokens sind die kleinste „Bedeutungseinheit“ (units of meaning) im Kompilationsprozess und sind die Grundlage (foundation) fürs Parsen (Syntaxanalyse) Die Compilerkomponente zum Ausführen der lexikalischen Analyse ist der Scanner, welcher oftmals ausgehend von höheren Spezifikationen automatisch generiert wird int gcd (int i, int j) { while (i != j) { if (i > j) i = i – j; else j = j – i; } printf(“%d\n”,i); } Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-3 Token int int int { i ) ( j = j j – } “%d\n” ) gcd i j while != { i ) i ; = i printf , ; ( , ) ( j if > i – else j ; ( I } Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-4 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie 2 Fragen Wie beschreiben wir die lexikalische Struktur? (1/2) Wie beschreiben wir die lexikalische Struktur einer Programmiersprache? 1. Versuch: Liste aller Tokens if else long int short char ; , : ( ) { } … Mit anderen Worten, was sind die Tokens (Symbole) Wie implementieren wir den Scanner nachdem wir wissen was die Tokens sind? Aber was ist mit den Konstanten (Ganzzahlen, Fliesskommazahlen, Zeichenketten)? Es können nicht alle aufgelistet werden, es gibt ~8 Milliarden 32-bit integer und floating-point Konstanten und eine unendliche Anzahl von Zeichenfolgenkonstanten Das gleiche Problem gilt für Bezeichner (Variablen, Funktionen und benutzerdefinierte Typnamen) Lösung: Wir brauchen einen Weg um kurz und prägnant Klassen von Tokens zu beschreiben, welche eine große Anzahl von verschiedenen Werten abdecken können Lexikalische Analyse Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-5 6. Sprachen, Compiler und Theorie Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-6 6. Sprachen, Compiler und Theorie Wie beschreiben wir die lexikalische Struktur? (2/2) Abkürzungen von regulären Ausdrücken 2. Versuch: Reguläre Ausdrücke Zeichenfolgen Muster (patterns) welche zum Auffinden von passendem Text verwendet werden können Werden mit folgenden Ausdrücken rekursiv ausgedrückt r=‘c1c2c3...cn‘ ist äquivalent zu r=c1.c2.c3.....cn Zeichenbereiche Ein Zeichen Der leeren Zeichenfolge ε Der Verkettung zweier regulärer Ausdrücke r=[c1-cn] ist äquivalent zu r=c1|c2|c3|...|cn für die aufeinander folgende Reihe von n Zeichen beginnend mit c1 und endend mit cn z.B. r=[a-d] ist äquivalent zu r=a|b|c|d r1.r2 ist der Wert von r1 gefolgt vom Wert von r2 Der Alternative zweier regulärer Ausdrücke Kleenesche Hülle + r1|r2 ist der Wert von r1 oder der Wert von r2 r+ ist ein oder mehrere Vorkommen des Wertes von r Der Kleenesche Hülle * (ode einfach Hülle oder Stern) Formal definiert als r+ = r.r* r* ist kein oder mehrere Vorkommen des Wertes von r1 Runde Klammern können zum Gruppieren von regulären Ausdrücken verwendet werden, um Zweideutigkeiten bei Kombinationen auszuschließen Das Symbol . steht für jeden Charakter außer „newline“ z.B. bedeutet r1.r2|r3 nun (r1.r2)|r3 oder r1.(r2|r3)??? Lexikalische Analyse Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-7 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-8 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Lexikalische Analyse: Reguläre Ausdrücke bei der Arbeit Ein GGT Programm in C int gcd (int i, int j) { while (i != j) { if (i > j) i = i – j; else j = j – i; } printf(“%d\n”,i); } Reguläre Ausdrücke digit=[0-9] letter=[a-z]|[A-Z] punct=\|% INT=‘int’ WHILE=‘while’ IF=‘if’ ID=letter.(letter|digit)* LPAREN=( RPAREN=) COMMA=, SEMI=; LBRACE={ RBRACE=} EQ== MINUS=GT=> SC=“.(letter|digit|punct)*.” Ein genauerer Blick auf die lexikalische Analyse Wie behandelt der lexikalische Analysator Leerzeichen, Kommentare und Konflikte zwischen regulären Ausdrücken? Tokens INT INT INT LBRACE ID:i RPAREN LPAREN ID:j EQ ID:j ID:j MINUS RBRACE SC:“%d\n” RPAREN ID:gcd ID:i ID:j WHILE NEQ LBRACE ID:i RPAREN ID:i SEMI EQ ID:i ID:printf COMMA SEMI LPAREN COMMA RPAREN LPAREN ID:j IF GT ID:i MINUS ELSE ID:j SEMI LPAREN ID:i RBRACE Leerzeichen int gcd (int i, int j) { Kommentare einer Programmiersprache /* gcd */ int gcd (int i, int j) { Konflikte zwischen regulären Ausdrücken Gegeben: WHILE=‘while’ ID=letter.(letter|digit)* Beide reguläre Ausdrücke decken die Zeichenfolge „while“ ab. Welcher Ausdruck soll aber nun gewählt werden? Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-9 6. Sprachen, Compiler und Theorie Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie Handhabung von Leerzeichen Handhabung von Kommentaren (1/2) Leerzeichen können als Token durch folgende Regel erkannt werden Alternative 1: Präprozessoren Spezielles Programm welches eine Datei einliest, Kommentare entfernt, andere Operationen wie Makro-Expansion ausführt und eine Ausgabedatei schreibt, welche vom lexikalischen Analysator gelesen wird. Quellprogramme können auch Steueranweisungen enthalten, die nicht zur Sprache gehören, z.B. Makro-Anweisungen. Der lexikalische Analysator behandelt die Steueranweisungen und entfernt sie aus dem Tokenstrom. Präprozessor-Anweisungen in C und C++ WS=(\n|\r|\t|\s)* \n ist ein „escape“ Zeichen für „newline“ (neue Zeile) \r ist ein „escape“ Zeichen für „carriage return“ (Wagenrücklauf) \t ist ein „escape“ Zeichen für „tab“ (Tabulator) \s ist ein „escape“ Zeichen für „space“ (Leerzeichen) Das Leerzeichentoken WS ist normalerweise unwichtig für die Syntax einer Programmiersprache, weshalb es einfach vom Tokenstrom gelöscht werden kann z.B. #include und #define Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-10 6.2-11 Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-12 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Handhabung von Kommentaren (2/2) Handhabung von Konflikten Gegeben sind zwei reguläre Ausdrücke r1 und r2, welche eine Teileingabe p=‘c1..ck‘ finden. Welche soll nun ausgewählt werden? Alternative 2: Kommentartoken In Abhängigkeit von der Komplexität von Kommentaren ist eine Beschreibung via regulärer Ausdrücke vielleicht möglich Alternative 1: Längster Fund Zeilenkommentare (single line comments) können mit regulären Ausdrücken gefunden werden SLC=‘//’.*.$ $ ist ein spezielles Symbol, welches das Ende einer Zeile bedeutet Nehme solange Eingabezeichen hinzu bis weder r1 noch r2 passen. Entferne ein Zeichen und entweder r1 oder r2 muss passen. Die Teileingabe p ist der längste Fund und wenn nur einer von r1 oder r2 passt, dann wähle ihn. Beispiel: r1=‘while’ r2=letter.(letter|digit)* Eingabe int while48; … Wenn p=‘while’, beide, r1 und r2 passen Wenn p=‘while48;’ weder r1 noch r2 passen Wenn p=‘while48’ nur r2 passt, wähle r2 aus Findet Texte wie // Dies ist ein Kommentar Einige Kommentare sind zu kompliziert um durch reguläre Ausdrücke gefunden zu werden Willkürlich verschachtelte Kommentare /* level 1 /* level 2 */ back to level 1 */ Wird Normalerweise vom Präprozessor behandelt Alternative 2: Regelpriorität Wenn der längste Fund immer noch in einem Konflikt endet, dann wähle den erste regulären Ausdruck aus der lexikalischen Definition der Sprache Lexikalische Analyse Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-13 6. Sprachen, Compiler und Theorie Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie Weitere spezielle Probleme Implementierung eines lexikalischen Analysators Reservierte Schlüsselwörter Wie übertragen wir reguläre Ausdrücke in einen lexikalischen Analysator? Schlüsselwörter dürfen nicht in Bezeichnern (Namen) verwendet werden Konvertiere reguläre Ausdrücke zu einem deterministischen endlichen (finite) Automaten (DFA) Groß-/Kleinschreibung intern nur eine Repräsentation verwenden, weshalb eine Anpassung notwendig ist Textende Das Textende muss dem Syntaxanalysator mitgeteilt werden, weshalb ein eind-of-text Symbol (eot) eingefügt werden muss Vorgriff (lookahead) um mehrere Zeichen Warum??? DFAs sind einfacher zu simulieren als reguläre Ausdrücke Schreibe ein Programm zum Simulieren eines DFAs Der DFA erkennt die Tokens im Eingabetext und wird der lexikalische Analysator Wenn ein Token erkannt wurde, dann kann eine benutzerdefinierte Aktion ausgeführt werden z.B. überprüfe, ob der Wert einer Ganzzahlkonstante in eine 32-bit integer passt gelesene aber nicht verwendete Zeichen müssen für nächsten Test berücksichtigt werden Lexikalische Fehler Die Verletzung der Syntax (z.B. falscher Wertebereich) wird gemeldet und trotzdem an den Syntaxanalysator weitergegeben Die Konvertierung von regulären Ausdrücken zu DFAs und das Schreiben eines Programms zum Simulieren des DFA kann entweder von Hand vorgenommen werden oder von einem anderen Programm, welches lexikalischer Analysegenerator genannt wird. Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-14 6.2-15 Regular Expressions + Actions Lexical Analyzer Generator Lexical analyzer source code High-level language compiler Lexical analyzer Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-16 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Endliche Automaten Ein Beispiel eines endlichen Automaten Formal, ein endlicher Automat M ist ein Quintupel M=(Q,Σ,q,F,δ), wobei Q ist eine endliche Menge von Symbolen genannt Zustände (states) Σ ist eine endliche Menge von Eingabesymbolen genannt Alphabet q ist der Startzustand F ist eine endliche Menge von finalen oder akzeptierenden Zuständen. F ist eine, möglicherweise leere, Teilmenge von Q. δ ist eine Übergangsfunktion L(M), oder die Sprache von M, ist die Menge von endlichen Zeichenketten von Symbolen aus dem Alphabet Σ welche vom Automaten M akzeptiert werden Q={q1,q2,q3,q4,q5} Σ={a,b} q=q1 F={q4} δ= {((q1,a),q2),((q1,b),q3), ((q2,a),q4),((q2,b),q2), ((q3,a),q4),((q3,b),q5), ((q4,a),q5),((q4,b),q5), ((q5,a),q5),((q5,b),q5)} b a q2 a,b a q1 q4 b Eingabe: a,b q5 a q3 b abba a Nicht akzeptiert! Welche Sprache akzeptiert M? (ab*a)|ba Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-17 6. Sprachen, Compiler und Theorie Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-18 6. Sprachen, Compiler und Theorie Zwei Arten von endlichen Automaten: Deterministisch und Nichtdeterministisch Ein Beispiel eines nichtdeterministischen Automaten (NFA) Deterministische endliche Automaten Die Übergangsfunktion ist formal definiert als δ:Q x Σ -> Q Ein Eingabesymbol und ein Zustand ergeben den einzigen nächsten Zustand Nichtdeterministische endliche Automaten (NFA) Q={q1,q2,q3,q4,q5} Σ={a,b} q=q1 F={q4} δ= {((q1,a),{q2,q3}),((q1,b),{q3}), ((q2,a),{q4}),((q2,b),{q2}), ((q3,a),{q4}),((q3,b),{q5}), ((q4,a),{q5}),((q4,b),{q5}), ((q5,a),{q5}),((q5,b),{q5})} Die Übergangsfunktion ist formal definiert als δ:Q x Σ -> φQ (Potenzmenge von Q) Ein Eingabesymbol und ein Zustand ergeben eine Menge von möglichen nächsten Zuständen. Die Menge kann auch leer sein. Abgesehen von den Übergangsfunktionen sind DFAs und NFAs gleich b a q2 q1 a,b Eingabe: a,b a q4 q3 a,b q5 a b abba a Nicht akzeptiert! Welche Sprache akzeptiert M? (ab*a)|ba Gleiche wie zuvor beim DFA… Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-19 Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-20 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Eine interessante Sache über endliche Automaten Eine Nebenbemerkung zu endlichen Automaten Auch wenn es so aussieht als ob Nichtdeterminismus einem endlichen Automaten mehr Ausdruckskraft verleiht, sind NFAs und DFAs formal äquivalent Jeder NFA kann in einen DFA umgewandelt werden und ungekehrt Warum machen wir dann aber die Unterscheidung? Es ist einfacher reguläre Ausdrücke in NFAs umzuwandeln Es ist einfacher DFAs zu simulieren MESI cache coherence protocol Endliche Automaten sind auch für andere Dinge als lexikalische Analyse nützlich (Courtesy: John Morris, University of Western Australia) Die meisten Systeme, welche Transaktionen zwischen einer endlichen Anzahl von Zuständen vornehmen, können mit endlichen Automaten modelliert werden Beispiele Beschreibung, Simulation, Überprüfung und Implementierung von Protokollen Bauen von schnellen, zustandsbasierten Schaltungen (siehe Kapitel 2) Vending machine automata 25¢ 25 ¢ 0¢ 25 ¢ 50 ¢ 75¢ 25 ¢ 50 ¢ 50¢ 50 ¢ Lexikalische Analyse 6.2-21 6. Sprachen, Compiler und Theorie Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Beispiel: Reguläre Ausdrücke nach NFA Regulärer Ausdruck c є Alternative: r1|r2 Verkettung: r1.r2 r1 є r2 r1 є є r1: r1=a.b r2=c.d r3=r1|r2 r=r3* є Leere Zeichenkette: є a r=(‘ab’|’cd’)* Faktor: NFA Charakter: c є c r2: r d є є r3: є r2 є є є b r4: є є Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-22 6. Sprachen, Compiler und Theorie Bau des lexikalischen Analysators: Reguläre Ausdrücke nach NFA Kleenesche Hülle: r* vend 25 ¢ 50 ¢ Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 25 ¢ 6.2-23 є є a є b c є d a є b c є d a є b c є d є є є є є Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-24 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Theoretische Ergebnisse 1 Bau des lexikalischen Analysators: NFA nach DFA Definitionen Endliche Automaten akzeptieren oder erkennen Sprachen Reguläre Ausdrücke erzeugen Sprachen L(M) ist die akzeptierte Sprache vom endlichen Automaten M L(R) ist die erzeugte Sprache vom regulären Ausdruck R L(R) and L(M) sind Mengen von endlichen Zeichenketten von Symbolen der Alphabete ΣR und ΣM LR ist die Menge { L(r):alle reguläre Ausdrücke r } LN ist die Menge { L(n):alle nichtdeterministische endliche Automaten n } Regulärer Ausdruck LR ist eine Untermenge von LN Nichtdeterministische endliche Automaten akzeptieren alle von regulären Ausdrücken erzeugten Sprachen Warum? Wir haben gezeigt wie beliebige reguläre Ausdrücke zu einem NFA konvertiert werden können Beschreiben LR und LN die gleichen Mengen? Es stellt sich heraus, dass die Antwort ja ist Beweis durch zeigen das LN eine Untermenge von LR ist oder das jeder nichtdeterministische endliche Automat in einen regulären Ausdruck umgewandelt werden kann Siehe jedes gute theoretische Informatik Buch für Details: Introduction to Automata Theory, Languages, and Computation by Hopcroft and Ullman Introduction to the Theory of Computation by Michael Sipser Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 NFA r=(‘ab’|’cd’)* Konvertiere NFA nach DFA є unter Verwendung der є q3 Konstruktion von є q1 q2 Untermengen є q7 Beschrifte jeden DFA Zustand als die vom vorherigen Zustand in einem Schritt erreichbare DFA Menge von Zuständen a Wenn irgendein NFA {q1,q2,q3, Zustand in der Menge der erreichbaren Zustände ein q7,q12} Endzustand ist, dann ist der c ganze DFA Zustand ein Endzustand 6.2-25 6. Sprachen, Compiler und Theorie a c q4 q8 є є q5 q9 b d q6 q10 є q11 є q12 є a {q4,q5} {q8,q9} b {q2,q3,q6, q7,q11,q12} c a {q2,q3,q7, d q10,q11,q12} c Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-26 6. Sprachen, Compiler und Theorie Theoretische Ergebnisse 2 Einige Bemerkungen zu DFAs Definitionen Erinnerung, LN ist die Menge { L(n):alle nichtdeterministische endliche Automaten n } LD ist die Menge { L(d): alle deterministischen endlichen Automaten d } LN ist eine Untermenge von LD und LR ist eine Untermenge von LD Deterministische endliche Automaten akzeptieren alle Sprachen die auch von nichtdeterministischen endlichen Automaten akzeptiert werden Neben Transitivität, akzeptieren DFAs auch alle durch reguläre Ausdrücke generierte Sprachen Warum? Wir haben gezeigt wie jeder NFA zu einem DFA und jeder reguläre Ausdruck zu einem NFA konvertiert werden kann Ein DFA M gebaut unter Verwendung der Konstruktion von Untermengen kann nicht minimal sein Mit anderen Worten, es könnte einen Automaten M‘ geben wobei L(M)=L(M‘) und M‘ hat weniger Zustände als M Minimale DFAs sind besser geeignet für Implementierungszwecke Weniger Zustände benötigen weniger Speicher und führen generell zu schnelleren Simulationen Die meisten automatischen Werkzeuge zum Konvertieren von NFAs nach DFAs führen einen Optimierungsprozess aus um die Anzahl der DFA Zustände zu reduzieren Beschreiben LN und LD die gleichen Mengen? Es stellt sich heraus, dass die Antwort ja ist Beweis durch zeigen das LD eine Untermenge von LN ist oder das jeder DFA in einen NFA umgewandelt werden kann Noch mal, siehe jedes gute theoretische Informatik Buch für Details Das Finden eines minimalen DFAs ist ein sehr hartes Problem (auch NP-vollständig bezeichnet), weshalb Optimierer keinen minimalen DFA garantieren können Praktisch gesehen ist das Ok, obwohl weniger Zustände immer besser ist ☺ Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-27 Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-28 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Bau des lexikalischen Analysators: DFA zu Code Bau des lexikalischen Analysators: Letzter Schritt a DFAs können effizient Simuliert werden indem ein tabellenbasierter Algorithmus verwendet wird void dfa (char *in) { s = in; state = start_state; while(1) { c = *s++; state = table[state][c]; if (final[state)]) { printf(“Accepted %s\n”,in); break; } } } b q2 a q3 c q1 a c d q4 q5 c Tabelle a b c d q1 q2 q6 q4 q6 q2 q6 q3 q6 q6 q3 q2 q6 q4 q6 q4 q6 q6 q6 q5 q5 q2 q6 q4 q6 q6 q6 q6 q6 q6 DFA Simulatorcode wird der Kern des lexikalischen Analysators Wenn der DFA in einem Endzustand ist Führe mit dem letzten, passenden regulären Ausdruck, entsprechend dem längsten Fund und/oder der Regelpriorität, die verbundene, benutzerdefinierte Aktion aus Merke aktuelle Stelle im Eingabestrom und gebe Token an Tokenkonsument (parser) weiter Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-29 6. Sprachen, Compiler und Theorie import java.io.IOException; %% %public %class Scanner %type void %eofval{ return; %eofval} %{ public static void main (String args []) { Scanner scanner = new Scanner(System.in); try { scanner.yylex(); } catch (IOException e) { System.err.println(e); } } %} comment space digit integer real IF THEN ELSE = = = = = = = = ("#".*) [\ \t\b\015]+ [0-9] {digit}+ ({digit}+"."{digit}*|{digit}*"."{digit}+) ("if") "then" else %% {space} break; } {comment} break; } {integer} break; { System.out.println("space"); { System.out.println("comment"); { System.out.println("Integer CONSTANT\t" + yytext()); 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 Die nächsten Vorlesungen (Kapitel 2 vom Buch) break; } {real} { System.out.println("REAL CONSTANT\t" + yytext()); { System.out.println("IF Token\t" + yytext()); { System.out.println("THEN Token\t" + yytext()); { System.out.println("ELSE Token\t" + yytext()); break; } {IF} break; } {THEN} break; } {ELSE} break; } \n { System.out.println("NL"); } { System.out.println("ADD"); break; } "-" { System.out.println("SUB"); break; } "*" { System.out.println("MUL"); break; } "/" { System.out.println("DIV"); break; } "%" syntaktische Analyse Automatentheorie und automatische Generierung Parsern Reguläre und kontextfreie Grammatiken Nachfolgende 5 Vorlesungen Namen, Geltungsbereiche und Binden (Kapitel 3) Kontrollfluss (Kapitel 6) Unterprogramme und Kontrolle über Abstraktion (Kapitel 8) Zusammenbauen eines lauffähigen Programms (Kapitel 9) Objekt-orientierte Programmierung (Kapitel 10) break; "+" Plan für nächste Vorlesungen { System.out.println("MOD"); break; } "(" { System.out.println("LPAR"); break; } ")" { System.out.println("RPAR"); break; } . { System.out.println("error" + "+" + yytext() + "+"); break; } Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-30 6. Sprachen, Compiler und Theorie Eine reale JLex lexikalische Spezifikation für einen Kalkulatorsprache 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-31 Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-32 6. Sprachen, Compiler und Theorie Pumping Lemma für reguläre Sprachen (1/2) Informatik II SS 2004 Das Pumping Lemma ist eine Methode, um heraus zu finden, ob eine Sprache nicht regulär. Teil 6: Sprachen, Compiler und Theorie 2a – Lexikalische Analyse Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Pumping Lemma für reguläre Sprachen (2) Beweis Satz: Sei L eine reguläre Sprache. Dann gibt es eine Zahl (Konstante) n, derart dass alle Wörter (Zeichenreihen) w in L mit |w | ≥ n gilt, dass wir in w drei Wörter w = xyz zerlegen können, für die gilt: 6.2-34 Jede Zeichenreihe, deren Länge nicht kleiner ist als die Anzahl der Zustände, muss bewirken, dass ein Zustand zweimal durchlaufen wird (Schubfachschluss). |y | ≥ 1 (oder y ≠ ε) |xy | ≤ n, Für alle k ≥ 0 gilt, dass die Zeichenreihe xy kz auch in L enthalten ist. Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-35 Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-36 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Beispiele Rückblick Sind diese Sprachen (nicht) regulär? w = anbn w= ab|c Die Anwendung des Pumping Lemmas ist ein kreativer Vorgang, da es kein „mechanisches“ Vorgehen für den Einsatz gibt. Reguläre Sprachen, reguläre Ausdrücke, (deterministische und nichtdeterministische) endliche Automaten Wichtige Algorithmen vergleiche Ableitungsregeln aus der Mathematik (Analysís) Konvertierung von regulären Ausdrücken zu nichtdeterministischen endlichen Automaten (NFA) (inklusive Beweise) Konvertierung von nichtdeterministischen endlichen Automaten zu deterministischen endlichen Automaten (DFA) Tabellenbasierte Simulation von DFAs Lexikalische Analyse und Scanner Verwenden reguläre Ausdrücke zur Definition der lexikalischen Struktur (Symbole/Token) einer Sprache Verwenden die Theorie der regulären Sprachen zur Erzeugung eines Scanners ausgehend von der Beschreibung der lexikalischen Struktur einer Programmiersprache anhand von regulären Ausdrücken Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-37 Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Reguläre Ausdrücke (1/3) Reguläre Ausdrücke (2/3) Werden mit folgenden Ausdrücken rekursiv ausgedrückt: Ein Zeichen c aus dem Alphabet Σ, oder der leeren Zeichenfolge ε, oder der Verkettung zweier regulärer Ausdrücke, r1 . r2, oder der Alternative zweier regulärer Ausdrücke, r1 | r2, oder der Kleenesche Hülle * (ode einfach Hülle oder Stern), r1*. Zeichenfolgen r=‘c1c2c3...cn‘ = c1.c2.c3.....cn Zeichenbereiche Ein regulärer Ausdruck ist gedacht um Zeichenketten aus Zeichen aus einem Alphabet Σ zu erzeugen Die Menge aller durch einen regulären Ausdruck R erzeugte Zeichenketten wird die Sprache von R genannt und wird symbolisiert durch L(R) r=[c1-cn] = c1|c2|c3|...|cn Kleenesche Hülle + r+ = r.r* Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-38 6.2-39 Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-40 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Reguläre Ausdrücke (3/3) Endliche Automaten (1/5) Reguläre Ausdrücke Erzeugt… ‘if’|’then’|’else’ Die Zeichenketten if, then, or else. a.(a|b|c)*.a Formal, ein endlicher Automat M ist ein Quintupel M=(Q,Σ,q0,F,δ), wobei Alle Zeichenketten mit a’s, b’s und c’s, welche mit einem a beginnen und enden. a.(a|b|c)*.(b|c).a Alle Zeichenketten mit a’s, b’s, und c’s, welche mit einem a beginnen und einem einzelnen a enden. (a|b|c)*.a.b.a.(a|b|c)* Alle Zeichenketten mit a’s, b’s und c’s, welche die Teilzeichenkette aba enthalten. (b|c)*.a.(b|c)*.a.(b|c)*.a.(b|c)* Alle Zeichenketten mit a’s, b’s und c’s, welche exakt drei a’s beinhalten. Q ist eine endliche Menge von Symbolen genannt Zustände (states) Σ ist eine endliche Menge von Eingabesymbolen genannt Alphabet q0 ist der Startzustand F ist eine endliche Menge von finalen oder akzeptierenden Zuständen. F ist eine, möglicherweise leere, Teilmenge von Q. δ ist eine Übergangsfunktion Ein endlicher Automat ist geeignet um Zeichenketten aus Zeichen aus dem Alphabet Σ zu akzeptieren L(M), oder die Sprache von M, ist die Menge von endlichen Zeichenketten von Symbolen aus dem Alphabet Σ welche vom Automaten M akzeptiert werden Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-41 Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Endliche Automaten (2/5) Endliche Automaten (3/5) Deterministische endliche Automaten (DEA/DFA) Übergänge sind deterministisch 6.2-42 Übergang von einzelnem Zustand zu einzelnem Zustand δD:Q x Σ -> Q Übergangsfunktionen können als eine Tabelle oder Zustandsübergangsdiagramm geschrieben werden Tabelle Beispiel DFA Q={q1,q2,q3,q4,q5} Σ={a,b} q0=q1 F={q4} δ= q1 q2 q3 q4 q5 {((q1,a),q2),((q1,b),q3), ((q2,a),q4),((q2,b),q2), ((q3,a),q4),((q3,b),q5), ((q4,a),q5),((q4,b),q5), ((q5,a),q5),((q5,b),q5)} q2 q4 b q3 a,b q5 a b Lexikalische Analyse 6.2-43 a,b a q1 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 b q3 q2 q5 q5 q5 b a Zustandsübergangsdiagramm a q2 q4 q4 q5 q5 Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-44 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Endliche Automaten (4/5) Endliche Automaten (5/5) Nichtdeterministische endliche Automaten (NEA/NFA) Übergänge sind nichtdeterministisch Übergang von einzelnem Zustand zu einer Menge von möglichen Zuständen δD:Q x Σ -> P(Q) ( P(Q) Potenzmenge von Q ) Das Alphabet ist erweitert um Übergänge der leeren Zeichenkette є zu erlauben Tabelle Beispiel NFA Q={q1,q2,q3,q4,q5} Σ={a,b,є} q0=q1 F={q4} δ= { ((q1,є),{q2,q3}), ((q2,a),{q5}),((q2,b),{q2,q4}), ((q3,a),{q4}),((q3,b),{q5}), ((q4,a),{q5}),((q4,b),{q5}), ((q5,a),{q5}),((q5,b),{q5}) } a {q5} {q5} {q4} {q5} {q5} є {q2,q3} {q5} {q5} {q5} {q5} q1 q2 q3 q4 q5 a b q2 є a,b b a,b q4 q1 Zustandsübergangsdiagramm є 6.2-45 6. Sprachen, Compiler und Theorie b Wir können jeden regulären Ausdruck in einen NFA konvertieren und umgekehrt c Wir können jeden NFA in einen DFA konvertieren und umgekehrt r1 Alternative: r1|r2 Verkettung: r1.r2 є є r2 є є r1 є r2 є Kleenesche Hülle: r* Lexikalische Analyse 6.2-47 є Leere Zeichenkette: є Gegeben ist ein beliebiger NFA MN und DFA MD, mit L(MN) = L(MD) Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 NFA Charakter: c Gegeben ist beliebiger regulärer Ausdruck R und ein NFA MN, mit L(R)=L(MN) 6.2-46 Regulärer Ausdruck Es gibt einen regulären Ausdruck R so dass gilt L(R) = L(X), oder Es gibt einen DFA MD so dass gilt L(MD) = L(X), oder Es gibt einen NFA MN so dass gilt L(MN) = L(X) Die Sprachen der regulären Ausdrücke, DFA Sprachen und NFA Sprachen sind alle regulär Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Reguläre Ausdrücke nach NFA (1/2) Eine Sprache L(X) ist Regulär wenn: Lexikalische Analyse 6. Sprachen, Compiler und Theorie Reguläre Sprachen q5 a q3 Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 b {q5} {q2,q4} {q5} {q5} {q5} є є r є Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-48 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Reguläre Ausdrücke nach NFA (2/2) NFAs nach DFAs (1/2) Definition: r=‘ab’|’cd’ Faktor: r1: r1=‘ab’ r2=‘cd’ r=r1.r2 a b r2: Gegeben NFA M=(Q,Σ,q,F,δ) und DFA MD=(QD,Σ,qD,FD,δD) c d d є є r3: b є c є a є b c є d є-FZ(s) ist die Menge aller Zustände, welche in s beinhaltet sind, plus aller von den Zuständen in s erreichbaren Zustände unter ausschließlicher Verwendung des є Überganges QD=P(Q), z.B., QD ist die Menge aller Untermengen von Q FD = {S:∀S ∈QD wobei S∩F ≠ {} } qD= є-FZ (q) δD({q1,q2,…,qk},a) = є-FZ(δ(q1,a)∪ δ(q2,a)∪… ∪(δ(qk,a)) є є Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-49 6. Sprachen, Compiler und Theorie NFAs nach DFAs (2/2) b NFA q2 є a,b q4 q1 є q3 a b a,b Schritt 1: Der Startzustand Schritt 2: Zustand {q1,q2,q3} q5 a,b a {q4,q5} a,b Schritt 3: Zustand {q4,q5} b {q2,q4,q5} b δD({q1,q2,q3},b) = є-FZ(δ(q1,b)∪δ(q2,b)∪δ(q3,b)) = є-FZ({q2,q4}∪{q2,q4}∪ {q5}) = {q2,q4,q5} {q5} a {q1,q2,q3} δD({q1,q2,q3},a) = є-FZ(δ(q1,a)∪δ(q2,a)∪δ(q3,a)) = є-FZ({q5}∪{q5}∪ {q4}) = {q4,q5} a b DFA qD= є-FZ({q1}) = {q1,q2,q3} … Schritt 4: Zustand {q2,q4,q5} … Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-51 Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.2-50 6. Sprachen, Compiler und Theorie Der Kompilationsprozess (-phasen) Informatik II SS 2004 Scanner (lexikalische Analyse) Lese Programm und konvertiere Zeichenstrom in Marken (tokens). Parser (syntaktische Analyse) Lese Tokenstrom und generiere Parserbaum (parse tree). Semantische Analyse Teil 6: Sprachen, Compiler und Theorie 3 – Syntaktische Analyse Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik Traversiere Parserbaum, überprüfe nicht-syntaktische Regeln. Zwischencodegenerierung Traversiere Parserbaum noch mal, gebe Zwischencode aus. Optimierung Untersuche Zwischencode, versuche ihn zu verbessern. Zielcodegenerierung Übersetze Zwischencode in Assembler-/Maschinencode Optimierung Maschinenebene Untersuche Maschinencode, versuche ihn zu verbessern. Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Lexikalische Analyse Der Kompilationsprozess (-phasen) Die lexikalische Analyse gruppiert Zeichensequenzen in Tokens (Marken) bzw. Symbole Tokens sind die kleinste „Bedeutungseinheit“ (units of meaning) im Kompilationsprozess und sind die Grundlage (foundation) fürs Parsen (Syntaxanalyse) Die Compilerkomponente zum Ausführen der lexikalischen Analyse ist der Scanner, welcher oftmals ausgehend von höheren Spezifikationen automatisch generiert wird Scanner (lexikalische Analyse) Lese Programm und konvertiere Zeichenstrom in Marken (tokens). Parser (syntaktische Analyse) Lese Tokenstrom und generiere Ableitungsbaum (parse tree). Semantische Analyse 6.3-3 Traversiere Parserbaum, überprüfe nicht-syntaktische Regeln. Zwischencodegenerierung Traversiere Parserbaum noch mal, gebe Zwischencode aus. Optimierung Untersuche Zwischencode, versuche ihn zu verbessern. Zielcodegenerierung Übersetze Zwischencode in Assembler-/Maschinencode Optimierung Maschinenebene Untersuche Maschinencode, versuche ihn zu verbessern. Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-2 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-4 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Syntaktische Analyse Die lexikalische Analyse erzeugt einen Strom von Symbolen (Tokens) Falsche Detailebene für die semantische Analyse und Codegenerierung Die Syntaxanalyse gruppiert eine Zeichenfolge von Tokens in Ableitungsbäume (Struktur-/Parser-/Syntaxbäume), was durch die kontextfreie Grammatik gelenkt wird, die die Syntax der zu kompilierenden Sprache spezifiziert Beispiel Syntaxanalyse conditional -> if ( expr ) block else block Ableitungsbäume repräsentieren die Phrasenstruktur eines Programms und sind die Grundlage für die semantische Analyse und Codegenerierung Die Compilerkomponente zum Ausführen der syntaktischen Analyse ist der Parser, welcher oftmals ausgehend von höheren Spezifikationen automatisch generiert wird conditional Token if > i – else j ; ( j = j j – } i ) i ; = i ( expr id comp id i > j if block ) statement statement 6.3-5 digit=[0-9] letter=[a-z] id=letter.(letter|digit)* Kann Identitäten von id durch Substitution entfernen: id=[0-9].([a-z]|[0-9])* id ist ein regulärer Ausdruck id j - i i id op id i - j 6.3-6 Eine kontextfreie Grammatik (KFG/CFG) ist eine rekursive Definition einer Sprache mit: Einem Alphabet Σ von Symbolen Eine Menge von Produktionen (oder Regeln) der Form Identitäten: digits=[0-9]+ sum=expr.’+’.expr expr=(‘(‘.sum.’)’) | digits Kann nicht Identitäten von expr durch Substitution entfernen: expr ist durch Rekursion definiert expr ist kein regulärer Ausdruck symbol -> symbol symbol … symbol Ein Startsymbol Eine Menge von nicht-terminalen Symbolen aus dem Alphabet Σ, welche auf der linken oder rechten Seite einer Produktionsregel erscheinen darf (convention: written in all capital letters) Eine Menge von terminalen Symbolen aus dem Alphabet Σ, welche nur auf der rechten Seite einer Produktionsregel erscheinen darf. (convention: written in all lower case letters) Die Menge aller von einer CFG G erzeugten Strings wird die Sprache von G genannt und wird symbolisiert durch L(G) Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 op Kontextfreie Grammatiken (1/4) Warum können wir nicht reguläre Ausdrücke zum Beschreiben der Syntax einer Programmiersprache verwenden? Betrachte die folgenden Beschreibungen: Identitäten: id Syntaktische Analyse j expr expr 6. Sprachen, Compiler und Theorie Syntaxbeschreibung = = Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie id id Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 block else 6.3-7 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-8 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Kontextfreie Grammatiken (2/4) Kontextfreie Grammatiken (3/4) Kurzschreibweisen: Alternativen s->a1..an|b1..bn|…|z1..zn = s->a1..an s->b1..bn … s->z1..zn Wenn eine CFG G zum Parsen von Programmiersprachen verwendet wird, dann gilt Beispiel: Kleenesche * Hülle L(G) ist die Menge von gültigen Quellprogrammen, und die terminalen Symbole sind die Tokens, welche vom Scanner zurückgeliefert werden Klammergrammatik expr -> LPAREN sum RPAREN expr -> INT sum -> expr PLUS expr s->s1* s->s1’ s1’->s1 s1’ s1’->є Terminale: {PLUS,LPAREN,RPAREN,INT} Nichtterminale: {sum,expr} Startsymbol: {expr} Σ = Terminale ∪ Nichtterminale Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-9 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Kontextfreie Grammatiken (4/4) Ableitungen (1/4) Eine CFG G erzeugt Zeichenketten durch: Beginne mit dem Startsymbol Ersetze ein nichtterminales Symbol sk auf der rechten Seite mit der rechten Seite dieses Nichtterminals Grammatik: expr -> ( sum ) expr -> INT sum -> expr + expr s ⇒ s1 s2 … sn Gegeben: sk -> k1…km Dann: s ⇒ s1…sk…sn ⇒ s1…k1…km…sn Wiederhole bis nur noch Terminal auf der linken Seite sind Jeder Schritt in diesem Prozess wird Ableitung (derivation) genannt und jede Zeichenkette von Symbolen entlang dieses Weges wird Satzform genannt. Die abschließende Satzform, welche nur Terminalsymbole enthält, wird ein Satz (sentence) der Grammatik oder auch das Ergebnis (yield) des Ableitungsprozesses genannt Mögliche Ableitungen: expr ⇒ ( sum ) ⇒ ( expr + expr ) ⇒ ( INT + expr ) ⇒ (INT + ( sum ) ) ⇒ (INT + ( expr + expr ) ) ⇒ (INT + ( INT + expr ) ) ⇒ (INT + (INT + INT ) ) Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-10 6.3-11 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-12 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Ableitungen (2/4) Rechtsseitige Ableitungen (rightmost derivations) Eine Ableitung (oder Herleitung) ist eine Operationenfolge von Ersetzungen, welche zeigen wie eine Zeichenkette von Terminalen (Tokens), ausgehend vom Startsymbol einer Grammatik, abgeleitet werden kann Unter der Annahme es gibt eine Produktion X -> y, eine einzelne Ersatzoperation oder ein Ableitungsschritt, dann können diese beschrieben werden durch αXβ⇒αγβ, für beliebige Zeichenketten von Grammatiksymbolen α, β und γ Kurzschreibweisen: Ersetze jeweils das äußerste rechte Nichtterminalsymbol in jedem Ableitungsschritt Wird manchmal auch die kanonische Ableitung genannt Linksseitige Ableitungen (leftmost derivations) Ableitungen (3/4) Ersetze jeweils das äußerste linke Nichtterminalsymbol in jedem Ableitungsschritt Siehe vorherige Folie Andere Ableitungsreihenfolgen sind möglich Die meisten Parser suchen nach entweder einer rechtsseitigen oder linksseitigen Ableitung α ⇒* β bedeutet β kann abgeleitet werden von α in 0 oder mehr Schritten α ⇒+ β bedeutet β kann abgeleitet werden von α in 1 oder mehr Schritten α ⇒n β bedeutet β kann abgeleitet werden von α in genau n Schritten Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-13 6. Sprachen, Compiler und Theorie Beispiel Ableitungen Linksseitige Ableitungen (leftmost derivations): Grammatik: expr -> ( sum ) | INT sum -> expr + expr Für jeden Ableitungsschritt αXβ⇒αγβ, muss X das äußerte linke Nichtterminal im String von Symbolen αXβ sein Wird verwendet in LL(k) bzw. top-down parsen Linksseitige Ableitung: expr ⇒ ( sum ) ⇒ ( expr + expr ) ⇒ ( INT + expr ) ⇒ (INT + ( sum ) ) ⇒ (INT + ( expr + expr ) ) ⇒ (INT + ( INT + expr ) ) ⇒ (INT + (INT + INT ) ) Rechtsseitige Ableitungen (rightmost derivations): Für jeden Ableitungsschritt αXβ⇒αγβ, muss X das äußerte rechte Nichtterminal im String von Symbolen αXβ sein Wird verwendet in LR(k) bzw. bottom-up parsen Wird manchmal auch die kanonische Ableitung genannt Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-14 6. Sprachen, Compiler und Theorie Ableitungen (4/4) Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-15 Eingabe: (INT + (INT + INT)) Rechtsseitige Ableitung: expr ⇒ ( sum ) ⇒ ( expr + expr ) ⇒ ( expr + ( sum ) ) ⇒ (expr + ( expr + expr) ) ⇒ (expr + ( expr + INT ) ) ⇒ (expr + ( INT + INT ) ) ⇒ (INT + (INT + INT ) ) Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-16 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Ableitungen und Ableitungsbäume (1/2) Ableitungen und Ableitungsbäume (2/2) Ein Ableitungsbaum ist eine graphische Repräsentation des Ableitungsprozesses expr expr ⇒ ( sum) ⇒ ( expr + expr ) expr Innere Knoten von Ableitungsbäumen entsprechen den Nichtterminalsymbolen der Grammatik (Produktionen auf der linken Seite) ⇒ ( INT + expr ) INT ⇒ (INT + ( sum ) ) Die meisten Parser konstruieren einen Ableitungsbaum während des Ableitungsprozesses für eine spätere Analyse ⇒ (INT + ( expr + expr ) ) expr ⇒ (INT + ( INT + expr ) ) INT ⇒ (INT + (INT + INT ) ) Blätter eines Ableitungsbaumes entsprechen den Terminalsymbolen (Token) der Grammatik ( sum ) + expr ( sum ) + expr Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-17 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie Mehrdeutigkeiten (2/2) Eine Grammatik gilt als Mehrdeutig, wenn ein Satz mit (mind.) zwei verschiedenen Ableitungsbäumen abgeleitet werden kann Beispiel – linksseitige versus rechtsseitige Ableitung: Berühmteres Beispiel – “dangling else” Grammatik: Programmfragment: if a then if b then s1 else s2 Kann interpretiert werden als: expression -> identifier | number | - expression | ( expression ) | expression operator expression operator -> + | - | * | / Eingabe: slope * x + intercept 1) if a then { if b then s1 else s2} 2) if a then { if b then s1 } else s2 Mehrdeutigkeit kann manchmal durch die Auswahl eines akzeptierenden Ableitungsbaumes aus mehreren gehandhabt werden Zum Beispiel, obige Interpretation #1 wird von den meisten Parsern für Sprachen die die „dangling else“ Mehrdeutigkeit haben ausgewählt Generell ist Mehrdeutigkeit jedoch ein Zeichen dafür, dass die Grammatik „schlecht“ spezifiziert wurde und umgeschrieben werden sollte um Mehrdeutigkeiten zu beseitigen Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-18 6. Sprachen, Compiler und Theorie Mehrdeutigkeiten (1/2) INT 6.3-19 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-20 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Grammatiken und Parser Kontextfreie Grammatiken erzeugen durch den Ableitungsprozess Strings (oder Sätze) Die kontextfreien Sprachen sind definiert durch Kellerautomat (1/4) LCF={L(G): Alle kontextfreien Grammatiken G} Mit anderen Worten: Die Menge aller Sprachen von allen kontextfreien Grammatiken Ein Parser für eine kontextfreie Grammatik erkennt Strings in der Grammatiksprache Parser können automatisch aus einer kontextfreien Grammatik generiert werden Parser zum Erkennen von allgemeinen kontextfreien Sprachen können langsam sein Parser, die nur eine Untermenge von kontextfreien Sprachen erkennen können, können so gestaltet werden, dass sie schneller sind Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-21 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Kellerautomat (2/4) Kellerautomat (3/4) Kontextfreie Grammatiken können von Kellerautomaten (Push Down Automata, PDA) erkannt werden PDAs sind eine Erweiterung der endlichen Automaten um ein „einfaches“ Gedächtnis (Hilfsband) Eigenschaften eines Kellerautomaten: Das Hilfsband heißt auch Kellerstapel oder einfach Stapel (engl. stack ). Das Eingabeband kann sich nur in eine Richtung bewegen. Es existiert ein "Hilfsband", welches sich in beide Richtungen bewegen kann. Der Automat liest im ersten Schritt die jeweils erste Zelle beider Bänder. Als Reaktion des Automaten kann entweder das Hilfsband vorwärts bewegt und ein Zeichen in die nächste Zelle geschrieben werden oder das Symbol gelöscht und das Hilfsband eine Zelle zurück bewegt werden. Ein Element kann immer nur oben auf den Stapel gelegt (bzw. an das Ende des Bandes geschrieben) werden (= push ). Immer nur das oberste (letzte) Element kann wieder vom Stapel entfernt werden (= pop ). Die erste Zelle des Hilfsbandes enthält eine spezielle Kennzeichnung, um anzuzeigen, wann der Stapel leer ist. Ein Kellerautomat kann bei leerem Stapel nicht weiterarbeiten. Kellerautomaten arbeiten eigentlich nicht-deterministisch, nichtdeterministische Kellerautomaten sind aber in deterministische überführbar ε-Bewegungen sind erlaubt Eine Eingabe wird genau dann erlaubt, wenn es möglich ist, eine Konfiguration zu erreichen, bei der die gesamte Eingabe gelesen wurde und der Stapel leer ist. Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-22 6.3-23 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-24 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Kellerautomat (4/4) PDA-Übergangsfunktionen Ein Kellerautomat (=pushdown automaton, PDA) ist ein Septupel P = {Q, Σ, Γ, δ, q0, Z0, F } mit: Q Σ Γ δ q0 Z0 F Die Ausgabe von δ besteht aus einer endlichen Menge von Paaren (p, γ), wobei p für den neuen Zustand und γ für die Zeichenreihe der Stacksymbole steht, die X auf dem oberen Ende des Stacks ersetzt. Wenn γ = ε, dann wird das oberste Stacksymbol wird gelöscht. (pop-Operation) Wenn γ = X, dann bleibt der Stack unverändert. Wenn γ = YZ, dann wird X durch Z ersetzt und Y zuoberst auf dem Stack abgelegt. (push-Operation) Zustandsmenge, |Q | < ∞ Eingabealphabet, |Σ| < ∞ Stackalphabet, |Γ| < ∞ Übergangsfunktion (ZustandsÜF) δ(q,a,X) mit q ∈ Q, a ∈ {Σ, ε}, X ∈ Γ Anfangszustand Startsymbol (für Stack) Endzustände, F ⊆ Q Da PDAs nicht-deterministisch arbeiten, kann die Ausgabe von δ eine Menge an Paaren ergeben, z.B. δ(q, a, X) = { (p, YZ), (r, ε) } Die Paare müssen dabei als Einheit betrachtet und behandelt werden. Wenn sich der PDA im Zustand q befindet, X das oberste Stacksymbol ist und die Eingabe a gelesen wird, kann in den Zustand p gewechselt und X durch YZ ersetzt werden, oder in den Zustand r gewechselt und X vom Stack entfernt werden. Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-25 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Beispiel PDA: Palindrome Schreibkonventionen für PDAs Formelle Beschreibung: P = ({q0,q1,q2},{0,1},{0,1,Z0}, δ, q0, Z0, {q2}) δ(q0, 0, Z0) = {(q0,0 Z0)} δ(q0, 1, Z0) = {(q0,1 Z0)} δ(q0, 0, 0) = {(q0,00)} δ(q0, 0, 1) = {(q0,01)} δ(q0, 1, 0) = {(q0,10)} δ(q0, 1, 1) = {(q0,11)} δ(q0, ε, Z0)= {(q1, Z0)} δ(q0, ε, 0) = {(q1, 0)} δ(q0, ε, 1) = {(q1, 1)} δ(q1, 0, 0) = {(q1, ε)} δ(q1, 1, 1) = {(q1, ε)} δ(q1, ε, Z0)= {(q2, Z0)} Æ lesen und push Æ lesen und push a, b, ... ∈ Σ p, q, ... ∈ Q w, z, ... = Zeichenreihen aus Σ (Terminale) X, Y, ... = Γ α, β, γ, ... = Zeichenreihen aus Γ (Nichtterminale) Æ Wechsel nach q1, ohne Stack zu verändern Æ lesen, vergleichen, pop Æ Z0 erreicht, akzeptiert Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-26 6.3-27 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-28 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Beschreibung der Konfiguration eines PDA (1/2) Beschreibung der Konfiguration eines PDA (2/2) Im Gegensatz zum endlichen Automaten, bei denen lediglich der Zustand (neben dem Eingabesymbol) für einen Übergang von Bedeutung ist, umfasst die Konfiguration eines PDA sowohl den Zustand als auch den Inhalt des Stacks. Die Konfiguration wird daher durch das Tripel (q, w, γ) dargestellt, wobei q w γ für den Zustand, für die verbleibende Eingabe, für den Inhalt des Stacks steht. Sei P = {Q, Σ, Γ, δ, q0, Z0, F } ein PDA. Angenommen, δ(q, a, X) enthält (p, α). Dann gilt für alle Zeichenreihen w aus Σ* und β aus Γ*: (q, aw, X β) ⊢ (p, w, αβ) D.h., der Automat kann vom Zustand q in den Zustand p übergehen, indem er das Symbol a (das ε sein kann) aus der Eingabe einliest und X auf dem Stack durch α ersetzt. (Die restliche Eingabe w und der restliche Inhalt des Stacks β beeinflussen die Aktion des PDA nicht!) (Das obere Ende des Stacks steht am linken Ende von γ.) Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-29 6. Sprachen, Compiler und Theorie Eingabe wird von links-nach-rechts (1. L) abgearbeitet linksseitige Ableitung (2. L) “top down” oder “prädiktive” (voraussagende) Parser genannt Eingabe wird von links-nach-rechts (1. L) abgearbeitet rechtsseitige Ableitung (2. R) “bottom up” oder “schiebe-reduziere“ (shift-reduce) Parser genannt Sei P = {Q, Σ, Γ, δ, q0, Z0, F } ein PDA. Dann ist die Sprache N(P ), die von P durch Endzustand akzeptiert wird, {w | (q0, w, Z0) ⊢* (q, ε, ε) für einen beliebigen Zustand q. N(P) ist die Menge der Eingabezeichenreihen w, die P einlesen kann und bei der er gleichzeitig den Stack leeren kann. 6.3-31 “k” steht für die Anzahl von Symbolen (token) für die in der Eingabe vorausgeschaut werden muss um eine Entscheidung treffen zu können LL(k) – welche nächste Produktion auf der rechten Seite ist bei einer linksseitigen Ableitung zu wählen LR(k) – ob zu schieben oder reduzieren Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 LR(k) parsers Sei P = {Q, Σ, Γ, δ, q0, Z0, F } ein PDA. Dann ist die Sprache L(P ), die von P durch Endzustand akzeptiert wird, {w | (q0, w, Z0) ⊢*p (q, ε, β) für einen Zustand q in F und eine Stackzeichenreihe α. Akzeptanz durch leeren Stack LL(k) Parser Akzeptanz durch Endzustand Akzeptanz durch leeren Stack Zwar unterscheiden sich die Sprachen, die die jeweiligen PDAs akzeptieren, aber sie sind jeweils ineinander überführbar. Akzeptanz durch Endzustand Klassen von Grammatiken und Parsern Es gibt zwei Ansätze, wann ein PDA eine Eingabe akzeptiert: 6.3-30 6. Sprachen, Compiler und Theorie Akzeptanzzustände von PDAs Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-32 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Top-down versus Bottom-up Syntaxanalyse (2/2) Top-down versus Bottom-up Syntaxanalyse (1/2) Top-down oder LL-Syntaxanalyse Baue den Ableitungsbaum von der Wurzel aus bis hinunter zu den Blättern auf Berechne in jedem Schritt voraus welche Produktion zu verwenden ist um den aktuellen nichtterminalen Knoten des Ableitungsbaumes aufzuweiten (expand), indem die nächsten k Eingabesymbole betrachtet werden id_list -> id id_list_tail id_list_tail -> , id id_list_tail id_list_tail -> ; Bottom-up oder LR-Syntaxanalyse Grammatik: Beispiel Strings: A; A, B, C; Baue den Ableitungsbaum von den Blättern aus bis hinauf zu der Wurzel auf Ermittle in jedem Schritt, ob eine Kollektion von Ableitungsbaumknoten zu einem einzelnen Vorgängerknoten zusammengefasst werden kann oder nicht Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-33 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Syntaxanalyse durch rekursiven Abstieg (1/4) Syntaxanalyse durch rekursiven Abstieg (2/4) Rekursiver Abstieg ist ein Weg um LL (top-down) Parser zu implementieren Rekursiver Abstieg ist ein Weg um LL(1)-Parser zu implementieren: Es ist einfach von Hand zu schreiben Es wird kein Parsergenerator benötigt Jedes nichtterminale Symbol in der Grammatik hat einen Prozeduraufruf Erinnerung: LL(1)-Parser machen linksseitige Ableitungen, unter Verwendung von höchstens 1 Symbol in der Vorausschau, um zu entscheiden welche rechte Seite einer Produktion verwendet wird, um ein linksseitiges Nichtterminal in einer Satzform zu ersetzen. LL(1)-Parser Beispiel: Grammatikfragment: Wenn die Satzform “n1 … nk factor sm … sn” lautet, dann sollte die nächste Satzform folgende sein: Es muss im Stande sein die nächste, anzuwendende, linksseitige Ableitung zu bestimmen (predict), indem nur die nächsten k Symbole angeschaut werden 6.3-34 factor -> ( expr ) | [ sexpr ] “n1 … nk ( expr ) sm … sn” oder “n1 … nk [ sexpr ] sm … sn” k ist üblicherweise 1 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-35 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-36 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Syntaxanalyse durch rekursiven Abstieg (3/4) Syntaxanalyse durch rekursiven Abstieg (4/4) Grammatik für eine Kalkulatorsprache Ableitungsbaum für Beispieleingabe: read A read B sum := A + B write sum write sum / 2 Beispieleingabe: read A read B sum := A + B write sum write sum / 2 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-37 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie LL-Syntaxanalyse Probleme mit der LL-Syntaxanalyse (1/4) Finde zu einer Eingabe von Terminalsymbolen (tokens) passende Produktionen in einer Grammatik durch Herstellung von linksseitigen Ableitungen Linksrekursion Produktionen von der Form: Für eine gegebene Menge von Produktionen für ein Nichtterminal, X->y1|…|γn, und einen gegebenen, linksseitigen Ableitungsschritt αXβ ⇒ αγiβ, müssen wir im Stande sein zu bestimmen welches γi zu wählen ist indem nur die nächsten k Eingabesymbole angeschaut werden Anmerkung: Für eine gegebene Menge von linksseitigen Ableitungsschritten, ausgehend vom Startsymbol S ⇒ αXβ, wird der String von Symbolen α nur aus Terminalen bestehen und repräsentiert den passenden Eingabeabschnitt zu den bisherigen Grammatikproduktionen Wenn eine Grammatik linksrekursive Produktionen enthält, dann kann es dafür keinen LL Parser geben A -> Aα A -> β LL Parser würden in eine Endlosschleife eintreten, wenn versucht wird eine linksseitige Ableitung in solch einer Grammatik vorzunehmen Linksrekursion kann durch das Umschreiben der Grammatik ausgeschlossen werden A -> βA’ A’ -> αA’ | є Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-38 6.3-39 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-40 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Probleme mit der LL-Syntaxanalyse (2/4) Linksrekursion: Nicht formale Rechtfertigung Originalgrammatik: A -> Aα A -> β Ableitungen: Umgeschriebene Grammatik: A ⇒ Aα ⇒ Aαα ⇒ Aααα ⇒* βααα… Probleme mit der LL-Syntaxanalyse (3/4) Gemeinsame Präfixe A -> βA’ A’ -> αA’ | є Tritt auf wenn zwei verschiedene Produktionen mit der gleichen linken Seite mit den gleichen Symbolen anfangen A ⇒ βA’ ⇒ βαA’ ⇒ βααA’ ⇒* βααα… Linksrekursion: Beispiel Grammatik: Produktionen der Form: Ableitungen: id_list -> id_list_prefix ; id_list_prefix -> id_list_prefix , id | id A -> bα A -> bβ LL(1) Parser kann nicht entscheiden welche Regel auszuwählen ist, wenn A in einem linksseitigen Ableitungsschritt zu ersetzen ist, weil beide rechten Seiten mit dem gleichen Terminalsymbol anfangen Kann durch Faktorisierung ausgeschlossen werden: A -> bA’ A’ -> α | β Linksrekursion kann durch das Umschreiben der Grammatik ausgeschlossen werden id_list -> id id_list_tail id_list_tail -> , id id_list_tail | ; Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-41 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Probleme mit der LL-Syntaxanalyse (4/4) Bau eines Top-Down Parsers mit rekursivem Abstieg (1/2) Gemeinsame Präfixe Beispiel: stmt -> id := expr stmt -> id ( argument_list ) Für jedes Nichtterminal in einer Grammatik wird ein Unterprogramm erzeugt, welches einem einzelnen linksseitigen Ableitungsschritt entspricht, wenn es aufgerufen wird Gemeinsame Präfixe können durch das Umschreiben der Grammatik ausgeschlossen werden 6.3-42 Beispiel: factor -> ( expr ) factor -> [ sexpr ] void factor (void) { switch(next_token()) { stmt -> id stmt_list_tail stmt_list_tail -> expr | ( argument_list ) case ‘(‘: expr(); match(‘)’); break; case ‘[‘: Der Ausschluss von Linksrekursion und gemeinsame Präfixe garantiert nicht das eine Grammatik LL wird Wenn wir keinen LL Parser für eine Grammatik finden können, dann müssen wir einen mächtigere Technik verwenden sexpr(); match(‘]’); break; } Schwieriger Teil: z.B., LALR(1) – Grammatiken Herausbekommen welches Token den ‚case‘ Arm vom switch Befehl benennt Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-43 } Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-44 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Bau eines Top-Down Parsers mit rekursivem Abstieg (2/2) PREDICT-Mengen (Vorhersagemengen) PREDICT Mengen teilen uns mit, welche rechte Seite einer Produktion bei einer linken Ableitung auszuwählen ist, wenn mehrere zur Auswahl stehen PREDICT-Mengen dienen somit als Grundlage für Ableitungstabellen (Parse-Tabellen) bzw. sind eine andere Teildarstellungsform für die Tabellen Wird in Form von FIRST-, FOLLOW- und NULLABLE-Mengen definiert : Sei A ein Nichtterminal und α beliebig, dann gilt PREDICT(A->α) = FIRST(α) ∪ FOLLOW(A) wenn NULLABLE(α) PREDICT(A->α) = FIRST(α) wenn nicht NULLABLE(α) FIRST-Mengen Sei α eine beliebige Folge von Grammatiksymbolen (Terminale und Nichtterminale) FIRST(α) ist die Menge aller Terminalsymbolen a mit denen ein aus α abgeleiteter String beginnen kann: FIRST(α) ist { a: α ⇒* aβ} Gilt α ⇒* є, dann ist auch є in FIRST(α) NULLABLE-Mengen Sei X ein Nichtterminal NULLABLE(X) ist wahr wenn gilt X ⇒* є (X kann den leeren String ableiten) Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-45 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Berechnung von FIRST-Mengen (1/2) Berechnung von FIRST-Mengen (2/2) Für alle Grammatiksymbole X wird FIRST(X) berechnet, indem die folgenden Regeln solange angewandt werden, bis zu keiner FIRSTMenge mehr ein neues Terminal oder є hinzukommt: 6.3-46 Folglich gilt: Elemente aus FIRST(Y1) gehören immer auch zu FIRST(X) Ist є nicht aus Y1 ableitbar (NICHT NULLABLE), dann brauch nichts mehr hinzugefügt werden 1. Wenn X ein Terminal ist, dann ist FIRST(X)={X} 2. Wenn X → ε eine Produktion ist, dann füge ε zu FIRST(X) hinzu Ist є aus Y1 ableitbar (NULLABLE), dann muss auch FIRST(Y2) zu FIRST(X) hinzugefügt werden Wenn X Nichtterminal und X → Y1Y2Y3 KYk nehme a zu FIRST(X) hinzu, falls Ist є aus Y2 ableitbar (NULLABLE), dann muss auch FIRST(Y3) zu FIRST(X) hinzugefügt werden usw. 3. eine Produktion ist, dann (a) a für irgendein i in FIRST(Yi) und (b) ein ε in allen FIRST(Y1), ..., FIRST(Yi-1) enthalten ist (Y1...Yi-1 sind alle NULLABLE) є wird nur zu FIRST(X) hinzugefügt, wenn es in allen Mengen FIRST(Y1), ... ,FIRST(Yk) enthalten ist Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-47 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-48 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie FOLLOW-Mengen Berechnung von FOLLOW-Mengen Sei A ein Nichtterminal FOLLOW(A) ist die Menge aller Terminalsymbole a, die in einer Satzform direkt rechts neben A stehen können ( sei S Startregel; α, β beliebig): Follow(A) wird für alle Nichtterminale A berechnet, indem die folgenden Regeln solange angewandt werden, bis keine FollowMenge mehr vergrößert werden kann: 1. Sei S das Startsymbol und $ die Endemarkierung, dann nehme $ in FOLLOW(S) auf FOLLOW(A) ist { a:S ⇒* αAaβ } Achtung: Zwischen A und a können während der Ableitung Symbole gestanden haben, die aber verschwunden sind, weil aus Ihnen є abgeleitet wurde! Gibt es eine Satzform, in der A das am weitesten rechts stehende Symbol ist, dann gehört auch $ (die Endemarkierung) zu FOLLOW(A) 2. 3. Wenn es eine Produktion A → αBβ gibt, dann wird jedes Element von FIRST(β ) mit Ausnahme von ε auch in FOLLOW(B) aufgenommen. Wenn es Produktionen A → αB oder A → αBβ gibt und FIRST(β ) enthält (d.h. β ⇒*ε ), dann gehört jedes Element von FOLLOW(A) auch zu FOLLOW(B) Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-49 6. Sprachen, Compiler und Theorie S -> s$ B -> є A -> B S -> A B S B -> b A -> a Schritt 1: i=0 NULLABLE FIRST FOLLOW A False {a} {} B True {b, є} {} S False {s} {$} S A True {a,b,є} {b,s} B True {b, є} S False {s,a,b} True {a,b,є} {b,s,a} S -> A B S B -> b A -> a B True {b, є} {s,a,b} S False {s,a,b} {$} FOLLOW A True {a,b,є} {b} B True {b, є} {s} A->B {a,b,є,s} False {s,a} {$} A->a {a} B->є {a,b,s} PREDICT FIRST FOLLOW B->b {b, є} A True {a,b,є} {b,s,a} S->s$ {s,a} B True {s,a,b} {s} {b, є} S->ABS {$} S False {s,a,b} {$} {a,b,s} Syntaktische Analyse 6.3-51 FOLLOW A NULLABLE Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 FIRST A -> B FIRST Schritt 4: i=3 NULLABLE B -> є S -> s$ NULLABLE Schritt 3: i=2 FOLLOW 6.3-50 Beispiel für PREDICT-Mengen Schritt 2: i=1 FIRST Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie Beispiel für NULLABLE-, FIRST- und FOLLOW-Mengen NULLABLE ε PREDICT-Mengen zeigen uns welche Menge von look-ahead Symbolen die rechte Seite einer Produktion selektiert Diese Grammatik ist NICHT LL(1), da es duplizierte Symbole in den PREDICT-Mengen für alle drei Nichtterminale gibt Siehe Hervorhebungen (dick, rot) Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-52 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie LL(k) Eigenschaften Ableitungsbäume und Parser mit rekursivem Abstieg (1/2) Satz: Jede kontextfreie Grammatik G ist genau dann LL(1), wenn für alle Alternativen A ⇒ α1| α2 | ... | αn gilt 1. 2. FIRST(α1), ..., First(αn) paarweise disjunkt, falls αi ⇒* є gilt, dann FIRST1(αj) ∩ FOLLOW1(A) = Ø für 1 ≤ j ≤ n, j ≠ i In Worten: Aus α1, α2 , ... und αn sind jeweils keine Strings ableitbar, wo zwei mit dem gleichen Nichtterminal anfangen Der leere String є kann nicht sowohl aus αi und αj für i ≠ j abgeleitet werden Falls αi ⇒* є gilt, dann beginnt kein aus αi ableitbarer String mit einem Terminal aus FOLLOW(A) Die Beispielparser auf die wir bisher geschaut haben sind nur Erkenner Sie bestimmen, ob eine Eingabe syntaktisch korrekt ist, aber bauen keinen Ableitungsbaum Wie konstruieren wir dann einen Ableitungsbaum? In Parser mit rekursivem Abstieg machen wir für jede nichtterminale Funktion: Konstruktion eines korrekten Ableitungsbaumknoten für sich selbst und Verbindungen zu seinen Kindern Geben den konstruierten Ableitungsbaumknoten an den Aufrufer zurück Satz: Sei G kontextfreie Grammatik, k ≥ 0. G ist genau dann LL(k), wenn gilt: Sind A ⇒ β, A ⇒ ζ verschiedene Produktionen, dann Firstk(βα) ∩ FIRSTk(ζα) = Ø für alle α, σ mit S ⇒* σ A α Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-53 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Ableitungsbäume und Parser mit rekursivem Abstieg (2/2) Beispiel: Jedes nichtterminale Unterprogramm konstruiert einen Ableitungsbaumknoten node *factor (void) { factor -> ( expr ) factor -> [ sexpr ] 6.3-54 Parsergeneratoren und Syntaxanalyse switch(next_token()) { Parsergeneratoren erzeugen ausgehend von der kontextfreien Grammatik einen Parser An Produktionen dürfen semantische Aktionen angehängt sein case ‘(‘: node = factor_node(expr()); match(‘)’); break; Wenn ein Parser eine Produktion erkannt hat, dann wird die semantische Aktion aufgerufen Wird hauptsächlich dazu verwendet einen Ableitungsbaum explizit zu konstruieren case ‘[‘: node = factor_node(sexpr()); Nicht alle Symbole werden zu einem Ableitungsbaumknoten Beispiele: ‘(‘, ‘)’, ‘[‘, ‘]’ Diese Art von Ableitungsbaum } wird „Abstrakter Syntaxbaum“ (abstract syntax tree, AST) genannt match(‘]’); break; } return node; Die Ausgabe eines Parsergenerators ist ein Programm in einer Hochsprache (z.B. C, C++, oder Java) welches einen Symbolstrom (token stream) von einem Lexer (für die lexikalische Analyse) entgegen nimmt und welches einen Ableitungsbaum für die nachfolgenden Compilerphasen produziert Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-55 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-56 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie ANTLR als Beispiel eines Parsergenerators Rückblick ANTLR Grammatikspezifikation (parser.g) lexikalischer Analysator (scanner.class) Eingabe 10+(27-5); (44-2)-(1-10); Kontextfreie Grammatiken (KFG) und Sprachen (KFS), Kellerautomat Wichtige Algorithmen: ANTLR java parser.class Syntaktische Analyse und Parser (java antlr.Tool parser.g) symbols.java parser.java Ausgabe =32 =51 Auflösung von Linksrekursion und gemeinsame Präfixe FIRST, FOLLOW, NULLABLE und PREDICT Mengen für kontextfreie Grammatiken Die Syntax einer Programmiersprache wird mit KFGs spezifiziert Konstruktion eines Parsers mit rekursivem Abstieg anhand von KFGs Automatische Generierung von Parsern anhand von KFGs Parser erzeugen Ableitungsbäume für die Analyse und weitere Verarbeitung in den nachfolgenden Compilerphasen javac parser.java Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-57 6. Sprachen, Compiler und Theorie Ausblick Namen, Bindungen und Gültigkeitsbereiche (Kapitel 3) Objektlebenszeit und Speichermanagement Kontrollfluss (Kapitel 6) Zusammenführung (Bau eines ausführbaren Programms) (Kapitel 9) Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-59 Syntaktische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.3-58 6. Sprachen, Compiler und Theorie Namen, Bindungen und Gültigkeitsbereiche (1/3) Namen Informatik II Ein mnemonischer Zeichenname wird verwendet um irgendetwas anderes zu repräsentieren oder zu benennen (Mnemonic ist die Bezeichnung für Ausdrücke deren Bedeutung vorwiegend durch die verwendete Buchstabenfolge leicht behalten werden kann.) Normalerweise Bezeichner (identifier) SS 2004 Teil 6: Sprachen, Compiler und Theorie Ist essentiell für Abstraktion 4 – Namen, Bindungen und Gültigkeitsbereiche Erlaubt es Programmierern Werte zu bezeichnen damit die Notwendigkeit zur direkten Manipulation von Adressen, Registernamen, etc. vermieden wird Beispiel: Es ist nicht notwendig zu wissen ob die Variable foo im Register $t0 oder an der Speicherstelle 10000 gespeichert wird Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Erlaubt es Programmierern einen einfachen Namen für ein potenziell komplexes Programmstück stehen zu lassen Lehrstuhl für Telematik Institut für Informatik Beide Fälle verringern die konzeptuelle Komplexität Beispiel: foo = a*a + b*b + c*c + d*d; Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Namen, Bindungen und Gültigkeitsbereiche (2/3) Namen, Bindungen und Gültigkeitsbereiche (3/3) Bindungen Gültigkeitsbereiche (Scope) Ist eine Assoziation zwischen zwei Dingen Ein Variablenname zu einem Wert Ein Variablenname zu einer spezifischen Speicherstelle Ein Typ und seine Repräsentation oder Layout im Speicher Die Bindezeit ist die Zeit zu der eine solche Assoziation gemacht wird Ist der Textbereich eines Programms in welchem eine Bindung aktiv ist Java Beispiel: public void foo (int a) { Global Scope int b; while(a < n) { int c; Method Scope c = a + a; b = a * c; Block Scope a++; } } Verbessert die Abstraktion durch die Kontrolle über die Sichtbarkeit von Bindungen Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.4-2 6.4-3 Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.4-4 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Bindezeitpunkte (1/8) Wir unterscheiden 7 Zeitpunkte für die Entscheidung über eine Bindung Zeitpunkt des Sprachentwurfs Entscheidungen welche vom Designer der Programmiersprache gemacht wurden Typische Beispiele: Sprache Bindezeitpunkte (2/8) Entwurf Implementierung (mit Compilern) Programm Programmierung (Schreiben des Programms) Kompilation Linken Laden Ausführen Binden von Kontrollstrukturen (Bedingungen, Schleifen, etc.) zu Ihrer abstrakten Bedeutung „Befehle in einem while Schleifenblock werden ausgeführt bis die Bedingung nicht mehr länger wahr ist“ Binden von primitiven Datentypnamen (int, float, char, etc.) zu Ihrer geforderten Repräsentation „Variablen vom Typ int beinhalten vorzeichenbehaftete Ganzzahlen“ „Variablen vom Typ int beinhalten vorzeichenbehaftete 32-bit Werte“ Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.4-5 Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Bindezeitpunkte (3/8) Bindezeitpunkte (4/8) Zeitpunkt der Sprachimplementierung Zeitpunkt des Programmierens Entscheidungen welche vom Compiler bzw. vom Compilerprogrammierer gemacht wurden Mit anderen Worten, Angelegenheiten der Sprachimplementierung die nicht spezifisch während des Sprachentwurfs definiert wurden Binden von primitiven Datentypen zu deren Repräsentationsgenauigkeit (Anzahl der Bits) Entscheidungen des Programmierers Typische Beispiele: Typische Beispiele: „bytes sind 8-bits, shorts sind 16-bits, ints sind 32-bits, longs sind 64-bits“ Binden von Dateioperationen zur betriebssystemspezifischen Implementierung dieser Operationen Entscheidungen des Compilers Typische Beispiele: open() ist mit einem SYS_open Systemaufruf implementiert Binden eines Algorithmus zu den Befehlen der Programmiersprache mit denen der Algorithmus implementiert ist Binden von Namen zu Variablen, welche für einen Algorithmus erforderlich sind Binden von Datenstrukturen zu Sprachdatentypen Zeitpunkt der Kompilation Binden von höheren Konstrukten zu Maschinencode (Optimierung eingeschlossen) Binden von statisch definierten Datenstrukturen zu einem spezifischen Speicherlayout Binden von benutzerdefinierten Datentypen zu einem spezifischen Speicherlayout Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.4-6 6.4-7 Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.4-8 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Bindezeitpunkte (5/8) Zeitpunkt des Verbindens (linken) Entscheidungen des Linkers Typische Beispiele: Bindezeitpunkte (6/8) Zeitpunkt der Programmausführung Linker binden Programmmodule zusammen Binden von Objekten (Unterprogramme und Daten) zu einem spezifischen Platz in einer ausführbaren Datei Binden von Namen, welche Objekte in anderen Modulen referenzieren, zu deren tatsächlichen Ortsreferenz Entscheidungen welche während der Programmausführung gemacht werden Typische Beispiele: Entscheidungen des Laders Typische Beispiele: Binden von konkreten Werten zu Programmvariablen Binden von Referenzen von dynamisch zugeteilten Objekten zu Speicheradressen Binden von Namen zu Objekten in Sprachen mit dynamischen Gültigkeitsbereichen Zeitpunkt des Ladens Lader holen ausführbare Dateien in den Speicher „a = a + 1;“ Binden von virtuellen Adressen in der ausführbaren Datei zu den physikalischen Speicheradressen In modernen Betriebssystemen nicht mehr wirklich notwendig, da das Betriebssystem virtuelle Adresse zu physikalischen Adressen bindet in dem es virtuellen Speicher (einschließlich der notwendiger Hardware) verwendet Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.4-9 Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Bindezeitpunkte (7/8) Bindezeitpunkte (8/8) Ähnliche Bindeentscheidungen können zu mehreren Bindezeitpunkten durchgeführt werden Statisches Binden (static binding) Linkentscheidungen können zur Linkzeit, Ladezeit (ein Typ des dynamischen Linken) oder Laufzeit (ein anderer Typ des dynamischen Linkens) auftreten Optimierungsentscheidungen können zur Compilezeit, Linkzeit, Ladezeit und sogar zur Laufzeit (dynamische Optimierung) auftreten Dynamisches Binden (dynamic binding) Frühe Bindezeitpunkte Bezieht sich auf alle Bindeentscheidungen die zur Laufzeit gemacht werden Verbunden mit größerer Effizienz C bindet Variablennamen an die referenzierten Objekte zur Compilezeit Bezieht sich auf alle Bindeentscheidungen die vor der Laufzeit gemacht werden Bindeentscheidungen können zu verschiedenen Bindezeitpunkten in verschiedenen Sprachen getroffen werden Wenn wir in C sagen „foo=bar;“, dann wissen wir genau ob foo und bar global oder lokal sind oder nicht, von welchem Typ sie sind, ob ihre Typen für Zuweisungen kompatibel sind oder nicht, etc. Kompilierte Sprachen laufen typischerweise viel schneller, weil die meisten Bindeentscheidungen zur Compilezeit getroffen wurden Ist eine Bindeentscheidung aber erst einmal getroffen worden, dann verlieren wir auch einiges an Flexibilität Späte Bindezeitpunkte Verbunden mit größerer Flexibilität Interpretierte Sprachen erlauben es die meisten Bindeentscheidungen zur Laufzeit zu treffen, was eine größere Flexibilität erlaubt Wir können in Perl sagen „$foo=$bar;“, und wenn der Name $bar nicht schon an ein Objekt gebunden ist, dann wird eines erzeugt, und dann zu $foo zugewiesen Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Perl (und gilt eigentlich für alle interpretierten Sprachen) bindet Variablennamen an die referenzierten Objekte zur Laufzeit 6.4-10 6.4-11 Zum Beispiel, die meisten interpretierten Sprachen erlauben es einem Programm Fragmente eines anderen Programms dynamisch zu generieren und auszuführen Da Bindeentscheidungen zur Laufzeit getroffen werden, können interpretierte Sprachen langsam sein Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.4-12 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Zusammenfassung Namen und Bindungen Gültigkeitsbereiche Namen Ein mnemonischer Zeichenname wird verwendet um irgendetwas anderes zu repräsentieren oder zu benennen Beispiel: Variable foo kann die Speicherstelle 10000 referenzieren Textueller Bereich eines Programms in welchem eine Bindung aktiv ist Es gibt grundsätzlich zwei Varianten: Statische Gültigkeitsbereiche (static scopes) Bindungen Ist eine Assoziation zwischen zwei Dingen Bindezeit Bindungen zwischen Namen und Objekten hängen vom Programmfluss zur Laufzeit ab Nähere Ausführung Die Bindezeit ist die Zeit zu der die Entscheidung über eine solche Assoziation gemacht wird Dynamische Gültigkeitsbereiche (dynamic scopes) Ein Name und das was er referenziert Es kann zur Compilezeit genau festgestellt werden welcher Name welches Objekt an welchen Punkten im Programm referenziert Der Prozess durch den eine Menge von Bindungen aktiv wird wenn die Kontrolle in einen Gültigkeitsbereich eintritt Zum Beispiel die Allokation von Speicher um Objekte darin zu halten Beispiel: Ist der Wert von foo in einem Register oder im Speicher? (Entscheidung wird zur Compilezeit gemacht) Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.4-13 Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Gültigkeitsbereiche Static scope: Verschachtelte Unterprogramme Referenzierende Umgebung (referencing environment) Die Menge von aktiven Bindungen zu einem gegebenen Zeitpunkt in der Programmausführung Wird durch die Regeln für Gültigkeitsbereiche einer Programmiersprache festgelegt Statische Gültigkeitsbereiche Bindungen zwischen Namen und Objekten könne zur Compilezeit festgestellt werden Einfache Varianten Komplexe Varianten 6.4-14 Frage: Welches Objekt wird von X im Funktionsblock von F1 referenziert? Regel über den nächsten Gültigkeitsbereich (closest nested scope ) Referenzen von Variablen referenzieren das Objekt im naheliegendsten Gültigkeitsbereich Frühe Versionen von BASIC hatten einen, globalen Gültigkeitsbereich Moderne Programmiersprachen erlauben verschachtelte Unterprogramme und Module weshalb kompliziertere Regeln für Gültigkeitsbereiche erforderlich sind Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.4-15 Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.4-16 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Ein Problem welches nicht von verschachtelten Unterprogrammen behandelt wird (1/2) Ein Problem welches nicht von verschachtelten Unterprogrammen behandelt wird (2/2) Geheimnisprinzip (information hiding) für komplexe abstrakte Datentypen (ADT) Für einfache ADTs könnten Funktionen mit statischen lokalen Variablen funktionieren Siehe Beispiel auf nächster Folie: Die Variable name_nums behält seinen Wert über Aufrufe von gen_new_name bei Dies ist zu einfach für ADTs mit mehreren Funktionen die sich einen globalen Zustand teilen müssen Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.4-17 Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Module Ein Modul Beispiel Ein Modul erlaubt es eine Sammlung von Objekten zu kapseln, so dass Objekte innerhalb eines Moduls sich gegenseitig sehen können Objekte innerhalb des Moduls nach außen nicht sichtbar sind, es sei denn sie werden explizit exportiert Objekte von außerhalb nach innen nicht sichtbar sind, es sei denn sie werden explizit importiert Abstraktion eines Stacks in Modula Wir exportieren die push und pop Funktionen Außerhalb des Moduls nicht sichtbar Top des Stackzeigers „top“ Stack array „s“ Module mit geschlossenem Gültigkeitsbereich 6.4-18 Betrifft Module in welche Namen explizit importiert werden müssen um innerhalb des Moduls sichtbar zu sein Module mit offenem Gültigkeitsbereich Betrifft Module für die es nicht explizit erforderlich ist Namen von außerhalb zu importieren um sichtbar zu sein Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.4-19 Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.4-20 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Dynamische Gültigkeitsbereiche Bindungen zwischen Namen und Objekten hängen vom Programmfluss zur Laufzeit ab Statische vs. dynamische Gültigkeitsbereiche Reihenfolge in welcher Unterprogramme aufgerufen werden ist wichtig Die Regeln für dynamische Gültigkeitsbereiche sind normalerweise einfach Statischer Gültigkeitsbereich Die aktuelle Bindung zwischen Name und Objekt ist diejenige die während der Ausführung als letzte angetroffen wurde (sprich diejenige die am kürzlichsten gesetzt wurde) Dynamischer Gültigkeitsbereich Programm gibt 1 aus Programm gibt 1 oder 2 aus in Abhängigkeit des gelesenen Wertes in Zeile 8 Warum? Ist die Zuweisung zu „a“ in Zeile 3 eine Zuweisung zu dem globalen „a“ von Zeile 1 oder dem Lokalen „a“ von Zeile 5? Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.4-21 Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Vorteile von dynamischen Gültigkeitsbereichen Ein Problem von dynamischen Gültigkeitsbereichen Was sind die Vorteile von dynamischen Gültigkeitsbereichen? 6.4-22 Problem: unvorhersagbare referenzierende Umgebungen Globale Variable max_score wird verwendet von scaled_score() max_score wird umdefiniert in foo() scaled_score() wird von foo() aufgerufen Ahhhhh Es erleichtert die Anpassung von Unterprogrammen Beispiel: begin --nested block print_base: integer := 16 print_integer(n) Die Variable print_base kontrolliert die Basis welche print_integer für die Ausgabe von Zahlen verwendet print_integer kann früh in einem globalen Gültigkeitsbereich mit einem Standardwert belegt werden und kann temporär in einem globalen Gültigkeitsbereich auf eine andere Basis überschrieben werden Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.4-23 Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.4-24 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Vermischte Gültigkeitsbereiche (mixed scoping) Zusammenfassung für Gültigkeitsbereiche Perl unterstützt beide Arten, dynamische wie statische Gültigkeitsbereiche Dynamic Scoping Static Scoping $i = 1; $i = 1; sub f { sub f { local($i) = 2; my($i) = 2; return g(); return g(); } } sub g { return $i; } sub g { return $i; } print g(), f(); print g(), f(); Ausgabe: 1 2 Ausgabe: 1 1 Statische Gültigkeitsbereiche Wird von den meisten, kompilierten Hochsprachen verwendet Bindungen von Namen zu Variablen können zur Compilezeit festgestellt werden Effizient C, C++, Java, Modula, etc. Dynamische Gültigkeitsbereiche Wird von vielen interpretierten Sprachen verwendet Bindungen von Namen zu Variablen können eine Feststellung zur Laufzeit benötigen Flexibel Ursprüngliches LISP, APL, Snobol und Perl Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.4-25 6. Sprachen, Compiler und Theorie Ausblick Namen, Gültigkeitsbereiche und Bindungen (Kapitel 3) Speichermanagement und Implementierung Kontrollfluss (Kapitel 6) Zusammenführung (Bau eines ausführbaren Programms) (Kapitel 9) Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.4-27 Namen, Bindungen und Gültigkeitsbereiche Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.4-26 6. Sprachen, Compiler und Theorie Inhalt Lebensdauer von Objekten Speichermanagement Weiterführende Spracheigenschaften und Bindungen Informatik II SS 2004 Implementierung von statischen Gültigkeitsbereichen für verschachtelte Unterprogramme Implementierung von Unterprogrammreferenzen Teil 6: Sprachen, Compiler und Theorie 5 – Speichermanagement und Implementierung Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Objektlebensdauer (1/3) Objekt wird erzeugt Bindungen zum Objekt werden erzeugt Referenzen zu den Variablen, Unterprogrammen und Typen werden durch Bindungen gemacht Deaktivierung und Reaktivierung von temporär nicht verwendbaren Bindungen Vernichtung von Bindungen Vernichtung des Objekts Lebensdauer des Objekts Bar int b; b = b + 1; ... Deaktiviere Bindung von b zu Bar } Reaktiviere Bindung von b zu Bar } Beispiel: Zeit während der eine Java Referenz ein Objekt im Speicher referenziert Beispiel: Zeit während der ein Objekt im Speicher „lebt“ Anmerkung: Das durch foo() erzeugte Objekt Bar ist nicht unbedingt nach der Rückkehr aus dem Unterprogramm zerstört. Es kann nach der Rückkehr von foo() nicht länger referenziert werden, aber es wird wahrscheinlich erst bei der „garbage collection“ zu einem späteren Zeitpunkt in der Programmausführung zerstört werden. Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Bar b = new Bar(); while(1) { Binde Namen b an Objekt Bar Lebensdauer von Objekten: Zeit zwischen Erzeugung und Vernichtung eines Objekts Beispiel: public void foo (void) { Lebensdauer von Bindungen: Zeit zwischen Erzeugung und Vernichtung einer Bindung Objektlebensdauer (2/3) Schlüsselereignisse während der Lebensdauer eines Objektes 6.5-2 6.5-3 Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.5-4 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Objektlebensdauer (3/3) Statische Allokation Die Lebenszeit eines Objekts korrespondiert mit einem von drei Hauptmechanismen der Speicherallokation Globale Variablen Konstante Variablen welche während der Programmausführung sich nicht ändern sollten Der Programmcode (Unterprogramme, etc.) Vom Compiler produzierte Informationen zum Debuggen Falls eine Sprache rekursive Unterprogrammaufrufe nicht untersützt, dann auch lokale Variablen, Unterprogrammargumente, Rückgabewerte, vom Compiler generierte temporäre Daten, etc. Objekte werden zur Compilezeit oder Laufzeit zu festen Speicherplätzen allokiert Stack Allokation Objekte werden zur Laufzeit wie benötigt allokiert, wobei eine last-in, first-out Ordnung gilt Was wird statisch allokiert? Statische Allokation Beispiel: Lokales Heap Allokation Objekte werden zur Laufzeit in einer beliebigen Reihenfolge allokiert und freigegeben Beispiel: dynamisch allokierte Objekte Beispiel: Statische Klassenvariablen Beispiel: “i=%d\n” ist konstant in printf(“i=%d\n”,i); Ausnahme: dynamisch verbundene Unterprogramme Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.5-5 Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Beispiel: Statische Allokation von Lokalem Allokation über einen Stack (1/2) Keine Rekursion bedeutet das es zu einer Zeit nur eine aktive Instanz bzw. Aktivierung einer Instanz von jedem gegebenen Unterprogramm geben kann Daher können wir für eine einzelne, mögliche Aktivierung für jedes Unterprogramm eines Programms den Speicher statisch reservieren Fall eine Sprache Rekursion erlaubt, dann kann jedes Unterprogramm mehrere simultane Aktivierungen haben Beispiel: public int foo (int n) { int a, b, c; a = random(); b = random(); if (n > 0) { c = foo(n-1); } c = c * (a + b); } Wir können n Aktivierungen von foo() haben und jede benötigt Speicherplatz um die eigenen Kopien von a, b, c, Übergabeargument n und jeden temporären, vom Compiler generierten Wert zu speichern Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.5-6 6.5-7 Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.5-8 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Allokation über einen Stack (2/2) Allokation über einen Heap Die Lösung für das Rekursionsproblem ist die Allokation über einen Stack (stack allocation) Wir wissen wie Code für Globales, Lokales, Konstanten, Temporäres, etc. allokiert wird Was bleibt übrig: Dynamisch allokierte Objekte Warum können diese nicht statisch allokiert werden? Warum können diese nicht auf einem Stack allokiert werden? „Push“ Stack um Platz für Lokales (locals) für Unterprogrammaufrufe zu reservieren Weil sie dynamisch erzeugt werden Ein Objekt, welches dynamisch von einem Unterprogramm erzeugt wurde, könnte die Aktivierung des Unterprogramms überleben „Pop“ Stack um Platz für Lokales (locals) bei der Rückkehr von einem Unterprogramm wieder freizugeben Heaps lösen dieses Problem Beispiel: Objekt wird einem Globalen zugewiesen oder von dem Unterprogramm zurückgegeben Ein Heap ist eine Speicherregion in welcher Speicherblöcke jederzeit willkürlich allokiert und wieder freigegeben werden können Wie sind Heaps implementiert? Wie handhaben wir Anfragen zur Allokation und Freigabe? Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.5-9 Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Heap-Management (1/4) Heap-Management (2/4) Heap Heap Allokationsanforderung Allokationsanforderung Wir bekommen eine Allokationsanforderung für n Bytes vom Speicher Der Heap hat verwendete (dunkle) und freie (helle) Bereiche Wie wählen wir einen freien Bereich um eine Allokationsanforderung zu befriedigen? Einfache Antwort: Finde den ersten freien Bereich welcher groß genug ist der Allokation zu entsprechen (wird first fit genannt) Problem: interne Fragmentierung Wenn wir n Bytes anfordern und der erste, verfügbare freie bereich hat n+k Bytes, dann verschwenden wir k Bytes durch die Allokation im ersten Bereich Eine bessere Antwort (vielleicht): Finde den ersten Bereich, welcher von der Größe am nächsten zur Allokationsanforderung ist (wird best fit genannt) Problem: Zeitaufwendiger Muss alle freie Blöcke finden um den Besten zu finden Es kann immer noch interne Fragmentierung geben, aber hoffentlich weniger als bei first fit Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.5-10 6.5-11 Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.5-12 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Heap-Management (3/4) Heap Heap Allokationsanforderung Allokationsanforderung Ein anderes Problem: externe Fragmentierung Wir bekommen eine Allokationsanforderung für n Bytes und der Heap hat mehr als n Bytes frei, aber Heap-Management (4/4) kein einzelner freier Bereich ist n Bytes groß oder größer Explizit: Wir haben genügend freien Speicher, aber wir können die Allokationsanforderung nicht befriedigen Der Programmierer muss dem Heap-Manager mitteilen dass ein Bereich nicht länger vom Programm verwendet wird Mögliche Lösungen: Wie handhaben wir die Freigabe? Automatisch: Vereinigung von Bereichen: wenn zwei benachbarte Bereiche mit j und k Bytes frei sind, dann vereinige diese zu einem einzelnen, freien Bereich mit j+k Bytes Ist eine Verbesserung, aber kann nicht alle externen Fragmentierungen eliminieren Beispiel: verwende in C free(p) um den Bereich freizugeben auf den p zeigt Das Laufzeitsystem bestimmt welche Objekte auf dem Heap lebendig (sprich immer noch an Namen gebunden sind) oder tot (sprich nicht länger zu irgendeinem Namen gebunden sind) sind und gibt die toten Objekte automatisch frei Wird Garbage Collection (Speicherbereinigung) genannt Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.5-13 Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Speicherbereinigung (Garbage Collection) (1/2) Speicherbereinigung (Garbage Collection) (2/2) Warum verwenden wir Speicherbereinigung? Verhindert: Speicherlöcher (memory leak): Programmierer können die Freigabe von dynamisch allokiertem Speicher vergessen Dangling pointers: Programmierer können ein Objekt freigeben bevor alle Referenzen darauf zerstört sind Warum Speicherbereinigung nicht verwenden? Teuer: Festzustellen welche Objekte lebendig und welche tot sind kostet Zeit Schlecht für Echtzeitsysteme: Können normalerweise nicht garantieren wann die Speicherbereinigung laufen wird und wie lange es dauern wird Schwierig zu implementieren: Das Schreiben einer Speicherbereinigung ist schwierig und macht den Compiler und die Laufzeit einer Sprache komplizierter Sprachdesign: Einige Sprachen wurden nicht mit dem Gedanken an eine Speicherbereinigung entworfen, was es schwierig machte eine Speicherbereinigung zuzufügen Reduzieren den Programmieraufwand und resultiert in zuverlässigeren Programmen Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.5-14 6.5-15 Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.5-16 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Weiterführende Spracheigenschaften und Bindungen Implementierung von statischen Gültigkeitsbereichen (1/2) Wie implementieren wir statische Gültigkeitsbereiche in Sprachen die verschachtelte Unterprogramme erlauben? Wie implementieren wir Referenzen auf Unterprogramme? Problem: void a (void) { int foo1; Von c(), wie referenzieren wir nichtlokale Variablen in a() und b()? void b (void) { int foo2; void c (void) { int foo3 = foo1 + foo2; } void d (void) { } } void e (void) { } } Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.5-17 Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Implementierung von statischen Gültigkeitsbereichen (2/2) Lösung: statische Links Implementierung von Referenzen auf Unterprogramme - 1 Jede Aktivierung eines Unterprogramms speichert einen Zeiger zum nächsten, umgebenden Gültigkeitsbereich in seinem Stackrahmen c() bekommt seine eigenen Lokalen von seinem eigenen Stackrahmen c() bekommt die Nichtlokalen in b() durch die einmalige Dereferenzierung seines statischen Links c() bekommt die Nichtlokalen in a() durch die Dereferenzierung seines statischen Links zu b() und dann b()‘s statischen Link zu a() Große Frage: Wie wenden wir Gültigkeitsbereichsregeln in Sprachen an wo Unterprogramme als Wert übergeben werden können? Zwei Antworten: Flache Bindung (shallow binding): Referenzierende Umgebung wird sofort festgestellt bevor das referenzierte Unterprogramm aufgerufen wird Ist normalerweise der Standard in Sprachen mit dynamischen Gültigkeitsbereichen Tiefe Bindung (deep binding): Referenzierende Umgebung wird festgestellt wenn die Referenz auf das Unterprogramm erzeugt wird Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.5-18 6.5-19 Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.5-20 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Tiefe vs. flache Bindung Flache Bindung (shallow) Implementierung von Referenzen auf Unterprogramme - 2 Nötig für die line_length Zuweisung in print_selected_records um das print_person Unterprogramm zu erreichen Nötig für die threshold Zuweisung im Hauptprogramm um das older_than Unterpogramm zu erreichen Ein Zeiger auf den Code des Unterprogramms und ein Zeiger auf die referenzierende Umgebung des Unterprogramms Warum benötigen wir einen Zeiger auf die referenzierende Umgebung? Tiefe Bindung (deep) Zum Abschluss Wir müssen einen Weg für das Unterprogramm haben mit welcher es Zugriff auf seine nichtlokalen, nichtglobalen Variablen hat Für Sprachen mit dynamischen Gültigkeitsbereichen schließt dies Variablen in den umschließenden, dynamisch verschachtelten Unterprogrammen ein (Unterprogramme die andere aufrufen) Für Sprachen mit statischen Gültigkeitsbereichen schließt dies Variablen in den umschließenden, statisch verschachtelten Unterprogrammen ein Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.5-21 Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Zusammenfassung Ausblick Lebensdauer von Objekten Die Zeitperiode während der ein Name an ein Objekt (Variable, Unterprogramm, etc.) gebunden ist Namen, Gültigkeitsbereiche und Bindungen (Kapitel 3) Speichermanagement und Implementierung Kontrollstrukturen (Kapitel 6) Zusammenführung (Bau eines ausführbaren Programms) (Kapitel 9) Speichermanagement 6.5-22 Statische Allokation, Stacks und Heaps Weiterführende Spracheigenschaften und Bindungen Implementierung von statischen Gültigkeitsbereichen für verschachtelte Unterprogramme Implementierung von Unterprogrammreferenzen Links auf Stackrahmen ablegen Ein Zeiger auf den Code des Unterprogramms und ein Zeiger auf die referenzierende Umgebung des Unterprogramms (flache und tiefe Bindung) Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.5-23 Speichermanagement und Implementierung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.5-24 6. Sprachen, Compiler und Theorie Rückblick Informatik II Lebensdauer von Objekten Speichermanagement Weiterführende Spracheigenschaften und Bindungen SS 2004 Implementierung von statischen Gültigkeitsbereichen für verschachtelte Unterprogramme Implementierung von Unterprogrammreferenzen Teil 6: Sprachen, Compiler und Theorie 6 – Kontrollstrukturen Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Was fehlt uns noch? Kontrollfluss (control flow) Kontrollfluss Das Offensichtliche: Programme machen ihre Arbeit durch ausführen von Berechnungen Kontrollfluss (control flow) spezifiziert die Reihenfolge in welcher Berechnungen ausgeführt werden Sprachen stellen eine große Vielfalt von Kontrollflussmechanismen (control flow mechanism) bereit welche es dem Programmierer erlauben den Kontrollfluss zu spezifizieren Spezifikation der Reihenfolge in welcher Elemente einer höheren Programmiersprache ausgeführt werden Kontrollflussmechanismen Anweisungen (statements), Schleifen, Unterprogrammaufrufe, Rekursion, etc. Übersetzung zu ausführbarem Code Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-2 6.6-3 Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-4 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Kontrollfluss und Kontrollflussmechanismen Wichtige Fragen Iterationen (Wiederholungen) Führt eine Gruppe von Berechnungen mehrmals aus (repeatedly) Eine von sieben Kategorien von Kontrollflussmechanismen Wie implementieren Sprachen Iterationen? Schleifen: C, C++, Java for(i=0;i<N;i++) { do_something(i); Einige Sprachen verwenden andere Mechanismen um das gleiche Ziel zu erreichen Wie lauten die Kategorien von Kontrollflussmechanismen Welche Eigenschaften stellen Sprachen zur Verfügung um die Kontrollflussmechanismen einer gegebenen Kategorie zu implementieren? Wie übersetzen Compiler Kontrollflussmechanismen in ausführbaren Code? Rekursion: ML fun foo i N = } if i < N then do_something i Iteratoren: Icon, CLU foo i + 1 N every do_something(0 to N-1) foo 0 N Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-5 Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Kategorien von Kontrollflussmechanismen Wähle, basierend auf einer Laufzeitbedingung, welche von mehreren Berechnungen ausgeführt werden soll Bestimmt für ein gegebenes Paar von Berechnungen welches zuerst ausgeführt wird Zwei Typen von Berechnungen für welche wir die Reihenfolge betrachten wollen Iteration (iteration) Bestimmt für ein gegebenes Paar von Berechnungen welches zuerst ausgeführt wird Auswahl (selection) Sequentialität (sequencing) Sequentialität (sequencing) Ausdrücke (expressions) Führt eine Gruppe von Berechnungen mehrmals aus Rekursion (recursion) Prozedurale Abstraktion (procedural abstraction) Berechnungen welche die Werte von Variablen ändern Beispiel: Erlaubt es Berechnungen „zur gleichen Zeit“ auszuführen Keine Festlegung (Nondeterminancy) Reihenfolge zwischen Berechnungen wird unspezifiziert gelassen zweistellige Ausdrücke: foo + bar Evaluieren wir zuerst die Unterausdrücke foo oder bar bevor wir die Addition ausführen? Zuweisungen (assignments) Nebenläufigkeit (concurrency) Erlaubt es einer Gruppe von Berechnungen zu bennen, möglicherweise zu parametrisieren und auszuführen wann immer der Name referenziert wird Berechnungen die einen Wert erzeugen Beispiel: Erlaubt es Berechnungen durch sich selbst zu definieren (Allows computations to be defined in terms of themselves) foo = bar + 1; bar = foo + 1; Welche von diesen beiden Zuweisungen evaluieren wir zuerst? Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-6 6.6-7 Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-8 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Was genau ist eine Ausdruck (expression)? Evaluation von Ausdrücken und Seiteneffekte Berechnungen welche einen Wert erzeugen Evaluation von Ausdrücken kann zusätzlich zu den Werten auch Seiteneffekte erzeugen Beispiele: Variablenreferenzen Konstantenreferenzen 1, 2, 3, ‘a’, ‘b’, ‘c’, … Holt den Wert der Variablen aus dem Speicher Operatoren oder Funktionen angewandt auf eine Sammlung von Unterausdrücken Funktionsaufrufe foo(a,b+10) Arithmetische Operationen Ausdrücke ohne Seiteneffekte werden „referentially transparent” genannt foo + bar int foo (void) { a = 10; return a; } … foo() + 20 … Evaluation von „foo()+20“ ergibt den Wert 30 UND als einen Seiteneffekt die Zuweisung des Wertes 10 an die Globale a Solche Ausdrücke können als mathematische Objekte behandelt werden und entsprechend durchdacht Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-9 Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Priorität und Assoziativität Priorität (Precedence) Zwei Wege um die Reihenfolge zu spezifizieren in welcher Unterausdrücke von komplexen Ausdrücken evaluiert werden Prioritätsregel Beispiel: Ähnlich dem mathematischen Konzept mit dem gleichen Namen Spezifiziert ob Operatoren von der gleichen Prioritätsgruppe zur Linken oder Rechten zuerst evaluieren -a * c Wie ist die Reihenfolge der Evaluierung? Spezifiziert wie Operationen gruppieren wenn Klammern abwesend sind Assoziativität (-a) * c oder –(a * c)??? In C, -, unäre Negierung (unary negation), hat höhere Priorität als * (Multiplikation), weshalb die erste Klammerung korrekt ist Prioritätsregeln variieren stark von Sprache zu Sprache Frage: Wie wird in C int i = 0; int *ip = &i; ++*ip++; ausgewertet? ++( ) auf den Wert von *ip++. Der Wert ist der Inhalt der Variablen, auf die ip verweist. Wenn ip abgerufen wurde, wird ip im nachhinein um eins erhöht (Zeigerarithmetik). Daher ist am Ende i = 1 und der Zeiger ip wurde auch um eins erhöht (und zeigt somit höchstwahrscheinlich ins Nirvana, da kein Bezug zu dieser Speicherstelle besteht) Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-10 6.6-11 Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-12 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Assoziativität (Associativity) Die Assoziativität ist in Sprachen einheitlicher Elementare arithmetische Operatoren assoziieren von links nach rechts Operatoren werden von links nach rechts gruppiert und evaluiert Beispiel (Subtraktion): Einige arithmetische Operatoren assoziieren aber von rechts nach links Beispiel (Potenzieren): 9 – 3 – 2 evaluiert eher zu (9 – 3) -2 als 9 - (3 - 2) 4**3**2 evaluiert eher zu 4**(3**2) als (4**3)**2 In Sprachen die Zuweisungen in Ausdrücken erlauben, assoziieren Zuweisungen von rechts nach links Beispiel: a = b = a + c evaluiert zu a = (b = a + c) a + c wird berechnet und b zugewiesen, danach wird b zu a zugewiesen Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-13 Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Arbeiten mit Prioritäten und Assoziativität Mehr zur Evaluierungsordnung von Ausdrücken (1/2) Regeln für Prioritäten und Assoziativität variieren stark von Sprache zu Sprache Prioritäten und Assoziativität können nicht immer eine Evaluierungsreihenfolge festlegen In Pascal: Beispiel: „if A < B und C < D then ...“ Könnte zu „if A < (B and C) < D then...“ evaluiert werden Upps! Leitfaden/Richtlinie: Wenn f(b) die Variablen c oder d modifiziert, dann hängt der Wert des ganzen Ausdruckes davon ab, ob f(b) zuerst ausgeführt wird oder nicht Verbesserung des Codes a – f(b) – c * d Mit Prioritäten ergibt sich a – f(b) – (c * d) und weiter mit Assoziativität (a – f(b)) - (c * d) Aber welches wird zuerst ausgeführt: a-f(b) oder (c*d)? Warum kümmert uns das? Seiteneffekte Im Zweifelsfall lieber Klammern verwenden, speziell wenn jemand oft zwischen verschiedenen Sprachen wechselt! Wir wollen (c*d) zu erst berechnen, so dass wir das berechnete Ergebnis nicht speichern und wiederherstellen müssen bevor und nachdem f(b) aufgerufen wird Nochmals: Im Zweifelsfall Klammern setzen! Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-14 6.6-15 Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-16 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Mehr zur Evaluierungsordnung von Ausdrücken (2/2) Zuweisungen Boolesche Ausdrücke Ausdrücke die eine logische Operation ausführen und entweder zu wahr (true) oder falsch (false) evaluieren Beispiele: (a < b) && (c < d) Wenn (a < b) zu falsch evaluiert wird dann gibt es keinen Bedarf mehr (c <d ) auszuwerten Siehe Regel R1 aus Kapitel 2, Boolesche Algebra und Gatter Weisst den Wert, der durch den Ausdruck „ a +b“ berechnet wird, der Variablen c zu Zuweisungen sind der fundamentale Mechanismus um Seiteneffekte zu erzeugen Beispiel: Beispiel: c = a + b Die Evaluation von booleschen Ausdrücken kann durch die „short circuiting“ Technik optimiert werden a<b a && b || c oder a & b | c Berechnungen welche den Wert einer Variablen beeinflussen Werte die Variablen zugewiesen werden können zukünftige Berechnungen beeinflussen Zuweisungen sind unerlässlich für das imperative Programmiermodel Dies wird wichtig bei Code nach folgendem Muster: if (unwahrscheinliche Bedingung && teure Funktion() ) ... Wir wollen die Auswertung einer teuren Funktion() verhindern, wenn eine unwahrscheinliche Bedingung zu falsch ausgewertet wird Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-17 Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Was genau ist eine Variable? (1/2) Was genau ist eine Variable? (2/2) Die Interpretation eines Variablennamens hängt von dem Kontext ab in welchem er auftritt Zwei Wege um eine Variable zu behandeln Wertemodell Beispiele: d=a Die Referenz zu der Variablen „a“ auf der „rechten Seite“ einer Zuweisung benötigt einen Wert Wird ein r-value-context genannt und das „a“ wird r-value genannt Variablen sind benannte Referenzen für Werte Nur die Interpretation als l-value ist möglich Die Referenz zu der Variablen „a“ auf der „linken Seite“ einer Zuweisung bezieht sich auf a‘s Speicherort Variablen sind benannte Container für Werte Beide Interpretationen als l-value und r-value von Variablen sind möglich Modell wird verwendet von Pascal, Ada, C, etc. Referenzmodell a=b+c 6.6-18 Variablen in einem r-value-context müssen „dereferenziert“ werden um einen Wert zu erzeugen Modell wird verwendet von Clu Wird ein l-value-context genannt und das „a“ wird l-value genannt Wertemodell Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-19 Referenzmodell Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-20 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Zuweisungsfolgen Zuweisungsfolgen (assignment sequencing ) ist in den meisten Sprachen einfach Zuweisungen werden in der Reihenfolge ausgeführt in der sie im Programmtext auftreten Wie initialisieren oder wie weisen wir initiale Werte Variablen zu? Verwende den Zuweisungsoperator um initiale Werte zur Laufzeit zuzuweisen Beispiel: Zuweisungsfolgen: Initialisierung (1/2) a = 10; b = a; Å Es wird zuerst die 10 dem a zugewiesen und danach wird a dem b zugewiesen Probleme: Ausnahmen Zuweisungsausdrücke Beispiel: a = b = a * c Erinnere dich an die Auswertereihenfolge bei Ausdrücken: In den meisten Programmiersprachen gilt die Assiziation von rechts nach links Ineffizienz: Wenn wir den initialen Wert einer Variablen zur Compilezeit kennen, dann kann der Compiler diesen Wert dem Speicher zuweisen ohne eine Initialisierung zur Laufzeit zu benötigen Programmierfehler: Wenn Variablen kein initialer Wert bei der Deklaration zugewiesen wird, dann könnte ein Programm eine Variable verwenden bevor sie irgendeinen (sinnvollen) Wert enthält Initialisierung Kombinationen mit dem Zuweisungsoperator Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-21 Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Zuweisungsfolgen: Initialisierung (2/2) Zuweisungsfolgen: Kombinationen Verwende den Zuweisungsoperator um initiale Werte zur Laufzeit zuzuweisen Lösungen: Sprachen können einen Defaultwert für jede Deklaration eines eingebauten (built-in) Typs spezifizieren Ist fehleranfällig und schwierig zu schreiben, da Text wiederholt wird Kann zu ineffizientem kompilierten Code führen Lösungen: Kombinationen mit dem Zuweisungsoperator Beispiele: Mache es zu einem Laufzeitfehler, wenn eine Variable verwendet wird bevor ihr ein Wert zugewiesen wurde Mache es zu einem Compilerfehler wenn eine Variable verwendet werden könnte bevor ihr ein Wert zugewiesen wurde a = a + 1; b.c[3].d = b.c[3].d * e; Probleme: Statische Wertkontrollen Beispiele: Beispiel für C: static char s[] = “foo” Der Compiler kann den Elementen des Arrays s die Werte zur Compilezeit zuweisen, was uns 4 Zuweisungen zur Laufzeit erspart (eine für jedes Zeichen plus dem NULL (String-)Terminator) siehe auch C++ Konstruktorinitialisierung Dynamische Wertkontrollen Defaultwerte (Standardwerte/Ausgangswerte/...) Gibt es einen effizienteren Weg um komplexe Zuweisungen zu handhaben? Statische Initialisierung: a += 1; b.c[3].d *= e; Zuweisungen werden mit Operatoren für Ausdrücke kombiniert Vermeidet sich wiederholenden Code Erlaubt es dem Compiler auf einfacherem Wege effizienteren Code zu generieren Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-22 6.6-23 Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-24 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Sequentialität: Zusammenfassung Ausdrücke Auswahl (selection) (1/4) Prioritäten und Assoziativität kontrollieren die Reihenfolge Es müssen Seiteneffekte bei Unterausdrücken beachtet werden Logische Ausdrücke können von der short-circuit Auswertung profitieren Wähle, basierend auf einer Laufzeitbedingung, welche von mehreren Berechnungen ausgeführt werden soll Am häufigsten Ausgeführt vom if..then..else Sprachkonstrukt Zuweisungen Beispiel: Die Folge des Auftretens im Programmtext bestimmt die Reihenfolge Zuweisungen zur Compilezeit erlauben die Vermeidung von Zuweisungen zur Laufzeit Zusammengesetzte Zuweisungsoperatoren kombinieren Ausdrucksauswertung und Zuweisung um effizienter sein zu können if ((a < b) && (c < d)) { do_something(); } Wenn beide bedingte Anweisungen „a<b“ und „c<d“ zu wahr ausgewertet werden, dann führe die Berechnung, welche durch das Unterprogramm do_something() referenziert wird, aus Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-25 Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Auswahl (selection) (2/4) Auswahl (selection) (3/4) Short circuiting Angenommen wir haben Code der ähnlich wie dieser aussieht: j := … (* something complicated *) IF j = 1 THEN clause_A ELSIF j IN 2, 7 THEN clause_B ELSIF j in 3..5 THEN clause_C ELSE clause_D END Zur Erinnerung: Kann verwendet werden um unnötige Ausdrucksauswertungen zu verhinden Beispiel: if ( (a < b) && (c < d) ) { do_something(); } Wenn (a < b) falsch ist, dann kann do_something() nicht ausgeführt werden, egal was (c < d) ergibt Siehe Regel R1 aus Kapitel 2, Boolesche Algebra und Gatter Short circuiting wird Code generieren der die Auswertung von (c < d) genauso ausläßt (skipped) wie die Ausführung von do_something(), wenn (a < b) falsch ist Problem: Ist kompliziert zu schreiben Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-26 6.6-27 Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-28 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Auswahl (selection) (4/4) Iteration Lösung: case/switch Befehle Beispiel: CASE … 1: | 2,7: | 3..5: ELSE END Führt eine Gruppe von Berechnungen mehrmals aus Sprachen bieten für Iterationen Schleifenkonstrukte an clause_A clause_B clause_C clause_D Die Schleife wird solange ausgeführt bis sich eine boolesche Bedingung ändert Anmerkung: Ist einfacher zu schreiben und zu verstehen Die Schleife wird für jeden Wert aus einer endlichen Menge (Aufzählung) ausgeführt Logikgesteuerte Schleifen Aufzählungsgesteuerte Schleifen Der imperative Stil der Programmierung favorisiert Schleifen gegenüber Rekursion Iteration und Rekursion können beide verwendet werden um eine Gruppe von Berechnungen wiederholt auszuführen Alle Arten von Schleifen können auf die beiden Konstrukte Selektion (if..then..end) und Sprung (goto) zurückgeführt werden. Wird oft in Zwischensprachen zur Codegenerierung verwendet. Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-29 Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Aufzählungsgesteuerte Schleifen: Probleme (1/3) Aufzählungsgesteuerte Schleifen: Fragen (2/3) Beispiel von FORTRAN I, II und IV Allgemeine Form von Schleifen: do 10 i = 1, 10, 2 ... 10: continue FOR j := first TO last BY step DO … END Die Variable i wird die Indexvariable genannt und nimmt hier die Werte 1, 3, 5, 7, 9 an Die Statements zwischen der ersten und letzte Zeile werden der Schleifenrumpf (loop body) genannt und wird hier für jeden der fünf Werte von i einmal ausgeführt Probleme: Der Schleifenrumpf wird immer mindestens einmal ausgeführt Statements im Schleifenrumpf könnten i ändern und somit würde auch das Verhalten der Schleife verändert werden Goto Statements können in oder aus der Schleife springen Fragen die zu dieser Schleifenart zu stellen sind: 3. Kann j, first und/oder last im Schleifenrumpf verändert werden? Wenn ja, welchen Einfluss hat dies auf die Steuerung? Was passiert wenn first größer als last ist? Welchen Wert hat j wenn die Schleife beendet wurde? 4. Kann die Kontrolle von außerhalb in die Schleife hineinspringen? 1. 2. 6.6-30 Goto-Sprünge in die Schleife hinein, wobei i nicht vernünftig initialisiert wird, werden wahrscheinlich in einem Laufzeitfehler enden Die Schleife wird beendet wenn der Wert von i die obere Grenze überschreitet. Dies könnte einen (unnötigen) arithmetischen Überlauf veranlassen, wenn die obere Grenze in der Nähe des größten, zulässigen Wertes von i liegt Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-31 Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-32 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Aufzählungsgesteuerte Schleifen: Antworten (3/3) Können der Schleifenindex oder die Grenzen verändert werden? Ist bei den meisten Sprachen verboten Algol 68, Pascal, Ada, Fortran 77 und 90, Modula-3 Was passiert wenn first größer als last ist? Iteratoren Die meisten Sprachen werten first und last aus bevor die Schleife ausgeführt wird Falls first größer als last ist, dann wird der Schleifenrumpf niemals ausgeführt Welchen Wert hat der Schleifenindex j am Ende der Schleife? Ist in einigen Sprachen nicht definiert, z.B. Fortran IV oder Pascal In den meisten Sprachen gilt der zuletzt definierte Wert Einige Sprachen machen die Indexvariable zu einer lokalen Variablen der Schleife, weswegen die Variable außerhalb des Gültigkeitsbereiches der Schleife nicht sichtbar ist Beispiel: “every write (1 + upto(‘ ‘, s))” in ICON schreibt jede Position in den String s welcher ein Leerzeichen folgt upto(‘ ‘,s) erzeugt jede Position in s gefolgt von einem Leerzeichen Nein, für die meisten Sprachen Viele Sprachen erlauben aber den Sprung von innen nach außen Viele Sprachen bieten Anweisungen (break; exit; last, etc,) an, die einen frühzeitige Abbruch der Schleife ohne expliziten Sprung erlauben Die “FOR j := first TO last BY step DO … END” Schleife kann auch geschrieben werden als “every j := first to last by step do { … }” in ICON Kann die Kontrolle von außerhalb in die Schleife hineinspringen? Alle bisher betrachteten Schleifen iterieren über eine arithmetische Folge (1,3,5,7) Aber wie iterieren wir über eine frei wählbare Menge von Objekten? Antwort: Iteratoren Iteratoren sind Ausdrücke die mehrere Werte generieren und welche Ihre enthaltende Ausdrücke und Statements bestimmen können um diese mehrmals auszuwerten oder auszuführen Ein anderes Beispiel: “write(10 + 1 to 20)” schreibt 10 + j für jedes j zwischen 1 und 20 1 bis 20 erzeugt die Folge 1 bis einschließlich 20 Siehe auch Standard Template Library (STL) von C++ Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-33 Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Logikgesteuerte Schleifen Rekursion Beispiele: for(Vor-Anweisung; Bedingung; Nach-Anweisung ) Block Nachprüfende Schleife Mit anderen Worten, komplexe Berechnungen werden mit Begriffen von einfacheren Berechnungen ausgedrückt Ähnlich dem Prinzip der mathematischen Induktion Ist die bevorzugte Methode der wiederholenden Programmausführung in funktionalen Sprachen „repeat Anweisung until Bedingung“ „do Anweisung while Bedingung“ Diese Art von Schleife werden oft falsch verwendet und sollten daher vermieden werden (da mindest ein Durchlauf erfolgt!) Eigentlich ist es die meiste Zeit der einzigste Weg um Berechnungen in funktionalen Sprachen wiederholt auszuführen Warum? Prüfung in der Mitte einer Schleife Erlaubt es Berechnungen durch sich selbst zu definieren „while Bedingung do Anweisung“ Die C for-Schleife ist eine vorprüfende, logikgesteuerte Schleife und nicht eine aufzählungsgesteuerte Schleife! Vorprüfende Schleife „loop Anweisung when Bedingung exit Anweisung end“ Weil für die Alternative, nämlich Iteration (Schleifen), die Ausführung von Anweisungen mit Seiteneffekten (wie Zuweisungen) verbunden ist, was in rein funktionalen Sprachen verboten ist Dies ist nicht wirklich eine Einschränkung da Rekursion streng genommen genauso Mächtig ist wie Iteration und umgekehrt Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-34 6.6-35 Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-36 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Rekursion und Iteration Verbesserte Durchführung von Rekursion Informell gesprochen, die Schleife “FOR j := first TO last BY step DO … END” wird durch Rekursion zu: fun loop j step last = if j <= last then … loop j + step step last fun loop j step last = if j <= last then … loop j + step step last Gegebene Schleife Der rekursive Aufruf der Schleife „loop“ ist die letzte ausgeführte Berechnung der Funktion „loop“ Geschickte Compiler werden Endrekursionen durch eine Schleife ersetzen Es gibt mit der rekursiven Emulation von Iteration aber ein Problem: sie ist langsam! Wird Endrekursion (tail recursion) genannt Argumente für den Aufruf der Endrekursion werden ausgewertet und in den entsprechenden Lokalen platziert und ein Sprung zurück zum Anfang der Funktion wird gemacht anstatt einen rekursiven Aufruf zu machen Dies kann zu einer signifikanten Steigerung der Leistung führen Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-37 Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Evaluationskonzepte von Funktionsargumenten Ausblick Wie werden Argumente für Funktionen ausgewertet? Die Argumente einer Funktion werden ausgewertet bevor die Funktion die Steuerung erhält? Wird Applicative-Order Evaluation (eager evaluation, call-by-value) bezeichnet Ist der Standard in den meisten Sprachen Die Argumente einer Funktion werden nur dann ausgewertet, wenn sie auch benötigt werden? 6.6-38 Namen, Gültigkeitsbereiche und Bindungen (Kapitel 3) Speichermanagement und Implementierung Kontrollfluss (Kapitel 6) Zusammenführung (Bau eines ausführbaren Programms) (Kapitel 9) Wird Normal-Order Evaluation (lazy evaluation‚ call by need, delayed evaluation) bezeichnet Kann zu einer besseren Leistung führen wenn an eine Funktion übergebene Argumente manchmal nicht gebraucht werden Beispiel: void foo (int a, int b, int c) { if (a + b < N) { return c; } else { return a + b; } foo(a,b,expensive_function()) In einigen Fällen wird „c“ nicht benötigt, und der Wert von c könnte von einerteuer zu berechnenden Funktion bestimmt werden Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-39 Kontrollstrukturen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.6-40 6. Sprachen, Compiler und Theorie Der Kompilationsprozess (-phasen) Informatik II Scanner (lexikalische Analyse) Lese Programm und konvertiere Zeichenstrom in Marken (tokens). Theorie: Reguläre Ausdrücke, endlicher Automat Parser (syntaktische Analyse) Lese Tokenstrom und generiere Ableitungsbaum (parse tree). Theorie: Kontextfreie Grammatiken, Kellerautomat SS 2004 Traversiere Parserbaum, überprüfe nicht-syntaktische Regeln. Semantische Analyse Teil 6: Sprachen, Compiler und Theorie Zwischencodegenerierung Traversiere Parserbaum noch mal, gebe Zwischencode aus. Optimierung Untersuche Zwischencode, versuche ihn zu verbessern. Zielcodegenerierung Übersetze Zwischencode in Assembler-/Maschinencode Optimierung Maschinenebene Untersuche Maschinencode, versuche ihn zu verbessern. 7 – Zusammenführung Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik Zusammenführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Die Organisation eines typischen Compilers Schreiben des Programms Frontend Führt Operationen aus welche von der zu kompilierenden Sprache abhängen und nicht von der Zielmaschine Backend Führt Operationen aus welche etwas Wissen über die Zielmaschine haben müssen Ein kleines Programm, geschrieben in Pascal, welches den größten gemeinsamen Teiler (ggT) von zwei Ganzzahlen berechnet program gcd (input, output); var i, j : integer; begin read(i,j); while i <> j do if i > j then i := i – j else j :- j – i; writeln(i) end. Zusammenführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.7-2 6.7-3 Zusammenführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.7-4 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Vom Text des Quellcodes zu den Tokens Von den Tokens zum Ableitungsbaum Programmquelltext Programmquelltext program gcd (input, output); var i, j : integer; begin read(i,j); while i <> j do if i > j then i := i – j else j :- j – i; writeln(i) end. Tokens program gcd ( input , output ) ; var i , j : integer ; begin read ( i , j ) ; while i <> j do if i Ableitungsbaum und Symboltabelle program gcd (input, output); var i, j : integer; begin read(i,j); while i <> j do if i > j then i := i – j else j :- j – i; writeln(i) end. … Zusammenführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Zusammenführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.7-5 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Zwischencode Nicht optimierende Compiler Der Ableitungsbaum wird zu einem Kontrollflussgraphen konvertiert Die Knoten des Kontrollflussgraphen sind grundlegende Blöcke und enthalten eine pseudoAssemblersprache Die Kontrolle kann einen grundlegenden Block nur vom Anfang betreten und kann in nur am Ende wieder verlassen Der Kontrollflussgraph wird zum Zielcode der Zielmaschine konvertiert Der Zielcode ist eine andere pseudo-Assemblersprache Der Kontrollfluss wird ausführlich gemacht durch: Bezeichnen der Anfänge der grundlegenden Blöcke Konvertieren der Kontrollflusskanten zu Sprung- (branch), Aufruf(call) und Rückkehrinstruktionen Virtuelle Register werden durch reale Register ersetzt Zusammenführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.7-6 6.7-7 Zusammenführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.7-8 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Zielcode Der Zielcode ist beinahe Assemblercode Vom Zielcode zum Assemblercode Normalerweise einfach: Der Kontrollfluss ist ausführlich Der Code referenziert nur reale Registernamen Anweisungen zum Speicherreservieren sind vorhanden r10 := r8 + r9 -> add $10, $8, $9 r10 := r8 + 0x12 -> addi $10, $8, 0x12 Manchmal auch zu einer Folge von Instruktionen erweitert: r14 := 0x12345abc -> lui $14, 0x1234 ori $14, 0x5abc Zielcode ist einfach zu Assemblercode zu übersetzen Zusammenführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Zusammenführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.7-9 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Binden (linking) Optimierende Compiler Beim Binden werden mehrere durch den Assembler erzeugte Objektdateien zu einer einzelnen, ausführbaren Datei kombiniert, welche durch ein Betriebssystem lauffähig ist Optimierung ist ein komplexer Prozess Verbessert die Qualität des generierten Codes auf Kosten von zusätzlicher Compilezeit Optimierer sind schwierig zu schreiben und einige Optimierungen verbessern das fertige Programm vielleicht nicht Praxistip: Die jeweilige Einstellung der Optimierungstiefe eines Compilers genau auf korrekte Funktion kontrollieren, da diese öfters fehleranfällig sind (lieber erstmal auf Optimierung verzichten und erst am Ende austesten!) Zusammenführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.7-10 6.7-11 Zusammenführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.7-12 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Peephole-Optimierung Sehe dir den Zielcode an, wenige Instruktionen gleichzeitig, und versuche einfache Verbesserungen zu machen Versucht kurze, sub-optimale Folgen von Instruktionen zu finden und ersetzt diese Sequenzen mit einer „besseren“ Sequenz Sub-Optimale Sequenzen werden durch Muster (patterns) spezifiziert Peephole-Optimierungstypen (1/3) Redundante load/store Instruktionen beseitigen r2 i r3 r4 Meistens heuristische Methoden — Es gibt keinen Weg um zu überprüfen ob das Ersetzen eines sub-optimalen Musters tatsächlich das endgültige Programm verbessern wird := := := := r1 + 5 r2 i r3 x 3 wird zu r2 := r1 + 5 i := r2 r4 := r2 x 3 Konstantenfaltung (constant folding) r2 := 3 x 2 Einfach und ziemlich wirksam wird zu r2 := 6 Entfernung gemeinsamer Teilausdrücke (common subexpression elimination) r2 := r1 x r5 r2 := r2 + r3 r3 := r1 x r5 wird zu r4 := r1 x r5 r2 := r4 + r3 r3 := r4 Zusammenführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.7-13 Zusammenführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Peephole-Optimierungstypen (2/3) Algebraische Vereinfachung (strength reduction) r2 := 4 wird zu r3 := r1 + 4 und r2 := … r3 := r1 + 4 r2 := … r1 := r2 x 2 r1 := r2 / 2 wird zu r1 := r2 + r2 r1 := r2 >> 1 oder r1 := r2 << 1 und auch r2 := 4 r3 := r1 + r2 r3 := *r3 Peephole-Optimierungstypen (3/3) Fortpflanzung von Konstanten (constant propagation) r2 := 4 r3 := r1 + r2 r2 := … 6.7-14 wird zu r3 := r1 + 4 r3 := *r3 und r3 := *(r1+4) Fortpflanzung von Zuweisungen (copy propagation) r2 := r1 r3 := r1 + r2 r2 := 5 r2 := r1 wird zu r3 := r1 + r1 r2 := 5 und r3 := r1 + r1 r2 := 5 Beseitigung von unnötigen Instruktionen r1 := r1 + 0 r1 := r1 - 0 r1 := r1 * 1 wird zu Zusammenführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.7-15 (wird komplett beseitigt) Zusammenführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.7-16 6. Sprachen, Compiler und Theorie 6. Sprachen, Compiler und Theorie Komplexe Optimierungen Es ist für den Optimierer erforderlich den Datenfluss zwischen Registern und Speicher zu „verstehen“ Wird durch Datenflussanalyse (data flow analysis) bestimmt Beispiel für komplexe Optimierung Schleifeninvarianter Code (Loop Invariant Code Motion) Beispiel: Finde die Variablenmenge welche einen grundlegenden Block auf dem Weg zu einem anderen Block „durchfliesst“ und von diesem anderen Block verwendet wird (lebendige Variablen) Ist wichtig für Optimierungen welche datenverändernde Instruktionen einfügen, löschen oder bewegen Der ursprüngliche Programmdatenfluss kann nicht geändert werden! Bewege Berechnungen, dessen Werte während allen Schleifeniterationen gleich bleiben (invariant sind), aus der Schleife raus L1: r1 := *(sp + 100) r2 := *r1 … r3 := r2 < 100 if r3 goto L1 L0: r1 := *(sp + 100) L1: r2 := *r1 … r3 := r2 < 100 if r3 goto L1 Es ist für den Optimierer erforderlich die Struktur des Kontrollflussgraphen (control flow graph) zu „verstehen“ Wird durch Kontrollflussanalyse bestimmt Ist wichtig für die Leistungsoptimierung von Schleifen oder schleifenähnlichen Strukturen in dem Kontrollflussgraphen Zusammenführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.7-17 6. Sprachen, Compiler und Theorie Zusammenführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.7-18 6. Sprachen, Compiler und Theorie Was haben Sie in diesem Kapitel gelernt? Ausblick Compilerbau (Kapitel 6) Programmiersprachen sind Abstraktionsmechanismen, welche: ein Rahmenwerk zum Lösen von Problemen und erzeugen neuer Abstraktionen bieten Schirmen den Programmierer von niederen Detailebenen (low-level details) der Zielmaschine (Assemblersprache, Verbinden (linken), etc.) ab Compiler sind komplexe Programme welche eine höhere Programmiersprache in eine Assemblersprache umwandeln um danach ausgeführt zu werden Compilerprogrammierer handhaben die Komplexität des Kompilationsprozesses durch: Betriebssysteme (Kapitel 5) Maschinenorientierte Programmierung (Kapitel 4) von-Neumann-Rechner (Kapitel 3) aufteilen des Compilers in unterschiedliche Phasen verwenden, ausgehend von der Spezifikation, eine Theorie für den Bau von Compilerkomponenten Speicher Zahlen und logische Schaltungen (Kapitel 2) Kommunikation (Kapitel 7) von-Neumann-Rechner Zusammenführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.7-19 Zusammenführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 6.7-20 7. Telematik Literatur (1/5) Foliensätze (aus denen ev. teilweise Folien übernommen wurden): Universität Braunschweig, Prof. Dr. S. Fischer: http://www.ibr.cs.tu-bs.de/lehre/ss04/bsn/ (Foliensatz dient als Grundlage dieses Kapitels) J. F. Kurose & K. W. Ross: „Computernetze: Ein Top-Down-Ansatz mit Schwerpunkt Internet“, Pearson Studium (Addison-Wesley), ISBN 38273-7017-5, 2002 (Top-Down Ansatz nach Schichtenmodell) Stallings: „Data & Computer Communications“, Prentice Hall, ISBN 013-086388-2: http://williamstallings.com/DCC6e.html Informatik II SS 2004 Teil 7: Telematik (Computernetzwerke) 1 - Grundlagen Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7. Telematik Literatur (2/5) Literatur (3/5) Bitte achten Sie immer auf die neusten Ausgaben der Bücher!!! Grundlagen/Allgemeines Details zu TCP/IP J. F. Kurose & K. W. Ross: „Computernetze: Ein Top-Down-Ansatz mit Schwerpunkt Internet“, Pearson Studium (Addison-Wesley), ISBN 38273-7017-5, 2002 (Top-Down Ansatz nach Schichtenmodell) G. Krüger & D. Reschke: „Lehr- und Übungsbuch Telematik --- Netze – Dienste – Protokolle“, Fachbuchverlag Leipzig (Carl-Hanser), 2. Auflage, ISBN 3-446-22073-9, 2002 (Gutes Lehrbuch, wegen kompakte Darstellung) A. S. Tanenbaum: „Computernetzwerke“, Pearson Studium (PrenticeHall), 4. überarb. Auflage, ISBN 3.8273-7046-9, 2003 (Bottom-Up Ansatz nach Schichtenmodell) Douglas E. Comer: „Computernetzwerke und Internets mit InternetAnwendungen“, Pearson Studium (Prentice-Hall), 3. überarb. Auflage, ISBN 3-8273-7023-X, 2002 (Sehr auf Internet-Technologien fixiert) Rechenberg & Pomberger: „Informatik-Handbuch“, Hanser Verlag, ISBN 3-446-21842-4 W. Richard Stevens: „TCP/IP Illustrated Volume 1-3“, Pearson Education (Addison-Wesley), W. Richard Stevens: „TCP/IP Illustrated, The Protocols“, Pearson Education, Volume 1, ISBN 0-201-63346-9 W. Richard Stevens: „TCP/IP Illustrated, The Implementation“, Pearson Education, Volume 2, ISBN 0-201-63354-X W. Richard Stevens: „TCP/IP Illustrated, TCP for Transactions, HTTP, NNTP, and the UNIX Domain Protocols“, Pearson Education, Volume 3, ISBN 0-201-63495-3 Douglas Comer: „Internetworking with TCP/IP“ Volume 1: „Principles, Protocols and Architecture“, ISBN 0130183806 Volume 2: „ANSI C Version: Design, Implementation, and Internals“, ISBN 0139738436 Volume 3: „Client-Server Programming and Applications, Linux/Posix Sockets Version“, ISBN 0130320714 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-2 7.1-3 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-4 7. Telematik 7. Telematik Literatur (4/5) Literatur (5/5) Programmierung W. Richard Stevens: „UNIX Network Programming“, Prentice-Hall, 2. Auflage Weiterführende Themen Mobilkommunikation W. R. Stevens: „UNIX Network Programming --- Networking APIs: Sockets and XTI“, Prentice-Hall, Volume 1, 2. Auflage, ISBN 0-13-490012-x W. R. Stevens: „UNIX Network Programming --- Interprocess Communication“, Prentice-Hall, Volume 2, 2. Auflage, ISBN 0-13-081081-9 Jochen Schiller: „Mobilkommunikation“ Pearson Studium (Addison-Wesley), 2. überarb. Auflage, ISBN 3-8273-7060-4, 2003 Verteilte Systeme G. Coulouris: „Verteilte Systeme – Konzepte und Design“, Pearson Studium (Addison-Wesley), 3. überarb. Auflage, ISBN 3-8273-7022-1, 2002 A. Tanenbaum: „Verteilte Systeme - Grundlagen und Paradigmen“, Pearsin Studium (Prentice-Hall), ISBN 3-8273-7057-4, 2003 Kombination Kommunikation und Kooperation (Kommunikation und Datenbanken) s. Abeck, P.C. Lockemann, J. Schiller, J. Seitz: „Verteilte Informationssysteme – Integration von Datenübertragungstechnik und Datenbanktechnik“, dpunkt Verlag, ISBN 3-89864-188-0, 2003 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-5 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7. Telematik Inhalte Überblick über Grundlagen Grundlagen von Netzen Grundlegende Protokollmechanismen Lokale Netze und Zwischensysteme 1. 2. 3. Ethernet Token Ring WLAN Zwischensysteme 4. 5. 6. 7. Internet-Technologien (Schicht 3 und 4) 7.1-6 Grundlagen Übertragungsmedien Übertragungssysteme Netztopologien und Medienzuteilung Dienste und Protokolle ISO/OSI Referenzmodell Internet-Schichtenmodell TCP/UDP/IP DNS HTTP SMTP Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-7 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-8 7. Telematik 7. Telematik Grundlagen Kommunikationsnetze stellen eine allgegenwärtige Schlüsseltechnologie dar und bilden die Grundlage der kommenden Informationsgesellschaft. Geschichte der Kommunikation Datenkommunikation: Telekommunikation: Telematik = TELEkommunikation und InforMATIK (Simon Nora und Alain Minc in Ihrem Bericht an den französischen Präsidenten, 1978) Fackeltelegraphie (5. Jhdt. v. Chr. Griechenland) drahtgebundene Telegraphie: Morse (ca. 1840) Unterseekabel London - New York (1866) Telefon Edison (1877) öffentliche Telefonnetze (ab 1880) ARPANET (vorläufer des heutigen Internets) (ab 1969) lokale Netze (z.B. Ethernet ab 1976) World-Wide-Web (ca. 1990) Æ Begriffe Austausch von Informationen (z.B. Sprache, Video) zwischen Menschen. Derzeit Integration von Datenkommunikation und Telekommunikation. Computernetze Computernetzwerke Rechnernetze Kommunikationsnetze Aufgabengebiete Austausch von Daten zwischen datenverarbeitenden Geräten. Historisch: Verflechtung von Rechnern und Telekommunikationsmitteln Andere Begriffe Praktische und Angewandet Informatik (Teilweise auch technische Informatik) Technische Infrastruktur verteilter Systeme (Netze) Netz-Dienste und darauf aufbauende Anwendungen Regeln für Nachrichtenaustausch (Protokolle) Werkzeuge zum Entwickeln verteilter Anwendungen Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-9 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7. Telematik Struktur eines Datennetzes Zusammenhang mit BS Netzwerkbetriebssystem: Endsystem 7.1-10 Zwischensystem Betriebssystem, das um Kommunikationskomponenten erweitert wurde Verteiltes Betriebssystem: Betriebssystem, das intern auf Kommunikationskomponenten aufgebaut ist und die Struktur und Komplexität des Kommunikationssystems verbirgt (Transparenz). Netz Basiskomponenten: Endsysteme Zwischensysteme Kommunikationsverbindungen zwischen direkt benachbarten Systemen Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-11 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-12 7. Telematik 7. Telematik Ziele der Netznutzung (1/2) Lastverbund: Ziel: Austausch logisch zusammenhängender Daten zwischen örtlich getrennten Systemen. Methode: Zugriff auf entfernte Dateien oder verteilte Datenbanken. Ziel: Bereitstellung spezieller Funktionen an verschiedenen Orten. Methode: Einsatz von Spezialrechnern (Transputer, Superrechner). Kapazitätsverbund: Ziel: Übertragung von Informationen an verschiedene räumlich getrennte Orte. Methode: Einsatz von Briefdiensten oder verteilten Informationssystemen. Ziel: Schnellere und billigere Wartung verschiedener Rechner. Methode: Zentrale Störungserkennung und -behebung. Funktionsverbund: Datenverbund: Wartungsverbund: Ziel: Verringerte Antwortzeiten. Methode: Aufteilung einer komplexen Aufgabe in kleinere Teilaufgaben. Kommunikationsverbund: Ziel: Gleichmäßige Auslastung verschiedener Ressourcen. Methode: Aufteilung anfallender Spitzenlasten auf mehrere Rechner. Leistungsverbund: Ziele der Netznutzung (2/2) Ziel: Effiziente Nutzung der verfügbaren Ressourcen. Methode: Versendung von Aufgaben an verschiedene Rechner und gemeinsame Nutzung spezieller Hard- und Software. Die Rechnernetztypen sind nicht alle scharf voneinander abzugrenzen. Normalerweise werden mit einem Rechnernetz mehrere Verbünde gleichzeitig realisiert. Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-13 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7. Telematik Übertragungsmedien (1/3) Übertragungsmedien (2/3) Verdrillte Kupferkabel (twisted pair): Preiswerte Technologie für niedrige Frequenzen. Anfällig gegen Störungen (elektromagnetische Einstrahlungen) Koaxialkabel (coaxial cable): Technologie für hohe bis sehr hohe Frequenzen. Besteht aus einem zentralen Leiter, der von einem peripheren Leiter ummantelt ist. Geringe Anfälligkeit gegen elektromagnetische Einstrahlungen. Bei hohen Frequenzen aufgrund der Bauform kaum Energieverluste (geringe Dämpfung) Lichtwellenleiter (fibre optics): Übertragung höchster Frequenzen. Monomodefaser können Licht über nahezu 100 km ohne Verstärkung übertragen. Leistungsfähiger und billiger als Koaxialkabel, obwohl die Anschlusstechnologie etwas komplizierter ist. STP: STP:Shielded ShieldedTwisted Twisted Pair Pair Multimode graded index Coaxial Coaxial Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-14 7.1-15 Single mode Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Grundlagen 7.1-16 7. Telematik 7. Telematik Übertragungsmedien (3/3) Richtfunk (line-of-sight): Frage: wie werden die Daten an einem Netzknoten weitergeleitet? Zwei Techniken bekannt Leitungsvermittlung (circuit switched network): Moduliert das Signal auf eine elektromagnetische Welle (Träger). Einsatz in Gebieten, in denen eine Verkabelung nicht praktikabel ist. Zwischen Sender und Empfänger muss eine Sichtverbindung bestehen. Fehlerhäufigkeit hängt von den Sichtbedingungen (Wetter) ab. Radiowellen (radio): Vermittlungstechniken (1/2) Ausstrahlung von elektromagnetischen Wellen in einem festgelegten Gebiet (Zelle). Mobilität der Empfänger und Sender möglich. Geringe Bandbreite und hohe Fehleranfälligkeit. Satelliten (satellites): Vom Sender zum Empfänger wird eine durchgängige physikalische Leitung etabliert. Eine Kommunikation findet in folgenden Phasen statt: Lange Übertragungszeiten (ca. 200 ms) zwischen Sender und Empfänger. Sehr hohe Frequenzen und Bandbreiten durch Mikrowellen und Multiplexing. Übertragung über geostationäre Satelliten, die sich mit der Erde drehen. 1. 2. 3. Verbindungsaufbau Datenaustausch Verbindungsabbau Nach dem Verbindungsaufbau steht die Bandbreite dem Sender vollständig zur Verfügung (reservierte Bandbreite). Beispiel: Telefonverbindungen, DATEX-L Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-17 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7. Telematik Vermittlungstechniken (2/2) Kommunikationsformen (1/2) Paket- bzw. Speichervermittlung (packet switched network): Nachrichten werden in kleine Einheiten, sogenannte Pakete (packets), zerlegt. Vom Sender existiert lediglich eine durchgängige Leitung zur nächsten Relais-Station. Relais-Stationen nehmen Pakete entgegen und leiten sie in Richtung des Ziels weiter. Relais-Stationen müssen die Wege zu den einzelnen Zielen kennen (Wegewahl). Die Bandbreite zwischen Relais kann besser genutzt, aber auch überverplant werden. Beispiel: DATEX-P, Internet Verbindungsorientierte Kommunikation (connection oriented, CO): Jede Kommunikation erfordert zunächst den Aufbau einer Verbindung zum Kommunikationspartner (Signalisierung). Verbindungsorientierte Kommunikation kann auf Leitungsvermittlungsund Speichervermittlungssystemen realisiert werden. Die Adresse des Empfängers wird nur beim Verbindungsaufbau angegeben. Ausfälle von Netzkomponenten führen zum (bemerkbaren) Verbindungsabbruch. Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-18 7.1-19 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-20 7. Telematik 7. Telematik Kommunikationsformen (2/2) Matrix der Kommunikationsformen Verbindungslose Kommunikation (connectionless, CL): Datenaustausch kann jederzeit ohne speziellen Verbindungsaufbau beginnen. Verbindungslose Kommunikation kann auf Leitungs- und Speichervermittlungssystemen realisiert werden. Jede versendete Nachricht muss vollständige Adressinformationen besitzen. Ausfälle und Störungen können zu unbemerkten Verlusten von Nachrichten führen. Leitungsvermittlung PaketVermittlung Verbindungs -los IP über feste ATM-Strecken UDP über IP im Internet; NFS-Anwendung Verbindungs -orientiert Telefon TCP über IP im Internet; Email; FTP Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-21 7. Telematik 7. Telematik Primäres Signal x(t) Primäres Signal y(t) Umformer Signal x´(t) Rückformer Signal y´(t) Physikalisches PhysikalischesMedium Medium Störquelle z´(t) Das Medium überbrückt die räumliche Distanz zwischen Quelle und Senke. Zahlreiche Störeinflüsse auf das Medium sind möglich. Signal y´(t) ist vom zeitlichen Verlauf von x´(t) und der Störgröße z´(t) bestimmt. Nachrichtentechnischer Kanal Besteht aus Umformer, Rückformer, physikalischem Medium und Störquelle. Vom inneren Aufbau wird abstrahiert; interessant ist, welche Formen von Primärsignalen mit welcher Leitung übertragen werden können. z.B. Rundfunk, analoges Telefon wertkontinuierliche und zeitdiskrete Signale Medium nachrichtentechnischer Kanal Ein nachrichtentechnischer Kanal kann nach der Klasse der unterstützten primären Signale klassifiziert werden. wertkontinuierliche und zeitkontinuierliche Signale z.B. Steuerung von technischen Prozessen wertdiskrete Signale (Grundlage der digitalen Übertragung) 7.1-23 diskret s t s t bei zeitkontinuierlichen Digitalsignalen können die Signalwerte zu beliebigen Zeitpunkten wechseln, unter Beachtung eines Mindestzeitintervalls zwischen Signaländerungen bei zeitdiskreten Digitalsignalen ist in der Regel ein isochrones Zeitraster für die Signaländerung vorgesehen Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 zeitkontinuierlich kontinuierlich Senke Wert- Quelle Signalklassen diskret Übertragungssysteme 7.1-22 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-24 7. Telematik 7. Telematik Serielle und parallele Übertragung Serielle Übertragung Ein digitales Signal x(t) wird durch eine zeitliche Folge von Signalschritten gebildet. Aufeinanderfolgende Schritte eines Signals werden zu Gruppen zusammengefasst Wörter: kleinere Gruppen (z.B. 7,8) einer festen Anzahl von Schritten Blöcke: größere Gruppen einer eventuell variablen Anzahl von Schritten 0 1 0 0 0 0 0 1 Signal Zwischen Quelle und Senke werden mehrere Verbindungen parallel geschaltet. Bei einer Wortlänge von 8 Bit und 8 Verbindungen kann ein ganzes Wort in einem Schritt übertragen werden. Wird bei kürzeren Entfernungen (z.B. Anschluss von Druckern) eingesetzt. Signalschritt Taktraster Block Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-25 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik übertragbare Datenmenge pro Zeiteinheit Ethernet 10 Mbit/s, Fast Ethernet 100 Mbit/s Zeit, die zur Übertragung eines Bits benötigt wird (ca. 1 Mikrosekunde bei 1 Mbit/s) 1. Bit letztes Bit A Übertragungszeit Transferzeit Signallaufzeit Round-TripZeit Stationen teilen sich ein Medium gute Ausfallsicherheit Liniennetz B einfache Wegwahl geringe Ausfallsicherheit hoher Aufwand für die Steuerung Bus Zeit, um eine Nachricht von der Quelle zur Senke zu übertragen einfache Wegwahl geringe Ausfallsicherheit Ring Verzögerung (delay) Stern Bitbreite (bitwidth) Netztopologien und Medienzuteilung Bandbreite (bandwidth) 7.1-26 7. Telematik Parameter eines Kanals Bitstellen werden in festgelegter Reihenfolge seriell übertragen. Bei vorhandener Wortstruktur reihen sich die Worte seriell aneinander. Typisch bei Übertragungen über größere Distanzen. Parallelübertragung Zeit 0 1 0 0 0 0 0 1 Seriellübertragung Schrittgruppe z.B. Wort/Zeichen 10000010 Parallele Übertragung Zeichen Signalschritte konzeptionell einfach mittlere Ausfallsicherheit Position im Netz beeinflusst Übertragungszeiten Zeit Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-27 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-28 7. Telematik 7. Telematik Netztopologien Vermaschtes Netz keine Vermittlung notwendig gute Ausfallsicherheit n (n-1) / 2 Verbindungen bei n Knoten Backbone-Netze Netzwerkkategorien Kopplung von Netzen zu größeren Einheiten meist hierarchische Struktur Ausfallsicherheit direkt abhängig von der Zuverlässigkeit der Verbindungselemente passt sich gut in bestehende hierarchische Organisationsformen ein PAN = Personal Area Network LAN = Local Area Network WLAN = Wireless Local Area Network MAN = Metropolitan Area Network WAN = Wide Area Network GAN = Global Area Network Die logische Struktur eines Netzes kann sich von der physikalischen Struktur unterscheiden (z.B. logischer Ring auf einem physikalischen Bus). Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-29 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7. Telematik Formen der Medienzuteilung Frequenzmultiplex Benutzen mehrere Systeme ein physikalisches Medium gemeinsam, dann muss das Medium nach einem wohldefinierten Verfahren den Systemen zur Datenübertragung zugeteilt werden. Breitbandige Übergangswege ermöglichen die Unterbringung vieler Übertragungskanäle in unterschiedlichen Frequenzbereichen (Frequenzbändern). Medienzuteilung Zeitmultiplex vorgegebenes Raster ... Multiplexed link 7.1-30 Verfügbare Bandbreite wird in eine Reihe - nicht notwendigerweise gleichbreite - Frequenzbänder eingeteilt. Jedem Frequenzband wird ein Übertragungskanal zugeordnet. Beispiel: Kabelnetze zur Übertragung von Fernseh- und Radioprogrammen Frequenzmultiplex nach Bedarf Medium bandwidth dezentral 6 5 4 3 2 1 zentral ... konkurrierend Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 geordnet Grundlagen 7.1-31 Time Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-32 7. Telematik 7. Telematik Zeitmultiplex Dienste und Protokolle Beim Zeitmultiplex wird kurzzeitig die gesamte Übertragungskapazität einem Sender zur Verfügung gestellt. Ein starres Zeitmultiplex wird als time division multiplexing (TDM) bezeichnet. Beim bedarfsgesteuerten Zeitmultiplex werden die Zeitscheiben je nach Bedarf vergeben. Bedarfsgesteuertes Zeitmultiplex wird auch als statistisches Zeitmultiplex (statistical time multiplexing, STDM) bezeichnet. Medium bandwidth Time Die von einem Netz bereitgestellten Funktionen werden abstrakt als Dienst bezeichnet. Die einzelnen elementaren Funktionen werden als Dienstprimitive bezeichnet. Typische ISO/OSI Dienste sind: 123456 123456 123456 123456 123456 Request: Anforderung eines Dienstes Indication: Anzeige, daß ein Dienst angefordert wurde Response: Reaktion des Dienstes auf eine Dienstanzeige Confirmation: Bestätigung, daß ein angeforderter Dienst erbracht wurde Die Schnittstellen, über die die Dienstprimitive in Anspruch genommen werden können, werden als Dienstzugangspunkte (service access point, SAP) bezeichnet. Die Dienste werden von sogenannten Instanzen (entities) erbracht. Die Regeln, nach denen sich Instanzen verhalten und mit anderen Instanzen interagieren, werden als Protokoll bezeichnet. Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-33 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7. Telematik Kommunikation in Schichten Chinesischer Philosoph Dolmetscher A Chinesisch Englisch Techniker TechnikerAA erkennt einzelne Bucherkennt einzelne Buchstaben und „morst“ diese staben und „morst“ diese 7.1-34 Diskussion über den Existentialismus Uninterpretierte Sätze ohne Kenntnis des Existentialismus Uninterpretierte Zeichen in korrekter Reihenfolge Darstellung und Schichtung von Diensten Dienstnutzer Spanischer Philosoph Dienstnutzer Dienstschnittstelle N Dienstzugangpunkt N N-Instanz 1 Dolmetscher DolmetscherBB Spanisch Spanisch Englisch Englisch N-Instanz 2 Dienstschnittstelle N-1 (N-1)-Instanz 1 Schicht N Dienstzugangpunkt N-1 (N-1)-Instanz 2 Schicht N-1 Techniker TechnikerBB Die Bildung von Schichten ist ein grundlegendes Prinzip zur Strukturierung von Kommunikationssystemen. Dienste einer Schicht dürfen immer nur Dienstprimitive von Diensten in direkt benachbarten Schichten in Anspruch nehmen. Netz Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-35 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-36 7. Telematik 7. Telematik Protokolldateneinheit (1/2) Protokolldateneinheit (2/2) Eine Protokolldateneinheit (PDU, Protokol Data Unit) ist eine Informationseinheit, die zwischen Partnerinstanzen in verschiedenen Stationen als Teil des Protokolls ausgetauscht wird. Als Dienstdateneinheit (SDU, Service Data Unit) werden Schnittstellendaten bezeichnet, die von einer Schicht an die nächst niedrige oder umgekehrt übertragen werden. N-Schicht Folgenummer Adressen N-PDU SAP SAP SCHNITTSTELLE (N-1)-SDU (N-1)-SDU PCI PCI (N-1)-PDU PKI (N-1)-Protokoll(N-1)-Header dateneinheit (N-1)- Benutzerdaten (N-1)-Trailer Nachricht der N-Schicht Fehlerprüfung FRAGMENTIERUNG N-PDU (N-1)-Schicht N-BenutzerN-Header daten N-Trailer PKI Beispiele: KEINE FRAGMENTIERUNG PKI PKI N-Protokolldateneinheit 1-35 PCI (N-1)-PDU PDU = Protokolldateneinheit PCI = Protokollkontrollinformation (N-1)-PDU SDU = Dienstdateneinheit SAP = Dienstzugangspunkt Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-37 7. Telematik 7.1-38 7. Telematik Weg-Zeit-Diagramme Dienstnutzer Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Weg-Zeit-Diagramme: Beispiel Diensterbringer Dienstnutzer Diensterbringer request indication Benutzer A request indication response confirmation Verbindungsaufbauphase Bestätigter Dienst Unbestätigter Dienst Verbindungsanforderung Verbindungsbestätigung (Verbindung hergestellt) Daten Datentransferphase Weg-Zeit-Diagramme verdeutlichen den zeitlichen und räumlichen Zusammenhang zwischen Dienstprimitiven. Die vertikale Achse ist die Zeitachse, die horizontale Achse gibt den räumlichen Abstand an zwischen Dienstnutzer und Diensterbringer an. Werden Dienstaufrufe (requests) grundsätzlich (positiv oder negativ) bestätigt, so handelt es sich um einem bestätigten Dienst (confirmed service). Werden Dienstaufrufe (requests) nicht bestätigt, so handelt es sich um einen unbestätigten Dienst (unconfirmed service). Daten Daten Auslösungsanforderungen Benutzer B Verbindungsanzeige (ankommender Ruf) Antwort auf Verbindungswunsch (Annahme des Anrufes) Daten Daten Daten Auslösungsanzeige Verbindungsabbauphase Auslösungsbestätigung Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Schicht 7.1-39 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-40 7. Telematik 7. Telematik Darstellung und Spezifikation von Protokollen Das ISO/OSI-Referenzmodell Anwendungsprozeß Darstellung von Protokollen mit endlichen Automaten: XReq XConf XRes XReq; YReq Warten Endsystem XInd YInd; XInd Ruhe YConf; XConf Application Process Warten Endsystem Anwendung Application Darstellung Presentation Steuerung Session XRes; YRes Transport YReq YConf YRes YInd Vermittlung Network Network Sicherung Data Link Data Link Bitübertragung Physical Physical Spezifikationsmöglichkeiten für Protokolle: Transport Transitsystem natürliche Sprache Formale Modelle (erweiterte endliche Automaten, attributierte Grammatiken, Petrinetze, Prozessalgebra, temporale Logik) Spezifikationssprachen (LOTOS, Estelle, SDL) Medium Media Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-41 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7. Telematik ISO/OSI-Transportsystem (1/2) ISO/OSI-Transportsystem (2/2) Bitübertragungsschicht (physical layer): Übertragung einer Folge von Bits über ein Medium Festlegung von Eigenschaften des benutzten Mediums Darstellung der Werte 0 und 1 (z.B. Spannungswerte) Synchronisation zwischen Sender und Empfänger Festlegungen von Steckernormen Vermittlungsschicht (network layer): 7.1-42 Bestimmung eines Weges durch das Netz Multiplexen von Endsystemverbindungen über eine Zwischenverbindung Fehlererkennung und -behebung zwischen Endsystemen Flusssteuerung zwischen Endsystemen Aufteilung eines Pakets in Rahmen Sicherungsschicht (data link layer): Übertragung einer Bitfolge in Rahmen (frames) Datenübertragung zwischen Systemen, die ein gemeinsames Medium besitzen Erkennung und Behebung von Übertragungsfehlern Flusssteuerung zur Behandlung von Überlastsituationen Realisierung meist in Hardware auf Adapterkarten Transportschicht (transport layer): Ende-zu-Ende Kommunikationskanäle zwischen Applikationen Virtuelle Verbindungen über verbindungslose Datagrammdienste Fehlererkennung und -behebung zwischen Applikationen Flusssteuerung zwischen Applikationen Verschiedene Dienstgüten möglich Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-43 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-44 7. Telematik 7. Telematik ISO/OSI-Anwendersystem Sitzungsschicht (session layer): Synchronisation und Koordination von kommunizierenden Prozessen Dialogsteuerung (Sicherungspunkte) Darstellungsschicht (presentation layer): ISO/OSI-Standardisierung Transformation und Anpassung von Datendarstellungen Serialisierung von Datenstrukturen zum Zweck der Übertragung Datenkompression Entwurfsvorschlag (draft proposal, DP) Entwurf (draft international standard, DIS) Standard (internation standard, IS). Anwendungsschicht (application layer): Die International Organization for Standardization (ISO) ist eine freiwillige, nicht per Staatsvertrag geregelte Organisation zur internationalen Normung. Die Mitglieder der ISO setzen sich aus den Normungsinstituten der einzelnen Mitgliedsländer zusammen (ANSI für die USA und DIN für Deutschland). Die Standards der ISO werden in ca. 200 technischen Komitees (TCs) durch deren Unterkomitees (SCs) und Arbeitsgruppen (WGs) erstellt. ISO-Standardisierungsmodell: Bereitstellung von grundlegenden Diensten, die direkt von beliebigen Anwendungen benutzt werden können: Dateitransfer, virtuelle Terminals, Namensraumverwaltung, Datenbankzugriff, Netzwerkmanagement, elektronische Nachrichtensysteme, Prozess- und Maschinensteuerung, ... Die jeweiligen Übergänge bedürfen Mehrheiten (Abstimmungen) und können sich mehrmals zyklisch wiederholen. Die Open Sytems Interconnection (OSI) beschreibt den Teil der Standards, der sich mit der Kommunikation in offenen (Kommunikations-) Systemen befasst. Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-45 7. Telematik 7.1-46 7. Telematik Das Internet-Schichtenmodell Internet-Standardisierung Anwendungsprozeß Application Process Endsystem Endsystem Applikation Applikation Application Application Transport Transport Router Internet (IP) Internet (IP) Internet (IP) Subnetzwerk Subnetzwerk Subnetwork Subnetwork Subnetwork Subnetwork Medium Die Standardisierung der Internet-Protokolle wird durch die Internet Engineering Task Force (IETF) durchgeführt. Kontrolliert wird die IETF durch die Internet Engineerung Steering Group (IESG). Die IETF ist eine offene Organisation, bei der prinzipiell jeder mitarbeiten kann. (Es gibt keine Mitgliedschaftspflicht bzw. -gebühren oder dergleichen.) Internet-Standards werden in Arbeitsgruppen (working groups, WGs) ausgearbeitet, die wiederum in verschiedenen Bereichen (areas) organisiert sind. IETF-Standardisierungsmodell: Vorgeschlagener Standard (proposed standard) Vorläufiger Standard (draft standard) Internet Standard (full standard) Media Die jeweiligen Übergänge erfordern "rough consensus" und Implementationen. Zyklische Wiederholungen sind begrenzt möglich. Die IETF befasst sich ausschließlich mit Standards rund um das Internet. Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-47 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-48 7. Telematik 7. Telematik Eigenschaften der Modelle (1/2) Eigenschaften der Modelle (2/2) Das Internet-Protokoll (IP) stellt sehr geringe Anforderungen an ein Subnetzprotokoll (Übertragung eines Pakets an eine Zieladresse). Die Internet-Architektur stammt aus der Computerwelt und hat entsprechend geeignete Programmierschnittstellen. Fast alle Netzwerktechnologien (nicht nur der Schicht 2) können als Subnetzwerk benutzt werden. Die ISO/OSI-Architektur stammt aus der Telekommunikationswelt und ist mehr auf die Bedürfnisse der klassischen Telekommunikation zugeschnitten. Das Internet-Protokoll (IP) schafft eine gemeinsame Basis, die leicht an neue Netzwerktechnologien angepasst werden kann. Andererseits ist der Adressraum der derzeitigen IP Version 4 (IPv4) zu klein, um dem Bedarf nach Adressen zu befriedigen, weshalb eine Umstellung zur Version 6 (IPv6) erfolgen muss. Implementationen von Internet-Protokollen sind meist frei zugänglich, was deren Verbreitung und Verbesserung in kurzen Zeitintervallen ermöglicht. ISO/OSI-Protokolle werden von formalen Standardisierungsgremien entworfen, was sehr zeitaufwändig ist und oftmals zu komplexen Resultaten führt. Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-49 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7.1-50 7. Telematik Standardisierung: Zusammenfassung Inhalte UN ISO DIN ANSI SNV ITU ITU -T Grundlagen von Netzen Grundlegende Protokollmechanismen Lokale Netze und Zwischensysteme (Schicht 2 und 3) Internet-Technologien (Schicht 3 und 4) ITU -R TCP/IP Ethernet Token Ring - DoD IETF IEEE Token Bus ETSI GSM Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-51 Grundlagen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.1-52 7. Telematik Protokollmechanismen die alle Schichten betreffen Informatik II SS 2004 Teil 7: Telematik (Computernetzwerke) 2 – Grundlegende Protokollmechanismen Namensgebung (Naming): Identifikation von Objekten/Ressourcen Segmentieren und Blocken Verbindungen und Multiplexen Synchronisation: Kontrolle in einer Umgebung mit unvorhersehbarer Verzögerung und Fehlverhalten Fehlerüberwachung: Fehlererkennung und -behebung Flusskontrolle/Staukontrolle Prioritäten Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7. Telematik Namensgebung/Naming (1/2) Namen werden auf Adressen abgebildet (Binding) Der Name einer Ressource zeigt an, was wir suchen, eine Adresse zeigt an, wo wir es finden, und eine Route sagt uns, wie man dort hingelangt. Bezeichner werden in allen Schichten benötigt, für z.B. Namensgebung/Naming (2/2) Identifizieren (Bezeichnen) ist das Herzstück eines Rechensystementwurfs, sowohl verteilt als auch zentralisiert 7.2-2 Schutz Fehlerüberwachung Ressourcenverwaltung Lokalisieren und gemeinsames Nutzen von Ressourcen statisch: zur Übersetzungszeit eines Programms dynamisch: zur Ausführungszeit (Dynamisches Binding wird oft mit Nameservern gemacht) Eine logische Sichtweise (System ist Raum von benannten Objekten) gilt gegenüber einer physikalischen Sichtweise (System ist Raum von Hoststationen, die Objekte enthalten) als Ideal. Bezeichner können sehr unterschiedlich sein: von Namen hoher Ebenen bis Adressen niedriger Ebenen von benutzerorientierten Namen bis zu maschinenorientierten Adressen Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-3 Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-4 7. Telematik 7. Telematik Segmentieren und Reassemblieren Blocken und Entblocken Manche Benutzerdaten sind zu umfangreich, um als eine einzige Nachricht übertragen zu werden. Einteilung in kleinere Pakete. Interne Puffer in den verschiedenen Schichten haben endliche Größe extrem lange Nachrichten monopolisieren gemeinsam genutzte Übertragungswege und andere Ressourcen Aufbrechen einer langen Nachricht in kleinere Pakete erlaubt parallele Benutzung von Mehrfachverbindungen (load sharing) bei hoher Fehlerrate kann bessere Nutzleistung mit kürzeren Nachrichten erreicht werden. Die meisten Netze unterstützen nur Nachrichten bis zu einer bestimmten maximalen Länge (siehe Maximum Transmission Unit, MTU) Auch zu kleine Nachrichten sind ungünstig. Der Verwaltungsaufwand muss in vernünftigem Verhältnis zu den Nutzdaten stehen. Benutzernachrichten Kommunikationsnachricht Lange Benutzernachricht Kommunikationsnachrichten Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-5 Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7. Telematik Verbindungen Multiplexen und Demultiplexen Kommunikationsverbindungen werden benötigt, um mehrere Nachrichten von Quelle zu Ziel zu transferieren. Verbindungen bewahren Zustandsinformation zwecks: 7.2-6 Wiederaufsetzen nach Fehlern Übergabe in der richtigen Reihenfolge Segmentieren/Reassemblieren und Blocken/Entblocken Eine Verbindung ist ein Nachrichtenstrom zwischen zwei kommunizierenden Instanzen. Multiplexing (bündeln) verschiedener logischer Verbindungen auf eine physikalische. Aufwärts-Multiplexen (Multiplexen/Demultiplexen): Verbindungen einer höheren Schicht auf eine Verbindung einer niedrigeren Schicht. Abwärts-Multiplexen (Teilen/Vereinigen): Eine Verbindung einer höheren Schicht auf mehrere Verbindungen einer niedrigeren Schicht. (N+1)-Schicht (N)-Verbindungen (N)-Verbindungen N-Schicht (N-1)-Schicht (N-1)-Verbindungen (N-1)-Verbindungen Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-7 Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-8 7. Telematik 7. Telematik Fehlerüberwachung (2/2) Hauptaufgabe der Protokolle: zuverlässige Kommunikation Drei Aspekte: Erkennung von Fehlern Korrektur von Fehlern Wiederaufsetzen nach Fehlern (Recovery) Es gibt auch nichtbehebbare Fehler. Dann müssen ev. mehrere Schichten reinitialisiert werden. Beispiele: Fehlererkennung und –korrektur in Schicht 2 Typische Probleme: Fehlerüberwachung (2/2) Informationsverfälschung (Bitfehler) Verlust von Nachrichten Verdopplung von Nachrichten Nachrichten in falscher Reihenfolge Typische Lösungen: Die meisten Protokolle beheben Fehler durch automatische Wiederholung der Übertragung. Fehler in der Nachricht: Einfügen redundanter Information Reihenfolgefehler: Vergabe einer Folgenummer Fehlererkennung durch redundante Information, an der der Empfänger eine Verfälschung erkennt. Parity Check: Es werden Bitfolgen betrachtet (zumeist Bytes). Ist die Quersumme gerade, wird an die Bitfolge eine 0 angefügt (gerade Parität) andernfalls eine 1 (ungerade Parität) Block Check: Eine Folge von Bytes wird als Block aufgefaßt. Es werden Zeilen- und Spaltenquersummen gebildet und zum Block hinzugefügt. Cyclic Redundancy Checksum (CRC): Am häufigsten verwendete Methode (z.B. HDLC, SDLC). Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-9 Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7. Telematik Flusskontrolle 7.2-10 Synchronisation (1/3) Überwachung des Informationsflusses zwischen Sender und Empfänger, um zu verhindern, dass der Sender den Empfänger überflutet. z.B. Fensterflusskontrolle Für die Kommunikation zwischen zwei Prozessen über ein Netzwerk muss Synchronisation auf verschiedenen Ebenen sichergestellt sein: Bit-Synchronisation: Fenster = 5 Fenster = 4 7 0 6 7 1 5 2 4 Folgenummer = 1 Bestätigungsnummer = 5 3 Letzte empfangene Bestätigung Sender 1 5 2 4 Byte-Synchronisation: 0 6 3 Austausch von Zeichen meist in 8-Bit-Einheiten (1 Byte) Empfänger muss Anfang und Ende eines Byte bestimmen können Block-Synchronisation: Letzte quittierte Nachricht Empfänger muss Anfang und Dauer eines Signalelements bestimmen. Abtasten der Leitung in bestimmten Abständen Daten werden in Blöcken zu mehreren Bytes zusammengefasst (z.B. eine Nachricht) Die Bedeutung eines Bytes hängt von der Position im Block ab Empfänger Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-11 Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-12 7. Telematik 7. Telematik Synchronisation (2/3) Synchronisation (3/3) Beispiel für Blocksnchronisation: Zugang zum Übertragungsmedium: Syn.-Zeichen Start Kopf Benutzerdaten Blockprüfung Ende SYN.-ZEICHEN START KOPF BENUTZERDATEN BLOCKPRÜFUNG ENDE - Das Bitmuster, um Bytessynchronisation zu erreichen - Kennung für den Beginn einer Nachricht - Protokollkontrollinformation - Information der nächsthöheren Ebene - Fehlererkennung bzw. Korrekturinformation - Kennung für das Ende einer Nachricht Protokollsynchronisation: In High Level Data Link Control (HDLC) sieht der Synchronisationsblock folgendermaßen aus: 01111110 bei gemeinsamer Nutzung ein Benutzer darf nur zu einer bestimmten Zeit Zugriff haben der Zugriff muss fair sein kommunizierende Partnerinstanzen haben Zustandsinformation (z.B. Sequenznummer) nach Fehlern und Neustart muss Zustandsinformation konsistent gemacht werden Prozesssynchronisation: HDLC (bzw. eine Abwandlungen davon) ist z.B. das Schicht2-Protokoll von ISDN (Integrated Services Digital Network), X.25 und PPP (Point to Point Protocol) Synchronisation bei Zugriff auf gemeinsam genutzte Ressource (z.B. Daten) Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-13 Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7. Telematik Prioritäten statisch sein und vom Nachrichteninhalt abhängig sein normaler Datentransfer beschleunigter Datentransfer Multimedia, Unterbrechung anzeigen, Protokollsteuerung, Alarm in Prozesssteuerungsanwendungen Nachrichtenverlust Ungewollte Duplizierung einer Nachricht Eintreffen einer Phantom-Nachricht Abweichungen von der Empfangsreihenfolge Zwei mögliche Grundprinzipien: kurze Nachrichten, niedrige Verzögerung, können andere Überholen geht an Flusskontrollmechanismen vorbei Bitfehler auf dem Übertragungsweg Zusammenhangs-Besonderheiten: typische Anwendungen Nachrichtenverfälschungen: Eigenschaften beschleunigten Datentransfers Die meisten Protokolle kennen zwei Prioritätsebenen Fehlererkennung und Fehlerbehebung im Detail Nachrichten eine Priorität zuweisen, um sie im Wettbewerb mit anderen zu bevorzugen Eine Prioritätszuweisung kann Übertragung von redundanten Informationen zur Fehlerkorrektur (error correction) beim Empfänger. Übertragung von Kontrollparametern und Sicherungsinformationen zur Fehlererkennung (error detection) beim Empfänger und Wiederholung der fehlerhaft übertragenen Informationen (retransmission). Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-14 7.2-15 Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-16 7. Telematik 7. Telematik Erkennung von Bitfehlern (1/3) Erkennung von Bitfehlern (2/3) Verschiedene Verfahren zur Sicherung einzelner Zeichen und Zeichengruppen Paritätsbits: Selbstkorrigierende Codes: Jedes zu übertragende Zeichen wird um ein zusätzliches Paritätsbit ergänzt. Bei gerader (ungerader) Parität wird die Anzahl der Einsen durch das Paritätsbit auf eine gerade (ungerade) Zahl ergänzt. Es wird jede ungerade Anzahl von Fehlern erkannt. Die verwendete Codierung wird so gewählt, dass eine Verfälschung eines Bits an einer beliebigen Position zu einer unzulässigen Zeichenkodierung führt. Die Hamming-Distanz ist die Anzahl der Bitpositionen, an denen die Codierungen unterschiedliche Werte aufweisen, d (1011001, 0011100) = 3. Zur Erkennung und Korrektur von 1-Bit-Fehlern bei einer Wortlänge von b Bits sind r redundante Prüfbits erforderlich, wobei die Ungleichung (b+r+1) <= 2r erfüllt sein muß. Für 7-Bit-ASCII sind also wegen 7+r+1 <= 2r mindestens r = 4 Prüfbits erforderlich. Die Erkennung und Korrektur von Fehlerbündeln kann mit HammingCodes nur durch hohen Aufwand (große Anzahl von Prüfbits) erfolgen. Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-17 Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7. Telematik Erkennung von Bitfehlern (3/3) Bitfehlererkennung mit CRC Blockweise Sicherung: Zyklische Blocksicherung (cyclic redundancy check, CRC): Anstatt einzelner Zeichen werden längere Bitfolgen (Blöcke) gesichert. Am Ende des Blocks werden redundante Zeichen eingefügt, die zur Absicherung des gesamten Blocks dienen. Zwischen Sender und Empfänger wird verabredet, wie diese Blockprüfzeichen zu berechnen sind. Liegt ein Fehler vor, so veranlasst der Empfänger die erneute Übertragung des fehlerhaften Blocks. Syn.-Zeichen Start Kopf Benutzerdaten Blockprüfung Ende SYN.-ZEICHEN START KOPF BENUTZERDATEN BLOCKPRÜFUNG ENDE 7.2-18 - Das Bitmuster, um Bytessynchronisation zu erreichen - Kennung für den Beginn einer Nachricht - Protokollkontrollinformation - Information der nächsthöheren Ebene - Fehlererkennung bzw. Korrekturinformation - Kennung für das Ende einer Nachricht Eine zu sendende Bitfolge bnbn-1...b1b0 wird als Polynom B(x)=bnxn+bn-1xn-1+...+b1x+b0 über dem Körper {0,1} dargestellt. Für den Körper gilt 0+0=1+1=0, 1+0=0+1=1 und 1*1 = 1, 0*0=0*1=1*0=0. Ein Generatorpolynom G(x)=grxr+...+g1x+g0 mit r < n und gr = 1 und g0 = 1 wird zwischen Sender und Empfänger vereinbart. Übertragen wird U(x)=xr * B(x) - t(x), wobei t(x) = (xr B(x)/G(x)) mod G(x) ist. Der Empfänger prüft, ob die Zeichenfolge durch G(x) ohne Rest teilbar ist. Wenn es einen Rest gibt, wurde die Nachricht verfälscht. Effiziente Implementation mit Schieberegistern möglich. Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-19 Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-20 7. Telematik 7. Telematik Bitfehlererkennung mit CRC CRC: Beispiel Algorithmus: Beispiel: 101100 = x5+x3+x2 Beispiel: t(x) = (x5+x3+x2)/(x2+1) = x3+1 Rest 1 Subtrahiere den Rest von xrB(x) (mod-2 Subtraktion) Beispiel für die zyklische Blocksicherung: Berechne t(x) = xrB(x) / G(x) (mod-2 Division) Habe G(x) den Grad r. Hänge r 0-Bits an die Nachricht an. Sie enthält dann n+r Bits und entspricht dem Polynom xrB(x) Beispiel: U(x) = x5+x3+x2-1 = x5+x3+x2+1 = 101101 CRC: Berechung des Beispiels Das ist die zu übertragende Nachricht. Der Empfänger berechnet nun U(x)/G(x). Wenn es einen Rest gibt, wurde die Nachricht verfälscht. Bitfolge: 1101011011 Generatorpolynom G(x) = x4+x+1 B(x) = x9+x8+x6+x4+x3+x+1 t(x) = Rest von x13+x12+x10+x8+x7+x5+x4 : x4+x+1 = x3+x2+x Übertragene Bitfolge: 11010110111110 1 1 0 1 0 1 1 0 1 1 0 0 0 0 = 1 0 0 1 1 x ... Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-21 Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7. Telematik Bitfehlererkennung mit CRC Generatorpolynome Welche Fehler werden erkannt? Fehlerkorrektur geschieht in der Regel durch wiederholte Übertragung einer verfälschten Nachricht. Eine Nachricht muss dabei stets quittiert werden. Trifft für eine Nachricht keine Quittung ein ist ein Fehler aufgetreten. Generatorpolynome: CRC-16 CRC-CCITT CRC-32 HEC Es werden nur solche Fehler nicht erkannt, die Polynomen entsprechen, die durch G(x) teilbar sind. Die Qualität des Verfahrens hängt also von der Wahl von G(x) ab. x16+x15+x2+1 x16+x12+x5+1 x32+x26+x23+x22+x16+x12+x11+ x10+x8+x7+x5+x4+x2+x+1 x8+x2+x+1 Eigenschaften von CRC-16: CRC-16 entdeckt alle Einzel- und Doppelfehler, alle Fehler mit ungerader Bitzahl, alle Fehlerbündel mit 16 oder weniger Bits und über 99% aller Fehlerbündel mit 17 oder mehr Bits. Fehler, die durch G(x) ohne Rest teilbar sind, können nicht erkannt werden. HDLC: G(x) = CRC-CCITT ETHERNET: G(x) = CRC-32 Wahrscheinlichkeit für Nichterkennung eines Fehlers bei ETHERNET: ca. 10-18 Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-22 7.2-23 Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-24 7. Telematik 7. Telematik Flusskontrolle im Detail: Sequenznummern Alle Datenblöcke werden durch aufsteigende Sequenznummern nummeriert, die zusätzlich übertragen werden. Der Empfänger überprüft die empfangene Sequenznummer und kann dadurch Abweichungen von der Sendereihenfolge (Überholungen, Vertauschungen, Duplikate) erkennen. Der Verlust einer Nachricht kann vermutet werden, wenn die Differenz der Sequenzzahlen der zuletzt empfangenen Nachricht zu einer noch ausstehenden so groß ist, dass eine Verzögerung unwahrscheinlich ist. Problem: Sequenznummern können sehr schnell groß werden. Warum? Quittungen und Sendewiederholung Sender Empfänger 1 1 2 3 4 3 5 4 6 5 7 4 8 8 Sender 1 1 ACK1 ACK1 2 über den korrekten Empfang einer Nachricht zu informieren (positive Quittung, acknowledgement, ACK), oder um den Absender NACK2 über den Entdeckung eines Fehlers zu 2 unterrichten (negative Quittung, negative acknowledgement, NACK). Problem: Quittungen können verloren gehen, was zu einer Verklemmung führen kann. 2 (Fehler) NACK2 2 ACK2 ACK2 Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-25 Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik Der Verlust von Nachrichten oder Quittungen kann nicht erkannt werden, wenn der Sender auf die Quittung des letzten Blocks wartet, bevor er den nächsten sendet, oder wenn der Empfänger nicht das Ende der Übertragung kennt. Eine Zeitüberwachung veranlasst automatisch die Wiederholung der letzten Nachricht bzw. Quittung, falls in einem bestimmten Zeitintervall keine Quittung bzw. die folgende Nachricht eingetroffen ist. Problem: Die Zeitüberwachung muss sich an die aktuelle Verzögerung im Netz anpassen, um einerseits unnötige Wiederholungen zu vermeiden und andererseits Verluste möglichst schnell zu entdecken. Fluss- und Staukontrolle Sender Empfänger n n ACKn n n ACKn ACKn n+1 n+1 n+1 ACKn+1 ACKn+1 Sequenznummern werden modulo n vergeben (Nummernkreis), damit kleine Felder fester Größe 1 zur Übertragung der Sequenznummern benutzt werden können. 2 Zur Erhöhung der Effizienz darf der Sender ACK1 mehrere Nachrichten senden, bevor er auf 3 Quittungen warten muss. ACK2 Die maximale Anzahl der unbestätigten 4 Nachrichten ist durch die Größe des ACK 3 Nummernkreises bestimmt. 5 Beim Verlust einer Nachricht werden nach Ablauf des Zeitintervalls die unbestätigten Nachrichten wiederholt. 4 Der Empfänger kann ebenfalls einen Timer ACK4 benutzen, um Quittungen zu wiederholen. 5 Problem: was ist wenn der Empfänger langsam 6 ist?? ACK5 Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-26 7. Telematik Zeitüberwachung Empfänger 6 7 Zur Fehlerbehebung muss der Sender über einen erkannten Fehler informiert werden, damit der Sender eine Sendewiederholung veranlassen kann. Quittungen sind ein Nachrichtenaustausch in Gegenrichtung, um den Sender 7.2-27 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Sender Empfänger 1 ACK1 2 ACK2 3 ACK3 4 ACK4 ACK4 4 5 ACK5 6 Protokollmechanismen 7.2-28 7. Telematik 7. Telematik Flusskontrolle (flow control) Stop-and-Wait Problem: Sender und Empfänger arbeiten im allgemeinen mit unterschiedlicher Geschwindigkeit. Kann der Sender schneller Daten versenden als der Empfänger sie empfangen und verarbeiten kann, so können Puffer überlaufen und dadurch Verluste hervorgerufen werden. Ziel: Bei der stop-and-wait Methode darf eine Nachricht erst dann abgesendet werden, wenn die bereits gesendeten Nachrichten positiv quittiert worden sind. Einfaches Verfahren, leicht zu implementieren Geringe Anforderungen an die Pufferungsfähigkeiten der Protokollinstanzen. Geringer Durchsatz, insbesondere bei langen Transferzeitdauern und puffernden Medien. Gleichmäßiger Datenaustausch zwischen Sender und Empfänger. Automatische Anpassung der Geschwindigkeit, wenn sich die Verarbeitungskapazität beim Sender oder Empfänger erhöht oder verringert. Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-29 Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7. Telematik Kreditmethode und Fenstertechnik Flusskontrolle Kreditmethode: Der Empfänger teilt dem Sender einen Kreditrahmen n mit. Der Sender darf maximal n Nachrichten ohne positive Quittung verschicken. Der Empfänger muss eine Zeitüberwachung einführen und ebenfalls Sequenznummern für Kredite benutzen, um verlorene Kredit-Nachrichten behandeln zu können. Fenstertechnik: Sender und Empfänger einigen sich auf ein Fenster innerhalb des Wertebereichs der Sequenznummern (Flusskontrollfenster, flow control window). Nach dem Verbindungsaufbau besitzt der Sender implizit Kredite für so viele Datenblöcke wie durch die Fenstergröße angegeben ist. Durch positive Quittungen wird das Fenster beim Sender verschoben. Zusätzlich kann die Größe des Fensters dynamisch angepasst werden. Fenster = 5 7 0 6 Sender 7 1 5 2 4 Folgenummer = 1 Bestätigungsnummer = 5 3 Letzte empfangene Bestätigung Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-30 7.2-31 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Fenster = 4 0 6 1 5 2 4 Empfänger 3 Letzte quittierte Nachricht Protokollmechanismen 7.2-32 7. Telematik 7. Telematik Fenstertechnik bei TCP UserAA User Staukontrolle TCPAA TCP TCPBB TCP ESTABLISHED Send(data[500]) Send(data[500]) Send(data[300]) Send(data[300]) Send(data[400]) Send(data[400]) Waiting for credit Stop Retrans Timer Start Persist Timer ACK,ack=s1, ack=s1,win=1000 win=1000 ACK, seq=s1,data[500] data[500] seq=s1, UserBB User 500 500 500 500 seq=s1+800,data[200] data[200] seq=s1+800, 500 500 300 200 200 300 500 500 300 200 200 300 ACK,ack=s1+1000, ack=s1+1000,win=0 win=0 ACK, ACK,ack=s1+1000, ack=s1+1000,win=800 win=800 ACK, Problem: ESTABLISHED Receiver buffer 1000 1000 seq=s1+500,data[300] data[300] seq=s1+500, ACK,ack=s1+500, ack=s1+500,win=500 win=500 ACK, ACK,ack=s1+800, ack=s1+800,win=200 win=200 ACK, Die Fenstertechnik oder die Kreditmethode regeln den Datenfluss zwischen Sender und Empfänger (end-to-end flow control). LAN IP WAN (bottleneck) 800 800 200 200 Data(seq) (bottleneck) Update transmitter Data(seq) Ack data, indicate Update transmitter window Timeout due to dropped Ack data, indicate receiver window window receiver window packets or excessive delay ACK(ack sequence number, window size) ACK(ack sequence number, window size) seq=s1+1000,data[200] data[200] seq=s1+1000, ACK,ack=s1+1200, ack=s1+1200,win=600 win=600 ACK, 200200 200 200 600 600 Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-33 Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik Inhalte Reservierung von Puffern und Bandbreite: Vor dem eigentlichen Datenaustausch werden auf dem Weg vom Sender zum Empfänger ausreichend Puffer und Bandbreite reserviert. Grundlagen von Netzen Grundlegende Protokollmechanismen Lokale Netze und Zwischensysteme (Schicht 2 und 3) Verwerfen von Nachrichten: 7.2-34 7. Telematik Techniken der Staukontrolle LAN Deliver(data[800]) Deliver(data[800]) Stop Persist Timer Innerhalb des Netzes können trotzdem zwischen Netzknoten Überlastsituationen (Staus, congestion) auftreten. Nachrichten werden von überlasteten Netzknoten einfach verworfen. Es ist dann die Aufgabe von Sender und Empfänger, die verlorene Nachricht zu wiederholen. Ethernet Token Ring Zwischensysteme Internet-Technologien (Schicht 3 und 4) Choke-Pakete: Ein überlasteter Knoten schickt spezielle Nachrichten an die Sender, um die Überlastung anzuzeigen und den Sender um eine Reduktion der Sendegeschwindigkeit zu bitten. Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-35 Protokollmechanismen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.2-36 7. Telematik Überblick LANs (Direktverbindungsnetze) Informatik II SS 2004 Eigenschaften und Standards IEEE 802.3 (Ethernet) IEEE 802.11 (Wireless LAN) IEEE 802.5 (Token Ring) Zwischensysteme Teil 7: Telematik (Computernetzwerke) 3 – Lokale Netze und Zwischensysteme Hub/Repeater Switch/Brücke Router Gateway Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7. Telematik Eigenschaften lokaler Netze LAN-Entwicklung Kennzeichen lokaler Netze (Local Area Networks, LANs): Netze zur bitseriellen Übertragung von Daten zwischen unabhängigen, miteinander verbundenen Komponenten. Unter rechtlicher Kontrolle des Benutzers/Betreibers und meist auf den Bereich innerhalb eines Grundstücks beschränkt. Maximaler Durchmesser des Netzes im Bereich von wenigen Kilometern. Relativ hohe Geschwindigkeit (10 Mbps - 1 Gbps). Leichter, kostengünstiger Anschluss für Geräte unterschiedlichster Art (z.B. PCs, Workstation, Drucker, Messgeräte, ...) Direktverbindungsnetze Entwicklung der LANs seit Mitte der 70er Jahre. Weite Verbreitung von Ethernet und Token Ring LANs in den 80er Jahren. Derzeit Entwicklung von Hochgeschwindigkeit-LANs (Fast Ethernet, Gigabit Ethernet) Stark zunehmende Verbreitung von Wireless LANs, Bluetooth siehe auch Vorlesungen Mobilkommunikation I und II IEEE Standards für lokale Netze Die gebräuchlichsten Standards für lokale Netze (local area networks, LAN) stammen von der IEEE (Institute of Electrical and Electronics Engineers). IEEE-Standards für lokale Netze werden in den IEEE 802-Dokumenten veröffentlicht. Einige der IEEE-Standards wurden von der ISO übernommen und als ISO-Standards mit gleichem Inhalt veröffentlicht. LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.3-2 7.3-3 LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.3-4 7. Telematik 7. Telematik IEEE-Standards LANs im ISO/OSI-Referenzmodell IEEE 802.1 IEEE 802.2 IEEE 802.3 IEEE 802.4 IEEE 802.5 IEEE 802.6 IEEE 802.7 IEEE 802.8 IEEE 802.9 IEEE 802.10 IEEE 802.11 IEEE 802.12 IEEE 802.14 IEEE 802.15 IEEE 802.16 IEEE 802.17 High Level Interface Logical Link Control CSMA/CD LANs (Produktbezeichnung Ethernet) Token-Bus LANs Token-Ring LANs DQDB MANs Broadband LANs Fibre Optics Isochronous LANs Security Wireless LANs Demand Priority Access Cable Modems Wireless Personal Area Network Broadband Wireless Access Resilient Packet Ring Die LAN-Protokolle sind in der zweiten Schicht des ISO/OSI- Referenzmodells (Sicherungsschicht, data link layer) angesiedelt. Darstellung Steuerung Die Sicherungsschicht wird nach IEEE in zwei Teilschichten aufgeteilt: Transport Die logical link control (LLC) Schicht realisiert die normalerweise in der Schicht 2 vorhandenen Sicherungsfunktionen. Vermittlung Logical Link Control Sicherung Media Access Control Bitübertragung Die media access control (MAC) Schicht regelt den Zugang zum Übertragungsmedium. LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Anwendung 7.3-5 7. Telematik LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.3-6 7. Telematik IEEE 802.3 - 10 Base 2 IEEE 802.3 - 10 Base 5 Transceiver Ethernet wurde ursprünglich am Xerox PARC entwickelt und von Xerox, DEC und Intel zu einem gemeinsamen Standard ausgearbeitet. Der IEEE 802.3-Standard definiert ein CSMA/CD-Verfahren für verschiedene Medien, während Ethernet das Medium Koaxialkabel mit einer Datenrate von 10 Mbps vorschreibt. T-Verbinder (coax connector) 0,25'' Koaxialkabel (thin wire, cheapernet) 0,5'' Koaxialkabel (thick wire, yellow cable) Abschlußwiderstand (terminator) Transceiverkabel (drop cable) Tap Transceiver unit Abschlußwiderstand (terminator) Maximale Kabellänge: 200 m Leitungsquerschnitt: 0.25'' Bitrate: 10 Mbps Übertragung: Basisband MAC unit verdrilltes Kupferkabel (maximal 50 m) Maximale Kabellänge: 500m Leitungsquerschnitt: 0.5'' Bitrate: 10 Mbps Übertragung: Basisband LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Protocol control firmware 7.3-7 LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.3-8 7. Telematik 7. Telematik IEEE 802.3 - 10 Base T/F IEEE 802.3 - Rahmenformat 10 Base T (twisted pair) und 10 Base F (fibre optics) beruhen auf einer Stern-Topologie, die aber als gemeinsames, geteiltes Medium betrieben wird. Rx Tx Hub Repeater electronics Rx Tx Rx Tx verdrilltes Kupferkabel (twisted pair) MAC unit MAC unit MAC unit Rx Tx Rx Tx Rx Tx Ein Hub wiederholt eingehende Signale auf allen Ausgangsleitungen, wobei eine Verstärkung bzw. Anpassung des Signals (elektrisch - optisch) stattfinden kann. Die Preamble besteht aus dem Bitmuster 10101010 und dient zur Synchronisation. Das Startzeichen (SFD) besteht aus dem Bitmuster 10101011 und kennzeichnet den Anfang eines Rahmens. Die Ziel- und Quelladressen sind normalerweise 6 Bytes lang. Das Längenfeld beschreibt die Anzahl Bytes im folgenden Datenbereich. Falls erforderlich wird der Rahmen auf die Mindestlänge von 64 Bytes aufgefüllt. Die Prüfsumme (FCS) wird mit Hilfe des CRC-32-Polynoms berechnet. Preamble Start-of-frame delimiter (SFD) 1 byte 7.3-9 7. Telematik Ablauf einer Kollision: Station A Station B 2 byte Data <= 1500 byte 0-46 bytes Frame check sequence (FCS) 4 bytes LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.3-10 Problem mit Hubs: Beim i-ten Versuch wird die Übertragung nach n Slotzeiten wiederholt, wobei n eine Zufallszahl aus dem Bereich 0 ... 2i-1 ist. Die Slotzeit für ein 10 Mbps Koaxialkabel mit maximal 2.5 km Länge entspricht 512 Bitzeiten oder 51.2 us. alle Stationen sind in einer sogenannten Kollisionsdomäne dadurch kann der erreichbare Durchsatz gering sein Verbesserung der Leistung durch Backoff: 2 or 6 bytes Padding (optional) Source MAC address Switched IEEE 802.3 LANs A beginnt zu senden: B beginnt zu senden: B erkennt die Kollision: B sendet JAM Signal: 2 or 6 bytes 7. Telematik IEEE 802.3 - CSMA/CD Destination MAC address Length indicator LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7 bytes höhere Datenrate (bspw. 100Base-T) ‚Switching‘ Switch lokalisiert ‚richtigen‘ Ausgang kein Broadcast dadurch keine Kollisionen Applet-Demo: http://herodot.informatik.uni-mannheim.de/appverw/appletlist2.php LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.3-11 LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.3-12 7. Telematik 7. Telematik Fast Ethernet – IEEE 802.3u, 802.3z IEEE 802.3u: High-Speed LAN kompatibel mit Ethernet aber bei 100 Mbit/s IEEE 802.11 (Wireless LAN) Beibehaltung der Prozeduren, Formate, Protokolle Bitzeit verkürzt von 100 ns zu 10 ns aber geringe Netzausdehnung IEEE 802.3z: Ethernet bei 1 Gigabit / s Eigentliches Ziel: Beibehaltung der Prozeduren, Formate, Protokolle aber wenn Bitzeit von 100 ns über 10 ns zu 1 ns verkürzt wird, dann ist maximale Ausdehnung auch nur noch 1/100 (ca. 30m) daher zur Abhilfe: zwei Modi Full Duplex, Half Duplex ‚Carrier Extension‘ zur Aufblähung der Rahmen der IEEE 802.11 Standard spezifiziert drahtlose Netze zwei Kommunikationsformen inzwischen gibt es auch 10 Gbit/s Ethernet: IEEE 802.3ae über eine Infrastruktur (mit Basisstationen, die an ein kabelgebundenes Netz angebunden sind) in Form von Ad hoc Netzen, wo keine Infrastruktur vorhanden ist, sondern die Endgeräte Daten weiterleiten Übertragung im ISM-Band (2.4-2.4835 GHz) (Frequenzbereich für industrielle, wissenschaftliche und medizinische Anwendungen) Infrarot-Übertragung im Bereich 300-428,000 GHz verschiedene Modulations- und Kodierungstechniken mit theoretische Datenraten von 1, 2, 11 oder 54 Mbit/s Wireless LAN setzt sich als drahtlose Technik durch und wird auch als UMTS-Rivale gesehen! LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.3-13 7. Telematik 7. Telematik IEEE 802.5 – Prinzip Token-Ring Übersicht Ringtopologie mit Sternverkabelung. Nur eine Senderichtung. Typischerweise STP-Kabel (andere möglich, z.B. koaxial). 4/16 Mbps, < 260 Stationen, < 100 m zwischen den Stationen. MAC-Protokoll Token rotation (token passing) protocol. Unterstützung von Echtzeitdatenverkehr: beschränkte Wartezeit für den Medienzugriff wegen begrenzter token holding time. Prioritäten. IEEE 802.5 - Rahmenformat Interface Interface DD Token Token AA CC BB DD Concentrator Concentrator AA CC BB Das Startzeichen (SD) und das Endezeichen (ED) sind Bitmuster mit spezieller Kodierung. Das Zugriffskontrollbyte (AC) enthält Prioritätsbits, Token und Monitorbits und Reservierungsbits. Das Rahmenkontrollbyte (FC) definiert den Typ des Rahmens. Kontrollrahmen werden von jedem Knoten interpretiert. Die Ziel- und Quelladressen sind normalerweise 6 Bytes lang. Der Datenbereich enthält entweder Daten oder Kontrollinformationen. Die Prüfsumme (FCS) wird mit Hilfe des CRC-32-Polynoms berechnet. Das Rahmenstatusbyte (FS) zeigt an, ob die Nachricht von einem Empfänger erkannt wurde und ob die Daten vom Empfänger kopiert worden sind. LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.3-14 7.3-15 Start delimiter (SD) Access Control (AC) Frame Control (FC) 1 byte 1 byte 1 byte Destination Address (DA) Source Address (SA) Data < 5000 byte Frame check sequence (FCS) 4 bytes End Delimiter (ED) Frame Status (FS) 1 byte 1 byte LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.3-16 7. Telematik 7. Telematik Token Rotation Protocol Token Ring interface Repeat mode: Rx IEEE 802.5 - Fehlerkorrektur Monitorstationen: token Tx 1. A waits for the token A Transmit mode: 2. A seizes the token and starts transm. A C C frame A to C Tx Rx D D B B D D D Aufgaben der Monitorstation: frame A to C A 3. C starts copying the frame C A 4. A removes own frame C A 5. A passes on the token C token B frame A to C B Jeder Ring besitzt genau eine aktive Monitorstation. In jeder anderen Station ist eine passive Monitorstation in Bereitschaft. Zur Fehlerkorrektur werden spezielle Verwaltungsrahmen (management frames) verschickt: Claim Token, Duplicate Token, Active Monitor Present, Standby Monitor Present, Beacon, Purge Erkennung und Beseitigung zirkulierender Rahmen. Erkennung verlorengegangener Token. Erkennung mehrerer aktiver Monitore. Applet-Demo: http://herodot.informatik.uni-mannheim.de/appverw/appletlist2.php B LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.3-17 LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7. Telematik Zwischensysteme: Aufteilung der Netzwerkkomponenten Verkabelung (Passive Komponenten) Verbindung von Netzen Im Gebäude (oder außerhalb) verlegte Kabel (Twisted Pair, Koaxial, Glasfaser etc.) Patchfelder meist eingebaut in 19“-Schränken Anschlussdosen in Räumen Patchkabel zur Anbindung der Aktiven Komponenten und Clients Hubs 10 bzw. 100 MBit, Repeater Switches (auch Kopplung von 10 MBit auf 100 MBit bzw. GBit) Router (ISDN, ADSL, Interne LAN-LAN-Kopplung, WAN-Kopplung) Firewalls, Application Level Gateways, Level 7 Switches etc. Repeater und Hubs (bis Schicht 1) Brücken (bridges) und Switches (bis Schicht 2) Router (bis Schicht 3) Gateways (bis Schicht 4 oder höher) Diese Zwischensysteme gibt es oft nicht in Reinform, da verschiedene Funktionalitäten angeboten werden PC‘s, Server, Workstations, Drucker, NAS, Scanner, etc. Verbindung von homogenen Netzen über Brücken Verbindung von heterogenen Netzen über Brücken oder Gateways Zwischensysteme Server und Clients (Hosts/ Stationen) Klassifikation von Verbindungen: Aktive Netzwerkkomponenten (meist mit Stromaufnahme) z.B. Router haben oft Funktionalitäten eines Gateways, wie z.B. Port-Filter (für Firewalls) Die Bezeichnungen von Zwischensystemen werden auch desöfteren falsch verwendet! LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.3-18 7.3-19 LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.3-20 7. Telematik 7. Telematik Repeater und Hub Brücke Ein Repeater ist eine aktive Netzwerkkomponente, die eine Regenerierungsfunktion übernimmt. Ein Repeater empfängt Signale, verstärkt sie und gibt sie an alle Anschlüsse weiter. Brücken dienen somit der Kopplung gleicher oder verschiedener Netze Ein Repeater arbeitet auf OSI-Ebene 1 Kann auch zur Kopplung unterschiedlicher Medien eingesetzt werden Repeater besitzen keine Protokollfunktionen und verarbeitet keine Daten Ein Hub (oder auch Sternkoppler) hat die gleichen Aufgaben wie ein Repeater Der Datenstrom wird gefiltert, weshalb nur Pakete für angeschlossene Endsysteme weitergeleitet werden (einfache Wegewahl entgegen der eigentlichen Schichtenfunktionalität) Formatumwandlung der Datenpakete bei heterogenen Netzen Netze werden partitioniert Eine Brücke (bridge) verbindet zwei oder mehr Netze auf Schicht 2. Er bildet den Konzentrationspunkt für eine sternförmige Verkabelung zur Bildung logischer LANs. Somit werden mehrere abgehende Signale erzeugt. Kaskadierung ist möglich, erhöht aber nicht den Gesamtdurchsatz (im Gegensatz zu einem Switch) z.B. Ethernet-Ethernet oder Ethernet-Token-Ring Brücken können somit als Mini-Firewall zur Abschottung eingesetzt werden Verkehrsunterscheidung Intranetz-Verkehr: Datenstrom zwischen Endsystemen eines LANs Internetz-Verkehr: Datenstrom zwischen Endsystemen in verschiedenen LANs, welche über eine oder mehrere Brücken miteinander verbunden sind. LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.3-21 LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7. Telematik Switch Router Mischform einer Brücke und Hubs Mit der Verwendung eines Switches als Alternative zum Hub ist es möglich, jedem Anschluss die volle Übertragungsbandbreite eines LAN bereitzustellen. Datenpakete werden dabei nicht mehr auf allen, sondern nur noch auf dem richtigen (Ziel-) Anschluss ausgegeben. Es können mehrere Datenpakete, im Gegensatz zur Brücke, gleichzeitig vermittelt werden Kollisionen (siehe CSMA/ CD - Kollisionserkennung) können somit beim Medienzugriff nur selten auftreten und jede Station kann (theoretisch) die volle Bandbreite des Mediums in Anspruch nehmen. (erfordert Vollduplex-Übertragung, sprich für jede Richtung ein Übertragungsmedium) Ein Switch setzt verschiedene Geschwindigkeiten untereinander um (z.B. 10 MBit auf 100 MBit) Ein Switch arbeitet auf OSI-Ebene 2 Ein Router ist ein Gerät, das Netzwerke koppeln und große Netzwerke in Subnetze aufteilen kann. Diese Kopplung kann eine Verbindung zwischen zwei oder mehr lokalen Netzen oder die Verbindung zwischen LAN und WAN bzw. WAN und WAN sein. Ein Router arbeitet auf OSI-Ebene 3 und erfüllt auch alle Aufgaben einer Brücke Führen die Wegewahl anhand weltweit eindeutiger Adressen durch und sind somit die Vermittlungseinrichtungen des Internets und wesentliche Komponente in WANs Tabellen für die Wegewahl können leicht über 50000 Einträge haben Segmentieren und Reassemblieren Pakete entsprechend den Paketgrössen auf Schicht 2. Haben erweitere Fähigkeiten der Paketfilterung Gehören zu den leistungsfähigsten Netzkomponenten (Datendurchsätze im Multi-Gigabit-Bereich) LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.3-22 7.3-23 LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.3-24 7. Telematik 7. Telematik Gateway / Layer 7 Switch Zwischensysteme: Zusammenfassung Ein Gateway (Anwendungs-Gateway oder Layer7 Switch/ Router) verbindet Netzwerke mit völlig unterschiedlichen Protokollen und Adressierungen. Es kann also eigentlich inkompatible Netze miteinander verbinden. Möglich wird dies dadurch, dass ein Gateway auf allen 7 Schichten des OSI-Modells tätig werden kann und somit im Extremfall eine ankommende Nachricht bis auf Schicht 7 entpackt, um sie dann für andere Netze passend wieder bis auf Schicht 1 zu verpacken. Es setzt also real ein Protokoll in ein anderes um und hat daher auch vollen Zugriff auf die Inhalte. Isolation des Verkehrs Plug & Play Optimale Wegewahl Ein Gateway ist ein Übergangsrechner zwischen verschiedenen Netzwerken. Durchleiten ohne Zwischenspeicherung Hub Brücke Switch Router Nein Ja Ja Ja Ja Ja Ja Nein Nein Nein Nein Ja Ja Nein Ja Nein LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.3-25 7. Telematik Inhalte Grundlagen von Netzen Grundlegende Protokollmechanismen Lokale Netze und Zwischensysteme (Schicht 2 und 3) Internet-Technologien (Schicht 3 und 4) TCP/UDP/IP DNS HTTP SMTP LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.3-27 LANs und Zwischensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.3-26 7. Telematik Klausur Termin: Samstag, 24.7, 10:00-12:00Uhr Ort: Mathematisches Institut: Maximum, HS1, Übungssaal Identifizierung Informatik II Personalausweis und Immatrikulationsbescheinigung oder Studentenausweis mit Lichtbild SS 2004 Hilfsmittel: keine (aber Kugelschreiber mitbringen ☺) Klausureinsicht: 28.7, 14:00-15:00Uhr, Raum MN68 Teil 7: Telematik (Computernetzwerke) 4 – Internet-Technologien Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Wiederholungsklausur: 1. Vorlesungswoche im WS2004/05 (genauer Termin wird rechtzeitig auf der Informatik II Webseite bekannt gegeben) Lehrstuhl für Telematik Institut für Informatik Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik 7.4-2 7. Telematik Überblick Internet-Entwicklung (1/2) Internet Protokoll Version 4 (IPv4) Transportprotokolle UDP and TCP Domain Name System (DNS) Die Defense Advanced Research Project Agency (DARPA) der USA startet Ende der 60er Jahre ein Projekte zur Entwicklung von Internetworking-Technologie. Es entsteht das ARPANET, ein auf gemieteten Leitungen realisiertes Datagramm-Netz. Das ARPANET wird zum Backbone-Netzwerk zwischen den Universitäten der USA. Anfang der 80er Jahre wird eine Implementierung der InternetProtokolle als Teil des BSD UNIX-Betriebssystems allgemein verfügbar. Das BSD UNIX erhält eine Socket-Programmierschnittstelle, mit der sich relativ einfach netzwerkfähige Applikationen entwickeln lassen. Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-3 Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-4 7. Telematik 7. Telematik Internet-Entwicklung (2/2) Entwicklung des Internet (Hosts im DNS) 1983 wird das ARPANET in das Forschungsnetz ARPANET und das militärisch genutzte MILNET aufgeteilt. 1986 wird von der National Science Foundation der USA das NSFNET realisiert. 1990 geht das NSFNET in das ANSNET über, das von MERIT, MCI und IBM betrieben wird und eine kommerzielle Nutzung des Internets möglich macht. Anfang der 90er Jahre wird am CERN das World-Wide Web geboren. Derzeit läuft in den USA eine Internet-2 Initiative, mit der ein GigabitBackbone zwischen den Universitäten realisiert werden soll. Technologisch ist der Übergang von der IP-Version 4 zur IP-Version 6 zu erwarten. Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-5 7. Telematik Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-6 7. Telematik Die Internet-Protokollfamilie Das Modell von IP Datagramme Web browser, e-mail, ... Applications Other user applications Einzelne, unabhängig voneinander weitergeleitete Pakete, die sich ihren Weg zum Ziel suchen User space Application protocols: HTTP, SMTP, FTP, ... Routing-Tabellen R2 geben den Ausgang zu einem Ziel an Application Programming Interface (API) R3 R1 UDP TCP IGMP ICMP Transport RIP IP RARP „Best effort“-Dienst OSPF OS kernel Auslieferung eines Pakets Korrekte Reihenfolge ARP LAN DL technology Praktisch keine Echtzeit WAN DL technology Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 yx yx DA,SA data Routing tables Router R1 DA y ... Data Link 7.4-7 yx R6 yx R4 x Keine Garantie für Network R5 Next hop R3, R4 ... y yx yx Router R3 DA y ... Router R6 Next hop R6 ... DA y ... Next hop ... Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-8 7. Telematik 7. Telematik IP Operationen IPv4-Adressen 32 bits Binäre und dezimale Darstellung 32 Binär: 23 15 7 0 11010100 01111110 11010000 10000111 212 Dezimal . 126 . 208 . 135 Hierarchische Adressierung Netzwerk-Nummer + Netzmaske (Classless Interdomain Routing (CIDR), RFC 1519). Bemerkung: IP-Adressklassen werden praktisch nicht mehr verwendet (wg. Adressknappheit) Netzangabe: 134.76.0.0/255.255.0.0 oder alternativ 134.76.0.0/16 (16 = Länge der Netzmaske) Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-9 7. Telematik Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-10 7. Telematik IPv4-Adressen: Uni Göttingen IPv4 - Subnetze Subnetz-Adressen: Bildung von Netzhierarchien: Endsystemadressen können mit Hilfe von Netzmasken weiter unterteilt werden. Eine IPv4-Adresse wird mit der negierten Subnetz-Maske bitweise logisch und verknüpft, um die Adresse des Endsystems zu erhalten. GWDG/Uni Göttingen: 134.76.x.x Institut für Informatik: 134.76.81.x Beispiel für ein geplantes Subnetz für 16 (bzw. 14) Rechner: Beispiel: 134.76.81.225/28 = 134.76.81.(224-239) 134.76.81.239 ist die Broadcast-Adresse (letzten 4 Bits = 1111) 134.169.9.10 Netz-Maske 255.255.0.0 Ausgabe von Unix-Befehl: ipcalc 134.76.81.224/28 Address: 134.76.81.224 Netmask: 255.255.255.240 = 28 Wildcard: 0.0.0.15 => Network: 134.76.81.224/28 Broadcast: 134.76.81.239 HostMin: 134.76.81.225 HostMax: 134.76.81.238 Hosts/Net: 14 10000110.01001100.01010001.1110 0000 11111111.11111111.11111111.1111 0000 00000000.00000000.00000000.0000 1111 134.169.246.34 134.169.34.12 134.169.34.1 Subnetz-Maske 255.255.255.0 10000110.01001100.01010001.1110 10000110.01001100.01010001.1110 10000110.01001100.01010001.1110 10000110.01001100.01010001.1110 0000 (Class B) 1111 0001 1110 Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-11 Besondere Adressen: Alle Adressen mit dem Format 127.*.*.* gehören zum lokalen System (loopback). Alle Adressen mit dem Format 10.*.*.* werden niemals weitergeleitet. Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-12 7. Telematik 7. Telematik IPv4-Paketformat Bits: 0 4 IP Next Generation: IPv6 8 16 19 31 Version HdrLng Type of service Total length Identification Flags Fragment offset 20 Time to live Protocol Header checksum octets Source address Destination address Options + padding Basierend auf den erfolgreichen Eigenschaften von IPv4 Erweiterte und verbesserte Funktionalität Entwickelt zwischen 1992 und 1997 Jetzt stabil, wird in neue Produkte (Router, Betriebssysteme) eingebaut. Neue Eigenschaften Erweiterte Adressen (128-bit). Neue Adressierungsschemata. Neue flexiblere und effizientere Paketformate Auto-Konfiguration („plug-and-play“) Adressenauflösung und Gruppenmanagement jetzt Teil von ICMPv6 (ARP, IGMP wurden entfernt) Sicherheitsmechanismen direkt im Protokoll (Authentifizierung und Verschlüsselung) Dienstgüteunterstützung Data (≤ 65536 octets) Type of Service field (8 bits) 0 1 2 Precedence 3 4 5 ToS 6 7 0 Flags field (3 bits) 0 1 2 D M - Substantielles Re-Design von IP D = Don’t fragment M = More fragments Precedence (priority): High: 7 - Network control .... Low: 0 - Routine. ToS (Type of Service): 8 - Min. delay. 4 - Max. throughput. 2 - Max. reliability. 1 - Min. cost ($). 0 - Normal service. Options: Security. Source routing. Route recording. Time stamping. Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-13 7. Telematik Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik Struktur für IPv6 IP v6 Header Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-14 7.4-15 Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-16 7. Telematik 7. Telematik Transportschicht: TCP und UDP Well-known Ports für UDP Port Aufgabe der Transportschicht: Datentransport von einem Prozess auf einem Rechner zu einem (oder mehreren) anderen Prozessen auf anderen Rechnern im Internet Zwei Möglichkeiten Der grundlegende unzuverlässige Internetdienst genügt, dann verwende UDP. Er genügt nicht, dann verwende TCP. 7 Echo 9 Discard 11 Users 13 Daytime 17 Quote Description Echoes a received datagram back to the sender Discards any datagram that is received Active users Returns the date and the time Returns a quote of the day 19 Chargen 53 Nameserver 67 Bootps Server port to download bootstrap information 68 Bootpc Client port to download bootstrap information 69 TFTP Trivial File Transfer Protocol 111 RPC Remote Procedure Call 123 NTP Network Time Protocol 161 SNMP Simple Network Management Protocol 162 SNMP Simple Network Management Protocol (trap) End-To-End-Signifikanz: IP-Adressen identifizieren IP-Hosts und keine Applikationen. IP besitzt daher eine Host-To-Host-Signifikanz. Ein Transportendpunkt wird durch eine IP-Adresse und eine lokale eindeutige Portnummer identifiziert. TCP und UDP besitzen End-To-End-Signifikanz. Für Standard-Dienste sind Portnummern fest definiert (well-known ports). Protocol Returns a string of characters Domain Name Service Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-17 7. Telematik 7.4-18 7. Telematik Well-known Ports für TCP Port Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Protocol 7 Echo 9 Discard 11 Users 13 Daytime 17 Quote 19 Chargen 20 FTP, Data 21 FTP, Control 23 TELNET 25 SMTP User Datagram Protocol (UDP) Description Eigenschaften: Echoes a received datagram back to the sender Discards any datagram that is received Unzuverlässiger, verbindungsloser Datagrammdienst. Einfache Erweiterung von IP um Portnummern (RFC 768). Zusätzliche Prüfsumme über den UDP-Protokollkopf. Active users Returns the date and the time Returns a quote of the day UDP-Protokollkopf: Returns a string of characters File Transfer Protocol (data connection) 0 File Transfer Protocol (control connection) DNS BOOTP Domain Name Server 79 Finger Finger 80 HTTP Hypertext Transfer Protocol 111 RPC Remote Procedure Call 24 31 (Bitposition) UDP Destination Port UDP Message Length Simple Mail Transfer Protocol 53 16 UDP Source Port Terminal Network 67 8 UDP Checksum Data Bootstrap Protocol Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-19 Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-20 7. Telematik 7. Telematik Transmission Control Protocol (TCP) TCP Pakete („Segmente“) Zuverlässiger, verbindungsorientierter Dienst über einem unzuverlässigen, verbindungslosen Netzwerkprotokoll (RFC 793). Endsysteme tauschen einen unstrukturierten Bytestrom aus (stream orientation). Duplex und Halbduplex-Betrieb und die Zustellung von out-of-bandDaten. Ende-zu-Ende-Flusskontrolle durch Fenstertechnik mit adaptiven Timeouts und automatische Anpassung an Stausituationen (slow start, multiplicative decrease). Pseudoheader 0 Source IP address Destinati on IP address Protocol (6) TCP segment length 0 IP header (20 bytes +opt.) TCP header (20 bytes +opt.) TCP data 4 10 16 Source TCP port Destinati on TCP port Sequence number Acknowledgement number Hdr.len. Fl ags Window size Checksum Urgent poi nter Opti ons (if any) 31 Data (if any) Fl ags: URG ACK PSH RST SYN FIN Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-21 7. Telematik Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7. Telematik TCP Verbindungszustandsdiagramm TCP Verbindungsaufbau Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-22 7.4-23 Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-24 7. Telematik 7. Telematik Drei-Wege-Handshake: TCP Zustandsdiagramm Drei-Wege-Handshake: Beispiel Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-25 7. Telematik Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-26 7. Telematik TCP Verbindungsmanagement TCP Protokollablauf UserAA User (client) (client) TCP server Lebenszyklus TCPAA TCP CLOSED Open-Active Open-Active TCPBB TCP SYN,...... SYN, ESTABLISHED Send(dt[100]) Send(dt[100]) TCP client Lebenszyklus LISTEN SYN-SENT SYN+ACK,...... SYN+ACK, Open-Success Open-Success UserBB User (server) (server) CLOSED Open-Passive Open-Passive SYN-RCVD Open-Success Open-Success ACK,...... ACK, ESTABLISHED Deliver(dt[100]) Deliver(dt[100]) ...,dt[100] dt[100] ..., ACK,...... ACK, Close Close FIN-WAIT-1 FIN,...... FIN, ACK,...... ACK, FIN-WAIT-2 Terminate Terminate TIME-WAIT FIN,...... FIN, ACK,...... ACK, CLOSED Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-27 Closing Closing CLOSE-WAIT Close Close LAST-ACK Terminate Terminate CLOSED Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-28 7. Telematik 7. Telematik Erinnerung: Flusskontrolle TCP Flusskontrolle: Fenstertechnik Fenstertechnik: UserAA User Sender und Empfänger einigen sich auf ein Fenster innerhalb des Wertebereichs der Sequenznummern (Flusskontrollfenster, flow control window). Nach dem Verbindungsaufbau besitzt der Sender implizit Kredite für so viele Datenblöcke wie durch die Fenstergröße angegeben ist. Durch positive Quittungen wird das Fenster beim Sender verschoben. Zusätzlich kann die Größe des Fensters dynamisch angepasst werden. Fenster = 5 Sender 7 0 7 6 1 5 2 4 Folgenummer = 1 Bestätigungsnummer = 5 3 Fenster = 4 0 6 1 5 2 4 Empfänger TCPAA TCP TCPBB TCP ESTABLISHED Send(data[500]) Send(data[500]) Send(data[300]) Send(data[300]) Send(data[400]) Send(data[400]) ACK,ack=s1, ack=s1,win=1000 win=1000 ACK, seq=s1,data[500] data[500] seq=s1, seq=s1+500,data[300] data[300] seq=s1+500, 500 500 500 500 seq=s1+800,data[200] data[200] seq=s1+800, 500 500 300 200 200 300 500 500 300 200 200 300 Waiting for credit ACK,ack=s1+500, ack=s1+500,win=500 win=500 ACK, ACK,ack=s1+800, ack=s1+800,win=200 win=200 ACK, ACK,ack=s1+1000, ack=s1+1000,win=0 win=0 ACK, Stop Retrans Timer Start Persist Timer ACK,ack=s1+1000, ack=s1+1000,win=800 win=800 ACK, 7. Telematik “A” Stanford 20 “B” (MIT) 19 18 17 OS Ethernet Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-30 Programmierschnittstelle: Die Socket-Schnittstelle Beispiel: FTP über das Internet unter Verwendung von TCP/IP und Ethernet 2 3 4 600 600 7. Telematik Wie funktioniert eigentlich das ganze Internet? App 200200 200 200 Letzte quittierte Nachricht Internet-Technologien 7.4-29 800 800 200 200 seq=s1+1000,data[200] data[200] seq=s1+1000, 3 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 1 Deliver(data[800]) Deliver(data[800]) Stop Persist Timer ACK,ack=s1+1200, ack=s1+1200,win=600 win=600 ACK, Letzte empfangene Bestätigung UserBB User ESTABLISHED Receiver buffer 1000 1000 14 5 R1 R5 15 R5 R1 6 8 11 16 7 9 R2 R3 R3 12 R2 13 10 R4 R4 App OS Ethernet Funktion Aufgabe socket(domain, type, protocol) Kreiert einen Kommunikationsendpunkt bind(socket, address, length) Bindet eine Adresse an einen lokalen Endpunkt. connect(socket, address, length) Stellt Verbindung zu zweitem Socket her listen(socket, backlog) Zeigt an, wie viele eingehende Verbindungswünsche akzeptiert werden accept(socket, address, length) Annahme einer Verbindung write(...), send(...), sendto(...) Übertragung von Daten über einen Socket read(...), recv(...), recvfrom(...) Empfang von Daten shutdown(socket, how) (Teilweise) Beendigung einer Verbindung close(socket) Schließen eines Sockets getsockname(), getpeername() Erfragen von lokaler/entfernter Adresse Weitere Hilfsfunktionen Bytekonvertierung ins/vom Netzwerkformat Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-31 Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-32 7. Telematik 7. Telematik Verbindungsorientierte Kommunikation Verbindungslose Kommunikation socket() Beim verbindungsorientierten Protokoll wird zunächst von einer Seite ein Socket geöffnet, über den Verbindungswünsche entgegen genommen werden. Der accept()-Aufruf blockiert den Prozess, bis eine Verbindung etabliert ist und liefert einen neuen Socket für diese Verbindung. Die read() und write() Aufrufe sind blockierend. Nach der Auflösung der Verbindung kann mit einem erneuten Aufruf von accept() eine weitere Verbindung entgegen genommen werden. bind() listen() socket() accept() connection setup connect() read() data write() write() data read() close() connection release close() Beim verbindungslosen Protokoll werden auf beiden Seiten Sockets geöffnet und an eine Adresse gebunden. Der recvfrom()-Aufruf blockiert den Prozess, bis eine Nachricht eingetroffen ist. Die Adresse des sendenden Prozesses wird dem empfangenden Prozess mitgeteilt. Der sendto()-Aufruf sendet die Daten an die angegebene Adresse, ohne zu blockieren. Beim Schließen eines Endpunkts ist keine Interaktion erforderlich. socket() bind() socket() bind() recvfrom() sendto() 7.4-33 7. Telematik recvfrom() data close() Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 sendto() data Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-34 7. Telematik Domain Name Service DNS Namenshierarchie Unnamed root Aufgabe von DNS Übersetze Namen in Adressen und lasse Anwendungen so Netzdienste nutzen: www.cs.tu-bs.de ↔ 134.169.34.18. Top level domains com org edu 2nd level domains cisco ietf univ i-u co ac in-addr dept iustud01 bbc univ 209 ... de uk arpa ... Internet Name Service DNS: Domain Name System. Frühe 80er Jahre. Grundlegende Definition: RFC 1034 und 1035, 1987 Zahllose weitere RFCs für die Nutzung von DNS, Updates etc. Hierarchisches Namensschema Verteilte Namensdatenbank DNS-Protokoll: query-response protocol. Top: Top:Generic Genericdomains domains com com--Commercial Commercial edu edu--Educational Educational org org--Non-profit Non-profitOrganizations Organizations net net--Network NetworkProviders Providers mil mil--US USMilitary Military gov gov--US USGovernment Government int int--International InternationalOrganizations Organizations host host.dept.univ.edu. host.dept.univ.edu. 7.4-35 12 Top: Top:arpa arpadomain domain Address-to-name Address-to-nametranslation. translation. in-addr IP address. in-addr - IP address. 1 17 IP: IP: 209.12.17.1 209.12.17.1 Internet-Technologien Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Top: Top:Country Countrydomains domains de de--Germany Germany frfr--France France uk uk--United UnitedKingdom Kingdom nl nl--Netherlands Netherlands...... Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-36 7. Telematik 7. Telematik Server-Hierarchie DNS-Abfragen (1/2) „Zone of authority“ root NS ... 2(Q) other top level zones univ.edu name server(s) 5(R) 4(R) Q = Query R = Response Rfr = Referral 3(Q) 3(Q) 4(Rfr) bob.com NS (authoritative) 6(R) sam.edu NS (local) 1(Q) bob.com NS (authoritative) 2(Rfr) 5(Q) Der Administrator einer Zone verwaltet den/die Name Server (Primär-, Sekundär-) Jeder Name Server verwaltet die Namensinformation für seine Zone und kennt die Name Server der Unterzonen. ... 6(Rfr) vega.sam.edu cs.univ.edu ee.univ.edu name name server(s) server(s) Eine Gruppe von „root name servers“ stellen Name-Syerver-Adressen für die Top-Level-Domains zur Verfügung. Alle anderen Server kennen die Adresse der Root-Server und einiger Name Server der oberen Ebenen. Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-37 7. Telematik sun.bob.com Query: “Address of sun.bob.com” 5(R) 5(R) sun.bob.com Query: “Address of sun.bob.com” Vega sam.edu bob.comNS NS sam.eduNS NS root rootNS NS bob.com Vega 1(Q) 1(Q) 2(Q) 2(Q) 3(Q) 3(Q) 6(R) 6(R) vega.sam.edu 4(R) 4(R) Vega sam.edu bob.comNS NS sam.eduNS NS root rootNS NS bob.com Vega 1(Q) 1(Q) 2(Rfr) 2(Rfr) 3(Q) 3(Q) 4(Rfr) 4(Rfr) 5(Q) 5(Q) 6(R) 6(R) Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-38 7. Telematik DNS-Abfragen (2/2) Geschafft Compilerbau (Kapitel 6) Iterativ und rekursiv können kombiniert werden Client startet rekursive Abfrage. Ein Zwischen-Server startet eine iterative Abfrage an Root, gefolgt von einer rekursiven Query an den ersten Server in der Ziel-Domain. root NS Q = Query R = Response Rfr = Referral Betriebssysteme (Kapitel 5) 3(Q) bob.com NS (intermediate) Maschinenorientierte Programmierung (Kapitel 4) 5(Q) sam.edu NS (intermediate) DNS caching 8(R) 2(Q) cs.sam.edu (local) NS 1(Q) 6(Q) 9(R) 7(R) it.bob.com NS (authoritative) von-Neumann-Rechner (Kapitel 3) Speicher Zahlen und logische Schaltungen (Kapitel 2) 10(R) Kommunikation (Kapitel 7) moon.cs.tom.edu Query: “Address of mars.it.bob.com” Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 root NS sam.edu NS (local) 1(Q) Delegation der Verantwortung Name Server speichern erhaltene Antworten (für begrenzte Zeit). Eine Anfrage wird nur weitergeleitet, wenn die Antwort nicht im Cache liegt. Ziel? Iterative Abfragen Rekursive Abfragen root name servers Eine Zweig des Namensraums, der getrennt verwaltet wird Der Namensraum ist rekursiv in kleinere Zonen aufgeteilt. mars.it.bob.com von-Neumann-Rechner Internet-Technologien 7.4-39 Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-40 7. Telematik 7. Telematik Lehrstuhl für Telematik Aktuelle Projekte des Lehrstuhls für Telematik Vorlesungen Internet-Signalisierungsprotokolle (Dr. Fu) Testen von IPv6 (Dr. Fu) Netzwerksicherheit (Dipl-Inf. Soltwisch) Informatik II (SS) Telematik (WS) Mobilkommunikation I (SS) und II (WS) Quality of Service und Authentifizierung in Mobil IP Seminare Voice over IP (Dipl.-Inf. C. Werner) E-Learning (Dipl.-Math. Riedel, Dipl.-Inf. Zibull) Ökonomie von WLAN Internetzugängen (Dipl.-Math. Riedel) Verwendung von formalen Beschreibungstechniken zum Testen Netzwerksicherheit (WS) Mobilkommunikation (SS) Praktika Praktikum Telematik Automatische Testgenerierung für Kommunikationsprotokolle (Dipl.-Inform. Ebner, Dipl.-Inform. Richter) BSc und MSc Arbeiten siehe http://www.tmg.informatik.uni-goettingen.de/theses usw. Hiwis ZFI/IFI/TMG Web auf Anfrage Weitere Informationen: http://www.tmg.informatik.uni-goettingen.de Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-41 Internet-Technologien Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 7.4-42 8. Zusammenfassung Klausur Termin: Samstag, 24.7, 10:00-12:00Uhr Ort: Mathematisches Institut: Maximum, HS1, Übungssaal Identifizierung Informatik II Personalausweis und Immatrikulationsbescheinigung oder Studentenausweis mit Lichtbild SS 2004 Hilfsmittel: keine (aber Kugelschreiber mitbringen ☺) Klausureinsicht: 28.7, 14:00-15:00Uhr, Raum MN68 Teil 8: Zusammenfassung Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Wiederholungsklausur: 1. Vorlesungswoche im WS2004/05 (genauer Termin wird rechtzeitig auf der Informatik II Webseite bekannt gegeben) Lehrstuhl für Telematik Institut für Informatik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8. Zusammenfassung 8. Zusammenfassung Lehrstuhl für Telematik Aktuelle Projekte des Lehrstuhls für Telematik Vorlesungen Internet-Signalisierungsprotokolle (Dr. Fu) Testen von IPv6 (Dr. Fu) Netzwerksicherheit (Dipl-Inf. Soltwisch) Informatik II (SS) Telematik (WS) Mobilkommunikation I (SS) und II (WS) Quality of Service und Authentifizierung in Mobil IP Seminare Voice over IP (Dipl.-Inf. C. Werner) E-Learning (Dipl.-Math. Riedel, Dipl.-Inf. Zibull) Ökonomie von WLAN Internetzugängen (Dipl.-Math. Riedel) Verwendung von formalen Beschreibungstechniken zum Testen Netzwerksicherheit (WS) Mobilkommunikation (SS) Praktika Praktikum Telematik Automatische Testgenerierung für Kommunikationsprotokolle (Dipl.-Inform. Ebner, Dipl.-Inform. Richter) BSc und MSc Arbeiten siehe http://www.tmg.informatik.uni-goettingen.de/theses usw. Hiwis ZFI/IFI/TMG Web auf Anfrage Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.2 Weitere Informationen: http://www.tmg.informatik.uni-goettingen.de 8.3 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.4 8. Zusammenfassung 8. Zusammenfassung Überblick Überblick I Compilerbau (Kapitel 6) 1. Einführung Vorstellung der beteiligten Personen Ablauf der Übungen Inhalt der Vorlesung Betriebssysteme (Kapitel 5) 2. Zahlen und logische Schaltungen Nachrichten, Information, Daten Zahlensysteme und –darstellung Rechnerarithmetik logische Schaltungen boolesche Algebra Maschinenorientierte Programmierung (Kapitel 4) von-Neumann-Rechner (Kapitel 3) 3. Von-Neumann-Rechner Speicher Zahlen und logische Schaltungen (Kapitel 2) Rechnermodell 4. Grundlagen der maschinenorientierten Programmierung Kommunikation (Kapitel 7) Assemblerprogrammierung von-Neumann-Rechner Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.5 8. Zusammenfassung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.6 8. Zusammenfassung Überblick II Wie funktioniert ein Computer??? Anwendungen (Browser, Email, etc.) 5. Grundlagen Betriebssysteme Prozesse Speicher Automaten Betriebssystem & Formale (Linux, Compiler Sprachen Windows, Software Assembler MacOS, ...) 6. Automaten, formale Sprachen und Compilerbau Aufbau und Funktionsweise von Compilern Lexer und Parser deterministische und nicht deterministische (Keller-)Automaten Reguläre und kontextfreie Sprachen Netzwerke (TCP/IP, Ethernet, WLAN, ... Befehlsarchitektur Hardware Prozessor Speicher E/A System Datenpfade & Kontrolle Digitale Logik 7. Grundlagen von verteilten Systemen Schaltkreisdesign OSI Schichtenmodell Funktionsweisen von Rechnernetzen Internet Transistoren, Layout integrierte Schaltungen Grundidee: Ebenen der Abstraktion Informatik II Verberge unnötige Implementierungsdetails Hilft zur Beherrschung realer, komplexer Systeme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.7 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.8 8. Zusammenfassung 8. Zusammenfassung Architektur und Programmierung Zusammenfassung Das Wissen über die Rechnerarchitektur hilft das Design von Programmiersprachen zu verstehen Informatik II studiert die Funktionsweise von Rechnern Grundlegende Hardwarekomponenten: Datenpfad, Speicher, Eingabe/Ausgabe Geräte und Kontrolle; sowie die darunterliegende digitale Schaltungen/Logik Prinzipien von Software: Betriebssysteme, Kommunikationssysteme, Compiler; Automaten und formale Sprachen Was passiert beim Übersetzen des Quellcodes? Warum ist Rechnerarithmetik manchmal falsch? Was ist ein Busfehler oder Speicherzugriffsfehler? Wie kann schneller ausführbarer Code erstellt werden? Prinzipien der Abstraktion sind wichtig zum Verstehen und Bauen von geschichteten Systemen Wo und wie Daten abgelegt werden macht einen großen Unterschied. Schon das Umordnen von Statements kann hilfreich sein. Softwareentwicklung erfordert oftmals wissen über Rechnersysteme Jeder Rechner hat 5 klassische Komponenten Compiler können optimierten Code für einen Prozessor erzeugen Betriebssysteme verwalten Ressourcen Gutes Eingabe/Ausgabe Verhalten ist für Datenbanken und Netzwerke wichtig Verwaltung der eigenen Daten/Code im Speicher Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.9 8. Zusammenfassung Datenrepräsentation ist wichtig für die Leistung des Systems, Verwendung von Ressourcen und besseren Genauigkeit. Abstraktion und hierarchisches Design sind fundamentale Konzepte zur Handhabung von Komplexität Rohe Daten (Bitmuster) können alles bedeuten (integer, float, char, etc.). Erst ein Programm legt die Bedeutung fest Wissen über Rechnersysteme hilft beim Programmieren und beim Software-Engineering Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.10 8. Zusammenfassung Überblick Informationsdarstellung Zur Übertragung von Nachrichten/Daten müssen diese in Signale umgesetzt werden. Information und Informationsdarstellung Zahlensysteme Rechnerarithmetik Boolesche Algebra und Gatter Schaltwerke Signal: physikalische Darstellung von Nachrichten/Daten Signaltypen: Radiowellen, Rauchsignale, Stromfluss, Schallwellen, usw. Signalparameter: Ausprägung eines Signals mit dessen Hilfe Nachrichten/Daten dargestellt werden. Parameterarten: Frequenz, Farbe, Form, Spannung, Lautstärke, usw. Signal Information/Wissen Nachricht/Daten Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.11 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.12 8. Zusammenfassung 8. Zusammenfassung Codierung - Grundlagen Codierung - Schichtenmodell Schichtenmodell als Gedankenmodell Alphabet (Zeichenvorrat): Endliche Menge von Zeichen, die zur Darstellung von Informationen benutzt wird Beispiele: Ziffern: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Alphanumerisches Alphabet: {a,...,z, A,...,Z, 0,...,9} Binärzeichen: {0, 1} Wort: Folge von Zeichen, die in einem bestimmten Kontext als Einheit betrachtet werden Beispiele: Zahlwörter: Schreibwörter: Binärwörter: C3 C2 C1 C0 Codierungen sind häufig geschachtelt. D.h. eine höhere Schicht stützt sich auf die nächst tiefere ab. Die höhere Schicht nimmt Zeichen entgegen, ignoriert aber deren tiefere Codierung. Beispiel: C++ – Schlüsselwörter Großbuchstaben ISO ISO 7-Bit 8-Bit Bytes Binärstellen, Bits Schaltzustände Elektronenebene 105, 75, 73, 15, ... Kohlkopf, Hunger, Hund 001, 10010010, 1, 0, ... Bemerkungen zum Kontext: in Englisch hat das Wort ‘Kohlkopf’ keine Bedeutung ‘010’ kann von Rechner mit Wortlänge 8 nicht verarbeitet werden Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.13 8. Zusammenfassung 8.14 8. Zusammenfassung Polyadische Zahlensysteme (1/2) Zahlensysteme mit Zweierpotenz als Basis Potenzen zu einer Basis B als Stellenwert N-1 n = ∑ai * Bi Binärsystem (Basis 2) Vierersystem (Basis 4) Oktalsystem (Basis 8) Hexadezimalsystem (Basis 16) (Zeichenvorrat: 0...9, A...F) Einfache Umrechnung: „Umgruppieren der Binärstellen“ Beispiel: 146310 = 101101101112 (B, ai ∈ N0, B > 1) i=0 = aN-1 * BN-1 + aN-2 * BN-2 + ... + a1 * B1 + a0 = ((...(aN-1 * B) + aN-2) * B + ...)*B + a1) *B + a0 (Horner Schema) Konvention: <ZAHL><BASIS> Informationsdarstellung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 besagt das <ZAHL> einen Wert im Zahlensystem mit der Basis <Basis> beschreibt. 123 im Dezimalsystem, z.B. 12310 11102 1110 im Dualsystem = 01 01 10 11 01 11 1 1 2 3 1 3 = 010 110 110 111 2 6 6 7 = 0101 1011 0111 5 B 7 Zahlensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.15 = 1123134 =26678 =5B716 Zahlensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.16 8. Zusammenfassung 8. Zusammenfassung Umrechnung zwischen Zahlensystemen Zahlendarstellung und Rechnen im Dualsystem (1/3) Im allgemeinen reicht es nicht aus einfach nur die Binärstellen umzugruppieren. Empfehlung für die manuelle Umrechnung: Durch N Bits lassen sich 2N Zahlenwerte codieren Nur positive Zahlen, Wertebereich: 0 ... (2N–1) Positive und negative Zahlen: (N-1) - Bit Zahl mit Vorzeichen darstellbarer Wertebereich: [-2N-1 ... 0 ... 2N-1-1] I. Darstellung mit Basis B1 (1) * Multiplikative Umrechnung im Zielsystem (hier Basis 10) „Most significant“ Bit als Vorzeichencodierung 7 II. Darstellung mit Basis 10 (2) / ↑ Dividierende Umrechnung im Quellsystem (hier Basis 10) N=8 N= 16 III. Darstellung mit Basis B2 6 5 4 3 2 1 0 „most significant bit“ 0 = positive Zahl 1 = negative Zahl Wertebereich: 0 ... 255 oder -128 ... +127 Wertebereich: 0 ... 65535 oder -32768 ... +32767 Zahlensysteme Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.17 8. Zusammenfassung Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.18 8. Zusammenfassung Zahlendarstellung und Rechnen im Dualsystem (2/3) Basiskomplement (B-Komplement) N Bits erlauben 2N Möglichkeiten zur Zahlendarstellung, d.h. nur eine Darstellung mit endlicher Genauigkeit. C für das Basiskomplement: C = BN Komplementbildung: N-1 N-1 Ba = BN – ai * Bi = (BN-1) – ( ai * Bi ) + 1 Bei positiven Zahlen: Zahlen n und n + BN sind nicht unterscheidbar (höchstwertige Bit geht verloren) Bei positiven und negativen Zahlen: Additionsüberlauf kann zu negativen Ergebnissen führen Beispiel: 0 1001110 78 + 0 1011000 1 0100110 + = i=0 (B–1)–Komplement bilden Aufaddieren einer 1 Beispiel: > 128 (B-1)-Komplement: | -38 5 ≅ 00101 B–15 ≅ 11010 Aufaddieren von 1: + B5 negatives Vorzeichen Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 i=0 +1 d.h. die Komplementbildung ist für das Basiskomplement etwas aufwendiger 88 166 B-1a 8.19 ≅ 1 11011 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.20 8. Zusammenfassung 8. Zusammenfassung Eigenschaften Basiskomplement (Dualsystem) Zahlenring im Basiskomplement -8 1000 Negative Zahlen werden als Komplemente der positiven Zahlen dargestellt. Das „most significant Bit“ beschreibt das Vorzeichen der Zahl. 8 -7 9 1001 7 0111 -6 10 1010 0 ⇒ + 6 0110 -5 11 1011 1 ⇒ – Es gibt nur eine Null Bemerkung: Komplement der Null liegt beim Basiskomplement, anders als beim Stellenkomplement, nicht mehr im darstellbaren Zahlenbereich (Übertrag in die (n+1).te Stelle). 5 negative Zahlen -4 12 1100 positive Zahlen +(½ * BN – 1) 4 -3 13 1101 3 -2 14 1110 Darstellbarer Zahlenbereich –(½ * BN ) ... 2 -1 15 1111 0 0000 1 8.21 8. Zusammenfassung 0011 0001 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.22 8. Zusammenfassung Ziel: Rechnerarithmetik implementieren Boolesche Algebra (1/2) Bitweise logische Operationen Boolesche Algebra: E E=A?B Die Booleschen Algebra (speziell die Aussagenlogik) ist ein Formalismus zur Beschreibung der Funktion digitaler Komponenten. = x"34" ? x"1C" Binäre oder Boolesche Variable (BV): ? ... beliebige logische Verknüpfung a5 a4 a3 a2 a1 a0 0100 0010 Rechnerarithmetik Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 0101 Operand A 1 1 0 1 0 0 Operand A Variable, die nur zwei Werte annehmen können. Diese Werte werden mit L - H , wahr - falsch oder 0 - 1 bezeichnet. Boolesche Variable sind logische Variable. Boolesche Operatoren: b5 b4 b3 b2 b1 b0 Operand B 0 1 1 1 0 0 Operand B Auf Boolesche Variable können Boolesche Operatoren angewendet werden: NOT, OR, AND,XOR, ... Boolesche Ausdrücke, Boolesche Funktionen: e5 e4 e3 e2 e1 e0 Ergebnis E 1 0 0 0 0 0 Ergebnis E Boolesche Ausdrücke oder Boolesche Funktionen ergeben sich durch Verknüpfung von Boolesche Variable mit Booleschen Operatoren. Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.23 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.24 8. Zusammenfassung 8. Zusammenfassung Wahrheitstabellen UND-Operator Darstellung der Abhängigkeiten zwischen der Eingabe und Ausgabe Alle möglichen Kombinationen der Eingabe (A,B) werden mit der korrespondierenden Ausgabe (X) angegeben. Beispiel: Eingabe A B Ausgabe ? B 0 0 1 1 X A 0 1 0 1 X 0 0 0 1 Name UND (AND) Tabelle b 0 0 1 1 a 0 1 0 1 UND wird verwendet, um Bits gezielt auf 0 zu setzen. Dazu hat die Maske an allen Bitpositionen, die übernommen werden sollen, eine 1 und an den Stellen, die rückgesetzt werden sollen, eine 0. y 0 0 0 1 x“14“ = x"34" ∧ x"1C" y = a ∧ b oder = ab oder =a*b Schriftlich 1 1 0 1 0 0 Operand A 0 1 1 1 0 0 Operand B 0 1 0 1 0 0 Ergebnis E & Gatter Die Ausgabe ist nur 1, wenn beide Eingaben 1 sind. Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.25 8. Zusammenfassung a∨0=a a∧0=0 R1 a∨1=1 a∧1=a R2 a∨a=a a∧a=a R3 a∨a=1 a∧a=0 R4 a=a Assoziativgesetz a ∨ (b ∨ c) = (a ∨ b) ∨ c = a∨b ∨c a ∧ (b ∧ c) = (a ∧ b) ∧ c = a∧b ∧c A (a ∨ b) >=1 (a ∧ b) = a ∨ b A Q NOR & NAND B A a∧b=b∧a R7 Distributivgesetz a ∨ (b ∧ c) = (a ∨ b) ∧ (a ∨ c) a ∧ (b ∨ c) = (a ∧ b) ∨ (a ∧ c) R8 Absorptionsgesetz a ∨ (a ∧ b) = a a ∧ (a ∨ b) = a R9 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 (a ∨ b) = a ∧ b (a ∧ b) Q B R6 a∨b=b∨a (a ∨ b) = a ∧ b Implikationen aus dem De Morgan'schen Gesetz R5 Kommutativgesetz De Morgan'sches Gesetz 8.26 8. Zusammenfassung 10 Regeln für logische Operationen Boolesche Variablen a, b Elemente aus {0,1} Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 (a ∧ b) = a ∨ b a∧b B A & 1 Q 1 Alternative NOR Darstellung A a∧b R10 & 1 B Q a∨b 1 Alternative NAND Darstellung A Q B >=1 B >=1 Q a∨b Boolesche Algebra und Gatter 8.27 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.28 8. Zusammenfassung 8. Zusammenfassung Normalform (2/2) Übersetzung DNF Gleichung in Hardware Jede Gleichung läßt sich 1:1 in Hardware umsetzen Disjunktive Normalform (DNF) disjunktive Verknüpfung von Konjunktionen Konjunktionen müssen alle Variablen enthalten (bejaht oder negiert) Konjunktionsterme werden Minterme genannt In der DNF werden alle UND – Verknüpfungen (Konjunktionen) disjunktiv verknüpft (ODER- verknüpft), deren Ausgangsvariablen den Wert „1“ annehmen. amerikanischer Ausdruck: “sum of products“ (SOP) Konjunktive Normalform (KNF) Konjunktive Verknüpfung von Disjunktionen Disjunktionen müssen alle Variablen enthalten (bejaht oder negiert) Disjunktionsterme werden Maxterme genannt In der KNF werden alle ODER – Verknüpfungen (Disjunktionen) konjunktiv verknüpft (UND- verknüpft), deren Ausgangsvariablen den Wert „0“ annehmen. y = x4 x3 x2 x1 ∨ x4 x3 x2 x1 ∨ x4 x3 x2 x1 x4 1 x3 1 x2 1 x1 1 & & 8.29 8. Zusammenfassung 3. DNF liefert relativ aufwendige Lösungen Baut auf den Mintermen auf Jedes UND Gatter enthält alle Eingangsvariablen Nicht praktikabel in „echten“ Anwendungen x = AB ∨ C x = (A ∨ B) C x = (A ∨ B) C ∨ A Die Verwendung nur eines Gattertyps erleichtert die technische Realisierung, weswegen NAND oder NOR basierte Systeme oftmals verwendet werden. Logische Schaltnetze können durch die Minimierung der logischen Verknüpfung minimiert werden In vielen Fällen sind einfachere Schaltungen schneller Weniger Gatter reduziert die Kosten Es wird weniger Energie benötigt Die Suche nach einer einfacheren Lösung ist Ziel der Optimierung (Minimierung). Voraussetzung jeder Optimierung: Kostenfunktion beschreibt Ziel. In unserem Fall: Möglichst wenige, möglichst kleine Gatter Genauer: Die Anzahl der Eingänge in alle Gatter soll minimal werden. In einer Gleichung ist dann die Anzahl der Variablen aller Terme plus die Anzahl der Terme (Länge) minimal. _ _ _ Y = (D C B A) ∨ (D C B) ∨ (E C) => L = 4+3+2+3 = 12 Wie erzielen wir möglichst kleine Gatter? Wir versuchen, durch Anwendung der Rechenregeln, die einzelnen Terme kürzer zu machen. Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.30 Minimierung Logische Schaltnetze können mit den grundlegenden logischen Verknüpfungen UND, ODER und NICHT beschrieben werden: 2. Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8. Zusammenfassung Beschreibung von logischen Schaltnetze 1. y & Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 >1 8.31 Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.32 8. Zusammenfassung 8. Zusammenfassung Blockbildung im KV-Diagramm Fall D C B A Z 0 0 0 0 0 1 1 0 0 0 1 1 2 0 0 1 0 1 3 0 0 1 1 1 4 0 1 0 0 0 5 0 1 0 1 0 6 0 1 1 0 0 7 0 1 1 1 0 10 1 0 0 0 0 11 1 0 0 1 1 12 1 0 1 0 0 13 1 0 1 1 1 14 1 1 0 0 0 15 1 1 0 1 0 16 1 1 1 0 0 17 1 1 1 1 0 Arithmetisch-Logische Einheit (ALU) (2/2) A 1 B 1 0 1 1 2 0 13 7 1 0 17 11 Register X 4 0 0 1 10 0 3 1 12 0 5 0 6 s1 16 0 15 14 Multiplexerschaltnetz D s2 0 0 C __ _ _ __ _ _ _ _ __ DNF: Z = A B C D ∨ A B C D ∨ A B C D ∨ A B C D cin zero sign overflow Minterme: 0: 0000 1: 0001 13: 1011 00-0 (Blöcke) 2: 0010 3: 0011 00-1 11: 100110-1 _ _ _ __ _ Minimierte Gleichung: Z = A C D ∨ A C D ∨ ACD s3 s4 arithmetisch-logisches Schaltnetz s5 cout s6 s7 Schiebeschaltnetz Primblöcke: 00-- -0-1 __ _ Minimierte Gleichung mit Primtermen: Z = C D ∨ A C Register Z Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.33 8. Zusammenfassung Schaltwerke x1 x2 Eingangs- x 3 variablen Register Y Boolesche Algebra und Gatter Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.34 8. Zusammenfassung Das Register (1/2) Schaltnetze xn y1 y2 y3 Ein Register ist eine Aneinanderreihung von D-Flipflops, z.B. 8, oder 16 oder 32 Stück ("Breite" des Registers) Der Takt ist allen FFs gemeinsam Ausgangsvariablen yn D4 D3 D2 D1 Clk Clr S D Clk Clk Q3 R S D Clk Q4 R S D Clk Speicher elemente R S D Takt R Schaltwerk Q2 Q1 Reset Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.35 Schaltwerke Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.36 8. Zusammenfassung 8. Zusammenfassung Bestandteile eines von Neumann Rechners Haupt- bzw. Arbeitsspeicher für Programme und Daten RAM, ROM Busse Datenbus, Adressbus, Steuerbus Ein- / Ausgabewerk (I/O) Keyboard, Maus, Scanner, ….. Drucker, Bildschirm, …. Festplatten / Magnetbänder Steuerwerk (auch Leitwerk genannt) Rechenwerk Register Arithmetical Logical Unit (ALU) Steuerwerk + Rechenwerk = CPU Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.37 8. Zusammenfassung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.38 8. Zusammenfassung Assember Programm – ein Beispiel Programm in einer temp = v[k]; Hochsprache (C, Java) v[k] = v[k+1]; Compiler Assembler Programm (Spim für MIPS R2000) Assembler Maschinensprache Programm (MIPS R2000) C code v[k+1] = temp; lw lw sw sw $15, $16, $16, $15, 0($2) 4($2) 0($2) 4($2) 0000 1001 1100 0110 1010 1111 0101 1000 1010 1111 0101 1000 0000 1001 1100 0110 1100 0110 1010 1111 0101 1000 0000 1001 0101 1000 0000 1001 1100 0110 1010 1111 Interpretation durch Leitwerk Registertransfer IR ← Imem[PC]; PC ← PC + 4 Anweisungen ALUOP[0:3] ⇐ InstReg[9:11] & MASK ° ° Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Assemblerprogramm Maschinencode Registertransfer Anweisung 8.39 # Beispielprogramm V. 001 # berechnet den Umfang eines Dreiecks mit den Kanten x, y, z # kein sehr sinnvolles Programm .data x: .word 12 y: .word 14 z: .word 5 u: .word 0 .text main: lw $t0, x lw $t1, y lw $t2, z add $t0, $t0, $t1 # $t0 := x + y add $t0, $t0, $t2 # $t0 := x + y + z sw $t0, u # u := x + y + z li $v0, 10 # EXIT syscall Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.40 8. Zusammenfassung 8. Zusammenfassung Übersicht Pipelining Kontrollstrukturen Der Befehl wird nicht schneller ausgeführt, aber es können mehr Befehle pro Zeit ausgeführt werden. Sprünge (bedingte und unbedingte) If-then-else, Case Loop (n Durchläufe) While (Abbruchbedingung) Parallelität und damit eine Geschwindigkeitssteigerung um die Anzahl der Pipelinestufen. Pipelinekonflikte Stack Unterprogramme Pipelining Datenfluss-Konflikt durch Datenabhängigkeiten (Data Interlock) Beispiel: add $t0, $t1, $t2 # $t0 $t1 + $t2 addi $t0, 1# $t0 $t0 + 1 add Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.41 8. Zusammenfassung ID $t1,$t2 + $t0 addi ID $t0 +1 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.42 8. Zusammenfassung Architektur eines Pentiumsystems Potentielle Systemkomponenten Task Semantic Objects Example Operation GUI/shell window execute shell script Application a.out quit, kill, … File System directories, files open, close, read, Devices printer, display open, write, ... Communication ports send, receive, … Virtual Memory segments, pages write, fetch Secondary Store chunks, blocks allocate, free, Processes task queue exit, create… Threads ready queue wakeup, execute, Interrupts interrupt handler invoke, mask, ... Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 $t0 8.43 Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.44 8. Zusammenfassung 8. Zusammenfassung Aufgaben eines Betriebssystems (1/5) Allgemeine Schalenstruktur von UNIX und Linux Prozessverwaltung (Ein Prozess oder auch Task ist ein in Ausführung befindliches Programm) Erzeugen und Löschen von Prozessen Prozessorzuteilung (Scheduling) Prozesskommunikation Synchronisation nebenläufiger Prozesse, die gemeinsame Daten benutzen Speicherverwaltung Zuteilung des verfügbaren physikalischen Speichers an Prozesse Einbeziehen des Hintergrundspeichers (Platte) durch virtuelle Adressierung, demand Paging, Swapping (= Ein-/Auslagern von Prozessen), etc. Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.45 8. Zusammenfassung Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8. Zusammenfassung Ausblick Prozesse Kurzer Blick auf Konzepte zur Realisierung der Aufgaben eines Betriebssystems Einfluss auf Programmierung von Anwenderprogrammen Es werden Teilgebiete der folgenden grundlegenden Konzepte betrachtet Ein Prozess ist der Ablauf eines sequentiellen Programms. Benötigt Betriebsmittel (CPU, Speicher, Dateien, etc.) und ist selbst ein Betriebsmittel. Wird vom Betriebssystem verwaltet (Erzeugung, Terminierung, Scheduling, etc.) Ein Prozessor führt in jeder Zeiteinheit maximal einen Prozess aus. Laufen mehrere Prozesse, dann finden Prozesswechsel statt. Das Betriebssystem entscheidet über die Prozesswechsel. Prozesse sind gegeneinander abgeschottet, d.h. jeder besitzt (virtuell) seine eigene Betriebsmittel, wie etwa den Adressraum. Das BS sorgt für die Abschottung. Wir gehen von voneinander unabhängigen Prozessen aus. Bei Kooperation ist eine explizite Synchronisation erforderlich. Prozessverwaltung Speicherverwaltung Ein- und Ausgabe Dateisysteme Studenten des Studienganges „Angewandte Informatik“ wird der Besuch der Spezialvorlesung dringend empfohlen! Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.46 8.47 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.48 8. Zusammenfassung 8. Zusammenfassung Leichtgewichtsprozesse (Threads) Interprozesskommunikation (IPC) Prozesse arbeiten oft nicht allein, sondern müssen Informationen austauschen, um eine gemeinsame Aufgabe zu erfüllen. Threads sind parallele Kontrollflüsse, die nicht gegeneinander abgeschottet sind laufen innerhalb eines Adressraumes, innerhalb eines „echten“ Prozesses teilen sich gemeinsame Ressourcen Beim diesem Austausch müssen drei wichtige Fragen beantwortet werden: Wie werden die Daten ausgetauscht? Über gemeinsame Variablen? Über Nachrichtenaustausch? Wie wird sicher gestellt, dass die Prozesse nicht gleichzeitig auf gemeinsame Information zugreifen? Wie wird die richtige Reihenfolge des Zugriffs sicher gestellt (ProducerConsumer-Problem)? Die beiden letzten Fragen beschreiben das Synchronisationsproblem. Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.49 8. Zusammenfassung 8.50 8. Zusammenfassung Kommunikationsformen Gemeinsame Variablen: vor allem in Ein-Prozessor und Multiprozessor-Systemen mit gemeinsamem physikalischen Speicher Verklemmungen/Deadlocks Nachrichtenaustausch: vor allem bei verteilten Systemen, also Kommunikation über Rechnergrenzen hinweg Prozess Rechner Prozesse benötigen Betriebsmittel, meist sogar mehrere Drucker Festplatte Speicher (z.B. in internen BS-Tabellen) Was passiert wenn sich zwei Prozesse jeweils ein Betriebsmittel reservieren, das der andere auch benötigt? Rechner Prozess Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Diese Situation wird als Deadlock bezeichnet Speicher Definition: Eine Menge von Prozessen befindet sich in einer Verklemmung (deadlock), wenn jeder Prozess der Menge auf ein Ereignis wartet, dass nur ein anderer Prozess aus der Menge auslösen kann. Netz Prozess Prozess Rechner Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.51 Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.52 8. Zusammenfassung 8. Zusammenfassung Notwendige Bedingungen für eine Verklemmung 1. Einführung Wechselseitiger Ausschluss (mutual exclusion): Ein Betriebsmittel ist entweder genau einem Prozess zugeordnet oder es ist verfügbar. 2. Wartebedingung (hold and wait): Es gibt einen Prozess, der ein Betriebsmittel belegt und auf ein anderes Betriebsmittel wartet, das von einem anderen Prozess belegt wird. 3. Keine Verdrängung (no preemption): Einem Prozess kann ein Betriebsmittel nicht entzogen werden. 4. Zirkuläres Warten (circular wait): Es gibt eine Menge {P1, P2,..., Pn} von Prozessen, so dass P1 auf ein Betriebsmittel wartet das P2 belegt, P2 wartet auf ein Betriebsmittel das P3 belegt, ..., und Pn wartet auf ein Betriebsmittel das P1 belegt. Verschiedene Arten von Speichern, hierarchisch organisiert: Cache-Speicher Hauptspeicher Sekundärspeicher Archiv-Speicher Eigenschaften des Hauptspeichers: Der Hauptspeicher besteht aus einer Menge von Wörtern oder Bytes, die jeweils über eine eigene Adresse verfügen. Sowohl die CPU als auch E/A-Geräte greifen auf den Hauptspeicher zu. Ausführbare Programme befinden sich zumindest teilweise im Hauptspeicher. Die CPU kann normalerweise nur auf Daten im Hauptspeicher direkt zugreifen Prozessverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.53 8. Zusammenfassung Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.54 8. Zusammenfassung Grundlegende Speicherverwaltung Abbildungen von Speicheradressen Speichermanagement: grundsätzlich zwei Klassen: Ein Compiler/Assembler übersetzt symbolische Adressen (Namen von Variablen und Funktionen) in absolute oder relative Speicheradressen. Verschieben von Prozessen vom Hauptspeicher auf Festplatte und zurück (Swapping, Paging) Oder nicht (einfache Variante) Quelltext Bei Verzicht auf Swapping und Paging: Monoprogramming: Compiler symbolische Namen immer nur ein Prozess sowie das OS im Speicher Einsatzgebiet: frühe Batchsysteme, eingebettete Systeme Objektmodul absolute/relative Adressen Ein Linker bindet mehrere Objektmodule mit relativen Adressen und die benötigten Bibliotheken zu einem ausführbaren Programm (executable). Multiprogramming mit festen Partitionen Speicher wird in feste Blöcke eingeteilt, Programme bekommen einen Speicherbereich zugewiesen Einsatz im OS/360 von IBM Oft wurde die Größe der Partitionen einmal am Tag festgesetzt Objektmodule Linker relative Adressen Executable statisch/dynamisch gebunden Bibliotheken statisch/dynamisch Speicherverwaltung Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.55 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.56 8. Zusammenfassung 8. Zusammenfassung Moderne Speicherverwaltung Shared Libraries Heutige Computer haben andere Anforderungen an die Verwaltung des Speichers Insbesondere Laufen meist viele Prozesse Haben die Prozesse oft mehr Speicherbedarf als physikalischer Speicher vorhanden ist Zwei wichtige Lösungen: Swapping: Verschieben von Prozessen zwischen Hauptspeicher und Platte Virtual Memory: Prozesse sind nur zum Teil im Hauptspeicher Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.57 8. Zusammenfassung Speicherverwaltung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.58 8. Zusammenfassung Direct Memory Access (DMA) Einführung I/O kann mittels DMA deutlich beschleunigt werden, da die CPU weniger belastet ist Prinzip: vergib einen Auftrag an DMA-Controller, erledige bis zum Ende der Bearbeitung andere Dinge Ablauf eines DMA-Transfers: Inhalte Grundlegende Konzepte von Programmiersprachen Organisation von Compilern für moderne Programmiersprachen Einführung in die Theorie von formalen Sprachen und Automaten Als Grundlage dient das Buch “Programming Language Pragmatics” von Michael L. Smith Ein- und Ausgabe Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.59 Einführung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.60 8. Zusammenfassung 8. Zusammenfassung Der Kompilationsprozess (-phasen) Implementierung eines lexikalischen Analysators Scanner (lexikalische Analyse) Lese Programm und konvertiere Zeichenstrom in Marken (tokens). Theorie: Reguläre Ausdrücke, endlicher Automat Parser (syntaktische Analyse) Lese Tokenstrom und generiere Ableitungsbaum (parse tree). Theorie: Kontextfreie Grammatiken, Kellerautomat Semantische Analyse Wie übertragen wir reguläre Ausdrücke in einen lexikalischen Analysator? Konvertiere reguläre Ausdrücke zu einem deterministischen endlichen (finite) Automaten (DFA) Warum??? DFAs sind einfacher zu simulieren als reguläre Ausdrücke Traversiere Parserbaum, überprüfe nicht-syntaktische Regeln. Zwischencodegenerierung Traversiere Parserbaum noch mal, gebe Zwischencode aus. Optimierung Untersuche Zwischencode, versuche ihn zu verbessern. Zielcodegenerierung Übersetze Zwischencode in Assembler-/Maschinencode Optimierung Maschinenebene Untersuche Maschinencode, versuche ihn zu verbessern. Regular Expressions + Actions Schreibe ein Programm zum Simulieren eines DFAs Der DFA erkennt die Tokens im Eingabetext und wird der lexikalische Analysator Wenn ein Token erkannt wurde, dann kann eine benutzerdefinierte Aktion ausgeführt werden Lexical Analyzer Generator Lexical analyzer source code z.B. überprüfe, ob der Wert einer Ganzzahlkonstante in eine 32-bit integer passt Die Konvertierung von regulären Ausdrücken zu DFAs und das Schreiben eines Programms zum Simulieren des DFA kann entweder von Hand vorgenommen werden oder von einem anderen Programm, welches lexikalischer Analysegenerator genannt wird. High-level language compiler Lexical analyzer Lexikalische Analyse Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.61 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8. Zusammenfassung 8. Zusammenfassung Kontextfreie Grammatiken (1/4) Ableitungen und Ableitungsbäume (2/2) Eine kontextfreie Grammatik (KFG/CFG) ist eine rekursive Definition einer Sprache mit: Einem Alphabet Σ von Symbolen expr symbol -> symbol symbol … symbol Ein Startsymbol Eine Menge von nicht-terminalen Symbolen aus dem Alphabet Σ, welche auf der linken oder rechten Seite einer Produktionsregel erscheinen darf (convention: written in all capital letters) Eine Menge von terminalen Symbolen aus dem Alphabet Σ, welche nur auf der rechten Seite einer Produktionsregel erscheinen darf. (convention: written in all lower case letters) Die Menge aller von einer CFG G erzeugten Strings wird die Sprache von G genannt und wird symbolisiert durch L(G) 8.63 expr ⇒ ( sum) ⇒ ( expr + expr ) expr ⇒ ( INT + expr ) INT ⇒ (INT + ( sum ) ) ⇒ (INT + ( expr + expr ) ) expr ⇒ (INT + ( INT + expr ) ) INT ⇒ (INT + (INT + INT ) ) Eine Menge von Produktionen (oder Regeln) der Form Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.62 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 ( sum ) + expr ( sum ) + expr INT 8.64 8. Zusammenfassung 8. Zusammenfassung Mehrdeutigkeiten (1/2) Kellerautomat (2/4) Eine Grammatik gilt als Mehrdeutig, wenn ein Satz mit (mind.) zwei verschiedenen Ableitungsbäumen abgeleitet werden kann Beispiel – linksseitige versus rechtsseitige Ableitung: Grammatik: expression -> identifier | number | - expression | ( expression ) | expression operator expression operator -> + | - | * | / Das Eingabeband kann sich nur in eine Richtung bewegen. Es existiert ein "Hilfsband", welches sich in beide Richtungen bewegen kann. Der Automat liest im ersten Schritt die jeweils erste Zelle beider Bänder. Als Reaktion des Automaten kann entweder das Hilfsband vorwärts bewegt und ein Zeichen in die nächste Zelle geschrieben werden oder das Symbol gelöscht und das Hilfsband eine Zelle zurück bewegt werden. Eingabe: slope * x + intercept Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.65 8. Zusammenfassung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.66 8. Zusammenfassung Klassen von Grammatiken und Parsern Probleme mit der LL-Syntaxanalyse (1/4) LL(k) Parser Eingabe wird von links-nach-rechts (1. L) abgearbeitet linksseitige Ableitung (2. L) “top down” oder “prädiktive” (voraussagende) Parser genannt LR(k) parsers Eingabe wird von links-nach-rechts (1. L) abgearbeitet rechtsseitige Ableitung (2. R) “bottom up” oder “schiebe-reduziere“ (shift-reduce) Parser genannt “k” steht für die Anzahl von Symbolen (token) für die in der Eingabe vorausgeschaut werden muss um eine Entscheidung treffen zu können LL(k) – welche nächste Produktion auf der rechten Seite ist bei einer linksseitigen Ableitung zu wählen LR(k) – ob zu schieben oder reduzieren Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Kontextfreie Grammatiken können von Kellerautomaten (Push Down Automata, PDA) erkannt werden PDAs sind eine Erweiterung der endlichen Automaten um ein „einfaches“ Gedächtnis (Hilfsband) Eigenschaften eines Kellerautomaten: 8.67 Linksrekursion Produktionen von der Form: A -> Aα A -> β Wenn eine Grammatik linksrekursive Produktionen enthält, dann kann es dafür keinen LL Parser geben LL Parser würden in eine Endlosschleife eintreten, wenn versucht wird eine linksseitige Ableitung in solch einer Grammatik vorzunehmen Linksrekursion kann durch das Umschreiben der Grammatik ausgeschlossen werden A -> βA’ A’ -> αA’ | є Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.68 8. Zusammenfassung 8. Zusammenfassung Probleme mit der LL-Syntaxanalyse (3/4) Beispiel für PREDICT-Mengen Gemeinsame Präfixe Tritt auf wenn zwei verschiedene Produktionen mit der gleichen linken Seite mit den gleichen Symbolen anfangen Produktionen der Form: Kann durch Faktorisierung ausgeschlossen werden: A -> bA’ A’ -> α | β 8.69 8. Zusammenfassung A True {a,b,є} {b,s,a} S -> A B S B -> b A -> a B True {b, є} {s,a,b} S False {s,a,b} {$} PREDICT A->B {a,b,є,s} A->a {a} B->є {a,b,s} B->b {b, є} S->s$ {s} {a,b,s} Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 PREDICT-Mengen zeigen uns welche Menge von look-ahead Symbolen die rechte Seite einer Produktion selektiert Diese Grammatik ist NICHT LL(1), da es duplizierte Symbole in den PREDICT-Mengen für alle drei Nichtterminale gibt Siehe Hervorhebungen (dick, rot) 8.70 8. Zusammenfassung Ableitungsbäume und Parser mit rekursivem Abstieg (2/2) Beispiel: Jedes nichtterminale Unterprogramm konstruiert einen Ableitungsbaumknoten node *factor (void) { factor -> ( expr ) factor -> [ sexpr ] FOLLOW A -> B S->ABS Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 FIRST B -> є S -> s$ A -> bα A -> bβ LL(1) Parser kann nicht entscheiden welche Regel auszuwählen ist, wenn A in einem linksseitigen Ableitungsschritt zu ersetzen ist, weil beide rechten Seiten mit dem gleichen Terminalsymbol anfangen NULLABLE Ausblick Namen, Bindungen und Gültigkeitsbereiche (Kapitel 3) Objektlebenszeit und Speichermanagement Kontrollfluss (Kapitel 6) Zusammenführung (Bau eines ausführbaren Programms) (Kapitel 9) switch(next_token()) { case ‘(‘: node = factor_node(expr()); match(‘)’); break; case ‘[‘: node = factor_node(sexpr()); Nicht alle Symbole werden zu einem Ableitungsbaumknoten Beispiele: ‘(‘, ‘)’, ‘[‘, ‘]’ Diese Art von Ableitungsbaum } wird „Abstrakter Syntaxbaum“ (abstract syntax tree, AST) genannt Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 match(‘]’); break; } return node; 8.71 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.72 8. Zusammenfassung 8. Zusammenfassung Zusammenfassung Namen und Bindungen Gültigkeitsbereiche Namen Textueller Bereich eines Programms in welchem eine Bindung aktiv ist Es gibt grundsätzlich zwei Varianten: Ein mnemonischer Zeichenname wird verwendet um irgendetwas anderes zu repräsentieren oder zu benennen Beispiel: Variable foo kann die Speicherstelle 10000 referenzieren Statische Gültigkeitsbereiche (static scopes) Es kann zur Compilezeit genau festgestellt werden welcher Name welches Objekt an welchen Punkten im Programm referenziert Bindungen Dynamische Gültigkeitsbereiche (dynamic scopes) Ist eine Assoziation zwischen zwei Dingen Bindungen zwischen Namen und Objekten hängen vom Programmfluss zur Laufzeit ab Ein Name und das was er referenziert Nähere Ausführung Bindezeit Der Prozess durch den eine Menge von Bindungen aktiv wird wenn die Kontrolle in einen Gültigkeitsbereich eintritt Die Bindezeit ist die Zeit zu der die Entscheidung über eine solche Assoziation gemacht wird Zum Beispiel die Allokation von Speicher um Objekte darin zu halten Beispiel: Ist der Wert von foo in einem Register oder im Speicher? (Entscheidung wird zur Compilezeit gemacht) Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.73 8. Zusammenfassung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.74 8. Zusammenfassung Objektlebensdauer (1/3) Objektlebensdauer (3/3) Schlüsselereignisse während der Lebensdauer eines Objektes Die Lebenszeit eines Objekts korrespondiert mit einem von drei Hauptmechanismen der Speicherallokation Objekt wird erzeugt Bindungen zum Objekt werden erzeugt Referenzen zu den Variablen, Unterprogrammen und Typen werden durch Bindungen gemacht Deaktivierung und Reaktivierung von temporär nicht verwendbaren Bindungen Vernichtung von Bindungen Vernichtung des Objekts Statische Allokation Objekte werden zur Compilezeit oder Laufzeit zu festen Speicherplätzen allokiert Stack Allokation Objekte werden zur Laufzeit wie benötigt allokiert, wobei eine last-in, first-out Ordnung gilt Beispiel: Lokales Lebensdauer von Bindungen: Zeit zwischen Erzeugung und Vernichtung einer Bindung Heap Allokation Beispiel: Zeit während der eine Java Referenz ein Objekt im Speicher referenziert Objekte werden zur Laufzeit in einer beliebigen Reihenfolge allokiert und freigegeben Beispiel: dynamisch allokierte Objekte Lebensdauer von Objekten: Zeit zwischen Erzeugung und Vernichtung eines Objekts Beispiel: Zeit während der ein Objekt im Speicher „lebt“ Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.75 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.76 8. Zusammenfassung 8. Zusammenfassung Kategorien von Kontrollflussmechanismen Peephole-Optimierung Sequentialität (sequencing) Bestimmt für ein gegebenes Paar von Berechnungen welches zuerst ausgeführt wird Auswahl (selection) Wähle, basierend auf einer Laufzeitbedingung, welche von mehreren Berechnungen ausgeführt werden soll Iteration (iteration) Führt eine Gruppe von Berechnungen mehrmals aus Rekursion (recursion) Erlaubt es Berechnungen durch sich selbst zu definieren (Allows computations to be defined in terms of themselves) Prozedurale Abstraktion (procedural abstraction) Sehe dir den Zielcode an, wenige Instruktionen gleichzeitig, und versuche einfache Verbesserungen zu machen Versucht kurze, sub-optimale Folgen von Instruktionen zu finden und ersetzt diese Sequenzen mit einer „besseren“ Sequenz Sub-Optimale Sequenzen werden durch Muster (patterns) spezifiziert Meistens heuristische Methoden — Es gibt keinen Weg um zu überprüfen ob das Ersetzen eines sub-optimalen Musters tatsächlich das endgültige Programm verbessern wird Einfach und ziemlich wirksam Erlaubt es einer Gruppe von Berechnungen zu bennen, möglicherweise zu parametrisieren und auszuführen wann immer der Name referenziert wird Nebenläufigkeit (concurrency) Erlaubt es Berechnungen „zur gleichen Zeit“ auszuführen Keine Festlegung (Nondeterminancy) Reihenfolge zwischen Berechnungen wird unspezifiziert gelassen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.77 8. Zusammenfassung 8.78 8. Zusammenfassung Die Organisation eines typischen Compilers Binden (linking) Frontend Beim Binden werden mehrere durch den Assembler erzeugte Objektdateien zu einer einzelnen, ausführbaren Datei kombiniert, welche durch ein Betriebssystem lauffähig ist Führt Operationen aus welche von der zu kompilierenden Sprache abhängen und nicht von der Zielmaschine Backend Führt Operationen aus welche etwas Wissen über die Zielmaschine haben müssen Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.79 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.80 8. Zusammenfassung 8. Zusammenfassung Was haben Sie in diesem Kapitel gelernt? Matrix der Kommunikationsformen Programmiersprachen sind Abstraktionsmechanismen, welche: ein Rahmenwerk zum Lösen von Problemen und erzeugen neuer Abstraktionen bieten Schirmen den Programmierer von niederen Detailebenen (low-level details) der Zielmaschine (Assemblersprache, Verbinden (linken), etc.) ab Compiler sind komplexe Programme welche eine höhere Programmiersprache in eine Assemblersprache umwandeln um danach ausgeführt zu werden Compilerprogrammierer handhaben die Komplexität des Kompilationsprozesses durch: aufteilen des Compilers in unterschiedliche Phasen verwenden, ausgehend von der Spezifikation, eine Theorie für den Bau von Compilerkomponenten Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.81 8. Zusammenfassung Leitungsvermittlung PaketVermittlung Verbindungs -los IP über feste ATM-Strecken UDP über IP im Internet; NFS-Anwendung Verbindungs -orientiert Telefon TCP über IP im Internet; Email; FTP Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.82 8. Zusammenfassung Netztopologien und Medienzuteilung Darstellung und Schichtung von Diensten Stern Dienstnutzer einfache Wegwahl geringe Ausfallsicherheit Dienstnutzer Dienstschnittstelle N Ring Dienstzugangpunkt N N-Instanz 1 einfache Wegwahl geringe Ausfallsicherheit hoher Aufwand für die Steuerung N-Instanz 2 Dienstschnittstelle N-1 Schicht N Dienstzugangpunkt N-1 Bus Stationen teilen sich ein Medium gute Ausfallsicherheit (N-1)-Instanz 1 (N-1)-Instanz 2 Schicht N-1 Liniennetz konzeptionell einfach mittlere Ausfallsicherheit Position im Netz beeinflusst Übertragungszeiten Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Die Bildung von Schichten ist ein grundlegendes Prinzip zur Strukturierung von Kommunikationssystemen. Dienste einer Schicht dürfen immer nur Dienstprimitive von Diensten in direkt benachbarten Schichten in Anspruch nehmen. 8.83 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.84 8. Zusammenfassung 8. Zusammenfassung Protokolldateneinheit (1/2) Das ISO/OSI-Referenzmodell Eine Protokolldateneinheit (PDU, Protokol Data Unit) ist eine Informationseinheit, die zwischen Partnerinstanzen in verschiedenen Stationen als Teil des Protokolls ausgetauscht wird. Als Dienstdateneinheit (SDU, Service Data Unit) werden Schnittstellendaten bezeichnet, die von einer Schicht an die nächst niedrige oder umgekehrt übertragen werden. PKI PKI N-Protokolldateneinheit N-Header N-BenutzerN-Trailer daten (N-1)-Protokoll(N-1)-Header dateneinheit Beispiele: Folgenummer Adressen Application Process Endsystem Endsystem Anwendung Application Darstellung Presentation Steuerung Session Transport PKI PKI Anwendungsprozeß (N-1)- Benutzerdaten (N-1)-Trailer Nachricht der N-Schicht Fehlerprüfung Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Vermittlung Network Network Sicherung Data Link Data Link Bitübertragung Physical Physical Medium 8.85 8. Zusammenfassung Transport Transitsystem Media Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.86 8. Zusammenfassung Protokollmechanismen die alle Schichten betreffen LANs im ISO/OSI-Referenzmodell Namensgebung (Naming): Identifikation von Objekten/Ressourcen Segmentieren und Blocken Verbindungen und Multiplexen Synchronisation: Kontrolle in einer Umgebung mit unvorhersehbarer Verzögerung und Fehlverhalten Fehlerüberwachung: Fehlererkennung und -behebung Flusskontrolle/Staukontrolle Prioritäten Die LAN-Protokolle sind in der zweiten Schicht des ISO/OSI- Referenzmodells (Sicherungsschicht, data link layer) angesiedelt. Die Sicherungsschicht wird nach IEEE in zwei Teilschichten aufgeteilt: Die logical link control (LLC) Schicht realisiert die normalerweise in der Schicht 2 vorhandenen Sicherungsfunktionen. Logical Link Control Anwendung Darstellung Steuerung Transport Vermittlung Sicherung Media Access Control Bitübertragung Die media access control (MAC) Schicht regelt den Zugang zum Übertragungsmedium. Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.87 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.88 8. Zusammenfassung 8. Zusammenfassung IEEE 802.3 - CSMA/CD Ablauf einer Kollision: IEEE 802.5 – Prinzip Station A Station B Token-Ring Übersicht Ringtopologie mit Sternverkabelung. Nur eine Senderichtung. Typischerweise STP-Kabel (andere möglich, z.B. koaxial). 4/16 Mbps, < 260 Stationen, < 100 m zwischen den Stationen. A beginnt zu senden: B beginnt zu senden: B erkennt die Kollision: B sendet JAM Signal: Backoff: Beim i-ten Versuch wird die Übertragung nach n Slotzeiten wiederholt, wobei n eine Zufallszahl aus dem Bereich 0 ... 2i-1 ist. Die Slotzeit für ein 10 Mbps Koaxialkabel mit maximal 2.5 km Länge entspricht 512 Bitzeiten oder 51.2 us. Applet-Demo: http://herodot.informatik.uni-mannheim.de/appverw/appletlist2.php Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Interface Interface 8.89 8. Zusammenfassung DD Token Token AA CC BB DD MAC-Protokoll Token rotation (token passing) protocol. Unterstützung von Echtzeitdatenverkehr: Concentrator Concentrator AA beschränkte Wartezeit für den Medienzugriff wegen begrenzter token holding time. Prioritäten. CC BB Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.90 8. Zusammenfassung Verbindung von Netzen Zwischensysteme: Zusammenfassung Klassifikation von Verbindungen: Verbindung von homogenen Netzen über Brücken Verbindung von heterogenen Netzen über Brücken oder Gateways Zwischensysteme Isolation des Verkehrs Repeater und Hubs (bis Schicht 1) Brücken (bridges) und Switches (bis Schicht 2) Router (bis Schicht 3) Gateways (bis Schicht 4 oder höher) Plug & Play Diese Zwischensysteme gibt es oft nicht in Reinform, da verschiedene Funktionalitäten angeboten werden Optimale Wegewahl z.B. Router haben oft Funktionalitäten eines Gateways, wie z.B. Port-Filter (für Firewalls) Durchleiten ohne Zwischenspeicherung Die Bezeichnungen von Zwischensystemen werden auch desöfteren falsch verwendet! Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.91 Hub Brücke Switch Router Nein Ja Ja Ja Ja Ja Ja Nein Nein Nein Nein Ja Ja Nein Ja Nein Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.92 8. Zusammenfassung 8. Zusammenfassung Die Internet-Protokollfamilie Das Modell von IP Datagramme Web browser, e-mail, ... Other user applications Applications Einzelne, unabhängig voneinander weitergeleitete Pakete, die sich ihren Weg zum Ziel suchen User space Application protocols: HTTP, SMTP, FTP, ... Routing-Tabellen R2 geben den Ausgang zu einem Ziel an Application Programming Interface (API) R3 R1 UDP TCP IGMP ICMP RIP OS kernel OSPF IP RARP „Best effort“-Dienst Transport Network ARP LAN DL technology WAN DL technology Data Link R6 yx yx DA,SA data Routing tables Router R1 Next hop R3, R4 ... y yx Router R3 DA y ... Next hop R6 ... yx Router R6 DA y ... Next hop ... Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.93 8. Zusammenfassung 8.94 8. Zusammenfassung IPv4-Adressen Transportschicht: TCP und UDP 32 bits Binäre und dezimale Darstellung 32 Dezimal yx DA y ... Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Binär: x Praktisch keine Echtzeit yx R4 Keine Garantie für Auslieferung eines Pakets Korrekte Reihenfolge R5 23 15 7 0 11010100 01111110 11010000 10000111 212 . 126 . 208 . 135 Hierarchische Adressierung Zwei Möglichkeiten Der grundlegende unzuverlässige Internetdienst genügt, dann verwende UDP. Er genügt nicht, dann verwende TCP. End-To-End-Signifikanz: Netzwerk-Nummer + Netzmaske (Classless Interdomain Routing (CIDR), RFC 1519). Bemerkung: IP-Adressklassen werden praktisch nicht mehr verwendet (wg. Adressknappheit) Netzangabe: 134.76.0.0/255.255.0.0 oder alternativ 134.76.0.0/16 (16 = Länge der Netzmaske) Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 Aufgabe der Transportschicht: Datentransport von einem Prozess auf einem Rechner zu einem (oder mehreren) anderen Prozessen auf anderen Rechnern im Internet 8.95 IP-Adressen identifizieren IP-Hosts und keine Applikationen. IP besitzt daher eine Host-To-Host-Signifikanz. Ein Transportendpunkt wird durch eine IP-Adresse und eine lokale eindeutige Portnummer identifiziert. TCP und UDP besitzen End-To-End-Signifikanz. Für Standard-Dienste sind Portnummern fest definiert (well-known ports). Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.96 8. Zusammenfassung 8. Zusammenfassung DNS-Abfragen (1/2) Geschafft root NS 2(Q) 5(R) 4(R) Compilerbau (Kapitel 6) Iterative Abfragen Rekursive Abfragen root NS Q = Query R = Response Rfr = Referral 3(Q) Betriebssysteme (Kapitel 5) 3(Q) 4(Rfr) sam.edu NS (local) bob.com NS (authoritative) sam.edu NS (local) bob.com NS (authoritative) Maschinenorientierte Programmierung (Kapitel 4) 1(Q) 6(R) 1(Q) 2(Rfr) 5(Q) 6(Rfr) vega.sam.edu Query: “Address of sun.bob.com” 5(R) 5(R) von-Neumann-Rechner (Kapitel 3) sun.bob.com Query: “Address of sun.bob.com” Vega sam.edu bob.comNS NS sam.eduNS NS root rootNS NS bob.com Vega 1(Q) 1(Q) 2(Q) 2(Q) 3(Q) 3(Q) 6(R) 6(R) vega.sam.edu sun.bob.com 4(R) 4(R) Vega sam.edu bob.comNS NS sam.eduNS NS root rootNS NS bob.com Vega 1(Q) 1(Q) 2(Rfr) 2(Rfr) 3(Q) 3(Q) 4(Rfr) 4(Rfr) 5(Q) 5(Q) 6(R) 6(R) Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.97 8. Zusammenfassung Speicher Zahlen und logische Schaltungen (Kapitel 2) Kommunikation (Kapitel 7) von-Neumann-Rechner Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8. Zusammenfassung ENDE Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.98 ENDE 8.99 Dipl.-Inform. Michael Ebner, Prof. Dr. Dieter Hogrefe Informatik II - SS 2004 8.100