Grundkurs Informatik
Grundkurs Informatik
Gerd Beneken
Grundkurs Informatik
Grundlagen und Konzepte für die
erfolgreiche IT-Praxis – Eine umfassende,
praxisorientierte Einführung
6. Auflage 2016
Hartmut Ernst Jochen Schmidt
Hochschule Rosenheim Hochschule Rosenheim
Rosenheim, Deutschland Rosenheim, Deutschland
Gerd Beneken
Hochschule Rosenheim
Rosenheim, Deutschland
Springer Vieweg
© Springer Fachmedien Wiesbaden 1999, 2000, 2003, 2008, 2015, 2016
Die 1. Auflage 1999 und die 2. Auflage 2000 erschienen unter dem Titel „Grundlagen und Konzepte der
Informatik“
Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung, die nicht
ausdrücklich vom Urheberrechtsgesetz zugelassen ist, bedarf der vorherigen Zustimmung des Verlags.
Das gilt insbesondere für Vervielfältigungen, Bearbeitungen, Übersetzungen, Mikroverfilmungen und die
Einspeicherung und Verarbeitung in elektronischen Systemen.
Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt
auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und
Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.
Der Verlag, die Autoren und die Herausgeber gehen davon aus, dass die Angaben und Informationen in diesem
Werk zum Zeitpunkt der Veröffentlichung vollständig und korrekt sind. Weder der Verlag noch die Autoren
oder die Herausgeber übernehmen, ausdrücklich oder implizit, Gewähr für den Inhalt des Werkes, etwaige
Fehler oder Äußerungen.
Doch so wie die Krone eines Baumes im Wechsel der Jahreszeiten ihr Aussehen ändert, so
ist auch dieser Teil der Informatik von kurzen Produktzyklen und in stetem Wandel begriffenen
Systemumgebungen geprägt. Hier trägt die Informatik zwar ihre Früchte, doch sind diese oft leicht
verderbliche Ware mit einem kurzfristigen Verfallsdatum. Für ein tiefer gehendes Informatikver-
ständnis genügt eine hauptsächlich an Produkten orientierte Sichtweise daher definitiv nicht. Ohne
profundes Hintergrundwissen ist es unmöglich, nachhaltige Entwicklungen von Sackgassen und
Modeströmungen zu unterscheiden. Es mag ja sehr verlockend sein, Bill Gates nachzueifern und
gleich in der obersten Etage der Informatikbranche einzusteigen. Doch an dieser Stelle muss man
sich klar machen, dass es der Stamm ist, der die Krone trägt. In diesem Sinne ruht auch die an-
wendungsorientierte Informatik auf einem stabilen Unterbau, der Kerninformatik. Diese unterliegt
einem vergleichsweise langsamen Wandel und sie gründet ihrerseits in tiefen Wurzeln auf einem
zeitlosen mathematisch-naturwissenschaftlichen Fundament.
Um den Stamm des Informatikbaumes, die Kerninformatik, geht es in diesem Buch. Wer sich
auf diesem Terrain sicher zu bewegen weiß, der wird keine Schwierigkeiten haben, auf einem
tragfähigen Grundlagenwissen professionell die höchsten Äste der Baumkrone zu erklimmen – oder
auch tiefer zu schürfen, um die wissenschaftliche Basis zu ergründen.
Zur Erleichterung des Einstiegs in die Lektüre werden im Folgenden die Themen der einzelnen
Kapitel kurz charakterisiert.
In Kapitel 1 wird nach einer geschichtlichen Einführung und einem kurzen Überblick über den
prinzipiellen Aufbau von Rechnern die binäre Arithmetik behandelt.
Kapitel 2 beschäftigt sich ausführlich mit den begrifflichen und mathematischen Konzepten der
fundamentalen Begriffe Nachricht und Information. Jeder, der sich ernsthaft mit der Informatik
befasst, sollte mit diesen Grundlagen gut vertraut sein, da so das Verständnis der folgenden Kapitel
erleichtert wird. Da Information und Wahrscheinlichkeit in enger Beziehung zueinander stehen,
werden auch die erforderlichen mathematischen Methoden erläutert. Im letzten Abschnitt dieses
Kapitels geht es dann um einen zentralen Begriff der Informatik, die Entropie.
In Kapitel 3 werden aufbauend auf Kap. 2 zunächst die grundlegenden Begriffe Redundanz,
Codeerzeugung und Codesicherung erläutert. Dazu gehört auch eine detaillierte Erläuterung der
wichtigsten einschlägigen Algorithmen. Anschließend wird auf den in der Praxis besonders wichti-
gen Aspekt der Codierungstheorie eingegangen, nämlich auf Methoden zur Datenkompression.
Kapitel 4 behandelt die Verschlüsselung von Daten. Es wird sowohl auf klassische Verfahren
eingegangen als auch auf moderne Methoden zur symmetrischen und asymmetrischen Verschlüsse-
lung. Zusammen mit den Kapiteln 2 und 3 umfasst und vertieft der Stoff den Inhalt entsprechender
Grundvorlesungen.
Kapitel 5 gibt einen Überblick über die Grundlagen der Computerhardware. Nach einer knappen
Einführung in die Aussagenlogik und die boolesche Algebra wird auf Schaltnetze und Schaltwerke
eingegangen. Am Schluss des Kapitels steht ein Abschnitt über Maschinensprache und Assembler.
In Kapitel 6 geht es dann um Rechnerarchitekturen. Nach Einführung der üblichen Klassifikati-
onsschemata folgt eine Erläuterung der für die Mehrzahl der Rechner noch immer maßgeblichen
von-Neumann-Architektur sowie eine Einführung in die Konzepte der Parallelverarbeitung.
Kapitel 7 beschreibt den Aufbau von Rechnernetzen. Zentral ist hier das OSI-Schichtenmodell.
Die im Internet verwendeten Übertragungsprotokolle werden erläutert.
Kapitel 8 beschreibt Architekturen und die wichtigsten Aufgaben von Betriebssystemen. Am
Ende wird auch auf die immer wichtiger werdende Virtualisierung eingegangen.
Kapitel 9 bietet einen Überblick über Datenbankkonzepte, mit dem Fokus auf relationalen
Datenbanken, der Datenbankabfragesprache SQL sowie XML. Auch Data Warehousing und Data
Vorwort vii
T für Textaufgaben,
0 bedeutet „sehr leicht“. Diese Aufgaben können unmittelbar gelöst werden, ggf. mit etwas
Blättern im Buch.
1 bedeutet „leicht“ und kennzeichnet Aufgaben, die innerhalb von einigen Minuten mit wenig
Aufwand zu lösen sind.
2 bedeutet „mittel“. Solche Aufgaben erfordern etwas geistige Transferleistung über den Bu-
chinhalt hinaus und/oder einen größeren Arbeitsaufwand.
3 bedeutet „schwer“ und ist für Aufgaben reserviert, die erheblichen Arbeitsaufwand mit
kreativen Eigenleistungen erfordern.
3 Codierung 69
3.1 Grundbegriffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.1.1 Definition des Begriffs Codierung . . . . . . . . . . . . . . . . . . . . . . 69
3.1.2 Mittlere Wortlänge und Code-Redundanz . . . . . . . . . . . . . . . . . . 70
3.1.3 Beispiele für Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.2 Code-Erzeugung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.2.1 Codebäume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.2.2 Der Huffman-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.2.3 Der Fano-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.3 Codesicherung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.3.1 Stellendistanz und Hamming-Distanz . . . . . . . . . . . . . . . . . . . . 82
3.3.2 m-aus-n-Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.3.3 Codes mit Paritätsbits . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.3.4 Fehlertolerante Gray-Codes . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.3.5 Definition linearer Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.3.6 Lineare Hamming-Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
3.3.7 Zyklische Codes und Code-Polynome . . . . . . . . . . . . . . . . . . . . 98
3.3.8 CRC-Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3.3.9 Sicherung nicht-binärer Codes . . . . . . . . . . . . . . . . . . . . . . . . 103
3.3.10 Reed-Solomon Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
3.4 Datenkompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
3.4.1 Vorbemerkungen und statistische Datenkompression . . . . . . . . . . . . 115
3.4.2 Arithmetische Codierung . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
3.4.3 Lauflängen-Codierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
3.4.4 Differenz-Codierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
3.4.5 Der LZW-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
3.4.6 Datenreduktion durch unitäre Transformationen (JPEG) . . . . . . . . . . 128
Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
4 Verschlüsselung 137
4.1 Klassische Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
4.1.1 Substitutions-Chiffren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
4.1.2 Transpositions-Chiffren und Enigma . . . . . . . . . . . . . . . . . . . . . 143
4.2 Moderne symmetrische Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . 150
4.2.1 Der Data Encryption Standard (DES) . . . . . . . . . . . . . . . . . . . . 150
4.2.2 Der Advanced Encryption Standard (AES) . . . . . . . . . . . . . . . . . 151
4.2.3 One-Time-Pads und Stromchiffren . . . . . . . . . . . . . . . . . . . . . . 154
4.3 Moderne asymmetrische Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . 156
4.3.1 Diffie-Hellman Schlüsselaustausch . . . . . . . . . . . . . . . . . . . . . 156
4.3.2 Der RSA-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
4.3.3 Digitale Unterschrift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
6 Rechnerarchitektur 227
6.1 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
6.2 Die von-Neumann-Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
6.2.1 Komponenten eines von-Neumann-Rechners . . . . . . . . . . . . . . . . 230
6.2.2 Operationsprinzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
6.3 Befehlssatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
6.3.1 Mikroprogramme und CISC . . . . . . . . . . . . . . . . . . . . . . . . . 234
6.3.2 Reduced Instruction Set Computer: RISC . . . . . . . . . . . . . . . . . . 235
6.3.3 Abwärtskompatibilität . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
6.4 Klassifikation nach Flynn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
6.5 Parallelität innerhalb einer Befehlssequenz . . . . . . . . . . . . . . . . . . . . . . 238
6.5.1 Fließbandverarbeitung – Optimierte Befehlsausführung . . . . . . . . . . . 238
6.5.2 Superskalare Mikroprozessoren . . . . . . . . . . . . . . . . . . . . . . . 239
6.5.3 VLIW – Very Long Instruction Word . . . . . . . . . . . . . . . . . . . . 240
6.6 Parallelität in Daten nutzen: Vektorprozessoren und Vektorrechner . . . . . . . . . 240
6.7 Parallele Ausführung mehrerer Befehlssequenzen . . . . . . . . . . . . . . . . . . 241
6.7.1 Simultanes Multi-Threading innerhalb einer CPU . . . . . . . . . . . . . . 243
6.7.2 Multi-Core-CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
6.7.3 Multiprozessor-Systeme . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
6.7.4 Multicomputer-Systeme . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
6.8 Speicherhierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
6.8.1 Speichertechnologien: Register, Cache und Hauptspeicher . . . . . . . . . 245
6.8.2 Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
6.8.3 Memory Management Unit und virtueller Speicher . . . . . . . . . . . . . 249
xii Inhaltsverzeichnis
7 Rechnernetze 263
7.1 Das OSI-Schichtenmodell der Datenkommunikation . . . . . . . . . . . . . . . . 263
7.2 Bitübertragungsschicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
7.3 Technologien der Sicherungsschicht . . . . . . . . . . . . . . . . . . . . . . . . . 274
7.3.1 Netze im Nahbereich (PAN) . . . . . . . . . . . . . . . . . . . . . . . . . 274
7.3.2 Lokale Netze: LAN und WLAN . . . . . . . . . . . . . . . . . . . . . . . 275
7.3.3 Vorgriff: Leitungs- und Paketvermittlung . . . . . . . . . . . . . . . . . . 279
7.3.4 Datenfernübertragung und der Zugang zum Internet . . . . . . . . . . . . . 281
7.3.5 Die Behandlung von Übertragungsfehlern . . . . . . . . . . . . . . . . . . 286
7.4 Netzwerk- und Transportschicht: TCP/IP und das Internet . . . . . . . . . . . . . . 287
7.4.1 Überblick über das Internet . . . . . . . . . . . . . . . . . . . . . . . . . . 287
7.4.2 IP: Internet Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
7.4.3 TCP: Transmission Control Protocol . . . . . . . . . . . . . . . . . . . . . 292
7.4.4 UDP: User Datagram Protocol . . . . . . . . . . . . . . . . . . . . . . . . 293
7.5 Anwendungsschicht: Von DNS bis HTTP und URIs . . . . . . . . . . . . . . . . . 294
7.5.1 DNS: Domain Name System . . . . . . . . . . . . . . . . . . . . . . . . . 294
7.5.2 E-Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
7.5.3 IRC: Internet Relay Chat . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
7.5.4 FTP: File Transfer Protocol . . . . . . . . . . . . . . . . . . . . . . . . . 296
7.5.5 SSH: secure shell und TELNET: teletype network . . . . . . . . . . . . . . 296
7.5.6 HTTP: Hypertext Transfer Protocol . . . . . . . . . . . . . . . . . . . . . 297
7.5.7 URI: Uniform Resource Identifier . . . . . . . . . . . . . . . . . . . . . . 298
Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
8 Betriebssysteme 301
8.1 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
8.1.1 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
8.1.2 Betriebsarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
8.2 Betriebssystem-Architekturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Inhaltsverzeichnis xiii
9 Datenbanken 337
9.1 Einführung und Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
9.2 Relationale Datenbankmanagement-Systeme . . . . . . . . . . . . . . . . . . . . 341
9.2.1 Relationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
9.2.2 Schlüssel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
9.2.3 Beziehungen (Relationships) . . . . . . . . . . . . . . . . . . . . . . . . . 343
9.3 Relationale Algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
9.4 Die Datenbanksprache SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
9.4.1 SQL als deklarative Sprache . . . . . . . . . . . . . . . . . . . . . . . . . 348
9.4.2 Definition des Datenbankschemas . . . . . . . . . . . . . . . . . . . . . . 348
9.4.3 Einfügen, Ändern und Löschen von Daten . . . . . . . . . . . . . . . . . . 350
9.4.4 Suchen mit SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
9.4.5 Programmiersprachen und SQL . . . . . . . . . . . . . . . . . . . . . . . 352
9.5 NoSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
9.6 Transaktionen, OLTP und ACID . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
9.7 OLAP, Data Warehousing und Data-Mining . . . . . . . . . . . . . . . . . . . . . 356
9.8 Semi-Strukturierte Daten mit XML . . . . . . . . . . . . . . . . . . . . . . . . . . 362
9.8.1 Der Aufbau von XML-Dokumenten . . . . . . . . . . . . . . . . . . . . . 363
9.8.2 Wohlgeformtheit und Validität . . . . . . . . . . . . . . . . . . . . . . . . 365
9.8.3 XML-Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
9.8.4 XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
9.8.5 XSL: Extended Style Sheet Language . . . . . . . . . . . . . . . . . . . . 366
Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
xiv Inhaltsverzeichnis
17 Software-Engineering 747
17.1 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747
17.1.1 Was ist Software? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747
17.1.2 Was bedeutet Engineering? . . . . . . . . . . . . . . . . . . . . . . . . . . 748
17.1.3 Warum ist Software-Engineering schwierig? . . . . . . . . . . . . . . . . 749
17.2 Tätigkeiten im Software-Lebenszyklus . . . . . . . . . . . . . . . . . . . . . . . . 751
17.2.1 Anforderungsanalyse und Spezifikation . . . . . . . . . . . . . . . . . . . 751
17.2.2 Architekturentwurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752
17.2.3 Implementierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752
17.2.4 Test und Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752
17.2.5 Inbetriebnahme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753
17.2.6 Wartung und Weiterentwicklung . . . . . . . . . . . . . . . . . . . . . . . 753
17.3 Querschnittsdisziplinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
17.3.1 Projektmanagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
17.3.2 Qualitätsmanagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
17.3.3 Konfigurationsmanagement . . . . . . . . . . . . . . . . . . . . . . . . . 756
17.4 Vorgehensmodelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
17.4.1 Basismodelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
17.4.2 V-Modell XT als plangetriebenes Vorgehensmodell . . . . . . . . . . . . . 761
xviii Inhaltsverzeichnis
Index 785