Kai Bruns, Paul Klimsa (Hrsg.) Informatik fur Ingenieure kompakt Informatik fur Ingenieure kompakt _ ____.. Die Herausgeber: Prof. Dr.-Ing. Kai Bruns Hochschule fUr Technik und Wirtschaft Dresden Prof. Dr. phil., M. A. Paul Klimsa Technische UniversWit Ilmenau Die Autoren des Buches: Prof. Dr.-Ing. Kai Bruns Hochschule fUr Technik und Multimedia Wirtschaft bresden Prof. Dr.-Ing. habil. Peter Forbrig UniversWit Rostock Softwaretechnik Prof. Dr. rer. nat. Timm Grams Fachhochschule Fulda Modellbildung und Simulation Prof. Dr. rer. nat. habil. Patrick Horster Universitat Klagenfurt Kryptologie Prof. Dr. phil. M. A. Paul Klimsa Technische Universitat Multimedia Ilmenau Prof. Dr. rer. nat. Ingbert Kupka Technische Universitat Kiinstliche Intelligenz Clausthal Prof. Dr.-Ing. Wolfgang Rehm Technische Universitat Rechnerarchitektur Chemnitz Prof. Dr.-Ing. habil. Alexander Schill Technische Universitat Rechnernetze und Verteilte Systeme Dresden Dr.-Ing. Stefan Schlechtweg Otto-von-Guericke-Universitat Grundlagen der Computergrafik Magdeburg Prof. Dr. rer. nat. habil., Otto-von-Guericke-Universitat Ph. D. Thomas Strothotte Magdeburg Grundlagen der Computergrafik Prof. Dr. rer. nat. Volker Turau Fachhochschule Wiesbaden World Wide Web Prof. Dr. math. Ingo Wegener Universitat Dortmund Algorithmen Prof. Dr. rer. pol. habil. Lutz Wegner Universitat Gesamthochschule Datenbanken Kassel Prof. Dr. rer. nat. Dieter Zobel Universitat Koblenz-Landau Betriebssysteme vieweg ________________ __" Kai Bruns, Paul Klimsa (Hrsg.) Informatik fur Ingenieure kompakt Mit 186 Abbildungen I I vleweg Die Deutsche Bibliothek - CIP-Einheitsaufnahme Ein Titeldatensatz flir diese Publikation ist bei Der Deutschen Bibliothek erhiiltlich. ISBN -13:978-3-322-86799-5 e-ISBN-13 :978-3-322-86798-8 DOl: 10.1007/978-3-322-86798-8 Der Reihenherausgeber: Prof. Dr.-Ing. Otto Mildenberger lehrt an der Fachhochschule Wiesbaden in den Fachbereicben Elektrotechnik und lnfonnatik. Aile Rechte vorbehalten © Friedr. Vieweg & Sohn Verlagsgesellschaft mbH, Braunschweig/Wiesbaden, Februar 2001 Softcover reprint of the hardcover 1st edition 2001 Der Verlag Vieweg ist ein Unternehmen der Fachverlagsgruppe BertelsmannSpringer. Das Werk einschlieBlich aller seiner Teile ist urheberrechtlich ge schutzt. Jede Verwertung auBerhalb der engen Grenzen des Ur heberrechtsgesetzes ist ohne Zustimmung des Verlags unzuliissig und stratbar. Das gilt insbesondere flir Vervielfiiltigungen, Oberset zungen, Mikroverfilmungen und die Einspeicherung und Verar beitung in elektronischen Systemen. www.vieweg.de Technische Redaktion: Hartmut Kuhn von Burgsdorff Konzeption und Layout des Umschlags: Ulrike Weigel, www.CorporateDesignGroup.de Gesamtherstellung: Druckerei Hubert & Co., Gottingen Gedruckt auf siiurefreiem Papier v Vorwort Die Informatik ist ein sehr populaces Fachgebiet, imrner mehr Ingenieure in der Praxis und Studierende an den Hochschulen sind damit aktuell konfrontiert. Das vorliegende Buch enthaIt eine Auswahl besonders wichtiger und aktueller Teilgebiete der Informatik. Es richtet sich an zwei Zielgruppen. Einerseits sind das ausgebildete Ingenieure in der Praxis, anderer seits Studenten von Universitiiten, Berufsakademien, Hoch- und Fachschulen. Dabei ist es unwesentlich, ob Informatik im Haupt-oder Nebenfach studiert wurde oder wird. Vorausge setzt werden ingenieurtechnisches Grundwissen und Fiihigkeiten in der hOheren Mathematik. Es kann nicht Anliegen sein, die Vielzahl an Fachliteratur zu den besprochenen Themen zu ersetzen. Vielmehr handelt es sich urn eine kompakte Zusamrnenfassung von Schwer punkten der Informatik auf Hochschulniveau. Die einzelnen Kapitel basieren jeweils auf konkreten Lehrveranstaltungen an Universitiiten, Hoch- und Fachschulen. Durch Grafiken, Tabellen und mit vielen Beispielen wurde versucht, ein anschauliches Nachschlagewerk an zubieten, das studienbegleitend und studienergiinzend verwendet werden kann. Alle Kapitel enthalten Literaturhinweise flir vertiefende Studien und flir eine gezielte Spezialisierung. Ein Betriebssystem ist notwendig, damit Computerhardware ftir Anwendungen und An wendungsentwickler nutzbar wird. Das Buch beginnt im Kapitel 1 mit einer sehr systerna tischen Abhandlung von Prinzipien und gruncllegenden Technologien von Betriebssysternen. Das Kapitel 2 widmet sich dann der Computer-Hardware, wobei der Bogen von einfachen Rechenwerken bis hin zu rnodernen Architekturen fiir Hochleistungsrechner gezogen wird. Jedes Programrn auf einem Computer implementiert einen Algorithmus. 1m Kapitel 3 wer den Algorithmen anhand konkreter Beispiele klassifiziert und somit Anhaltspunkte flir die Algorithmierung eigener Probleme geschaffen. Das Kapitel 4 befaBt sich mit der Daten banktechnologie. Es werden DatenrnodelIe, Normalformen und die wichtigsten Basistech nologien besprochen. Auch aktuelle Anwendungen, wie Datenbanken irn Internet, werden dargestellt. Aus rnehreren Sichten wird im Kapitel 5 die Entwicklung von Software behan delt. Unter anderem werden Modellierung, Implementierung (mit einer Gegeniiberstellung verschiedener Prograrnmiersprachen), Dokumentation und der Test beschrieben, wobei auch auf unterstiitzende Werkzeuge eingegangen wird. Da die Vernetzung von Computern aktuell imrner mehr in den Mittelpunkt der Informatik riickt, werden dieser Thematik zwei Kapi tel gewidrnet. Das Kapitel 6 bespricht Rechnernetze und verteilte Systeme basierend auf physikalischen Prinzipien bis hin zu den wichtigsten Protokollen und Diensten. Das Kapi tel 7 konkretisiert auf Basistechnologien flir das Internet (World Wide Web). Imrner noch erfolgreich und seit mehreren Jahrzehnten in der offentlichen Diskussion ist die Kiinstliche VI Intelligenz, der das Kapitel 8 gewidmet ist. Das Kapitel 9 bespricht eine der wichtigstcn ingenieurtechnischen Anwendungen der Informatik, die Modellierung und Simulation. Da solche Simulationen nicht selten nur berechnet, sondern anschlieBend oft auch visualisiert werden, folgt nun das Kapitel 10 mit den Grundlagen der Computergrafik. Hier findet def Leser weit mehr als eine sehr spannende Darstellung wichtiger Basistechnologien. Das Buch endet mit zwei sehr aktuellen Ihemengebieten. 1m Kapitel 11 werden die wichtigsten Vef schltisslungstechniken bis hin zu den aktuellen Standards diskutiert. Multimedia, als eines der jiingsten Gebiete der Infonnatik, ist Gegenstand des Kapitels 12. An dieser Stelle mochten WIT allen Autoren fur die weitgehend unkomplizierte und kon struktive Zusanunenarbeit danken. Den Studenten Benjamin Neidhold und Felix FrOde gilt Dank fur viele wichtige (nicht nur zielgruppenbezogene) Hinweise. Ohne die vielseitige und immer kurzfristige und kompetente Hilfe von Prof. Mildenberger vom Verlag Vieweg ware dieses Buch sicher nicht entstanden, zumal er den AnstoB fur dieses Projekt gab. Die Autoren und Herausgeber sind an Kritik, konkreten Hinweisen und VorschHigen def Leserinnen und Leser sehr interessiert. Dresden, im November 2000 Die Herausgeber vn Inhaltsverzeichnis 1 Betriebssysteme 1 1.1 Einfuhrung in Betriebssysteme 1.1.1 Aufgaben . . . . . . . 1.1.2 Betriebsarten . . . . . 2 1.1.3 Genealogie der Betriebssysteme 4 1.2 Aufbauformen von Betriebssystemen . 4 1.2.1 Kategorien von Aufbauformen 4 1.2.2 Systemaufrufe. . . . . . . . 6 1.2.3 Der Kern ......... . 7 1.3 Komponenten von Betriebsystemen 9 1.3.1 Prozessverwaltung . 9 1.3.2 Dateiverwaltung ... l3 1.3.3 Speicherverwaltung . 16 1.3.4 Gerateverwaltung .. 20 1.4 Parallelitat bei Betriebssystemen 22 1.4.1 Parallelitat und Synchronisierung . 22 1.4.2 Elementare Synchronisierung. . . 26 1.4.3 Synchronisierung mit Semaphoren 28 1.4.4 Deadlocks bei der Synchronisierung 29 1.5 Leistungsbewertung bei Betriebssystemen 30 1.6 Literatur . . . . . . . . . . . . . . . . . . 33 2 Rechnerarchitektur 35 2.1 Einfache Rechenwerke 35 2.2 Freiprogrammierbare Rechenmaschine . 36 2.3 Stored Program-Computer 38 2.4 von Neumann-Architektur . 39 2.5 Register-Architekturen ... 41 2.6 Maschinenprogrammierung . 42 2.7 Befeh1ssatz-Architektur ... 44 2.8 CPU und System . . . . .. 49 2.9 Leistungssteigerung durch Pipelining . 50 VIII Inhaltsverzeichnis 2.10 Vektorrechner . . . . . . . . . . . 55 2.11 Superskalare und andere Techniken 57 2.12 Speicherhierarchie und Caches 61 2.13 Parallelrechner . 64 2.14 Literatur 69 3 Algorithmen 71 3.1 Einfiihrung ........... . 71 3.2 Divide-and-conquer Algorithmen . 73 3.3 Dynamische Programmierung . 77 3.4 Branch-and-bound Algorithmen 80 3.5 Greedy Algorithmen .. .. 83 3.6 Lokale Suche ....... . 85 3.7 Approximationsalgorithmen 87 3.8 Randomisierte Algorithmen . 91 3.9 Zusammenfassung . 96 3.10 Literatur 97 4 Datenbanken 99 4.1 Die Aufgabe einer Datenbank . 99 4.2 Das Entity-Relationship Modell 101 4.3 Das relationale Modell 104 4.3.1 Relationen . 105 4.3.2 Nullwerte . . . 105 4.3.3 Schltissel ... 106 4.3.4 Fremdschltissel und referentielle Integritat 107 4.3.5 Operationen der relationalen Algebra. 108 4.3.6 Zusatzliche Operationen .. 111 4.3.7 NF2-Algebra ....... . 113 4.3.8 Der tupel-relationale Kalktil 114 4.4 Die Datenbanksprache SQL. . . . . 115 4.4.1 Datendefinitionsanweisungen . 116 4.4.2 Datenmanipulationsanweisungen . 119 4.4.3 Die SQL3-Entwicklung .... 121 4.5 Der Entwurf relationaler Datenbanken 121 4.5.1 Abhangigkeiten . . 121 4.5.2 Normalformen ... 125 4.5.3 BCNF versus 3NF . 127 4.6 Das Transaktionsprinzip . 128 4.6.1 Das ACID-Transaktionsprinzip . 128 4.6.2 Sicherung VOT Datenverlust . . 129 4.6.3 Kontrolle der Nebenlaufigkeit 130 4.7 Netzwerk-und hierarchisches Modell 132 4.7.1 Das Netzwerkmodell ..... 133 Inhaltsverzeichnis IX 4.7.2 Das hierarchische Datenmodell . 133 4.8 Objekt-orientierte Datenmodelle l34 4.9 Datenbanken und das WWW l36 4.10 Literatur . . . . . . . . . . 137 5 Softwaretechnik 139 5.1 Einfiihrung .......... . 139 5.2 Lebenszyklusmodelle . . . . . . 141 5.3 Prinzipien, Konzepte, Methoden 144 5.4 Basistechniken ...... . 148 5.4.1 Datenmodellierung .. . 148 5.4.2 Prozessmodellierung .. 151 5.5 Strukturierter Ansatz fur Analyse und Entwurf . 155 5.6 Objektorientierter Ansatz ftir Analyse und Entwurf 159 5.6.1 Konzepte .... 159 5.6.2 Basismodell . . . .. 162 5.6.3 Statisches Modell .. 164 5.6.4 Dynamisches Modell 167 5.6.5. Modell der Systemnutzung . 168 5.7 Implementieren 170 5.8 Dokumentieren ......... . 177 5.9 Testen .............. . 179 5.9.1 Allgemeine Bemerkungen 179 5.9.2 Statisches Testen .. 181 5.9.3 Dynamisches Testen 182 5.9.4 Back-to-Back-Testen 184 5.10 Werkzeuge 184 5.11 Literatur . . . . . . . . . . 185 6 Rechnernetze nnd Verteilte Syteme 187 6.1 Einleitung und Uberblick . . . . 187 6.2 Physikalische Ubertragung . . . 192 6.2.1 Theoretische Grundlagen 192 6.2.2 Ubertragungsmedien 195 6.2.3 Signalaufbereitung 199 6.3 Netztechnologien . . . . . 204 6.3.1 Weitverkehrsnetze . 204 6.3.2 Lokale Netze .. . 212 6.3.3 Zugangsnetze .. . 215 6.4 Transportorientierte Dienste / Protokolle 217 6.4.1 Routing . . . . . . 217 6.4.2 Internetprotokoll ... . 218 6.4.3 Transportprotokoll .. . 221 6.4.4 Reservierungstechniken . 222 x Inhaltsverzeichnis 6.5 Intemetdienste und Verteilte Systeme . 223 6.5.1 Intemetdienste .. 223 6.5.2 Verteilte Systeme 227 6.6 Zusammenfassung . 233 6.7 Literatur ... 234 7 World Wide Web 237 7.1 Die Arbeitsweise des WWW 237 7.1.1 Das Protokoll HTTP 237 7.1.2 Mime-Typen. . . . . 240 7.1.3 Web-Server ..... 240 7.1.4 Auszeichnungssprachen . 241 7.1.5 Web-Clients . . . . . . . 242 7.1.6 Web-basierte Anwendungen 243 7.1.7 Sicherheit ......... . 244 7.2 Server-seitige Anwendungen ... . 245 7.2.1 Common Gateway Interface 245 7.2.2 Web-Server-APIs .. 247 7.2.3 Server-Side Includes 250 7.2.4 Server-seitige Skripte 250 7.2.5 Active Server Pages. 252 7.2.6 Java Server Pages .. 253 7.2.7 Sitzungsorientierte Anwendungen 255 7.2.8 Eingebettete Web-Server ..... 258 7.3 Client-seitige Anwendungen . . . . . . . 259 7.3.1 Persistent gespeicherte Anwendungen 259 7.3.2 Temporiir gespeicherte Anwendungen 260 7.3.3 Sicherheit Client-seitiger Anwendungen 265 7.4 Literatur . . . . . . . . . . . . . . . . . . . . . 266 8 Kiinstliche Intelligenz 269 8.1 Aufgaben und Sichtweisen der Kiinstlichen Intelligenz . . . . . . . . . . . . . . . . . 269 8.2 Methoden der symbolorientierten Verarbeitung von Wissen ................. . 272 8.2.1 Hierarchische Listen, Semantische Netze undFrames .............. . 273 8.2.2 Regeln und Produktionssysteme . . . . . 274 8.2.3 Logikkalkiile und Systeme des automatischen SchlieBens ... 275 8.2.4 Constraintsysteme. . 279 8.2.5 Begriffsverbande .. 280 8.3 Heuristische Suchverfahren . 282 8.3.1 Strategien ..... . 282