Betriebssysteme, 4th Edition

Book description

Dieses Lehrbuch bietet eine umfassende Einführung in die Grundlagen der Betriebssysteme und in die Systemprogrammierung. Im Vordergrund stehen die Prinzipien moderner Betriebssysteme und die Nutzung ihrer Dienste für die systemnahe Programmierung.Methodisch wird ein Weg zwischen der Betrachtung anfallender Probleme und ihren Lösungen auf einer theoretischen und einer praktischen Basis beschritten. Dabei orientiert sich der Autor an den beiden am meisten verbreiteten Systemwelten, nämlich Unix/Linux und Windows. Zudem werden die wichtigsten Prozessorgrundlagen erklärt, soweit sie für das Verständnis der internen Funktionsweise eines Betriebssystems hilfreich sind.Die 4. Auflage ist in zahlreichen Details überarbeitet, an einigen Stellen ergänzt und generell aktualisiert. Neu aufgenommen wurden z.B. das Thread-Pool-Konzept, Completely Fair Scheduler (CFS), Windows Registry und Container-Systeme wie Docker.

Table of contents

  1. Cover
  2. Über den Autor
  3. Titel
  4. Impressum
  5. Vorwort zur 4. Auflage
  6. Vorwort zur 3. Auflage
  7. Vorwort zur 1. und 2. Auflage
  8. Inhaltsverzeichnis
  9. 1 Einführung
    1. 1.1 Zweck
    2. 1.2 Definitionen
    3. 1.3 Einordnung im Computersystem
    4. 1.4 Betriebssystemarten
    5. 1.4.1 Klassische Einteilungen
    6. 1.4.2 Moderne Einteilungen
    7. 1.4.3 Geschichte
    8. 1.5 Betriebssystemarchitekturen
    9. 1.5.1 Architekturformen
    10. 1.5.2 Benutzer-/Kernmodus
    11. 1.5.3 Monolithische Systeme
    12. 1.5.4 Geschichtete Systeme
    13. 1.5.5 Mikrokernsysteme (Client/Server-Modell)
    14. 1.5.6 Multiprozessorsysteme
    15. 1.5.7 Verteilte Betriebssysteme
    16. 1.5.8 Beispiele von Systemarchitekturen
    17. 1.5.9 Zukünftige Systemarchitekturen aus Sicht der Forschung
  10. 2 Programmausführung und Hardware
    1. 2.1 Rechner- und Prozessorgrundlagen
    2. 2.1.1 Grundmodell eines Rechners
    3. 2.1.2 Befehlsverarbeitung in der CPU
    4. 2.1.3 Prozessoraufbau
    5. 2.1.4 Allgemeine Prozessorregister (general purpose registers)
    6. 2.1.5 Steuerregister (control registers)
    7. 2.2 Grundlagen des Adressraums
    8. 2.2.1 Adressraumtypen
    9. 2.2.2 Bytereihenfolge (byte ordering)
    10. 2.2.3 Adressraumbelegungsplan (memory map)
    11. 2.2.4 Ausrichtungsregeln im Adressraum
    12. 2.2.5 Adressraumbelegung durch Programme
    13. 2.2.6 Adressraumnutzung durch C-Programme
    14. 2.3 Grundlagen der Programmausführung
    15. 2.3.1 Quell- und Binärcode
    16. 2.3.2 Programmausführung und Programmzähler (PC)
    17. 2.3.3 Funktionsweise des Stapels und Stapelzeigers (SP)
    18. 2.3.4 Funktion des Programmstatusworts (PSW)
    19. 2.3.5 Programmunterbrechungen (interrupts)
    20. 2.3.6 Privilegierte Programmausführung (Benutzer-/Kernmodus)
    21. 2.4 Unterprogrammmechanismen
    22. 2.4.1 Unterprogrammaufruf und Komplettierung
    23. 2.4.2 Formen des Unterprogrammaufrufs
    24. 2.4.3 Parameterübergabe beim Unterprogrammaufruf
    25. 2.4.4 Realisierung der Parameterübergabe und lokale Variablen
  11. 3 Systemprogrammierung
    1. 3.1 Wahl der Systemprogrammiersprache
    2. 3.1.1 Mischsprachenprogrammierung
    3. 3.1.2 Programmiersprache C++
    4. 3.1.3 Java Native Interface (JNI)
    5. 3.1.4 Microsoft .NET-Sprachen
    6. 3.2 Laufzeitsystem der Programmiersprache C
    7. 3.3 Unterprogrammtechniken
    8. 3.3.1 Formale und aktuelle Parameter
    9. 3.3.2 Idempotente Unterprogramme
    10. 3.4 Grundlagen der Systemprogrammierung
    11. 3.4.1 Dienstanforderung und Erbringung
    12. 3.4.2 Dienstparameter und Resultate
    13. 3.4.3 Umgebungsvariablenliste (environment list)
    14. 3.4.4 Dateideskriptoren & Handles
    15. 3.4.5 Systemdatentypen
    16. 3.4.6 Anfangsparameter für Prozesse
    17. 3.4.7 Beendigungsstatus von Programmen
    18. 3.4.8 Fehlerbehandlung
    19. 3.4.9 Programmierung für 32- und 64-Bit-Systeme
    20. 3.5 Systemprogrammierschnittstellen
    21. 3.5.1 Aufrufverfahren
    22. 3.5.2 Unix-Programmierschnittstelle
    23. 3.5.3 Windows-Programmierschnittstelle
  12. 4 Prozesse und Threads
    1. 4.1 Parallelverarbeitung
    2. 4.1.1 Darstellung paralleler Abläufe
    3. 4.1.2 Hardware-Parallelität
    4. 4.1.3 Software-Parallelität
    5. 4.1.4 Begriffe
    6. 4.2 Prozessmodell
    7. 4.2.1 Grundprinzip
    8. 4.2.2 Prozesserzeugung und Terminierung
    9. 4.2.3 Prozesse unter Unix
    10. 4.2.4 Funktionsweise der Unix-Shell
    11. 4.2.5 Prozesse & Jobs unter Windows
    12. 4.2.6 Vererbung unter Prozessen
    13. 4.2.7 Systemstart und Prozesshierarchie
    14. 4.2.8 Ausführungsmodelle für Betriebssysteme
    15. 4.3 Threads
    16. 4.3.1 Thread-Modell
    17. 4.3.2 Vergleich Prozesse zu Threads
    18. 4.3.3 Implementierung des Multithreading
    19. 4.3.4 Windows Threads, Fibers und Services
    20. 4.3.5 Services
    21. 4.3.6 Threads unter Unix
    22. 4.3.7 Thread-Pool-Konzept
    23. 4.3.8 Anwendungsprobleme
    24. 4.4 Prozessorzuteilungsstrategien
    25. 4.4.1 Quasiparallelität im Einprozessorsystem
    26. 4.4.2 Prozess- und Thread-Zustände
    27. 4.4.3 Konzeptionelle Prozessverwaltung
    28. 4.4.4 Zuteilungsstrategien
    29. 4.4.5 Multiprozessor-Scheduling
    30. 4.4.6 POSIX-Thread-Scheduling
    31. 4.4.7 Java-Thread-Scheduling
    32. 4.4.8 Scheduling unter Windows
    33. 4.4.9 Scheduling unter Unix
  13. 5 Synchronisation von Prozessen und Threads
    1. 5.1 Synchronisationsbedarfe und Lösungsansätze
    2. 5.1.1 Problem der Ressourcenteilung
    3. 5.1.2 Verlorene Aktualisierung (lost update problem)
    4. 5.1.3 Inkonsistente Abfrage (inconsistent read)
    5. 5.1.4 Absicherung mit Selbstverwaltung – naiver Ansatz
    6. 5.1.5 Absicherung mit Selbstverwaltung – korrekter Ansatz
    7. 5.1.6 Absicherung mit Systemmitteln
    8. 5.2 Semaphore
    9. 5.2.1 Semaphortypen
    10. 5.2.2 Implementierungsfragen
    11. 5.3 Anwendung der Semaphore
    12. 5.3.1 Absicherung kritischer Bereiche (mutual exclusion)
    13. 5.3.2 Synchronisation von Abläufen (barrier synchronization)
    14. 5.3.3 Produzenten & Konsumenten (producer and consumer)
    15. 5.3.4 Leser & Schreiber (readers and writers)
    16. 5.3.5 Problem der Prioritätsumkehrung (priority inversion)
    17. 5.3.6 Weitere Anwendungsprobleme
    18. 5.4 Implementierungen von Semaphoren
    19. 5.4.1 Semaphore unter Unix
    20. 5.4.2 Semaphore unter Windows
    21. 5.5 Unix-Signale
    22. 5.5.1 Idee & Grundprinzip der Unix-Signale
    23. 5.5.2 Programmierung der Signale
    24. 5.5.3 Signale im Multithreading
    25. 5.5.4 Realtime-Signale
    26. 5.6 Verklemmungsproblematik (deadlocks)
    27. 5.6.1 Ursache
    28. 5.6.2 Deadlock-Bedingungen
    29. 5.6.3 Lösungsansätze und ihre Beurteilung
    30. 5.7 Praktische Erwägungen zur Parallelprogrammierung
    31. 5.7.1 Grenzen der Leistungssteigerung (Amdahl‘s Law)
    32. 5.7.2 Korrektheitsbedingungen der Parallelität
    33. 5.7.3 Vermeidung von Synchronisationsengpässen
    34. 5.7.4 Speicherkonsistenz (memory consistency)
  14. 6 Kommunikation von Prozessen und Threads
    1. 6.1 Überblick über Synchronisation und Kommunikation
    2. 6.2 Nachrichtenbasierte Verfahren
    3. 6.2.1 Allgemeine Aspekte
    4. 6.2.2 Unix-Pipes
    5. 6.2.3 Windows-Pipes
    6. 6.2.4 Unix Message Queues
    7. 6.2.5 Windows-Messages
    8. 6.2.6 Windows-Mailslots
    9. 6.3 Speicherbasierte Verfahren
    10. 6.3.1 Gemeinsamer Speicher unter Windows
    11. 6.3.2 Gemeinsamer Speicher unter Unix
    12. 6.4 Monitor
    13. 6.4.1 Grundprinzip
    14. 6.4.2 Java-Monitor
    15. 6.4.3 Monitornachbildung mit Bedingungsvariablen
    16. 6.5 Rendezvous
    17. 6.5.1 Grundprinzip
    18. 6.5.2 Synchronisation in Client/Server-Systemen (barber shop)
    19. 6.6 Rechnerübergreifende Interprozesskommunikation
    20. 6.6.1 Netzwerksoftware
    21. 6.6.2 Berkeley-Sockets
    22. 6.6.3 Remote Procedure Call (RPC)
    23. 6.6.4 Überblick über Middleware
  15. 7 Ein- und Ausgabe
    1. 7.1 Peripherie
    2. 7.1.1 Einordnung im Rechnermodell
    3. 7.1.2 Begriffsdefinitionen
    4. 7.2 Ein-/Ausgabeabläufe
    5. 7.2.1 Programmgesteuerte Ein-/Ausgabe
    6. 7.2.2 Ein-/Ausgabe mittels Programmunterbrechungen
    7. 7.2.3 Ein-/Ausgabe mittels DMA
    8. 7.2.4 Ein-/Ausgabearten im Vergleich
    9. 7.3 Ein-/Ausgabesystem
    10. 7.3.1 Treiber
    11. 7.3.2 Geräteverwaltung
    12. 7.3.3 Treiberschnittstelle
    13. 7.3.4 Ein-/Ausgabeschnittstelle
    14. 7.3.5 Ein-/Ausgabepufferung
    15. 7.3.6 Treibermodell in Linux
    16. 7.3.7 Treibermodelle in Windows (WDM & WDF)
    17. 7.4 Massenspeicher
    18. 7.4.1 Wichtigste Massenspeicher
    19. 7.4.2 Eigenschaften von Festplattenlaufwerken (HDD)
    20. 7.4.3 Eigenschaften von Festkörperlaufwerken (SSD)
    21. 7.4.4 Speicher-Anschlussmöglichkeiten
    22. 7.4.5 Pufferung von Zugriffsdaten (disk cache)
    23. 7.4.6 Speicher-Virtualisierung durch RAID
    24. 7.5 Benutzerinteraktion aus Systemsicht (Benutzeroberflächen)
    25. 7.5.1 Allgemeines
    26. 7.5.2 Systemarchitekturen
    27. 7.5.3 Programmiermodelle
    28. 7.5.4 Die Unix-Shell als Kommandointerpreter
    29. 7.5.5 Funktionsweise und Programmierung des X-Window-Systems
    30. 7.5.6 Funktionsweise und Programmierung des Windows-GUI
  16. 8 Speicherverwaltung
    1. 8.1 Speichersystem
    2. 8.1.1 Einordnung im Rechnermodell
    3. 8.1.2 Grundlegende Speicherprinzipien
    4. 8.1.3 Speicherhierarchie & Lokalitätsprinzip
    5. 8.1.4 Cache-Funktionsweise
    6. 8.2 Dynamische Speicherbereitstellung (Heap)
    7. 8.2.1 Verwaltungsalgorithmen
    8. 8.2.2 Grundprinzip der Speicherzuordnung
    9. 8.2.3 Übersicht Implementierungsvarianten
    10. 8.2.4 Variante A: Variable Zuordnungsgröße
    11. 8.2.5 Variante B: Feste Blockgrößen bzw. Größenklassen
    12. 8.2.6 Variante C: Mehrfache einer festen Blockgröße
    13. 8.2.7 Variante D: Buddy-System
    14. 8.2.8 Heap-Erweiterung
    15. 8.2.9 Heap-Management in Windows
    16. 8.3 Verwaltung von Prozessadressräumen
    17. 8.3.1 Adressraumnutzung durch Programme
    18. 8.3.2 Adressraumverwaltung durch das Betriebssystem
    19. 8.4 Realer Speicher
    20. 8.4.1 Monoprogrammierung
    21. 8.4.2 Multiprogrammierung mit Partitionen
    22. 8.4.3 Verfahren für knappen Speicher
    23. 8.5 Virtueller Speicher
    24. 8.5.1 Adressumsetzung
    25. 8.5.2 Seitenwechselverfahren (demand paging)
    26. 8.5.3 Speicherabgebildete Dateien
    27. 8.5.4 Gemeinsamer Speicher (shared memory)
  17. 9 Dateisysteme
    1. 9.1 Dateisystemkonzepte
    2. 9.1.1 Logische Organisation
    3. 9.1.2 Dateisystemfunktionen
    4. 9.1.3 Gemeinsame Dateinutzung
    5. 9.1.4 Speicherabgebildete Dateien
    6. 9.2 Realisierung von Dateisystemen
    7. 9.2.1 Konzeptionelles Modell
    8. 9.2.2 Blockspeicher als Grundlage
    9. 9.2.3 Organisationsprinzipien
    10. 9.3 UFS – traditionelles Unix-Dateisystem
    11. 9.3.1 Datenträgeraufteilung
    12. 9.3.2 Dateihaltung und Verzeichnisorganisation
    13. 9.3.3 Index Nodes (Inodes)
    14. 9.4 FAT– traditionelles Windows-Dateisystem
    15. 9.4.1 Datenträgeraufteilung
    16. 9.4.2 Aufbau der Belegungstabelle (FAT)
    17. 9.4.3 Verzeichnisdaten
    18. 9.5 NTFS – modernes Windows-Dateisystem
    19. 9.5.1 Entstehung und Eigenschaften
    20. 9.5.2 Logische Struktur und Inhalt einer NTFS-Partition
    21. 9.5.3 NTFS-Streams
    22. 9.5.4 Dateispeicherung
    23. 9.5.5 Dateiverzeichnisse
    24. 9.6 ZFS – zukunftweisendes Dateisystem
    25. 9.6.1 Datenträgerverwaltung
    26. 9.6.2 Datenintegrität
    27. 9.6.3 Pufferung und Deduplizierung
    28. 9.6.4 Interoperabilität
    29. 9.7 Netzwerkdateisysteme
    30. 9.7.1 Logische Sicht
    31. 9.7.2 Implementierung
    32. 9.7.3 NFS – Network File System in Unix
    33. 9.7.4 SMB – Netzwerkdateisystem in Windows
    34. 9.8 Spezielle Dateisystemtechnologien
    35. 9.8.1 Protokollierende Dateisysteme
    36. 9.8.2 Schattenkopie
    37. 9.8.3 Disk Scheduling
    38. 9.9 Datenträgerpartitionierung
    39. 9.9.1 Anwendungsbereiche
    40. 9.9.2 Master Boot Record (MBR)
    41. 9.9.3 GUID Partition Table (GPT)
  18. 10 Programmentwicklung
    1. 10.1 Software-Entwicklungswerkzeuge
    2. 10.1.1 Ablauf der Programmübersetzung
    3. 10.1.2 Darstellung von Übersetzungsvorgängen mittels T-Notation
    4. 10.1.3 Automatisierte Übersetzung
    5. 10.1.4 Versionsverwaltung
    6. 10.2 Adressraumbelegung und Relokation
    7. 10.2.1 Storage Class
    8. 10.2.2 Programmorganisation in Sektionen
    9. 10.2.3 Relokation von Programmen
    10. 10.3 Programmbibliotheken
    11. 10.3.1 Grundlagen und Begriffe
    12. 10.3.2 Anwendungsbereiche
    13. 10.3.3 Programmbibliotheken unter Unix
    14. 10.3.4 Programmbibliotheken unter Windows
    15. 10.4 Skriptprogrammierung unter Unix
    16. 10.4.1 Anwendungsbereiche
    17. 10.4.2 Die Shell als Programminterpreter
    18. 10.4.3 Portabilität und Kompatibilität
    19. 10.4.4 Erstellung von Skriptprogrammen
    20. 10.4.5 Ausführung von Skriptprogrammen
    21. 10.4.6 Elemente der Skriptsprache
    22. 10.4.7 Shell-Befehle
    23. 10.4.8 Shell-Variablen
    24. 10.4.9 Stringoperatoren für Shell-Variable
    25. 10.4.10 Metazeichen
    26. 10.4.11 Synonyme und Funktionen
    27. 10.4.12 Bedingte Tests (conditional tests)
    28. 10.4.13 Arithmetik
    29. 10.4.14 Kontrollstrukturen für Skripte
    30. 10.5 Anwendungs- und Systemkonfiguration
    31. 10.5.1 Konfiguration mit Textdateien
    32. 10.5.2 Konfiguration mit Registrierungsdatenbank
  19. 11 Sicherheit
    1. 11.1 Schutzziele
    2. 11.2 Autorisierung und Zugriffskontrolle
    3. 11.2.1 Grundlagen und Begriffe
    4. 11.2.2 Schutzdomänenkonzept
    5. 11.2.3 Schutzstrategien
    6. 11.3 Hochsichere Betriebssysteme
    7. 11.4 Sicherheit unter Unix
    8. 11.5 Sicherheit unter Windows
  20. 12 Virtualisierung
    1. 12.1 Anwendungsbereiche
    2. 12.2 Virtualisierungstypen
    3. 12.2.1 Virtuelle Prozessoren
    4. 12.2.2 Virtuelle Prozessumgebungen
    5. 12.2.3 Virtuelles Betriebssystem
    6. 12.2.4 Virtueller Desktop
    7. 12.2.5 Virtuelle Ressourcen
    8. 12.2.6 Sandboxing (virtuelles Laufzeitsystem)
    9. 12.2.7 Virtuelle Computer (Stufe Computerhardware)
    10. 12.3 Virtual Machine Monitor bzw. Hypervisor
    11. 12.3.1 Anforderungen
    12. 12.3.2 VMM-Funktionsweise
    13. 12.3.3 VMM-Typen
    14. 12.3.4 Unikernel
    15. 12.4 Einsatzgebiete
  21. 13 Mobile Betriebssysteme
    1. 13.1 Gemeinsame Eigenschaften
    2. 13.1.1 Anforderungen durch die Plattform
    3. 13.1.2 Middleware als Betriebssystem
    4. 13.2 Google Android
    5. 13.2.1 Überblick
    6. 13.2.2 Architektur
    7. 13.2.3 System- und Applikationsstart
    8. 13.2.4 Lebenszyklus von Applikationen
    9. 13.2.5 Nachrichtensystem
    10. 13.3 Apple iOS
  22. A Anhang
    1. A.1 Maßeinheiten und Darstellungen
    2. A.1.1 Maßeinheiten in der Informatik
    3. A.1.2 Darstellung von Bitmustern
    4. A.1.3 Oktal- und Hexadezimalzahlen
    5. A.1.4 Kennzeichnung der Zahlensysteme
    6. A.1.5 Rechnerinterne Zahlendarstellungen
    7. A.1.6 Textzeichensätze
  23. Literaturhinweise
  24. Index

Product information

  • Title: Betriebssysteme, 4th Edition
  • Author(s): Eduard Glatz
  • Release date: September 2019
  • Publisher(s): dpunkt
  • ISBN: 9783864907050