Betriebssysteme (1) Ziele und Funktionen von Betriebssystemen Bequemlichkeit Durch ein Betriebssystem kann ein Computer bequemer genutzt werden Effizienz Durch ein Betriebssystem können Computerressourcen effizient genutzt werden Fähigkeit zur Weiterentwicklung Effektive Entwicklung, Testen und Einführung neuer Systemfunktionen möglich, ohne den Betrieb negativ zu stören
Betriebssysteme (2) Schichten und Ansichten eines Computersystems
Betriebssysteme (3) Dienste eines Betriebssystems Programmentwicklung Programmausführung Zugriff auf E/A-Geräte Kontrollierter Zugriff auf Dateien Systemzugriff Fehlererkennung und Reaktion auf Fehler Buchführung
Betriebssysteme (4) Betriebssystem als Ressourcenmanager
Betriebssysteme (5) Weiterentwicklung eines Betriebssystems Hardwareupgrades und neue Hardwaretypen Früher: kein Paging-Mechanismus, Heute: Nutzung von Paging für virtuellen Speicher Nutzung von Grafik-Terminals, statt zeilenweise arbeitender Terminals Neue Dienste Z.B. neue Monitoring-Tools Grafisch orientierte Ausgabe Reparaturen Fehler werden bei einer komplexen Betriebssystem-Software erst im Verlauf der Zeit entdeckt. Jedes BS hat Fehler.
Betriebssysteme (6) Entwicklungsgeschichte der Betriebssysteme Serielle Verarbeitung In 40er und Mitte 50er Jahre wurden Computer direkt auf Hardware programmiert Nutzung von Lochkarten mit Maschinencode Ablaufplanung Reservierungskalender, z.b. Mehrfaches einer halben Stunde Problem: reservierte Zeit war zu kurz oder zu lang Installationszeit Laden von Compiler und Quellprogramm Speichern des kompilierten Programms Binden des Programms an die Betriebssystem-Funktionen
Betriebssysteme (7) Entwicklungsgeschichte der Betriebssysteme Einfache Stapelsysteme Teure Rechnerhardware optimale Rechnerausnutzung gefragt 50er bis 60er Jahre: Entwicklung von Stapelbetriebssystemen Zentrale Idee: Einführung eines Monitors Kein direkter Zugang zum Rechner Programme (Lochkarten, Bänder) werden einem Operator vorgelegt, der diese in einem Stapel auf dem Eingabegerät dem Monitor zur Verarbeitung übergibt Jobs werden sequentiell abgearbeitet Jedes Programm verzweigt nach Beendigung wieder zum Monitor zurück
Betriebssysteme (9)
Betriebssysteme (8) Beispiel einer Speicherbelegung Beispiel eines Jobs $JOB $FTN $LOAD $RUN $END Beginn des Jobs Fortran-Compiler laden Fortran-Befehle Objektprogramm laden Programm starten Daten Ende des Jobs
Betriebssysteme (10) Anforderungen bei Nutzung eines Monitors Speicherschutz Nutzerprogramm darf den Speicherbereich des Monitors nicht verändern Wenn doch, sollte Prozessor Fehler erkennen und Kontrolle an Monitor übergeben Monitor sollte dann Job abbrechen und Fehlermeldung ausgeben Timer Sollte verhindern, dass der Job das System auf Dauer in Beschlag nimmt Wird zu Beginn des Jobs gesetzt Falls Maximalzeit überschritten wird, wird Benutzerprogramm gestoppt und Kontrolle an den Monitor übergeben Privilegierte Befehle Bestimmte Befehle auf Maschinenebene sind privilegiert, nur vom Monitor ausführbar Ausführung solcher Befehle von Benutzerprogramm Fehler Kontrolle an Monitor Beispiel_ E/A-Befehle Interrupts Verleiht den Betriebssystemen größere Flexibilität bei der Abgabe der Kontrolle an Nutzerprogramme und vor allem deren Wiedererlangung
Betriebssysteme (11) Beispiel für eine Systemnutzung Auslesen eines Datensatzes aus einer Datei Ausführen von 100 Befehlen Schreiben eines Datensatzes in eine Datei gesamt 0,0015 Sekunden 0,0001 Sekunden 0,0015 Sekunden 0,0031 Sekunden 0,0001 0,0031 CPU CPU-Auslastung: n = = = 3,2% CPU t t gesamt Problem: sehr geringe CPU-Auslastung durch ein einziges Programm.
Betriebssysteme (12) Stapelsysteme für den Mehrprogrammbetrieb a) Einprogrammbetrieb Prozessor muss warten, bevor er eine E/A-Operation durchführen kann
Betriebssysteme (13) Stapelsysteme für den Mehrprogrammbetrieb b) Mehrprogrammbetrieb mit zwei Programmen Wenn ein Job für eine E/A-Operation warten muss, kann der Prozessor zu einem andere Job umschalten
Betriebssysteme (14) Stapelsysteme für den Mehrprogrammbetrieb c) Mehrprogrammbetrieb mit drei Programmen Das Prinzip lässt sich auch auf 3 und mehr Jobs anwenden
Betriebssysteme (15) Beispiel verschiedener Jobs Job1 Job2 Job3 Art des Jobs Dauer Speicherbedarf Umfangreiche Berechnungen Umfangreiche Ein-/Ausgabe Umfangreiche Ein-/Ausgabe 5 Minuten 15 Minuten 10 Minuten 50 KByte 100 KByte 80 KByte Festplatte benötigt? nein nein ja Terminal benötigt? nein ja nein Drucker benötigt? nein nein ja
Betriebssysteme (16) Nutzungshistogramme für Ein- und Mehrprogrammbetrieb
Betriebssysteme (17) Auswirkungen des Mehrprogrammbetriebs auf die Ressourcennutzung Einprogrammbetrieb Mehrprogrammbetrieb Prozessornutzung 22% 43% Speichernutzung 30% 67% Festplattennutzung 33% 67% Druckernutzung 33% 67% Zeitaufwand 30 min. 15 min. Durchsatzrate 6 Jobs/Stunde 12 Jobs/Stunde Mittlere Antwortzeit 18 min. 10 min.
Betriebssysteme (18) Timesharing-Systeme Job-Systeme: Relativ effiziente Stapelverarbeitung nicht-interaktiver Rechnerbetrieb Problem Interaktives Arbeiten nicht möglich (z.b. Transaktionsverarbeitung, Flugbuchung) Lösung: Simultanes, zeitlich verzahntes Arbeiten Zeit des Prozessors wird auf mehrere Nutzer verteilt Terminalbetrieb
Betriebssysteme (19) Stapelmehrprogrammbetrieb im Vergleich zum Timesharing Stapelmehrprogrammbetrieb Timesharing Hauptziel Anweisungsquelle für Betriebssystem Maximierung der Prozessorausnutzung Befehle in Jobsteuer- Sprache, die mit dem Job Bereitgestellt werden Minimierung der Antwortzeit Befehle, die am Terminal eingegeben werden
Betriebssysteme (20) Wichtige Errungenschaften von Betriebssystemen Prozesse Speicherverwaltung Informationsschutz und Sicherheit Ablaufplanung und Ressourcenverwaltung Systemstruktur
Betriebssysteme (21) Prozesse Fundsmentale Bedeutung für Aufbau von Betriebssystemen Unter Prozess wird u.a. verstanden: Ein Programm ist in der Ausführung Eine Instanziierung eines Programms, das auf einem Rechner abläuft Die Einheit, die einem Prozessor zugeteilt und auf einem Prozessor ausgeführt werden kann Eine Aktivitätseinheit, die durch einen einzigen sequentiellen Ausführungs- Thread, einem aktuellen Status und einem dazugehörigen Satz Systemressourcen gekennzeichnet ist
Betriebssysteme (22) Einführung des Prozesskonzeptes: Mehrprogrammstapelprinzip bessere Rechnerauslastung (CPU, E/A-Geräte) durch Nutzung von Wartezeiten zur Ausführung mehrerer Programme Timesharing Interaktive Nutung von Rechnern Aufteilung der Rechenzeit für mehrere Benutzer Nutzung unterschiedlicher Anwendungen (editieren, kompilieren...) Echtzeittransaktionssysteme Zahlreiche simultane Interaktionen, jedoch nur eine oder wenige Anwendungen Viele mögliche Kombinationen beim Ablauf Deshalb schwer zu handhaben Besondere Programmierfehler, die nur in bestimmten, seltenen Kombinationen von Aktionssequenzen auftreten
Betriebssysteme (23) Hauptursachen für Probleme bei Systemsoftware für Multiprogramming: Falsche Synchronisation Unterbrechung einer Routine und warten auf ein Ereignis, z.b. E/A-Operation beendet Hierzu warten auf ein Signal Falsche Auslegung der Signalmechanismen Signale gehen verloren oder sind doppelt Fehlgeschlagener gegenseitiger Ausschluss Mehr als ein Benutzer oder Programm versuchen, eine Ressource zu belegen Beispiel Buchungssystem: lesen der Datenbank und Belegen eines freien Sitzplatzes Mechanismus notwendig, der zu einer Zeit nur eine Transaktion im selben Datenbereich zulässt Schwierig zu prüfen, ob Implementierung eines gegenseitigen Ausschlusses bei allen möglichen Ereignissequenzen korrekt funktioniert
Betriebssysteme (24) Hauptursachen für Probleme bei Systemsoftware für Multiprogramming (2): Nichtdeterministischer Programmbetrieb Ergebnisse eines Programms sollten nur von Eingaben in dieses Programm, nicht jedoch von Aktivitäten anderer Programme abhängen Probleme können auftreten, wenn gemeinsamer Speicher genutzt wird Programme können diesen Speicher unvorhergesehen überschreiben Reihenfolge der Programmaufrufe kann dann das Ergebnis beeinflussen Verklemmungen (Deadlocks) Zwei Programme halten an, weil sie aufeinander warten Beispiel: 2 Programme wollen von Festplatte auf Magnetband kopieren Ein Programm hat bereits die Festplatte, das andere das Magnetband reserviert Jedes Programm wartet auf das andere, das die noch fehlende Ressource freigegeben wird Solche Verklemmung kann von zufallsbeeinflussten Zeitpunkten der Ressourcenzuteilung und freigabe abhängen Zur Behebung dieser Probleme ist systematischer Weg ist für Beobachtung und Kontrolle der Programme erforderlich Prozesskonzept
Betriebssysteme (25) Prozess 3 Komponenten: Ein ausführbares Programm Zugehörige Daten, die das Programm benötigt (Variablen, Arbeitsbereich, Puffer usw.) Der Ausführungskontext des Programms (Register, Programmzähler usw.) Ausführungskontext: Alle Informationen, die Betriebssystem und Prozessor zum Ausführen benötigen Inhalte der Prozessorregster (Programmzähler und Datenregister Informationen über Benutzung des Betriebssystems, z.b. Priorität, warten auf E/A- Geräte
Betriebssysteme (26) Beispiel Prozesse
Betriebssysteme (27) Speicherverwaltung Prozessisolierung BS muss unabhängige Prozesse daran hindern, auf Daten und Speicher fremder Prozesse zuzugreifen und sie somit zu stören Automatische Zuordnung und Verwaltung Speicherbereich sollte bei Bedarf den Programmen zugeordnet werden Gilt für alle Ebenen der Speicherhierarchie Zuordnung sollte für Programmierer unsichtbar sein Programmierer wird entlastet, BS kann effizient Speicher zuweisen Unterstützung der modularen Programmierung Programmierer sollten in der Lage sein, Programmmodule zu definieren, Module dynamisch zu erstellen, zu löschen und in ihrer Größe zu verändern
Betriebssysteme (28) Speicherverwaltung (2) Schutz und Zugriffskontrolle Programme haben das Potenzial, auf Speicher anderer Programme zuzugreifen Effekt kann gewollt sein, z.b. bei dynamischen Bibliotheken Andererseits: Bedrohung der Programme bzw. des Betriebssystems BS: Kontrolle, dass Zugriff nur in gewünschter Form erfolgen kann Langzeitspeicherung Dateisystem Speichert mit Namen versehene Objekte (Dateien) Bequemes Konzept für Programmierer Nützliche Einheit für Zugriffskontrolle und Schutzmechanismen
Betriebssysteme (29) Virtueller Speicher Ermöglicht Programmierern, Speicher von einem logischen Stanspunkt aus anzusprechen Muss nicht auf die tatsächliche physikalische Größe achten Wurde entwickelt, damit aufeinander folgende Prozesse ohne Unterbrechung ausgeführt werden können Nicht mehr benötigte Prozesse können ausgeschrieben und nachfolgende Prozesse schon eingelesen werden (Prozessumschaltung) Extrem schwierig, jeweils zusammenhängende Speicherbereiche bereitzustellen Paging Paging Blöcke fester Größe (Seiten, Pages) Programm benutzt virtuelle Adressen, = Seitenzahl + Offset Paging-System sorgt für dynamische Zuordnung virtueller Adressen auf reale Adressen bzw. physikalische Adressen im Hauptspeicher Es werden alle Seiten in den Hauptspeicher geladen, die von einem Programm referenziert werden (nicht notwendigerweise das ganze Programm) Am wenigsten benötigte Seiten werden aus dem Hauptspeicher verdrängt
Betriebssysteme (30) Konzepte virtueller Speicher Hauptspeicher Festplatte
Betriebssysteme (31) Adressierung beim virtuellen Speicher
Betriebssysteme (32) Informationsschutz und Sicherheit Aufgaben bei Sicherheit und Schutz von Systemen umfassen Zugriffskontrolle Regulierung der Benutzerzugriffe auf das Gesamtsystem, Subsysteme und Daten Regulierung des Prozessorzugriffs auf verschiedene Ressourcen und Objekte innerhalb des Systems Kontrolle des Informationsflusses Regulierung des Datenflusses innerhalb des Systems und der Auslieferung der Daten an den Benutzer Zertifizierung Nachweis, dass Mechanismen für Zugriffskontrolle und Kontrolle des Datenflusses Gemäß ihrer Spezifikation funktionieren Gewünschten Schutz und gewünschte Sicherheit durchsetzen
Betriebssysteme (33) Ablaufplanung und Ressourcenverwaltung Fairness Prozesse konkurrieren um Ressourcen Gleichen fairen und Zugriff auf Ressourcen ermöglichen Insbesondere bei Jobs mit ähnlichen Anforderungen Differenzierte Ansprechempfindlichkeit Unterscheidung zwischen verschiedenen Jobklassen Ziel: Erfüllung der Anforderungen Ggf. dynamische Wichtung von Prioritäten, damit z.b. ein E/A-Gerät schnell wieder frei wird Effizienz Maximierung von Durchsatz und Minimierung von Antwortzeiten Timesharing: so viele Benutzer wie möglich
Betriebssysteme (34) Ablaufplanung und Ressourcenverwaltung
Betriebssysteme (35) Systemstruktur Beherrschung der Komplexität durch Softwarestruktur Modularer Aufbau Vereinfachung der Organisation der Softwareentwicklung Gut definierte Schnittstellen, vereinfachen Weiterentwicklung Austauschbarkeit von Modulen Bei sehr komplexen Systemen: Einführung von Schichtenhierarchie und Informationsabstraktionskonzepten Trennung nach Komplexität, charakteristischer Dauer und Abstraktionsgrad Eine Ebene greift für einfachere Funktionen auf untergeordnet Ebene zurück Dienste werden für nächst höhere Ebene angeboten Funktionen tieferer Ebenen: zeitkritisch (z.b. nur einige µs), direktes Ansteuern der Computerhardware Funktionen der höheren Ebenen: Interaktion mit dem Benutzer, weniger zeitkritisch, komplexere Aufgaben
Betriebssysteme (36) Systemstruktur Hardware- und Maschinensprachebenen Ebenen 1 bis 4 spiegeln Hardware wieder Ebene 1: Elektronische Schaltungen Elektronische Schaltungen: Register, Speicherzellen, logische Gatter Operationen: z.b. Löschen eines Registers, lesen einer Speicherstelle Ebene 2: Befehlssatz Befehlssatz des Prozessors (Maschinensprache) Addition, Subtraktion, Laden, Speichern Ebene 3: Prozeduren Prozedur und Subroutine, Aufruf- und Rückspringoperationen Ebene 4: Interrupts Interrupts: Abspeicherung des aktuellen Kontexts, Interrupt handler aufrufen
Betriebssysteme (37) Systemstruktur Verwaltung von Ressourcen eines einzelnen Prozessors Ebene 5: Einfache Prozesse Einfache Prozesse, Semaphoren, Bereitschaftslisten Unterbrechen, Wiederaufnehmen, Warten, Signalisieren Abspeichern von Hardwareregistern, Synchronisation (Semaphoren) Funktion des Dispatchers Ebene 6: Lokaler Sekundärspeicher Lokale Sekundärspeichergeräte: Positionierung Schreib-/Lesekopf, Übertragung Datenblöcke Nutzt Ebene 5 für einfache Funktionen, Komplexe Funktionen in höheren Ebenen Ebene 7: Virtueller Speicher Logischer Adressraum der Prozesse, Virtueller Speicher Z.B. Strukturierung des Speichers in Seiten fester Länge Falls Bloch nicht im Hauptspeicher Initiierung eines Blocktransfers in Ebene 6
Betriebssysteme (38) Systemstruktur Externe Objekte, Peripheriegeräte, auch über Netzwerk verfügbare Objekte: logisch, per Namen adressierbar, auf dem gleichen oder mehreren Computern Ebene 8: Kommunikation Kommunikation: Erstellen, Löschen, öffnen, Schließen, Lesen, Schreiben Pipes, Interprozesskommunikation: logischer Kanal zum Datenaustausch zwischen Prozessen Ebene 9: Dateisystem Langzeitspeicherung per Namen Adressierbarer Daten (Dateien) Daten variabler Länge im Sekundärspeicher (z.b. Festplatte) Gegenstück zu Ebene 6 (Spuren, Sektoren und Blöcke fester Länge) Ebene 10: Geräte Zugriff auf externe Geräte durch genormte Schnittstellen (Drucker, Anzeige, Tastatur) Operationen: Öffnen, Schließen, Lesen, Schreiben
Betriebssysteme (39) Systemstruktur Ebene 11: Verzeichnisse Verwaltung der Zuordnung zwischen externen und internen Kennungen für Ressourcen und Objekte Externe Kennung: verwendet von Anwendung oder Benutzer Interne Kennung: Adresse oder andere Art der Kennung, verwendet durch niedrigere Ebenen Verwaltung in Verzeichnissen Zusätzliche Merkmale wie z.b. Zugriffsrechte Ebene 12: Benutzerprozesse Umfassende Funktion zur Unterstützung von Prozessen Sämtliche Funktionen zur Verwaltung eines Prozesses Z.B. virtueller Adressraum, Liste für Interaktion mit anderen Objekten und Prozessen, Beschränkungen dieser Interaktion (Speicherschutz, nur Lesezugriff...), weitere Prozessmerkmale Vergleiche: Ebene 5 nur Verwaltung der Inhalte der Prozessorregister im Kontext, Dispatcher-Funktion
Betriebssysteme (40) Systemstruktur Ebene 13: Shell Schnittstelle zum Betriebssystem für Benutzer Bezeichnung Shell, da Abschirmung von Einzelheiten des Betriebssystems, Präsentation als eine Reihe von Diensten Nimmt Anweisungen und befehle in Jobsteuersprache an Interpretation Erzeugt und kontrolliert Prozesse nach Bedarf Möglich: Präsentation in grafischer Form, z.b. Menüs Diese Modell dient zur Strukturierung und Beschreibung eines Systems Kann als Implementierungsrichtlinie dienen
Betriebssysteme (41) Merkmale moderner Betriebssysteme Mikrokernel-Architektur Monolithischer Kernel: Großkernel mit Scheduling, Dateisystem, Vernetzung, Gerätetreiber, Speicheverwaltung; Implementierng als Einzelprozess im gleichen Adressraum Mikrokernel: Beschränkung auf einige wesentliche Elemente wie Unterstützung von Adressräumen, Interprozesskommunikation und Scheduling Andere Dienste: Implementierung als (Server-)Prozesse Können im Prinzip auch entfernt ausgeführt werden Multithreading Thread Einheit die sich per Dispatcher zuordnen läßt (prozessorkontext, Datenbereich, Stack)
Betriebssysteme (42) Merkmale moderner Betriebssysteme Multithreading Thread Einheit die sich per Dispatcher zuordnen lässt (Prozessorkontext, Datenbereich, Stack) Wird sequentiell ausgeführt Kann unterbrochen werden Prozess Ein- oder mehrere Threads mit dazugehörigen Systemressourcen (Code + Daten, geöffnete Dateien, Geräte) Entspricht Konzept eines Programms in der Ausführung Austeilung eines Programms in Threads (nebenläufige Teile): weitgehende Kontrolle über Modularität und zeitlichen Ablauf von anwendungsbezogenen Ereignissen Sinnvoll für Anwendungen, die nicht in zeitliche Reihenfolge gebracht werden müssen Umschalten zwischen Threads erzeugt weniger Aufwand (nur Prozessorkontext)
Betriebssysteme (43) Merkmale moderner Betriebssysteme Symmetrischer Multiprozessorbetrieb (SMP) Vorhandensein mehrerer Prozessoren Teilen sich Hauptspeicher, E/A-Einrichtungen Verbindung über speziellen Kommunikationsbus Alle Prozessoren können selbe Funktionen ausführen symmetrisch Potentielle Vorteile: Verteilung von unabhängigen Prozessen so, dass sie gleichzeitig ausgeführt werden können Verfügbarkeit: Ausfall eines Prozessors führt nicht zum Stillstand des Systems Schrittweises Wachstum: Verbesserung der Systemleistung durch zusätzlichen Prozessor Skalierung: Bereitstellung von Produkten mit unterschiedlicher Prozessoranzahl Vorteile sind potentieller Natur, nicht jedoch garantiert! SMP und Multithreading lassen sich vorteilhaft kombinieren
Betriebssysteme (44) Mehrprogrammbetrieb und Mehrprozessorbetrieb Zeit Prozess 1 Prozess 2 Prozess 3 (a) Verschachtelung (Mehrprogrammbetrieb, ein Prozess) Prozess 1 Prozess 2 Prozess 3 Blockiert Aktiv (b) Verschachtelung und Überschneidung (Mehrprogrammbetrieb, mehrere Prozessoren)
Betriebssysteme (45) Merkmale moderner Betriebssysteme Verteiltes Betriebssystem Schafft Illusion eines einzigen Hauptspeicherraums und eines einzigen Sekundärspeicherraums und weiterer einheitlicher Zugriffsmittel, z.b. System für verteilte Dateien Cluster Bleiben bisher hinter dem Stand der Einzel- und SMP-Systeme zurück Objektorientierter Aufbau Sauberes Hinzufügen von modularen Erweiterungen zu einem kleinen Kernel Möglichkeit des Zurechtschneiderns ohne Verlust der Systemintegrität (z.b. Pure)