# Betriebssystemtheorie

Dieses Buch steht im Regal EDV.
* Verwendung der Vorlage
* Diese Dokumentation befindet sich auf einer eingebundenen Unterseite.
* Druckversion erstellen.
* Liste der Unterseiten.

## Zusammenfassung des Projekts

* Zielgruppe: Alle, die sich für das Innenleben von Betriebssystemen interessieren und wissen wollen (oder müssen), was ein Betriebssystem eigentlich ist, was seine Aufgaben sind und wie es diese Aufgaben löst. Es werden erweiterte Kenntnisse in Aufbau und Funktionsweise von Computern vorausgesetzt.
* Lernziele: Das Buch soll die Aufgaben von Betriebssystemen aufzeigen und die grundlegenden Konzepte erläutern, die angewandt werden, um die Hardware eines Computers für Anwendungsprogrammierer einfach und effizient benutzbar zu machen.
* Buchpatenschaft / Ansprechperson: Florian, vormals Thomas? Andreas Karlomagnus
* Sind Co-Autoren gegenwärtig erwünscht? Inhaltliche Änderungen bitte nur auf die Diskussionsseite schreiben, ich füge sie an geeigneter Stelle ein!
* Richtlinien für Co-Autoren: Neue deutsche Rechtschreibung; keine Unterkapitel auf Hauptseite.
* Projektumfang und Abgrenzung zu anderen Wikibooks: Hier geht es vor allem um Theorie. Konkrete Betriebssysteme werden nur beispielhaft erwähnt.
* Themenbeschreibung: Steht in den Kapitelbeschreibungen auf der Hauptseite
* Aufbau des Buches: Steht im Inhaltsverzeichnis

## Einleitung

In diesem Kapitel befassen wir uns mit der Definition eines Betriebssystems. Folgende Punkte werden angesprochen:
* Definition - Was ist ein Betriebssystem?
* Allgemeine Aufgaben eines Betriebssystems
* Das Prozess-Modell
* Multi-User- / Multi-Process-Betriebssysteme
* Hardwareunterstützung für das Betriebssystem
* Kernel-Architekturen

## Hardware-Funktionen für Betriebssysteme

Ein modernes Betriebssystem stellt an die Hardware eines Rechensystems Anforderungen, die über die grundlegende Funktion der Ausführung von Maschinenbefehlen hinausgeht, um Forderungen der Rechensystemnutzer nach Effizienz, Komfort und Schutz erfüllen zu können. Nach einer kurzen, allgemeinen Beschreibung von Aufbau und Funktionsweise der Hardware eines Rechensystems werden Funktionen wie Unterbrechungen oder Betriebsmodi eines Prozessors sowie Konzepte der Adressierung von Speicher und Peripherie erläutert und ihre Verwendung in Betriebssystemen beschrieben.

## Prozesse, Threads und ihre Verwaltung

In Universalrechensystemen werden i.d.R. mehrere Programme gleichzeitig ausgeführt. Dabei wird nicht ausgeschlossen, dass ein Programm mehrfach gleichzeitig ausgeführt wird. Für ein Betriebssystem stellt ein Programm in Ausführung eine Einheit dar, die hinsichtlich der Nutzung von Ressourcen der Hardware (insbesondere Prozessor und Speicher) wie auch der Software (Dateien, Verbindungen usw.) überwacht werden muss, um Konflikte, Engpässe oder fehlerhafte Nutzung angemessen behandeln zu können. Das Kapitel erläutert das Konzept des Prozesses und den Umgang eines Betriebssystems mit Prozessen.
Neben oder an Stelle von Prozessen verwenden viele moderne Betriebssysteme sog. Threads als Verwaltungseinheit. Threads werden auch "leichtgewichtige Prozesse" genannt. Dabei unterscheidet man zwischen Kernel-Threads und User-Threads. Letztere nutzen zwar den gleichen Speicherbereich wie der eigentliche Prozess, haben jedoch einen eigenen Programmablauf. Das Kapitel erläutert den Begriff und erklärt Einsatzmöglichkeiten sowie Implementierungskonzepte.

## Prozesssynchronisation und -kommunikation

Werden mehrere Prozesse oder Threads gleichzeitig oder zeitlich verschränkt (quasi-parallel) ausgeführt, so kann es zu bewusst oder unbewusst gewollten Beeinflussungen der Prozesse kommen. So ist z.B. offensichtlich auszuschließen, dass zwei Prozesse eine Datei beschreiben, ohne dass sie sich darüber verständigen, wer nun genau die Erlaubnis zum Schreiben besitzt. Das Betriebssystem stellt Mechanismen zur Verfügung, die es einem Programmmierer ermöglichen, Prozesse zu synchronisieren, d.h. die Aktivitäten der Prozesse in eine bestimmte Reihenfolge zu bringen. Die Situationen, in denen eine Prozesssynchronisation erforderlich ist, und die Mechanismen der Prozesssynchronisation werden in dem Kapitel erläutert.

## Prozessorverwaltung (Scheduling)

Der Prozessor (CPU) ist die wichtigste Ressource eines Rechensystems. Das Betriebssystem muss dafür sorgen, dass diese Ressource den Prozessen gerecht, unter Berücksichtigung der Bedeutung der Prozesse und u.U. unter Berücksichtigung der Vorgaben eines Rechensystemsbetreibers den Prozessen zugewiesen wird. Das Kapitel erklärt die Ziele, Konzepte und Implementierungsformen der Prozessorverwaltung.

## Interprozesskommunikation

Eine Synchronisation von Prozessen wird oft benötigt, um Konkurrenzsituationen zu behandeln. Wollen Prozesse aber bewusst kooperieren, so steht ihnen im Gegensatz zu Threads hierfür kein gemeinsamer Speicherbereich zur Kommunikation zur Verfügung, sondern das Betriebssystem stellt Funktionen zur Interprozesskommunikation bereit.

## Speicherverwaltung

Der Hauptspeicher ist neben dem Prozessor die wichtigste Ressource eines Rechnersystems. Die Speicherverwaltung hat die Aufgabe, über freien wie belegten Speicher Buch zu führen, um Speicherbereiche Prozessen zuzuweisen, wenn diese Speicher anfordern, und um Speicherbereiche, die von Prozessen freigegeben worden sind, anderen Prozessen wieder verfügbar zu machen. Das Kapitel beschreibt grundlegende Formen der Verwaltung des realen Hauptspeichers. Es erläutert ferner das Konzept der Virtualisierung des Speichers, wodurch Prozesse unabhängig vom real verfügbaren Speicher werden.

## Geräteverwaltung

Periphere Geräte eines Rechensystems zeichnen sich durch eine große Vielfalt individueller Eigenschaften aus. Um Nutzer die Details der Nutzung eines Geräts zu verbergen realisiert die Geräteverwaltung eine uniforme Sicht und Behandlung aller Geräte. Das Kapitel beschreibt den prinzipiellen Aufbau einer Geräteverwaltung sowie den generellen Ablauf eines Ein-/Ausgabevorgangs, wie er durch die Geräteverwaltung realisiert wird.

## Dateisysteme

Das Betriebssystem bietet Anwendern zum einfacheren Umgang mit Daten, die unabhängig von der Ausführungszeit eines Programms gespeichert werden sollen, Datei- und Verzeichnisstrukturen an. Dabei dienen Dateien dazu, zusammengehörige Daten (engl. files) in eine für Menschen leicht auffindbare Einheit zu bündeln. Sie sind vergleichbar mit Akten in Papierform. Verzeichnisse fassen wiederum Dateien zusammen, sie sind vergleichbar mit Aktenschränken in denen die Akten lagern. Im Gegensatz zu Aktenschränken ist es jedoch möglich, dass Verzeichnisse auch selbst Verzeichnisse enthalten. Das Kapitel erläutert die Konzepte der Dateisysteme und wie diese Strukturen auf die physikalische Struktur eines Speichermediums abgebildet werden.

## Historie

Die Historie der Betriebssysteme ist ein Schlüssel zum Verständnis der Entwicklung und des Fortschritts den Betriebssysteme im Laufe der Zeit gemacht haben. Moderne Betriebssysteme sind nicht denkbar ohne die Vorentwicklung auf diesem Gebiet. Viele Betriebssysteme bauen aufeinander auf und spiegeln dies teilweise im Namen wieder. Der Umfang der Betriebssysteme hat sich in den vergangenen Jahrzehnten vervielfacht, ähnlich wie die Entwicklung der Leistungsfähigkeit von Computern allgemein. Das Kapitel soll einige wesentliche Meilensteine der Entwicklungsgeschichte beleuchten.

## Weiterführende Informationen

Betriebssystemtheorie/Dokumentation