Prof. Dr.-Ing. Hans-Georg Eßer
Betriebssysteme / Rechnerarchitektur / Informatik-Grundlagen
Fakultät für Informatik und Mathematik / Fakultät für Wirtschaftsingenieurwesen
Hochschule München

hm.hgesser.de


Navigation
Startseite
Impressum
Vorlesungsarchiv
Betriebs-
systeme I
SS 11
Übersicht
Folien / Audio
Evaluation
Rechner-
architektur
WS 10/11
Übersicht
Folien / Audio
Evaluation
Betriebs-
systeme I
SS 09
Übersicht
Folien / Audio
Skript
Prüfungs-Blog
Evaluation
Informatik
Grund-
lagen
WS 08/09
Übersicht
Folien / Audio
Evaluation
Betriebs-
systeme I
SS 08
Übersicht
Folien / Audio
Prüfungs-Blog
Evaluation
Betriebs-
syst. I/II
WS 06/07
Übersicht
Folien
Evaluation
Über den Dozenten
Homepage [extern]
Veröffentlichungen
Didaktik-Fortbildungen
Vorlesungen an der ...
  - FH Südwestfalen
  - Hochschule Nürnberg
  - FOM Hochschule
  - Hochschule
    Albstadt-Sigmaringen
Hochschule München
Homepage
Fakultät für Informatik und Mathematik
Fakultät für Wirtschaftsingenieurwesen
 

Betriebssysteme I/II, WS 2006/07

Einführung

(Auszug aus Kapitel 1 des Skripts)
von Hans-Georg Eßer

  Nicht genug freier 
Speicher. Bitte schließen 
Sie eines oder  mehrere 
Programmfenster ...       

Erzeugt mit Error Message Generator

Bei der Arbeit am Computer machen sich viele Anwender erst beim Auftreten rätselhafter Fehlerneldungen Gedanken darüber, wer oder was diese verursachen könnte -- liegt es nicht an einem Programm, fällt schnell der Verdacht auf die Schicht unterhalb der Anwendungen: auf das Betriebssystem.

Mit welchen Techniken moderne Betriebssysteme (wie Windows, Linux, Mac OS, BSD ...) versuchen, Problemen aus dem Weg zu gehen, ist Gegenstand der Vorlesungen Betriebssysteme I und II an der FH München.

Motivation: Aufgaben eines Betriebssystems

Das Betriebssystem ist das erste "Programm", das ein Computer beim Booten lädt. Nachdem der Rechner es in den Hauptspeicher geladen und ihm die Kontrolle übergeben hat, beginnt es mit der Initialisierung wichtiger Kernkomponenten des Computers, wie z. B. des Hauptspeichers.

Die Hauptaufgabe ist dabei, eine Abstraktionsschicht zu schaffen, die es Anwendungsprogrammen erlaubt, die Computerressourcen zu nutzen, ohne selbst genau zu wissen, wie der Computer beschaffen ist; welche spezifischen Einzelkomponenten vorhanden sind.

Beispiel: Grafikkarte

Unter MS-DOS gab es in den 80er und frühen 90er Jahren verschiedene Programme, die eine grafische Ausgabe besaßen, beispielsweise das Textverarbeitungsprogramm Microsoft Word (nicht Word für Windows) und die grafische Arbeitsoberfläche GeoWorks. Beide Programme brachten Grafikkartentreiber für zahlreiche damals üblichen Grafikkarten mit; neue Grafikkarten wurden von beiden Programmen erst in neueren Programmversionen unterstützt -- weil MS-DOS keine Abstraktionsschicht für die Benutzung grafischer Kartenbetriebsarten enthielt, musste jedes grafische Programm seine eigenen Kartentreiber enthalten.

Die Abstraktion verschiedener Hardwarekomponenten durch das Betriebssystem erleichtert nicht nur das Programmieren von Anwendungsprogrammen, es verringert auch das Risiko eines Systemabsturzes, der durch fehlerhafte Ansteuerung der Hardware verursacht wird. Erlaubt man Anwendungsprogrammen den direkten Zugriff auf Hardware (im Beispiel auf die Grafikkarte), stellt jedes neue Programm ein potenzielles Risiko dar, weil es möglicherweise fehlerhaft oder gar zerstörerisch auf die Hardware zugreift.

Moderne Betriebssysteme verhindern direkte Zugriffe auf die Hardware und bieten stattdessen Betriebssystemschnittstellen an, über die die Anwendungen auf die Hardware zugreifen. Ist in dieser Situation das Anwendungsprogramm fehlerhaft programmiert und ruft diese Schnittstellen mit unsinnigen Parametern auf, kann das Betriebssystem dies erkennen und den Zugriff ablehnen.

Beispiel: Drucker

Ist am Computer ein Drucker angeschlossen und wollen zwei Anwendungsprogramme gleichzeitig eine Seite Papier ausdrucken, käme es zu einem chaotischen Ergebnis, wenn beide Programme zur selben Zeit mit dem Ausdruck beginnen würden: Mit den abwechselnd von Programm A und B beim Drucker eintreffenden Datenfragmenten könnte das Gerät nichts anfangen.

Kontrolliert das Betriebssystem den Drucker, übergeben die Anwendungen ihre Druckaufträge dem Betriebssystem, und dieses sorgt dann dafür, dass die Druckdaten in einer vernünftigen Reihenfolge an den Drucker weiter geleitet werden. Dazu kommt der bereits bekannte Nutzen, dass nur an einer Stelle Wissen über die Ansteuerung der verschiedenen Druckermodelle gesammelt werden muss: im Betriebssystem. Die Anwendungen schicken ihre Druckdaten in einem standardisierten Format, und das Betriebssystem setzt sie mit einem Druckertreiber in die Sprache um, die das Gerät versteht, z. B. PostScript.

Das Beispiel zeigt einen zweiten Vorteil der Hardware-Abstraktion: Sie schützt Geräte vor gleichzeitigem Zugriff durch mehrere Anwendungen -- denn manche Dinge brauchen exklusiven Zugriff, wie z. B. der Ausdruck zweier Dokumente aus zwei Programmen.

Voraussetzungen

Für die Teilnahme an der Vorlesung werden Kenntnisse in den folgenden Bereichen vorausgesetzt:

  • C -- Grundlagen der Programmierung in C, so dass Sie kurze C-Programme lesen können
  • Rechnerarchitekturen -- grober Aufbau eines Computers (Prozessor, Hauptspeicher, Peripherie etc.), Zusammenwirken dieser Komponenten (Bussysteme, Interrupts etc.)
Als Teil der Vorlesung wird ein kurzes Programmierpraktikum angeboten; für die Teilnahme daran sind einige zusätzliche Kenntnisse nötig:
  • Unix-Shell -- Benutzung der Standard-Shell bash unter Linux (oder einem anderen Unix-System)
  • Python -- Grundlagen der Programmierung in Python, so dass Sie Python-Programme lesen können. Für das Praktikum sind auch "aktive" Programmierkenntnisse in Python notwendig.

Aufbau und Inhalt von Vorlesung und Skript

Wir behandeln alle Themen nach folgendem Schema:

  1. Am Anfang stehen praktische Beispiele unter dem Betriebssystem Linux (http://www.linux.org) -- z. B. finden Sie im nächsten Kapitel über Prozesse zunächst eine Beschreibung, wie Sie Prozesse unter Linux starten und manipulieren (anhalten, fortsetzen, abschießen etc.).
  2. Im zweiten Schritt lernen Sie die theoretischen Grundlagen kennen. Da es für viele Probleme unterschiedliche Lösungsansätze gibt, erfahren Sie hier einiges über die Gestaltungsmöglichkeiten, die ein Betriebssystemprogrammierer hat.
  3. Danach wird es wieder praktisch: Anhand von Linux-Quellcode zeigen wir Implementierungen der vorgestellten Theorie. So schließt sich der Kreis, und Sie sehen, warum die Befehle und Vorgehensweisen aus dem ersten Teil funktionieren.
  4. Jedes Kapitel endet mit einem kurzen Übungsblock: Anhand der Selbsttestfragen (deren Antworten Sie im Anhang finden) können Sie Ihr Wissen überprüfen.
Die Themen präsentieren wir in dieser Reihenfolge:
  • Kapitel 2 führt in das Konzept der Prozesse und Threads ein und beschreibt neben der Theorie auch Implementierungsdetails, etwa den Aufbau von Prozesstabellen in echten Betriebssystemen.
  • In Kapitel 3 geht es um Interrupts, also Unterbrechungen des gerade laufenden Prozesses.
  • Scheduler behandelt Kapitel 4: Sie sorgen dafür, dass die Prozessorzeit gerecht unter den Prozessen verteilt wird.
  • Kapitel 5 beschäftigt sich mit dem Thema Synchronisation.
  • Interprozess-Kommunikation (englisch: inter-process communication, kurz IPC) ist Gegenstand des Kapitels 6.
  • Generell zu vermeiden sind Deadlocks: Wie es zu Deadlocks kommt und mit welchen Vorkehrungen man ihnen aus dem Weg geht, verrät Kapitel 7.
  • Gegenstand der Vorlesung Betriebssysteme II sind die Themen Speicherverwaltung (Kapitel 8) und Dateisysteme (Kapitel 9).


Copyright © 2006-2011 Hans-Georg Eßer. Letzte Änderung: Wednesday, 04-Mar-2009 12:20:14 CET
Anschrift: Hochschule München, Fakultät für Informatik und Mathematik, Lothstraße 34, D-80335 München