O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Betriebssysteme, 3rd Edition

Book Description

  • aktuell: behandelt die neuesten Handheld-Betriebssysteme und Sicherheitsaspekte+ eingeführtes Lehrbuch in 3. Auflage+ didaktisch anspruchsvoll (viele Abbildungen, Beispiele etc.)+ "class room proofed" + umfangreiches Begleitmaterial auf der Website: http://unix.hsr.ch

Table of Contents

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