lehrerbibliothek.deDatenschutzerklärung
Grundlagen Betriebssysteme
Grundlagen Betriebssysteme




Eduard Glatz

Books on Demand
EAN: 9783034402309 (ISBN: 3-03-440230-9)
448 Seiten, hardcover, 18 x 23cm, Oktober, 2003

EUR 46,74
alle Angaben ohne Gewähr

Umschlagtext
Dieses Werk richtet sich an Studierende der Informatik, die sich das nötige Wissen über Betriebssysteme und ihre Funktionsweise aneignen möchten. Das vorliegende Buch konzentriert sich auf die wesentlichen Grundlagen und befasst sich mit konkreten Produkten nur insoweit, als dass diese als Beispiele für die Funktionsweise, Programmierung und Leistungseigenschaften verbreiteter Betriebssysteme dienen. Im Vordergrund stehen Desktop- und Server-Betriebssysteme, als deren Vertreter Unix/Linux und MS Windows dienen.



Da moderne Informatikstudiengänge oft nur noch wenig Lehrinhalte in Elektronik und Digitaltechnik kennen, wird an verschiedenen Stellen kurz auf die Grundlagen der Computertechnik eingegangen, um das nötige Vorwissen für die Themen der Betriebssystemtheorie sicher zu stellen. Damit ist das Buch ebenfalls gut für interessierte Personen aus der Praxis geeignet, die ihre Kenntnisse über Betriebssysteme um diejenigen Themen ergänzen möchten, die für ein tieferes Verständnis dieser System-Software unabdingbar sind.
Rezension
Das Buch umfasst das Wissen Rund um Betriebssysteme sehr gut und umfangreich. Für Informatikstudenten ist es sehr gut geeignet, gerade aber für Anfänger oder Personen mit wenig Vorwissen ist es teilweise sehr schwer die Inhalte zu verstehen. Es lassen sich trotzdessen die einzelnen Teilgebiete mithilfe der vielen bildlichen Darstellungen und den Beispielen verstehen. Das Buch ist auf jedenfall ein MUSS für jeden der sich sehr mehr mit dem Thema Betriebssysteme befassen will.Man kann sehr viel daraus lernen.

Stefanie Erdhütter
Inhaltsverzeichnis
Vorwort 13

1 Einführung 15
1.1 Einordnung im Computersystem 15
1.2 Begriff und Zweck 17

2 Programme,Prozesse & Threads 19
2.1 Programmausführung und Hardware 19
-2.1.1 Rechner- und Prozessorgrundlagen 20
---2.1.8.1 Grundmodell eines Rechners 20
---2.1.8.2 Befehlsverarbeitung in der CPU 22
---2.1.8.3 Prozessoraufbau 23
---2.1.8.4 Allgemeine Prozessorregister 24
---2.1.8.5 Spezielle Prozessorregister 25
---2.1.8.6 Programmstatuswort & CPU Betriebsart 25
-2.1.9 Grundlagen Adressraum 26
---2.1.8.1 Allgemeines 26
---2.1.8.2 Adressraumtypen 27
---2.1.8.3 Byte-Reihenfolge 28
---2.1.8.4 Ausrichtungsregeln im Adressraum 29
---2.1.8.5 Adressraumbelegung durch Programme 31
---2.1.8.6 Variablenplatzierung im Adressraum 32
-2.1.9 Steuerung Programmablauf 33
---2.1.8.1 Quell- und Binärkode 33
---2.1.8.2 Programmausführung und Programmzähler (PC) 35
-2.1.9 Dynamische Daten 37
---2.1.8.1 Allgemeines 37
---2.1.8.2 Funktionsweise Stack 38
-2.1.9 Unterprogrammtechniken 41
---2.1.8.1 Allgemeines 41
---2.1.8.2 Unterprogrammaufruf und Komplettierung 42
---2.1.8.3 Formen des Unterprogrammaufrufs 45
---2.1.8.4 Parameterübergabe beim Unterprogrammaufruf 47
---2.1.8.5 Idempotente Unterprogramme 49
---2.1.8.6 Formale und aktuelle Parameter 50
---2.1.8.7 Implementierung Parameterübergabe & lokale Variablen 50
2.2 Parallele Prozesse 57
-2.2.1 Allgemeines 57
-2.2.2 Prozessdefinition 57
-2.2.3 Parallelität in einem Rechner 58
-2.2.4 Begriffe 59
2.3 Prozessmodell 61
-2.3.1 Allgemeines 61
-2.3.2 Prozesserzeugung und Terminierung 63
---2.3.8.1 Prozesstart 63
---2.3.8.2 Verzweigen (fork) 63
---2.3.8.3 Verkettung, Chain 66
---2.3.8.4 Kreieren (create) 67
---2.3.8.5 Prozessbeendung 68
-2.3.9 Prozesshierachie 68
-2.3.10 Funktionsweise der Unix Shell 69
---2.3.8.1 Ausführbare Datei starten 70
---2.3.8.2 Ausführbare Datei als Hintergrundprozess starten 70
---2.3.8.3 Ausführen von Skripts 70
-2.3.9 Anfangsparameter für Prozesse 71
-2.3.10 Prozesserzeugung unter Windows 72
-2.3.11 Vererbung unter Prozessen 73
2.4 Threads 74
-2.4.1 Allgemeines 74
-2.4.2 Thread-Modell 75
-2.4.3 Vergleich Prozesse zu Threads 76
-2.4.4 Threads unter MS Windows 77
-2.4.5 Threads unter Unix 79
-2.4.6 Implementierung des Thread-Modells 80
---2.4.8.1 Multithreading auf der Benutzerebene (user space) 80
---2.4.8.2 Multithreading auf Systemebene (kernel level) 82
---2.4.8.3 Multithreading als Hybridlösung 82
2.5 Prozessorzuteilungsstrategien 83
-2.5.1 Quasiparallelität im Einprozessorsystem 83
-2.5.2 Prozesszustände 85
-2.5.3 Zuteilungsstrategien 89
---2.5.8.1 Allgemeines 89
---2.5.8.2 Verdrängende und nicht verdrängende Strategien 89
---2.5.8.3 Kategorien von Zuteilungsalgorithmen (Übersicht) 90
---2.5.8.4 Kooperative Zuteilung (A) 91
---2.5.8.5 Zeitscheibenverfahren (B) 92
---2.5.8.6 Priorisierte Zuteilung ohne Verdrängung (C) 93
---2.5.8.7 Priorisierte Zuteilung mit Verdrängung (D) 94
-2.5.9 Liste der ablaufbereiten Prozesse 94

3 Interprozesskommunikation 97
3.1 Problem der Ressourcenteilung 98
-3.1.1 Allgemeines 98
-3.1.2 Beispiel: Problemfall "saldo" 98
-3.1.3 Lösung mit Selbstabsicherung 100
3.2 Semaphoren 102
3.3 Anwendung der Semaphoren 104
-3.3.1 Absicherung kritischer Bereiche 104
-3.3.2 Synchronisation von Prozessabläufen 105
3.4 Problem der Prioritätsumkehrung (priority inveersion) 107
3.5 Signale 109
-3.5.1 Allgemeine Signale 109
-3.5.2 Unix-Signale 110
---3.5.8.1 Grundfunktion 110
---3.5.8.2 Signalauslösung ab Kommandozeile 112
---3.5.8.3 Signalgebrauch in Programmen 112
---3.5.8.4 Probleme der klassischen signal()-Funktion 114
3.6 Weiterführende Konzepte 117
-3.6.1 Übersicht 117
-3.6.2 Kommunikation 119
---3.6.8.1 Synchronität bei der Kommunikation 119
---3.6.8.2 Datenabgrenzung bei der Kommunikation 120
3.7 Nachrichtenaustausch über Briefkästen 121
3.8 Pipes 124
-3.8.1 Allgemeines 124
-3.8.2 Pipe-Funktionen (unnamed pipe) 125
3.9 Monitor 128
3.10 Rendezvous-Prinzip 131
-3.10.1 Allgemeines 131
-3.10.2 Merkmale 131
3.11 Deadlocks, Verklemmungen 136
-3.11.1 Problemstellung 136
-3.11.2 Prozessfahrplan 137
-3.11.3 Lösungsmöglichkeit 137
-3.11.4 Theoretische Betrachtungen 140
---3.11.8.1 Begriffe 140
---3.11.8.2 Deadlock-Bedingungen 140
---3.11.8.3 Lösungsansätze und ihre Beurteilung 141

4 Ein- und Ausgabe 143
4.1 Peripherie 143
-4.1.1 Einordnung im Rechnermodell 143
-4.1.2 Begriffsdefinition 144
-4.1.3 Peripherieschnittstellen 144
4.2 Ein-/Ausgabe System 145
-4.2.1 Allgemeines 145
-4.2.2 Treiber 146
-4.2.3 Geräteverwaltung 146
-4.2.4 Treiberschnittstelle 147
-4.2.5 Ein-/Ausgabe-Schnittstelle 149
---4.2.8.1 Identifikation der logischen Kanäle 149
---4.2.8.2 Art des Peripherieanschlusses 150
---4.2.8.3 Pufferung 150
---4.2.8.4 Nutzungsart 150
---4.2.8.5 Synchrone/asynchrone Ein-/Ausgabe 151
---4.2.8.6 Stream Input/Output 151
---4.2.8.7 Standardisierte E/A-Funktionen 151
4.3 Ein-/Ausgabe-Abläufe 153
-4.3.1 Programmgesteuerte Ein-/Ausgabe 153
-4.3.2 Ein-/Ausgabe mittels Programmunterbrechungen 154
---4.3.8.1 Grundprinzip des Unterbrechungssystem 154
---4.3.8.2 Unterbrechungserkennung 155
---4.3.8.3 Unterbrechungsursachen 155
---4.3.8.4 Vektorisierung 156
---4.3.8.5 Ablauf einer Programmunterbrechung 156
---4.3.8.6 Synchrone /asynchrone Unterbrechungen 158
---4.3.8.7 Maskierung
---4.3.8.8 Priorisierung 158
---4.3.8.9 Einebenen-Unterbrechungssystem 159
---4.3.8.10 Mehrebenen-Unterbrechungssystem 160
---4.3.8.11 Beispiel der Prioritäten des MC68' 000 Prozessors 161
---4.2.8.12 Externe Interrupt-Hardware 162
---4.2.8.13 Autovektoren 162
---4.2.8.14 Unterbrechungskontext 162
---4.2.8.15 Gebrauch durch Betriebssystem 164
-4.3.9 Ein-/Ausgabe mittels DMA 165
---4.3.8.1 Grundprinzip 165
---4.3.8.2 DMA-Betriebsarten 166
---4.3.8.3 DMA-Betriebsphasen 167
4.4 Massenspeicher 168
-4.4.1 Verfahren der Datenaufzeichnung 168
---4.4.8.1 Schicht "Aufzeichnungsverfahren" 169
---4.4.8.2 Schicht "Schreibverfahren" 169
---4.4.8.3 Schicht "Rahmenbildung" 170
---4.4.8.4 Schicht "Adressierung" 170
-4.4.9 Wichtigste Massenspeicher 171
-4.4.10 Plattenspeicher 172
---4.4.8.1 Aufzeichnungsgeometrie 172
---4.4.8.2 Formatierung und Initialisierung 174
---4.4.8.3 Zugriffsoptimierung 175
4.5 Benutzerinteraktion aus Systemsicht 177
-4.5.1 Allgemeines 177
-4.5.2 Systemarchitekturen 179
---4.5.8.1 Textorientierte Bedienschnittstelle 179
---4.5.8.2 Grundlage grafischer Bedienschnittstellen 180
---4.5.8.3 GUI Architektur des MS Windows 181
---4.5.8.4 GUI Architektur der Unix Systeme 182
-4.5.9 Software-Architekturen 187
---4.5.8.1 Steuermechanismen 187
---4.5.8.2 Programmiermodell von GUI Betriebssystemen 188
---4.5.8.3 Model-View-Controller Architektur 189
---4.5.8.4 Model-View-Controller Pattern 190
---4.5.8.5 Document-View Architektur 191
-4.5.9 Fallbeispiel: GUI-Programmierung unter MS Windows 191
---4.5.8.1 Verarbeitung von Benutzereingaben 191
---4.5.8.2 Ereignismeldungen (windows messages) 195
---4.5.8.3 Fenstergrundlagen 197
---4.5.8.4 Fenstererzeugung und Anzeige 198
---4.5.8.5 Meldungsübermittlung 200
---4.5.8.6 Ungarische Notation 203
---4.5.8.7 Tastaturmeldungen 204
---4.5.8.8 Fensterhierachie 205
---4.5.8.9 Fensterprozedur 206
---4.5.8.10 Objektorientierte Programmierschnittstelle 209

5 Dateisysteme 211
5.1 Allgemeines 211
5.2 Aufgaben des Dateisystems 213
5.3 Konzept des Blockspeichers 214
5.4 Fallbeispiel FAT Dateisystem 215
-5.4.1 Allgemeines 215
-5.4.2 Struktur Gesamtplatte 216
-5.4.3 Boot Block 219
-5.4.4 Aufbau der Belegungstabelle (FAT) 221
-5.4.5 Speicherineffizienz 222
-5.4.6 Verzeichnisdaten 223
-5.4.7 Lange Dateinamen (VFAT) 226
-5.4.8 Beispiel PC-Diskettenformate 228
5.5 Fallbeispiel Unix Dateisystem 229
-5.5.1 Allgemeines 229
---5.5.8.1 Aufteilung der Platte 229
---5.5.8.2 Dateihaltung und Verzeichnisorganisation 230
---5.5.8.3 Index Nodes (Inodes) 231
-5.5.9 Datei-Subsysteme 234
-5.5.10 Gemeinsame Dateinutzung 234
---5.5.8.1 Hard Links 235
---5.5.8.2 Soft (Symbolic) Links 236
5.6 Network File System (nfs) 236
5.7 Journaling File System (jfs) 238
-5.7.1 Allgemeines 238
-5.7.2 Funktionsprinzip 238
5.8 Partitionierung 240
-5.8.1 Allgemeines 240
-5.8.2 Fallbeispiel: Festplattenpartitionierung des PC 241
-5.8.3 Betriebssystem-Ladevorgang 246

6 Multiprozessorsysteme 249
6.1 Einprozessorsystem 249
-6.1.1 Von Neumann Architektur 249
-6.1.2 Harvard Architektur 251
6.2 Multiprozessorsysteme (Klassifikation nach Flynn) 252
6.3 Rechenleistung paralleler Prozessoren (Amdahl's Law) 255
-6.3.1 Konzepte von MIMD-Rechnern 259
6.4 Leistungsbewertung von Computern 260
6.5 Computersysteme mit Multiprozessoren 262
-6.5.1 Klassifikation 262
-6.5.2 Shared Memory Multiprozessoren 263
-6.5.3 Message-Passing Multicomputer 266
-6.5.4 Verteilte Systeme 267

7 Speicherverwaltung 269
7.1 Speichersystem 270
-7.1.1 Einordnung im Rechenmodell 270
-7.1.2 Grundlegende Speicherprinzipien 271
---7.1.8.1 Direkt adressierter Speicher 271
---7.1.8.2 Mehrport-Speicher 273
---7.1.8.3 Schieberegister-Speicher 273
---7.1.8.4 First In First Out-Speicher (FIFO) 274
---7.1.8.5 Stapel-Speicher 275
---7.1.8.6 Assoziativ-Speicher 275
-7.1.9 Speicherhierachie 277
---7.1.8.1 Allgemeines 277
---7.1.8.2 Lokalitätsprinzip 279
---7.1.8.3 Realisierung 280
7.2 Grundlagen der Speicherverwaltung 282
-7.2.1 Monoprogrammierung 283
-7.2.2 Multiprogrammierung mit festen Partitionen 284
---7.2.8.1 Allgemeines 284
---7.2.8.2 Modellierung 285
---7.2.8.3 Probleme 286
-7.2.9 Verfahren für knappen Speicher 287
---7.2.8.1 Overlay-Technik 288
---7.2.8.2 Swapping 288
7.3 Virtueller Speicher 292
-7.3.1 Abbildungsfunktionen 292
---7.3.8.1 Von Namen zu Adressen 292
---7.3.8.2 Notwendigkeit von Abbildungsfunktionen 293
---7.3.8.3 Grundbegriffe zu Namens-/Adressabbildungen 295
7.4 Adresstransformation 296
-7.4.1 Übersicht Speicherverwaltungsverfahren 296
-7.4.2 Adressumsetzung 297
-7.4.3 Seitentransformation 300
---7.4.8.1 Deskriptorstruktur 305
---7.4.8.2 Transformationsformel 305
---7.4.8.3 Optimierung der Seitentransformation 307
---7.4.8.4 Invertierte Seitentabelle 308
---7.4.8.5 Mehrstufige Seitentransformation 310
---7.4.8.6 Notwendigkeit der Deskriptorenpufferung in der MMU 313
---7.4.8.7 Seitenwechselverfahren (Paging) 314
---7.4.8.8 Ablauf 316
---7.4.8.9 Verwendung des Hintergrundspeichers 318
---7.4.8.10 Seitenersetzungsstrategien 319
---7.4.8.11 Gemeinsamer Speicher (shared memory) 322
---7.4.8.12 Ladeoptimierung bei Paging (copy-on-write) 322
-7.4.9 Segmenttransformation 323
---7.4.8.1 Segment-Transformation Typ A 325
---7.4.8.2 Segment-Transformation Typ B 326
---7.4.8.3 Umsetzverfahren 326
---7.4.8.4 Kombinierte Verfahren 331
7.5 Cache-Speicher 332
-7.5.1 Allgemeines 332
-7.5.2 Cache-Leistung 334
-7.5.3 Funktionsweise 334
---7.5.8.1 Vollassoziativ 337
---7.5.8.2 Einwegassoziativ 337
---7.5.8.3 Mehrwegassoziativ 339
---7.5.8.4 Virtueller und physischer Cache 341
-7.5.9 Fallbeispiel Embedded intel-486 342
-7.5.10 Cache-Strategien für Schreibzugriffe 343
---7.5.8.1 Write Through 343
---7.5.8.2 Write Back (Copy Back) 344
---7.5.8.3 Cache-Kohärenz 345
---7.5.8.4 Vergleich der Cache-Schreibstrategien 346
---7.5.8.5 Problem des Cache-Speichers 346
---7.5.8.6 Ersetzungsstrageien 347
---7.5.8.7 Einflussfaktoren auf Cache-Leistung 348

8 Programmübersetzung und Start 351
8.1 Software-Entwicklungswerkzeuge 351
-8.1.1 Ablauf der Programmübersetzung 351
-8.1.2 Kompilation 352
-8.1.3 Assemblierung 352
-8.1.4 Binden 353
-8.1.5 Übersetzung in einem Schritt 354
-8.1.6 Automatische Übersetzung 357
-8.1.7 Versionenkontrolle 359
---8.1.8.1 RCS (Revision Control System) 359
---8.1.8.2 CVS (Concurrent Version System) 361
8.2 Adressraumbelegung und Programmstart 362
-8.2.1 Storage Class 362
-8.2.2 Sections 362
-8.2.3 Programmstart 364
8.3 Relokation von Programmen 365
-8.3.1 Relokationsbedarf 365
-8.3.2 Relokationsproblem 366
-8.3.3 Relokationsvorgang 366
8.4 T-Notation 371
-8.4.1 Interpreter 371
-8.4.2 Cross Tools 372
-8.4.3 Residente Tools 373

9 Systemverwaltung mit Skripts 375
9.1 Allgemeines 375
9.2 Unix/Linux Shell Skripts 376
-9.2.1 Die Shell als Kommandointerpreter 377
-9.2.2 Die Shell als Programminterpreter 377
-9.2.3 Unix Shelltypen 377
-9.2.4 Shellbefehle 379
-9.2.5 Spezielle Befehlsausführung 382
-9.2.6 Shellvariablen 382
-9.2.7 Quoting 385
-9.2.8 Wildcards 386
-9.2.9 Ein-/Ausgabe Umleitung (I/O redirection) 386
-9.2.10 Aliases 387
-9.2.11 Functions 388
-9.2.12 Erstellung von Skripts 388
-9.2.13 Bedingte Tests (conditional tests) 389
-9.2.14 Kontrollstrukturen für Skripts 391
---9.2.8.1 if then else Struktur 392
---9.2.8.2 case Struktur 393
---9.2.8.3 for loop Struktur 394
---9.2.8.4 until loop Struktur 395
---9.2.8.5 while loop Struktur 395

10 Sicherheit 397
10.1 Allgemeines 397
10.2 Grundlagen 397
10.3 Technische Sicherheitsmassnahmen 398
-10.3.1 Zugangskontrollen 398
-10.3.2 Lösungsansätze 398
10.4 Konzept der Schutzdomänen 399
-10.4.1 Allgemeines 399
-10.4.2 Wahl der Schutzdomäne 400
-10.4.3 Datenhaltung der Schutzmatrix 401
-10.4.4 Vertrauenswürdige Systeme 402
-10.4.5 Verwaltung der Schutzmatrix 402
---10.4.8.1 Grundlagen 402
---10.4.8.2 Bell/ La Padula-Modell (1973) 403
---10.4.8.3 Biba-Modell (1977) 404
10.5 Fallbeispiel: Sicherheit unter Unix 404
-10.5.1 Benutzer- und Rechteverwaltung 404
-10.5.2 Dateiberechtigungen im Detail 405

11 Anhang 411
11.1 Masseinheit und Darstellungen 411
-11.1.1 Masseinheiten in der Informatik 411
-11.1.2 Darstellung von Bitmustern 412
-11.1.3 Oktal- und Hexadezimal-Zahlen 412
-11.1.4 Kennzeichnung der Zahlensysteme 413
-11.1.5 ASCII-Kodierung 414
-11.1.6 Rechnerinterne Zahlendarstellungen 415
---11.1.8.1 Grundlegende Datentypen 416
---11.1.8.2 Ganzzahlen 416
---11.1.8.3 Festkomma-Zahlen 417
---11.1.8.4 Gleitkomma-Zahlen 418
---11.1.8.5 Vergleich Fest- zu Gleitkomma-Darstellung 420
11.2 Instruktionssatz der intel iA32 Prozessoren 421

Literaturverzeichnis 427
Stichwortverzeichnis429