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