1
Stichworte
Notizen
Prof. W. Burkard 1
Betriebssystemeam Beispiel
Fachhochschule PforzheimProf. W. Burkard
FB 7, Studiengang Wirtschaftsinformatik
Linux
2
Stichworte
Notizen
Prof. W. Burkard 2
Überblick
● klassische Betriebssysteme■ Einführung und Überblick■ Hardware-Grundlagen■ Prozessverwaltung ■ Speicherverwaltung■ Dateisysteme■ Ein-/Ausgabe■ Deadlocks
● Einführung in Linux/Unix■ Überblick, Installation, System-Grundlagen■ Dateisystem, die Shell, Task-Management, ■ Linux administrieren, die grafische Oberfläche■ Linux im Netz: NIS und NFS
● Praxisteil Java-Threads■ Threads und Prozesse in Java■ die Synchronisationsproblematik und ihre Lösungen■ Interprozesskommunikation
3
Stichworte
Notizen
Prof. W. Burkard 3
Organisation der Vorlesung
Teilnehmer■ Betriebswirte SG Wirtschaftinformatik ■ Bachelor of Information Systems■ Ingenieure der Elektrotechnik Diplom/Bachelor
Pflichtprogramm für alle Ingenieure
Pflichtteil Betriebswirte
Woch
e 1W
oche 2
Woch
e 4
Woch
e 3
Woch
e 5
Woch
e 7
Woch
e 6
Woch
e 8W
oche 9
Woch
e 10W
oche 11
Woch
e 13
Woch
e 12
Woch
e 14
Betriebssysteme Theorie (7) Linux / Unix-Teil (4)Thread-
Programming (3)
für Betriebswirte keine Pflicht
4
Stichworte
Notizen
Prof. W. Burkard 4
Literatur
[Tannen95] Andrew S. Tannenbaum, Moderne Betriebssysteme , Hanser-Verlag München/Wien 1995
[Oechsle01] Rainer Oechsle, Parallele Programmierung mit Java Threads, Hanser-Verlag München/Wien 2001
[Nehmer01] Jürgen Nehmer und Peter Sturm, Systemsoftware (Grundlagen moderner Betriebssysteme), dpunkt-Verlag, Heidelberg 2001
[Kredel02] H. Kredel & A. Yoshida, Thread- und Netzwerkprogrammierung mit Java,dpunkt-Verlag, Heidelberg 2002
[Brause98] Rüdiger Brause, Betriebssysteme, Springer-Verlag, Berlin 1998[Siegert98] H.J.Siegert, Betriebssysteme eine Einf., Oldenbourg-V. München 1998[Steen95] Maarten van Steen, Computer and Network Organization ,
Prentice-Hall, München 1995[Stucky97] Wolffried Stucky, Der Rechner als System,
Teubner-Verlag, Stuttgart 1997
5
Stichworte
Notizen
Prof. W. Burkard 5
Aufgaben der Betriebssysteme
Definition:
Das Betriebssystem steuert und verwaltet die vorhandenen Betriebsmittel eines Rechnersund stellt den Anwendern und den Anwendungsprogrammen Schnittstellen zur Verfügung,die den möglichst einfachen und damit effiziente Umgang mit den Ressourcen ermöglichen.
Aufgaben:
• Verwalten vorhandener Ressourcen: •Prozessoren, •Speicher, •Peripherie-Geräte, •Prozesse
• Anbieten abstrakter Schnittstellen zu den Betriebsmitteln• Steuern und Überwachen der Anwendungs-Software• Realisieren von Kommunikationswegen zwischen den
einzelnen Ressourcen des Systems,den Anwendungsprogrammen und dem Menschen
6
Stichworte
Notizen
Prof. W. Burkard 6
Geschichte der Betriebssysteme
Generation 1: Generation2:
Rechner ohne Betriebssystem, keine Idee des Stapelbetriebes mit getrenntenUnterscheidung der Anwender in Systemen für Eingabe, Verarbeitung, Ausgabe. Entwickler,Operateur, Programmierer Der teuere Rechner wurde besser ausgenutzt, und Nutzer. ( bis Mitte der 50er) durch Verringern der Stillstandszeiten.
7
Stichworte
Notizen
Prof. W. Burkard 7
Mehrprogrammbetrieb● Mehrere Jobs werden im Hauptspeicher gehalten.● Wenn ein Job auf das Ende einer I/O-Operation wartet, wird die CPU einem anderen
Job zugeteilt.● d.h. es können zu einem bestimmten Zeitpunkt mehrere Jobs “in Arbeit” sein.● ABER: Nur ein in “Warteposition” gehender Job gibt die CPU frei
==> non-preemptive-scheduling● Job-Spooling (Simultaneous Peripheral Operation On Line) =
Zwischenlagerung der ankommenden Jobs auf Magnetplatte, so dass beimFreiwerden einer Partition ein neuer Job sofort nachgeladen werden konnte
● Speicherpartitionierung = Aufteilung des Hauptspeichers in separate Teile, in dieje ein Job geladen werden kann
Synonyme Begriffe: Job = Task = Prozeß (aber nur bedingt = Thread )
Speicherbereich für das Betriebssystem
Speicher-partiton 1
“Job 1”
Speicher-partiton 2
“Job 2”...
Speicher-partiton 3
“Job 3”
Speicher-partiton n
“Job n”
8
Stichworte
Notizen
Prof. W. Burkard 8
Timesharing
= Variante des Mehrprogrammbetriebes● Bisheriges Problem: zu lange Antwortzeiten verhinderten interaktives Arbeiten● Lösung: Betriebssystem weist die CPU den Jobs explizit zu und “entreist” sie
ihnen wieder, auch unabhängig von deren Bearbeitungsstand !!● d.h. das BS stellt sicher, dass die aktiven Jobs innerhalb einer gewissen
Zeitspanne immer wieder auf der CPU ein Stück weiterlaufen.● ==> preemptive-scheduling
Forderungen an einen guten Scheduling-Algorithmus:● Fairness: Jeder Job erhält gerechten Anteil an CPU-Zeit● Effizienz: CPU ist immer voll ausgelastet● Antwortzeit: Ist für interaktive Nutzer minimal● Verweilzeit: Stapeljobs bleiben möglichst kurz im System● Durchsatz: Möglichst viele Aufträge je Zeiteinheit
!! Widersprüchliche Ziele!!� �������� �� �� � �� � � �� �� � �
9
Stichworte
Notizen
Prof. W. Burkard 9
vernetzte Rechner
neue Herausforderungen: Betriebssysteme mehrerer Rechner müssen miteinander kommunizierenRessourcenverteilung über Rechnergrenzen hinwegEntstehung von Arbeitsteilung und Spezialisierung im Verbund (=>Client/Server)
Netzwerkbetriebssystem:Jeder Rechner im Netz hat sein eigenes Betriebssystem. Die Benutzer sind sich der Netzstruktur bewußt und greifen explizit auf nicht-lokale Ressourcen zu.
verteilte Betriebssysteme:Das gesamte Netz erscheint dem Anwender gegenüber wie ein einziger Rechner. Auf welchem Rechner ein Prozeß läuft und/oder wo eine Datei real gespeichert wird, ist dem Anwender nicht bekannt. Der Zugriff auf die verteilten Ressourcen erfolgt automatisch, möglichst effizient und bleibt dem Anwender verborgen.
10
Stichworte
Notizen
Prof. W. Burkard 10
Betriebssystem? Was ist das eigentlich?
SAP/R3 MS-Office Browser ...
Compiler Editoren M M S
B E T R I E B S S Y S T E M
Maschinensprache
Mikroprogramme
physikalisches Gerät
Anwendungsprogramme
Systemprogramme
Hardware
MMS = Mensch-Maschine-Schnittstelle, in der RegelKommandointerpreter bzw. grafische Benutzeroberfläche
11
Stichworte
Notizen
Prof. W. Burkard 11
Softwarestrukturen in einem Rechner
MMS = Mensch-Maschine-Schnittstelle, in der RegelKommandointerpreter bzw. grafische Benutzeroberfläche
12
Stichworte
Notizen
Prof. W. Burkard 12
Wozu brauchen wir ein BS?
Es bietet...... den Anwendungen einen komfortablen Zugriff zu den Hardwareressourcen eines
Rechners... somit wichtige Brückenfunktion zwischen Anwendung und Rechnerhardware... Koordination von unabhängigen Anwendungen, so dass sie sich bei Mehrbenutzer-
bzw. Mehrprogrammbetrieb beim Ressourcenzugriff nicht in die Quere kommen.
Was aber heißt „komfortabler Zugriff“ ?
Beispiel: Eine Anwendung will Daten persistent auf externem Medium speichern. Dafür gibt’s mehrere Alternativen:
● Direktes Abspeichern von Blöcken auf einer Festplatte● Benutzung eines Dateisystems, das seinerseits eine Festplatte bzw. Blöcke nutzt● Benutzung eines Datenbank-Systems, das auf einem Dateisystem aufsetzt, das ...● Verwendung persistenter Objekte in einer OO-Programmierumgebung, die eine
Datenbank als Unterstützung voraussetzt, die auf einem Dateisystem fußt, das ...
I
13
Stichworte
Notizen
Prof. W. Burkard 13
Wozu brauchen wir ein BS?
Das Beispiel zeigt:● Es wird immer ein Gerät benutzt (Festplatte)● Es gibt mehrere unterschiedliche Abstraktionsebenen● Welche Abstraktionsebene gewählt wird ist sehr stark von der Anwendung abhängig● Wie lassen sich die Dienste einer Abstraktionsebene nutzen ?● � es gibt ein Laufzeitpaket, d.h. einer Anwendung wird eine Menge von Funktionen
zur Verfügung gestellt, die den Zugang zu den gebotenen Diensten ermöglicht. (Application Programming Interface API )
● Die gebotenen Dienste können vom BS selbst oder aber von anderen Serviceleistern erbracht werden (dann aber ist das BS nur als Vermittler tätig)
● Die Dienste des Betriebsystems werden also durch einen „ganz normalen“Prozeduraufruf angefordert.
● Dieser „ganz normale“ Prozeduraufruf wird system call (Systemaufruf) genannt und mündet in aller Regel in einem TRAP (Einsprung in den Betriebssystemkern)
II
14
Stichworte
Notizen
Prof. W. Burkard 14
Wozu brauchen wir ein BS?
Der direkte Umgang der Anwendungsprogramme mit der Hardware ist aus mehreren Gründen problematisch:
● Schnittstellen zu Geräte-Controllern sind heute zwar weitgehend genormt, aber dennoch unhandlich.
● Koordination von Prozessor und anderen Komponenten mit den hardwareseitig verfügbaren Hilfsmitteln (Interruptmechanismen, Zyklisches Abfragen (Polling) ) führt zu schwer durchschaubaren Progammstrukturen, die wir auf Anwendungsebene nicht haben wollen.
● Direkter Hardwarezugriff bedeutet in Mehrbenutzerbetrieb schwerwiegende Schutzprobleme durch unvermeidbare Benutzung privilegierter Instruktionen
● Ohne unterstützende Software ist die Abwicklung unabhängiger Benutzeraktivitäten in einem Multiuserbetrieb undenkbar, Koordinationsaufwand zu komplex.
� Anwender wünschen sich indirekten Zugang zur Hardware über eine Dienstschicht, die quasi eine virtuelle Maschine darstellt und komfortabel benutzbar ist.
III
15
Stichworte
Notizen
Prof. W. Burkard 15
Grundlagen: Systemaufrufe
● Anwendungsprogramme kommunizieren mit dem Betriebssystem indem sie Systemaufrufe tätigen. ==> Aufruf von Systemfunktionen
● Anwendungsentwicklungssysteme müssen alle Systemaufrufe in Bibliotheken vorrätig halten.
● Die Bibliotheksfunktionen rufen durch sogenannte TRAPs das Betriebssystem
Beispiel: Lesen von Datei ● im Programmcode stehe:
anzahl = read(Dateiname,Zielspeicherplatz-im-Hauptspeicher, Anzahl-zu-lesender-Bytes)
● Bibliotheksfunktion read prüft die Parameter und startet dann das BS mit den angegebenen Parametern durch einen TRAP
● Betriebssystem suspendiert den laufenden Prozeß und erledigt die geforderte Aufgabe. Dann schreibt es die Anzahl der gelesenen Bytes in die entsprechende Prozeßvariable und schaltet den Prozeß wieder “rechenbereit”.
● Prozeß läuft bei der Bibliotheksfunktion wieder weiter.● Bibliotheksfunktion liefert der rufenden Funktion die Anzahl gelesener Bytes
16
Stichworte
Notizen
Prof. W. Burkard 16
System callsProblem:● Wie verhindert man, dass bei Verschiebungen des BS im Speicher die Anwendungen neu
kompiliert werden müssen, um die Systemprozeduren korrekt anzusprechen ?
Lösung:● Speichern aller Aufrufparameter auf dem Stack und Auslösen eines speziellen
Hardwaresignals (sogenannter Softwareinterrupt) ● Wie bei einem „normalen“ Hardware-Interrupt speichert der Prozessor seinen aktuellen
Stand, springt in die Interruptbehandlung und erledigt den geforderten Job, um dann an die Stelle des Abbruches zurückzukehren.
● Die Interruptbehandlungsroutine ist somit der zentrale Einsprungpunkt in den BS-Kern
● Da nach einem Systemaufruf die nächste Instruktion nicht gleich ausgeführt wird, sondern die Befehlsausführung am BS-Einsprung plötzlich „aufhört“, wird der Softwareinterrupt auch als Falltür (trap door, kurz TRAP) bezeichnet
17
Stichworte
Notizen
Prof. W. Burkard 17
Architekturbeispiel Linux / Unix
MMS = Mensch-Maschine-Schnittstelle, in der RegelKommandointerpreter bzw. grafische Benutzeroberfläche
18
Stichworte
Notizen
Prof. W. Burkard 18
Architekturbeispiel Mach
MMS = Mensch-Maschine-Schnittstelle, in der RegelKommandointerpreter bzw. grafische Benutzeroberfläche
19
Stichworte
Notizen
Prof. W. Burkard 19
Schichtung und Systemaufrufe bei W2K
MMS = Mensch-Maschine-Schnittstelle, in der RegelKommandointerpreter bzw. grafische Benutzeroberfläche
20
Stichworte
Notizen
Prof. W. Burkard 20
Ein- und Mehrprozessorsysteme
Massen-speicher
Prozessor
BS- Anw. 1 Anw. 2 ... Anw. nKern
Simples Einprozessorsystem
Im einfachsten klassischen Fall gibt es nur einen Prozessor, derHauptspeicher und Massenspeicher benutzt, um das Betriebssystem (BS) und die Anwendungsprogramme auszuführen
Bei der Rechnerarchitektur, für die ein Betriebssystem Ressourcen verwalten soll, müssen grundsätzliche Konfigurationen unterschieden werden
I
MMS = Mensch-Maschine-Schnittstelle, in der RegelKommandointerpreter bzw. grafische Benutzeroberfläche
21
Stichworte
Notizen
Prof. W. Burkard 21
Ein- und Mehrprozessorsysteme
Massen-speicher
Prozessor 1
BS- Anw. 1 Anw. 2 ... Anw. nKern
Multiprozessorsystem (enge Kopplung)
• Einprozessorsysteme können mit mehreren Prozessoren aufgerüstet werden
• Durch unterschiedliche Kopplungskonzepte entstehen unterschiedliche Architekturen
• Die einfachste Architektur sieht nur eine Vervielfachung der CPU vor, alle CPUs hängen dann
parallel an einem Verbindungsnetzwerk (Multi-Master-Systembus)
• Der Systembus verbindet die Prozessoren auf der einen Seite mit den Speichermodulen auf der
anderen Seite.
• Bei intensiver Nutzung wird der Bus zum Flaschenhals � Leistungseinbußen
II
Massen-speicher
Multi-Master-Systembus
Prozessor 2 Prozessor n...
MMS = Mensch-Maschine-Schnittstelle, in der RegelKommandointerpreter bzw. grafische Benutzeroberfläche
22
Stichworte
Notizen
Prof. W. Burkard 22
Ein- und Mehrprozessorsysteme
Massen-speicher
Prozessor 1
Multiprozessorsystem (lose Kopplung)
Interessante Beobachtung bei Mehrprozessorsystemen:
Oft spricht jeder Prozessor nur einen eng umgrenzten Speicherbereich an
( in dem sich die von ihm gerade abgearbeitete Anwendung befindet )
Daher die Idee: Aufteilen des Speichers und enger an den Prozessor binden
III
Massen-speicher
Multi-Master-Systembus
Prozessor 2 Prozessor n...
BS- Anw. 1 Kern
BS- Anw. n Kern
BS- Anw. 2 Kern
MMS = Mensch-Maschine-Schnittstelle, in der RegelKommandointerpreter bzw. grafische Benutzeroberfläche
23
Stichworte
Notizen
Prof. W. Burkard 23
Ein- und Mehrprozessorsysteme
Rechnernetz / Cluster
Was geschieht, wenn man jedem Prozessor ein eigenes Betriebssystem gibt?
Vollkommen unabhängige Rechner mit jeweils eigenem (eventuell unterschiedlichem)
Betriebssystem werden lose über ein Netzwerk gekoppelt
Cluster = sehr schnelles Netzwerk räumlich dicht beieinander stehender Rechner
IV
Massen-speicher
Prozessor 1
BS- Anw. Kern
Verbindungsnetzwerk LAN, WAN ...
Massen-speicher
Prozessor 2
BS- Anw. Kern
...
MMS = Mensch-Maschine-Schnittstelle, in der RegelKommandointerpreter bzw. grafische Benutzeroberfläche
24
Stichworte
Notizen
Prof. W. Burkard 24
Grundlagen: Prozesse
MERKE: Prozesse sind das wesentliche Konzept aller Betriebssysteme
Ein Prozeß ist ein in Ausführung befindliches Programm!
Er umfaßt:● den ausführbaren Programmcode● die Programmdaten (Variablen und
Konstanten des Programmes)● den Programmzähler (zeigt auf die
aktuell zu bearbeitende Anweisung)● Stack und Stackpointer ( Zwischenpuffer
für beim Programmlauf anfallende Daten)● alle weiteren Informationen, die das
Betriebssystem zur Ausführung des Programmes benötigt
Prozeßtabelle=Tabelle des Betriebssystems, in der alle Infos eines jeden Prozesses gespeichert sind
Threads („Handlungsfäden“) = leichtgewichtige Prozesse innerhalb von Prozessen, vom Anwendungsprogrammierer definiert!
Prozeß
Daten (Heap)
Programmcode
Stapel (Stack)
CPU-RegisterProzeß
-Kontext
Datei-Info, Zugriffsrechte
MMU-Register
Kernel-Stack
25
Stichworte
Notizen
Prof. W. Burkard 25
Prozesse leben und sterben...
Das Betriebssystem erzeugt, verwaltet und eliminiert Prozesse.
Ein Prozeß kann andere Prozesse erzeugen ==> Prozeßbaumgängige Systemaufrufe (System-Calls):
■ “erzeuge Kindprozeß B“■ “lösche mich”■ “Ich warte auf Ende meines Kindprozesses E”■ “Ersetze im Prozeß F den Programmcode durch Code yyy”■ “ich brauche mehr Speicher”
Prozesse können miteinander und mit dem BS “reden” ==> Interprozeßkommunikation
Prozesse in Timesharing-Systemen haben einen Besitzer ==> Sicherheitsproblemuid = user identification gid = group identification
Prozeß A
Prozeß B Prozeß C
Prozeß D Prozeß E Prozeß F
26
Stichworte
Notizen
Prof. W. Burkard 26
Grundlagen: Dateien
● Zur Erinnerung: Das BS verbirgt die Physik einer Festplatte (Zylinder,Spuren...) und schafft dem Anwender eine einfache Schnittstelle: Dateien
● Das Konzept der Dateien und Dateiverzeichnisse
Wurzelverzeichnis (root directory)
BenutzerSystemPogramme
SAP/R3MS-Office UteKarlAnna
Studienangelegenh.DAUrlaub
27
Stichworte
Notizen
Prof. W. Burkard 27
Handhabung von Dateien
● Vor dem Lesen oder Schreiben muß man eine Datei öffnen==> Zugriffsrechte regeln den Zugriff
● Idee: Eine Datei sei ein Ding, in welches man hineinschreiben oder aus dem man lesen kann ==> dann sind viele Geräte auch “Dateien” !!!
Also:● normale Datei: blockorientierte Byteansammlung auf der Festplatte/Diskette● spezielle Form: zeichenorientierte „Dateien“, z.B. Tastatur, Bildschirm, Drucker● Pipe, eine „Datei“ für die Interprozesskommunikation
A B
Zwei Prozesse, die durch zwei Pipes verbunden sind. Eine Pipeist unidirektional, man kann sie nur lesen ODER schreiben!
28
Stichworte
Notizen
Prof. W. Burkard 28
Grundlagen:
Kommandointerpreter
● Das Betriebssystem ist also das Programm, das alle Systemaufrufe ausführt.
● Der Kommandointerpreter ist das Programm, das dem Anwender einen Zugang zum Betriebssystem verschafft, wenn keine Anwendung da ist, die das tun könnte !!!
● textuelle Kommandointerpreter (z.B. DOS: Command.com)stellen eine einfache Sprache zur Verfügung, um Systemaufrufe sinnvoll zu nutzen. Beispiel: DIR DEL COPY
● grafische Benutzeroberflächen: (grafische Interpreter)stellen eine erweiterte MMS (Mensch-Maschine-Schnittstelle) zur Verfügung:Der Computer ist für den Anwender das, was die MMS ihm zeigt.
● Alternativ-Begriff: shell
29
Stichworte
Notizen
Prof. W. Burkard 29
“Ummantelung” des Systems durch Kommandointerpreter
...Treiber A Treiber B Treiber C Treiber n
...Gerät A Gerät B Gerät C Gerät n
shell-Kommandos Dienstprogramme Anwendungen
Betriebssystemkern mit allen Systemfunktionen
grafische oder textuelle Shell(z.B. Windows-Oberfläche bzw.
command.com)
30
Stichworte
Notizen
Prof. W. Burkard 30
Monolithische Betriebsystemstrukturen
Das Betriebssystem ist EIN Programm, eine unstrukturierte Ansammlung von Systemfunktionen, die sich auch gegenseitige uneingeschränkt nutzen können.
Es unterscheidet lediglich User- und Kernel-Modus:
31
Stichworte
Notizen
Prof. W. Burkard 31
Virtuelle Maschinen
Idee: Bau eines leistungsfähigen Multiuser-Multitasking-Systems durch Verwendung vorhandener, einfacher Betriebssysteme, denen ein “Verteiler” untergeschoben wird. (Beispiel PC/MOS386)
DOS DOS DOS
virtuelle MS-DOS-PCs
PC-MOS386-Betriebssystem
die “nackte” Hardware des PC
modifiziertes MSDOS-BIOS
hier: Systemaufruf
hier: TRAP (unter DOS sind dies SW-Interrupts)
hier: Ein- /Ausgabe-operation
hier: TRAP ins MOS
32
Stichworte
Notizen
Prof. W. Burkard 32
Client-Server-Architekturin einem Rechner:
BS-Kern bzw. Netzwerk sichern die Kommunikation zwischen C+Sin einem Netz:
BetriebssystemkernKernmodus
... BenutzermodusClient-Prozeß
Client-Prozeß
Client-Prozeß
Server-Prozeß
Server-Prozeß
KlientKern
Rechner 1
Netzwerk
KlientKern
Rechner 2
KlientKern
Rechner 3
KlientKern
Rechner n
Nachricht vom Client zum Server
...
33
Stichworte
Notizen
Prof. W. Burkard 33
Alles klar ??1. Nennen Sie die Aufgaben von Betriebssystemen
2. Erläutern Sie den Unterschied zwischen preemptive und non-preemptive scheduling
3. Warum wird Spooling heute insbesondere bei der Ausgabe auf Drucker verwendet?
4. Worin liegt der Vorteil, wenn die Shell nicht Teil des Betriebssystems ist?5. Warum macht das in verteilten Systemen beliebte Client/Server-Modell auch in
Einzelplatzrechnern Sinn ?
6. Warum benötigt ein PC mit nur einem Prozeß keine Prozeßtabelle?
7. welche der nachstehenden Aktionen sollten nur im Kern und niemals im Benutzermodus laufen?- Sperren aller Unterbrechungsleitungen- Lesen der Tageszeit- Setzen der Tageszeit
34
Stichworte
Notizen
Prof. W. Burkard 34
Hardware-Grundlagen
• fast alle heutigen Rechner basieren auf einem 1944 von Eckert, Mauchly und von Neumann entwickelten Architekturprinzip.
• Demnach besteht ein Computer aus einem Prozessor, einem Speicher und ein oder mehreren Ein-/Ausgabe-Geräten
• Die einzelnen Systemkomponenten sind über insgesamt drei Busse miteinander verknüpft
• Der Adressbus adressiert einzelne Datenzellen eines Speicherbausteins oder E/A-Gerätes (Breite je nach System 16,32,64 Bit (= Signalleitungen), dadurch Festlegung des adressierbaren physikalischen Speichers)
• Steuerbus regelt die Lese- und Schreiboperationen zwischen Prozessor und Speicher bzw. IO, nennt also z.B. die Flussrichtung der Daten
• Der Datenbus dient der eigentlichen Informationsübertragung der Bits zwischen Prozessor und Speicher / IO
35
Stichworte
Notizen
Prof. W. Burkard 35
Die CPU in der von-Neumann-Architektur
36
Stichworte
Notizen
Prof. W. Burkard 36
Der zentrale Prozessor (CPU)
• Die Aufgabe der CPU ist die sequentielle Ausführung einer Instruktionsfolge (Programm)
• Alle Instruktionen liegen zusammen mit den zu verarbeitenden Daten im Speicher des Rechners
• Bei jeder einzelnen Befehlsausführung werden Daten in der CPU verarbeitet ODER zwischen CPU und Speicher (bzw. IO-Gerät) bewegt
• Die CPU umfasst mindestens einen Registersatz, eine Recheneinheit (ALU) und ein Steuerwerk
• Register sind CPU-interne, sehr schnelle (ca. 1ns) Speicherzellen mit deren Inhalten die ALU rechnen kann
• Zwei Register sind von zentraler Bedeutung:
• Programmzähler (PC) enthält die Adresse der nächsten auszuführenden Instruktion
• Kellerregister (SP) zeigt auf das Ende des Stack und dient zur Realisierung von Unterprogrammaufrufen mit Parameterübergabe
• Die ALU manipuliert Prozessorregister. Neben arithmetischen Operationen für ganze und Gleitkommazahlen stellt sie Logik- und Testfunktionen zur Verfügung (z.B. Vergleiche)
• Das Steuerwerk ist der Interpreter für den Instruktionssatz einer CPU und koordiniert alle Einzelaktivitäten bei der Ausführung der einzelnen Instruktionen
37
Stichworte
Notizen
Prof. W. Burkard 37
Die von-Neumann-Architektur
38
Stichworte
Notizen
Prof. W. Burkard 38
Der Bus in der von-Neumann-Architektur
1010010110100101
12345678
Zelle 4schreiben
39
Stichworte
Notizen
Prof. W. Burkard 39
Gängige Systembusse
40
Stichworte
Notizen
Prof. W. Burkard 40
Maschinenbefehle und Daten im Speicher
41
Stichworte
Notizen
Prof. W. Burkard 41
Instruktionssatz und Adressierungsarten
• Die Menge aller vom Steuerwerk verstandenen Befehle definiert den Instruktionssatz eines Prozessors.
• Die Befehle lassen sich kategorisieren:
• Arithmetik-, Logik- und Schiebeoperationen
• Operationen zur Beeinflussung der weiteren Befehlsausführungsreihenfolge
• Lade- und Speicheroperationen dienen dem Austausch von Daten zwischen CPU und Speicher
• Hierbei unterscheidet man diverse Adressierungsarten:
• Registeradressierung: Ziel oder Quelle ist ein CPU-Register
• Absolute Adressierung: Ziel / Quelle ist eine Speicherzelle / Gerätezelle
• Relative Adressierung: in einem CPU-Register steht ein Basiswert, relativ zu dem ein Offset angegeben wird um Ziel / Quelle zu benennen
• Indirekte Adressierung: Ziel / Quelle ist der Inhalt eines Register oder einer Speicherzelle
42
Stichworte
Notizen
Prof. W. Burkard 42
Sprungbefehle und Unterprogramme
• Alle gängigen Prozessoren verfolgen ein streng sequentielles Verarbeitungsmodell, d.h. na ch Beendigung der aktuellen Operation wird mit der Bearbeitung des Befehls fortgefahren, der im Speicher nachfolgt.
• Durch Sprungbefehle kann dieser Ablauf beeinflusst werden
• unbedingter Sprungbefehl: die sequentielle Abfolge wird auf jeden Fall beendet und statt dessen an einer angegebenen Adresse fortgesetzt
• bedingter Sprungbefehl: abhängig von einer Bedingung erfolgt der Sprung zu einer anderen Speicheradresse ( z. B. wenn Inhalt eines Registers = 0 )
• Absoluter Sprung: Zieladresse wird fest vorgegeben
• Relativer Sprung: Angabe der Zieladresse ist relativ zur aktuellen Position
� relative Sprünge machen Programme relokierbar (verschiebbar im Speicher)
• Beim Sprung in ein Unterprogramm (JSR Jump SubRoutine) wird zusätzlich erst noch die aktuell folgende Speicheradresse auf den Stack gespeichert um bei Ende der Subroutine von dort wieder in den Programmcounter geladen zu werden
43
Stichworte
Notizen
Prof. W. Burkard 43
Synchrone und asynchrone Unterbrechungen
• Die reguläre Programmabarbeitung kann auch durch Unterbrechungen (Interrupts) verändert werden
• Synchrone Unterbrechungen = unmittelbare Folge der aktuellen Befehlsabarbeitung, also synchron zum aktuellen Befehl. Beispiele:
• Es wird gerade durch 0 dividiert (Exception)
• Es wird auf eine nicht existente Speicherstelle zugegriffen (Exception)
• Es wird explizit vom Programmierer durch den Aufruf eines entsprechenden CPU-Befehls ein Interrupt erzeugt (TRAP)
• Asynchrone Unterbrechungen = Ereignisse im Computer, die über besondere Leitungen an die CPU geleitet werden (Steuerbus!)
• asynchron = in keinem kausalen Zusammenhang zum aktuellen Befehl
• Beispiele: IO-Gerät meldet relevantes Ereignis ( Taste gedrückt, Paket auf Netzkarte eingetroffen, DMA beendet, usw...
• Maskierung = Unterbinden einer CPU-Reaktion auf einen Interrupt
Unterbrechung
synchron asynchron
Trap InterruptException
44
Stichworte
Notizen
Prof. W. Burkard 44
Die Interrupt-Service-Tabelle
• Beim Eintreffen einer (nicht maskierten) Unterbrechung wird hardwaremässig der aktuelle Prozessorzustand (also alle Register) auf dem Stack gespeichert
• Dann erfolgt ein indirekter Sprung über eine im Speicher befindliche Sprungtabelle
• Jede Unterbrechung hat folglich einen festen Index in dieser Sprungtabelle
• In der Tabelle steht die Anfangsadresse der zugehörigen Interrupt-Service-Routine
• Die Fortführung eines unterbrochenen Programms erfolgt später durch Wiederherstellen des Prozessorzustandes
Sprung-tabelle
Speicher
012...k..n
Unterbrechung k
Interrupt-Service-Routinezur Unterbrechung k:Hier stehen die Befehle mit denen der Sachverhalt erledigt wird
001010111011101011110101010011101100101111010101001101
45
Stichworte
Notizen
Prof. W. Burkard 45
Unterbrechungsvektoren des PC
Unterbrechung Name
0 Division durch 01 Einzelschritt-Modus2 Nicht-Maskierbar3 Haltepunkt4 Überlauf5 Bildschirm drucken6 - reserviert -7 - reserviert -8 8253 Systemzeitgeber9 TastaturA - reserviert -B - reserviert -C - reserviert -D - reserviert -E Diskette/FestplatteF - reserviert -
46
Stichworte
Notizen
Prof. W. Burkard 46
Ausführungsmodi
• Moderne Prozessoren unterstützen mehrere Modi der Programmausführung mit abgestuften Privilegien
• Typisch: privilegierter Modus und Normalmodus
• Intel- Prozessoren bieten 4 Abstufungen (Schutzringe 0 – 3)
• Ring 0: höchste Privilegierung
• Ring 3: Normalmodus
• Modi sind für die Umsetzung von Schutzkonzepten erforderlich
• Der Modus hat Einfluss auf die Ausführbarkeit einzelner Befehle
• Beispiel Intel: • spezielle I/O-Befehle sind nur in privilegierten Ringen möglich
• Ausführung im Normalmodus führt zu synchroner Unterbrechung (Exception)
• Maskierung von Interrupts erfordert ebenfalls privilegierten Modus
• Bestimme Register der CPU sind nur im privilegierten Modus erreichbar/änderbar
• Keller und Statusregister existieren mehrfach, d.h. für jeden Modus getrennt
• Interrupts schalten die CPU zwangsweise in einen privilegierten Modus, es gibt keine Befehle hierfür, d.h. gezielter Wechsel von Ring 3 nach „innen“ geht nur über TRAP
• Rücksprung in den Normalmodus erfolgt über entsprechenden Befehl
47
Stichworte
Notizen
Prof. W. Burkard 47
Speicher in der von-Neumann-Architektur
48
Stichworte
Notizen
Prof. W. Burkard 48
RAM und ROM• Speicher aus CPU-Sicht = hardwareabhängige
Anzahl von Speicherzellen, ansprechbar durch entsprechende Belegung des Adressbusses
• � Der physische Adressraum wird durch die Breite des Adressbusses begrenzt
• Computer sind selten voll ausgebaut, d.h. Lücken im Adressraum (lösen bei Zugriff eine Exception aus)
• Speicher besteht überwiegend aus RAM-Bausteinen, die ihren Inhalt bei fehlender Stromversorgung verlieren
• Kleiner Speicherteil ist mit ROM-Bausteinen bestückt,nur lesbar, behalten aber ihren Inhalt auch ohne Strom
• Im ROM befindet sich der Urlader des Systems, also derjenige Code, den die CPU beim „Aufwachen“ ausführt
� das ROM muss so in den Adressraum eingefügt sein, dass es diejenige Adresse mit einschließt auf die der Program-Counter nach einem CPU-Reset zeigt
• Heutige Speicherbausteine haben Zugriffszeiten von rund 10 ns und sind damit cirka 10 mal langsamer als aktuelle Prozessoren
� Zwischenpuffer erforderlich ( Cache )
SIMM-Baustein 72 Pin
DIMM-Baustein 168-Pin
Notebook DIMM-Baustein 144 Pins
DDR-RAM Baustein 184 Pins
49
Stichworte
Notizen
Prof. W. Burkard 49
Performance durch Caching
Speicher
2639
Adresse von CPUCache Miss
• Ein Cache ist ein kleiner, aber sehr schneller Puffer, in dem je zwei Dinge vermerkt werden: eine Speicheradresse und ihr Inhalt
• Cache Hit: CPU greift auf gepufferte Adresse zu, Cache liefert den Inhalt
• Cache Miss: Adresse nicht im Cache � langsames Nachladen nötig
• Deferred Write: Schreiben der CPU wirkt nur auf Cache, Speicher wird später aktualisiert � temporäre Speicherinkonsistenz, aber schnell
• Write Through: CPU-Schreibzugriff geht durch auf Speicher
� langsamer, aber sicherer
Cache
Adresse Daten
1312 148
2639 756
5265 28
50
Stichworte
Notizen
Prof. W. Burkard 50
Referenzlokalität und Cache-Temperatur
Gedanke: Cache lohnt sich nur, wenn mittlere Zugriffszeit t D des Systems sinkt !
Wie bestimmt sich tD ? � abhängig von der Trefferwahrscheinlichkeit p des Caches
tD = p * tCache + (1 – p) * t Speicher
Heutige Caches erreichen (auch wenn sie relativ klein sind ) Trefferraten von über 90 %
Warum ?Referenzlokalität = für aktuell zugegriffene Speicherzellen besteht eine deutlich höhere
Wahrscheinlichkeit, dass sie in naher Zukunft wieder angesprochen werden
� Warum ? Schleifen, Variablenzugriff, sequentielles Verarbeitungsmodell
� Konsequenz: Auch die Speicherzellen in der aktuellen Umgebung werden mit hoher Wahrscheinlichkeit angesprochen
� Cache-Line: Caches steigern die Trefferrate, weil sie beim Speicherzugriff in einem Burst gleich mehrere aufeinanderfolgende Speicherzellen laden ( Prefetch)
Kalter Cache / heißer Cache: Cache muss sich an die Programmausführung anpassen „warm fahren“d.h. Programm startet => kalter Cache, da viele neue Speicherstellen angesprochenwährend Programm läuft => Cache wird besser, da sich viele Zugriffe wiederholen
51
Stichworte
Notizen
Prof. W. Burkard 51
Die Speicherhierarchie
Durch Kaskadieren, d.h. durch abgestufte Caches wird Systemleistung optimiert:• Nahe an der CPU: kleinster, aber schnellster Cache (teuer!)
• Weiter weg: Cache wird größer, aber langsamer (billiger!)
Level-1-Cache: direkt auf CPU-Baustein integriert, läuft mit vollem Prozessortakt, oft in Instruktionscache und Datencache getrennt (wegen unterschiedlicher Lokalität von Daten und Programmen)
Level-2-Cache: kann die Leistung des Level-1-Cache niemals erreichen, da externer Baustein, d.h. längere Signalwege somit Zeitbedarf! Heute im PC üblich: 512 KByte +
Hauptspeicher, 64 MB und mehr, ca. 10 ns
Level-2-Cache, 512 KB -2 MB, ca. 3 ns
Level-1-Cache, 64-512 KB, < 1 - 2 ns
CPU-Register, 1-2 KB, <1ns
52
Stichworte
Notizen
Prof. W. Burkard 52
Ein- und Ausgabegeräte
• Geräte werden üblicherweise nicht direkt an den Prozessorbus angeschlossen
• Ein E/A-Controller übernimmt die Vermittlerrolle zwischen Prozessor und Gerät
Beispiel Drucker: ein zu druckendes Zeichen wird dadurch ausgeben, dass es dem E/A-Controller der parallelen Schnittstelle übergeben wird, der es über das Druckerkabel gibt
• Komplizierte Geräte verfügen über einen eigenen Prozessor und Speicher, bilden im E/A-Controller somit ein eigenes kleines Computersystem
• Die Interaktion zwischen Prozessor und E/A-Controller geschieht über den Prozessorbus
• Jeder E/A-Controller stellt einen E/A-Adressbereich mit bestimmten Registern im Adressraum der CPU zur Verfügung
• Kommandoregister � dienen der Übermittlung von Befehlen an das Gerät
• Statusregister � dienen der Abfrage des Controller- bzw. Gerätezustands
• Datenregister � dienen dem eigentlichen Informationsaustausch
Beispiel Drucker . . .E/A-Controller
Prozessorbus
53
Stichworte
Notizen
Prof. W. Burkard 53
Bei speicherbasierter EA sind die Register eines Controllers nicht von den normalen Speicherstellen zu unterscheiden. Zugriff erfolgt über normale Lese- Schreib-Operationen und ohne Einschränkungen bei den Adressierungsarten.
Ein- / Ausgabe - Architekturvarianten
P r o z e s s o r b u s
Speicher
L2-Cache
Interrupts
Speicherbus
Speicher
L2-Cache
E/A-Controller E/A-Controller
InterruptsBei einem dedizierten EA-Bus werden EA-Controller über spezielle CPU-Befehle angesprochen. (z.B. IN und OUT -Befehle bei INTEL-CPUs). Für die Auswahl der Controller/Register wird auch hier der Adressbus verwendet, der Steuerbus hat aber weitere Signalleitungen um EA-Zugriff von Speicherzugriff zu trennen
E / A - B u s
E/A-ControllerE/A-Controller
54
Stichworte
Notizen
Prof. W. Burkard 54
• E/A-Buscontroller sind eine spezielle Form des E/A-Controllers
• Sie stellen ausgangsseitig einen standardisierten Bus für den Anschluss der eigentlichen Geräte-Controller zur Verfügung
• Vorteile:
• An den sehr schnellen, in der Länge aber massiv begrenzten Prozessorbus sind nur wenige Komponenten angeschlossen
• Keine Beeinträchtigung der Systemleistung durchlangsame E/A-Geräte
• Bus-Controller übernimmt eine Reihe von Grundfunktionen (Interrupt-Handling, DMA) für alle Geräte-Controller � CPU-Entlastung
• Durch standardisierte Gerätebusse können einzelne E/A-Controller in unterschiedlichen Computerarchitekturen integriert werden
• Gängige Vertreter: PCI und SCSI
• Busmaster-Fähigkeit = einzelne E/A-Controller am Gerätebus können zeitweise die Initiative beim Datentransfer übernehmen � Datentransport ohne CPU möglich, z.B. Festplatt kopiert Daten zum CD-Brenner ohne dass die CPU involviert ist
E/A-Buscontroller
P r o z e s s o r b u s
Speicher
L2-Cache
Interrupts
E/A-Controller
Bus-Controller
E/A-ControllerE/A-Controller
E/A-Controller
55
Stichworte
Notizen
Prof. W. Burkard 55
Das Prozeßmodell in Betriebssystemen
• alle ausführbaren Programme werden als sequentielle Prozesse gesehen
• jeder Prozeß besitzt seinen (virtuellen) Prozessor und läuft (scheinbar) kontinuierlich ab
• die Prozesse laufen scheinbar parallel zueinander ab.
• in Wirklichkeit aber wird der Prozessor “schnell” von Prozeß zu Prozeß geschaltetdies macht der Scheduler (Scheduling-Algorithmus)
� Vorsicht bei
a-priori-Zeitannahmen in
Programmen !!
Problem: wachsende Verzögerung V
bei wachsender Prozesszahl n
Vd = * k , bei n Tasks, die je k Zeit laufen und keine IO benötigen (reiner CPU-Burst)
Zeit
Pro
zeß
A
B
C
D
V=0
V=1
V=2
V=3
n – 12
56
Stichworte
Notizen
Prof. W. Burkard 56
Was bringen mehrere parallele Prozesse ?
Grundsätzliche Überlegung:In einem Prozeß wechseln sich Berechnungen und Ein/Ausgaben ab.Beispiel: Lesen von Daten von der Festplatte, modifizieren, dann speichern. Benötigt Lesen und Speichern 40 msec, die Bearbeitung 10 msec � dann wartet die CPU 80 % ihrer Zeit untätig !!!
Multiprogramming-GradEin Prozeß verbringe den Bruchteil pseiner Zeit mit Warten auf Ein/Ausgabe. Bei n Prozessen im Speicher, ist die Wahrscheinlichkeit, daß alle gleichzeitig im Wartezustand sind p n. Die CPU-Auslastung ist dann 1 - p n
57
Stichworte
Notizen
Prof. W. Burkard 57
Performanceanalyse
Jeder Prozeß besitze 20% CPU-Nutzung ( bzw. 80% sei Warten auf I/O )
58
Stichworte
Notizen
Prof. W. Burkard 58
Die Realität: CPU-Bursts
● Sobald ein Prozess eine E/A-Operation veranlasst, wird er vom BS von der CPU genommen, und diese einem anderen Prozess gegeben. Der blockierte Prozess wartet auf das Ende der gestarteten E/A ohne dabei die CPU zu nutzen .
● Ein Prozess wechselt somit ständig zwischen Abschnitten, in denen er die CPU nutzt (CPU-Bursts) und solchen, indenen er E/A-Geräte benutzt (IO-Bursts).
● Beides gleichzeitig macht keinen Sinn, derProzess kann z.B. nicht weiterrechnen, wenn die Daten vom Datenträger noch nicht da sind!
● CPU- Bursts sind im Verhältnis zu IO-Bursts sehr kurz:Übliche Werte liegen im Bereich weniger Millisekunden, gegenüber IO-Bursts, die oft 100 mal länger sind !
reale CPU-Burst-Verteilung
0
20
40
60
80
100
120
140
160
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32
Dauer des CPU-Burst in msec
59
Stichworte
Notizen
Prof. W. Burkard 59
Was ist eigentlich ein Prozeß ?
• Ein Prozess ist ein einzelner sequentieller Ablauf in einem Rechner, (ein ablaufendes Anwenderprogramm ist z.B. ein Benutzerprozess)
• Da alle Prozesse gleichzeitig stattfinden, müsste für jeden Prozess auch ein Prozessor vorhanden sein !?
• Die Anzahl der Prozesse schwankt aber im laufenden Betrieb und ist meist deutlich größer als die Zahl der vorhandenen Prozessoren ! Was tun ? �
Das Betriebssystem muss die vorhandenen Prozessoren auf die gegebenen Prozesse verteilen. Dieses Zeitmultiplexverfahren wird Scheduling genannt.
• Dabei wird zu bestimmten Zeitpunkten ein sogenannter Kontextwechsel durchgeführt,d.h. der Zustand des aktuellen Prozesses wird gesichert und der früher gesicherte Zustand eines anderen Prozesses wird wieder vom Prozessor übernommen.
• Benutzerprozesse führen Benutzeraufträge (Anwendungsprogramme) aus, Systemprozesse führen Dienste des BS aus, sind also Teil des Betriebssystems
• Jeder Prozess (NICHT Thread!) läuft in einem eigenen Prozessadressraum ab. Ein Prozess kann nur dann auf Objekte (z.B. Variablen ...) eines anderen Prozesses zugreifen, wenn das BS entsprechende Mechanismen hierfür zur Verfügung stellt
� IPC = Inter-Process-Communication
60
Stichworte
Notizen
Prof. W. Burkard 60
... und was ist dann ein Thread ?
• Bei vielen Anwendungen werden keine völlig separaten Prozesse benötigt
• Dennoch will man innerhalb der einen Anwendung parallele Handlungen ermöglichen
Was h eißt das ?
• Alle Handlungsfäden (= Threads) sollen im gleichen Prozesskontext ablaufen, somitein Adressraum für alle Threads
• Konsequenz: alle Threads haben zunächst uneingeschränkten gegenseitigen Zugriff auf ihre Objekte und teilen sich die Ressourcen (geöffnete Dateien, Variablen, Code, ... )
Wie wird das implementiert?
• Einfachste Lösung: die Threads übergeben sich gegenseitig reihum die Kontrolle (sogenanntes Coroutinen-Konzept) �
Dann müssen alle Threads sich gegenseitig kennen, der Anwendungsprogrammierer muss ein Scheduling-Verfahren implementieren bzw. berücksichtigen => schlechter Ansatz, besonders bei wachsender Thread-Anzahl
• Besser: keine Implementierung vom Anwendungsprogrammierer, sondern verfügbarer Dienst des BS. Dann werden die Umschaltzeiten zwar minimal länger, bleiben aber immer noch deutlich unter dem Kontext-Switch von „richtigen“ Prozessen. Warum ?
61
Stichworte
Notizen
Prof. W. Burkard 61
... Kontextwechsel bei Threads
ODER: Was muss das Betriebssystem tun, wenn von einem Thread auf einen anderen umgeschaltet wird ?
• Jeder Thread hat Daten, die wirklich nur ihm zuzuordnen sind und in keiner Weise andere Threads oder Tasks betreffen:
• Das Prozessorstatuswort, also der gesamte Prozessorzustand (Inhalt der CPU-Register)
• Der Stackpointer, der auf das oberste Element im Stack (Stapel) zeigt
• Der Program- Counter, der auf die nächste auszuführende Instruktion zeigt
• Diese drei Daten sind vom Scheduler zu sichern bevor der neue Thread geladen wird
• Dies kann in kürzester Zeit erfolgen, da es nur wenige Daten sind ! � schnell
62
Stichworte
Notizen
Prof. W. Burkard 62
Der ProzesskontextDer Prozesskontext umfasst alle Informationen, die das Betriebsystem über einen Prozess besitzt und ändert sich bei Prozessablauf ständig
Identifikatoren• Name / ID des Prozesses• Name des Benutzers, für den der Task gerade arbeitet• Name des Vaterprozesses• Namen der Sohn-Prozesse
Zustandsinformationen• Prozessorzustand ( alle Register, nur vorhanden wenn Prozess nicht aktiv )• Bearbeitungsstand ( Zustand des Tasks: blockiert, ready, ... )• Alarmzustand• Beschreibung zugeordneter Objekte/Betriebsmittel
Rechte• Zugriffsrechte auf Dateien• Zugriffsrechte auf Speichersegmente und Seiten bei Paging• Prozessprioritäten
Betriebsmittelkonten• Abrechnungsdaten• Noch verfügbare Kontingente
63
Stichworte
Notizen
Prof. W. Burkard 63
Einfaches Prozess-Zustands-Modell
• ein Prozeß befindet sich immer in einem von drei möglichen zentralen Zuständen:
• AKTIV: ein Prozessor arbeitet die Instruktionen des Programmcodes gerade ab
• BLOCKIERT: BS hat Befehlsabarbeitung wg. IO gestoppt, Prozessor wurde einem anderenProzeß zugeteilt. Der blockierte Prozeß wartet auf ein (die Blockierung lösendes) Ereignis.
• BEREIT: Prozeß könnte weiterlaufen, wartet auf Zuteilung des Prozessors durch das BS
Prozeß-Erschaffung
Prozeßist
aktiv
Prozeß-Terminierung
Prozeßist
bereit Prozeßist
blockiert
Warten auf Ereignis
Ereignis tritt ein
Prozess
or-
zute
ilung
Prozess
or-
Entzug dur ch B
S
64
Stichworte
Notizen
Prof. W. Burkard 64
Prozesszustände
aktiv / running / rechnend
Prozesse in diesem Zustand sind im Besitz einer CPU und laufen gerade (bei einfachem Single-Prozessorsystem kann nur immer nur ein Task in diesem Zustand sein
blockiert / wartend / blocked
Prozesse, die darauf warten, dass eine E/A-Operation endet oder eine sonstige Systembedingung erfüllt wird, z.B. Eintreffen einer Nachricht... In diesem Zustand können sich stets beliebig viele Prozesse befinden.Diese Prozesse können nicht weiterlaufen, erst muss das „erlösende“ Ereignis stattfinden
bereit / rechenbereit / ready
Prozesse in diesem Zustand sind potentiell ausführbar, aber derzeit nicht im Besitz einer CPU.Auch in diesem Zustand können sich stets beliebig viele Prozesse befinden.Diese Prozesse könnten jederzeit weiterlaufen und „hoffen“ auf CPU-Zuteilung durch den Scheduler
65
Stichworte
Notizen
Prof. W. Burkard 65
Erweitertes Prozess-Zustands-Modell
• das einfache Modell muss erweitert werden, wenn durch Swapping ganze Prozesse wegen Speichermangels auf die Festplatte ausgelagert werden (swap out)
• Bis zur erneuten Einlagerung (Swap in) kann keiner der betroffenen Threads ausgeführt werden.
• Zustandsübergänge von allen drei bisherigen Zuständen sind möglich !
Prozeß-Erschaffung
Prozeßist
aktiv
Prozeß-Terminierung
Prozeßist
bereit Prozeßist
blockiert
Warten auf
Ereignis
Ereignis tritt ein
Prozess
or -
zute
ilung
Prozess
or-
Entzug dur ch B
SProzeß
istausgelagert
Swap in
Swap out
66
Stichworte
Notizen
Prof. W. Burkard 66
Prozesskontrollblock (PCB)Der PCB umfasst alle wichtigen Informationen aus dem Prozesskontext, damit das Betriebssystem die einzelnen Tasks verwalten kann:
• PID = Process Identification
• Speicherplatz zur Sicherung des Prozessorzustandes bei einem Kontextwechsel
• Informationen über den Wartegrund, falls der Task blockiert ist
• Adressrauminformationen, z.B. einen Verweis auf die oberste Seitentabelle
• Weitere Zustandsinformationen und Statistiken für das Scheduling
aktiv
bereit
blockiert
Prozessidentifikation
Registerzustand (Ein- und Auslesen bei Kontextwechsel)
Scheduling-Informationen
Adressrauminformationen...Seitentabelle......
Sonstiges
Nächster PCB
67
Stichworte
Notizen
Prof. W. Burkard 67
Dispatcher und SchedulerLangzeitscheduling
• Planen der Jobausführung: es sollen nur so viele Benutzer mit ihren Anwendungen neu ins System, wie das System verkraften kann. � Begrenzung der Taskanzahl
Beispiel: ftp- oder www-Server Zugangskontrolle verhindert Serverüberlastung, d.h. ab der n-ten Verbindung wird der Request abgewiesen
• Ausführen von nicht-interaktiv ablaufenden Jobs (Batch-Jobs) zu bestimmten Zeiten (z.B. nachts ...)
Kurzzeitscheduling
• Das „eigentliche“ Scheduling: Strategie zur Zuweisung des (der) Prozessors (Prozessoren) an die Prozesse.
• Der Scheduler wählt somit aus der Menge der bereiten Prozesse den nächsten Kandidaten für die CPU anhand einer bestimmten Strategie.
Dispacher
• Die Durchführung der Zustandsübergänge selbst ist die Aufgabe des Dispatchers.
• Er stellt dafür entspr. Funktionen zur Verfügung, die von anderen Teilen der Prozessverwaltung des Betriebssystems aufgerufen werden.
Langzeitscheduling KurzzeitschedulingNutzer
Jobende
68
Stichworte
Notizen
Prof. W. Burkard 68
Zeitlicher Ablauf beim Kontextwechsel
zeitliche Verschränkung der Prozessbearbeitung in einem Einprozessorsystem
Prozess A
A arbeitet, hat CPU, „aktiv“
Unterbrechung
A im Zustand bereit,steht (keine CPU)
Zuweisung CPU an A
A arbeitethat CPU, aktiv
ZeitBetriebssystem-Kern
BS-Kern arbeitet,Scheduler & DispatcherZuweisung CPU an B
UnterbrechungBS-Kern arbeitethat CPU, aktiv
Prozess B
B steht, hat keine CPU,im Zustand „bereit“
B im Zustand „aktiv,Läuft jetzt auf CPU
B steht, hat keine CPU,im Zustand „bereit“
69
Stichworte
Notizen
Prof. W. Burkard 69
SchedulingSind mehrere Prozesse rechenbereit, muß das Betriebsystem den Prozeß bestimmen, der
als nächster die CPU erhält.===> Dieser Teil des Betriebssystems wird SCHEDULER genannt.===> Den angewendeten Algorithmus nennt man SCHEDULING-ALGORITHMUS.
zu bewältigende Aufgabe:In Mehrbenutzer-Timesharing-Systemen mischen sich unterschiedliche Anwendungen:
- interaktive Anwendungen, die ständig mit dem Anwender kommunizieren- nicht-interaktive Anwendungen, die ständig im Hintergrund wirken (z.B. Email)- Stapeljobs werden asynchron (im Hintergrund) von Anwendern angestoßen
Problem:
widersprüchliche Forderungen nach Fairneß, Effizienz, Antwortzeit, Verweilzeit, Durchsatz
Merke:Ein Scheduling-Algorithmus, der einen Job-Typ bevorzugt, benachteiligt andere Job-Typen(Da die CPU-Zeit endlich ist, muß die einem Anwender vermehrt gegebene Rechenzeit bei
den anderen eingespart werden)
70
Stichworte
Notizen
Prof. W. Burkard 70
Zielkonflikte beim Scheduling
Alle Scheduling-Strategien versuchen, gewisse Ziele zu verwirklichen:■ Auslastung der CPU
Dieses Betriebsmittel ist meistens am wenigsten vorhanden, also will man es möglichst effizient gebrauchen. � Ziel ist 100%-ige Auslastung, (normal sind 40% - 90%)
■ Durchsatz (Throughput)Die Zahl der Prozesse pro Zeiteinheit, die das System abwickelt soll maximal
■ FairnessKeine Bevorzugung eines Jobs, sofern nicht ausdrücklich gewünscht
■ Ausführungszeitsoll minimal sein. Umfasst die Zeit von Jobstart bis Ende inkl. aller Wartezeiten etc.
■ Wartezeitin der Bereit-Liste soll minimal sein. Ist als einzigste direkt vom Scheduler beeinflussbar !!!
■ Antwortzeit (response time)Zeit zwischen einer Eingabe und der Reaktion durch das System. Muss für interaktive Anwendungen unterhalb der menschlichen Wahrnehmungsgrenze liegen.
■ RealzeitGarantierte Einhaltung der von Anwendungen vorgegebenen Realzeitanforderungen
71
Stichworte
Notizen
Prof. W. Burkard 71
Wie bekommt das BS die CPU ?
Ausgangslage
mit der Ausführung eines Tasks durch eine CPU übernimmt die zugehörige Anwendung die Kontrolle über den Prozessor
Problem
Wie kann die Systemsoftware, also die Prozesse, die das Betriebssystem darstellen, wieder die Kontrolle über die CPU bekommen?
drei Lösungen
• Die laufende Anwendung (der aktive Task) tätigt einen E/ A-Zugriff. Durch diesen Aufruf einer Funktion des Betriebssystems gelangt das BS wieder „an die Macht“.
• Der laufende Prozess gibt die CPU „freiwillig“ auf, z.B. durch den Aufruf einer Betriebssystemfunktion „Ich will/muss jetzt warten“
• Ein asynchroner Hardware-Interrupt trifft die CPU und die zugehörige Service-Routine ist Teil des Betriebssystems
Erkenntnis
• Tritt keiner der drei Fälle ein, erlangt eine Anwendung das Ausführungsmonopol auf der CPU. Nutzt das BS Möglichkeit 3, so haben wir preemptives Scheduling, sonst non-preemptives Scheduling � besondere Gefahr durch „schlechte Programme“
72
Stichworte
Notizen
Prof. W. Burkard 72
Prozesszustände und Übergängeam Beispiel Linux / Unix
blockiert
gestoppt
aktivProzeßist ein
„Zombi“
Prozeßist
nichtmehr
existent
idle bereit
Prozeßist
nochnicht
existent
terminiertErzeugt (fork()
zugeteiltentzogen
Warte auf EreignisErhalte Signal
Warte auf Elternweitermachen
• Durch Aufruf des System-Calls fork() wird vom laufenden Task (von sich selbst!) eine Kopie gezogen und in die Bereit-Liste eingetragen ( quasi „Zellteilung“ bei Prozessen )
• Dann gibt es zwei fast identische Prozesse, die beide aus dem fork()-Aufruf zurückkehren
• Der Unterschied liegt im Rückgabewert von fork() : der Kindprozess erhält 0 zurück und erkennt daran, dass er der „Ableger“ ist. Der Elternprozess erhält die PID des Kindes und kann z.B. auf das Ende (exit()-Aufruf) des Kindes warten ( durch waitpid(PID) )
exit()
73
Stichworte
Notizen
Prof. W. Burkard 73
Erzeugung und Vernichtung eines Prozessesam Beispiel Linux / Unix
Vaterprozess...PID = fork()// Wer bin ich ?If ( PID == 0 )
{ // ich bin das Kindexec(“programm.exe“)...exit();...
}// ich bin der Vaterwaitpid (PID);...
Wann erreicht der Kindprozess das obige exit(); ? � Nur bei Fehler im exec()-Aufruf !!!
Warum kann man sich beim if-Befehl den else-Teil sparen ?
Welchen Code führt der Kindprozess aus ?
Kindprozess...PID = fork()// Wer bin ich ?If ( PID == 0 )
{ // ich bin das Kindexec(“programm.exe“)...exit();...
}// ich bin der Vaterwaitpid (PID);...
Kindprozessläuft indas if hinein
Elternprozess überspringt if
74
Stichworte
Notizen
Prof. W. Burkard 74
Zombis unter Linux / Unix
• Alle Prozesse in Unix stammen direkt oder indirekt von einem einzigen Prozess ab, dem init-Prozess mit der PID = 1
• Alle Prozesse stehen also in einer Hierarchie zueinander
• Beim „Sterben“ eines Kindprozesses wird der Elternprozess benachrichtigt
• Ist beim Ende des Kindes der Elternprozess nicht mehr existent, wird init benachrichtigt
• In der Zeit zwischen dem exit()-Systemaufruf und dem Akzeptieren der Nachricht darüber beim Elternprozess gelangt der Kindsprozess in einen besonderen Zustand, er wird zum Zombi
• Bleibt ein Prozess durch einen Fehler im Zombi-Zustand, kann er nur noch durch einen System-Neustart eliminiert werden
75
Stichworte
Notizen
Prof. W. Burkard 75
Prozesszustände und Übergängeam Beispiel Windows 2000
• Komplexes Modell, da Kompatibilität zu vielen Prozessmodellen angestrebt
• Spezielle Ausprägungen werden in den NT-Subsystemen gekapselt
• Zur Erzeugung eines Tasks gibt es nur einen einzigen Systemaufruf NTCreateProcess() bei dem die Initialisierung durch entspr. Code und der Elternprozess angegeben werden kann
• Das Subsystem schafft die geforderte Kompatibilität
• Beispiel: POSIX-Subsystem mit fork():POSIX-Prozess ruft über API fork()-Befehl. Dadurch wird Nachricht über Kern an das POSIX-Subsystem geschickt. POSIX-Subsystem ruft NTCreateProcess() auf, gibt als ElternPID rufendes POSIX-Programm an. Vom Kern zurückgelieferter Objektschlüssel (object handle) wird dann vom POSIX-System verwaltet. D.h. alle Systemaufrufe des POSIX-Programms werden als Nachrichten zum POSIX-Subsystem gebracht, dort mit Hilfe von NT-Systemaufrufen erledigt und die Ergebnisse wieder im POSIX-Format an das rufende Programm zurückgegeben. Gleiches gilt für die anderen Subsysteme, siehe auch Folie 19 !
waiting
standby
running
terminatedinitialized
readypreempt
wait on object
wait complete
dispatch
transition
swap in
swap out
preemptselect
star
t
Executioncompletes
reinitialized
76
Stichworte
Notizen
Prof. W. Burkard 76
non-preemptives Monoprozessor-Scheduling
● Es gibt nur eine CPU
● Die Prozesse werden vom BS nicht unterbrochen, geben die CPU also entweder explizit freiwillig oder implizit durch Starten einer EA-Aktivität frei
Einfachstes Verfahren: FCFS = First Come, First Serve !
● Teilt den Prozessor in der Reihenfolge des Auftragseingangs zu
● Einfache Schlangen-basierte Implementierung: Task am Schlangenkopf erhält stets die CPU
● Kontextwechsel, wenn rechnender Task wegen EA eine blockierende BS-Funktion aufruft
� nach Abschluss der EA wird der Task wieder an das Schlangenende eingefügt
● Kontextwechsel, wenn rechnender Task CPU „ freiwillig“ aufgibt
� Task wird SOFORT wieder am Schlangenende eingefügt, also sofortige Neubewerbung um CPU
● Konsequenzen:
■ Hohe CPU-Auslastung kann erreicht werden
■ Alle anderen Kriterien werden aber nicht optimiert!
■ Wartezeiten hängen sehr stark von der aktuellen Lastsituation ab
■ Mittlere Wartezeit u.U. sehr schlecht und Konvoi- Effekt (siehe Folgefolien!)
77
Stichworte
Notizen
Prof. W. Burkard 77
FCFS: Varianz bei der mittleren Wartezeit
● Gegeben: 3 Threads mit CPU-Bursts von 24, 3 und 3 Zeiteinheiten
● Mittlere Wartezeit , wenn CPU-Burst 24 zuerst dran ist: 17 (z.B. ms)
● Mittlere Wartezeit , wenn CPU-Burst 24 zuletzt dran ist: 3 (z.B. ms)
24 msec 3msec 3msec � (0+24+27) / 3 = 17
3msec 3msec 24 msec � (0+3+6) / 3 = 3
78
Stichworte
Notizen
Prof. W. Burkard 78
FCFS: Konvoi-Effekt
● Konvoi-Effekt = trotz hoher CPU-Auslastung ist die Auslastung des Gesamtsystems eher gering
● Negativer Effekt, der entsteht, wenn Threads mit langen CPU-Bursts und EA-intensive Threads kombiniert auftreten.
● Kurzlaufende IO-Prozesse können nicht genügend EA-Aktivitäten anstoßen, stehen wieder in der Warteschlange � wenig nebenläufige EA im System !
79
Stichworte
Notizen
Prof. W. Burkard 79
Kooperatives Schedulingdie FCFS-Variante unter Windows 3.x
● Reihenfolge wird „kooperativ“ zwischen den aktuell ausgeführten Tasks ermittelt● Im Zentrum steht eine für alle Anwendungen globale Ereignisschlange
● Grafiksystem erzeugt Ereignisse (Benutzereingaben durch Maus/Tastatur, Statusänderungen von Fenstern, ...), stellt diese an Ende der Ereignisschlange
● Auch jede Anw. kann Ereignisse über zentrale Schlange an andere Anw. „senden“
● Jedes Ereignis ist an bestimmten Prozess adressiert � der Ereignis-Empfänger● Scheduler wählt stets den Prozess, der am Schlangenkopf der E.-Empfänger ist
● Konsequenz: gute Antwortzeiten sind nur möglich, wenn ALLE Anwendungen kooperativ sind, d.h. häufig die Kontrolle an andere Anwendungen abgeben
80
Stichworte
Notizen
Prof. W. Burkard 80
Shortest Job Firstdie Grundlagen
● Prozessorzuteilung in der Reihenfolge wachsender CPU-Bursts● Task mit dem kleinsten nächsten CPU-Burst erhält die CPU● Gibt es davon mehrere, wird FCFS verwendet● SJF versucht offensichtlich den Konvoi-Effekt von FCFS zu eliminieren
� hohe Auslastung des Gesamtsystems● SJF ist beweisbar optimal bezüglich der Wartezeit der Tasks!● SJF minimiert die Verweilzeiten der Jobs/Tasks im System
Beispiel: Job A = 8 Minuten, Job B= 6 Minuten, Job C+D je 4 Minuten
Verweilzeiten:A= 8 Min. A=22 Min.B=14 Min. B=14 Min.C=18 Min C= 8 Min.D=22 Min. D= 4 Min.Durchschnitt: 15,5 Min. 12 Min.
A B C D
8 6 4 4 Min.
C D B A
4 4 6 8 Min.
SJF
81
Stichworte
Notizen
Prof. W. Burkard 81
Shortest Job Firstdie Probleme
● SJF ist nur bedingt realisierbar !
● Warum ? � die Länge des CPU-Bursts ist vorher nicht bekannt!
● Lösung: Näherungsweise Bestimmung (Approximation) der Dauer durch
■ gemessene Dauer des letzten Bursts und dessen damaliger Schätzwert
■ ... und Bildung eines Mittelwertes dazwischen:
Burst geschätzt,n+1 = αααα * Burst gemessen,n + (1- αααα) * Burst geschätzt,n
■ Der Faktor αααα liegt zwischen 0 und 1 und bestimmt,
welchen Einfluss der zurückliegende Burst auf die Schätzung hat
● SJF existiert in nicht-preemptiver und preemptiver Variante
● Nicht-preemptive Variante: Während Prozess P2 läuft wird P1 rechenbereit und derkalkulierte CPU-Burst von P1 ist kürzer als die Restlaufzeit von P2:
� P1 kommt erst auf CPU, wenn der P2-Burst zu Ende ist (EA-Operation, Aufgabe der CPU)
● Preemptive Variante, Situation wie oben: Betriebssystem entzieht sofort P2 die CPU und lässt P1 laufen.
● Noch ein Problem mit SJF: Starvation (Verhungern): bereiter Task kommt nie dran, wenn viele kurze Prozesse im System zuströmen
82
Stichworte
Notizen
Prof. W. Burkard 82
Highest Response Ratio NextHRN
● Man schätze die Antwortzeit eines Tasks
● Man schätze die Bedienzeit eines Tasks
● Man bilde den Quotienten Antwortzeit / Bedienzeit
● Man wähle den Prozess mit dem größten Quotienten
� es werden Prozesse mit kurzen Bedienzeiten bevorzugt
� die Wartezeit von Tasks mit langen Bedienzeiten werden begrenzt,
da bei einer ständigen Benachteiligung deren Antwortzeit zunimmt!
83
Stichworte
Notizen
Prof. W. Burkard 83
Non-preemptiv Priority-Scheduling
grundlegende Idee: Die Prozesse sind unterschiedlich wichtig und sollen daher öfter bzw. seltener die CPU erhalten.
Lösung: Jedem Prozeß wird eine Priorität zugewiesen,der ausführbereite Prozeß mit der höchsten Priorität erhält die CPU
Problem: sehr lange CPU-Nutzung hochpriorer Prozesse, Verhungern von JobsLösung: dynamisches Ändern der Priorität während der Laufzeit � Aging
statische Prioritätszuweisung erfolgt durch den Anwender / Administratorz.B. personengebunden ( Professor - Assistent - Student )
dynamische Prioritätszuweisung erfolgt durch das Betriebssystemz.B. I/O-intensive Prozesse werden in der Prioriät erhöht
Prioritätsklassen:Einteilung der Prozesse in verschiedene Klassen von Prioritäten==> Prioritäts-Scheduling zwischen den Klassen==> Round-Robin innerhalb der Klassen
Px Pz
Pn PsPk
Pa niedrigste Priorität
höchste Priorität
Prio.1
Kopf der rechenbereiteWarteschl. Prozesse
Prio.3
Prio.2
84
Stichworte
Notizen
Prof. W. Burkard 84
Preemptive Scheduling Verfahren
Round-Robin● einfaches Scheduling-Verfahren, fair, weit verbreitet ( RR = preemptives FCFS )
● Jeder Prozeß erhält ein Zeitintervall Rechenzeit ( Quantum)
● Nach Ablauf des Quantum wird der Prozessor entzogen und dem nächsten zugeteilt
● Wenn ein Prozeß blockiert oder zu Ende ist vor dem Ende des Quantums,erfolgt ebenfalls sofort ein Prozeßwechsel ( Kontextwechsel, Contextswitch)
● Implizite Annahme: Alle Prozesse sind gleich wichtig!
● Problem: Wie lange soll das Quantum sein ??? (heute üblich 10 – 20 msec)
Liste der ausführbaren Prozesse ... ... vor dem Kontextwechsel ... nach dem Kontextwechsel
Proz B Proz I Proz P Proz T Proz AProz A Proz B Proz I Proz P Proz T
Prozeßmit
CPU
nächsterProzeß Prozeß
mitCPU
nächsterProzeß
85
Stichworte
Notizen
Prof. W. Burkard 85
Preemptives Prioritäts-Schedulingund
dynamic priority Round Robin (DPRR)
grundlegende Idee beim preemptiven Prioritäts-Scheduling:� wie bei der non-preemptiven Variante
jetzt aber neu:Unterbrechung der aktuellen Prozessorzuordnung unmittelbar dann
■ wenn ein neuer Task mit höherer Priorität erzeugt wird■ wenn ein deblockierter Task mit höherer Priorität erneut rechenbereit wird
DPRR:■ Erweiterung von RR durch eine vorgeschaltete Stufe■ Jeder Job hat eine bestimmte Priorität■ In dieser Vorstufe gibt es eine prioritätsgesteuerte Warteschlange für die Jobs■ Die Priorität der Jobs in der Warteschlange wächst nach jeder Zeitscheibe, in der
sie nicht berücksichtigt wurden■ Wird die Schwellenpriorität des eigentlichen RR-Verfahrens erreicht, wird der Job
in die Hauptwarteschlange des RR einsortiert■ Folge: RR-Verfahren wird direkt nicht verändert, aber trotzdem unterschiedliche
Bearbeitung der Jobs nach Systemprioritäten
86
Stichworte
Notizen
Prof. W. Burkard 86
Multiple Warteschlangen
● Es gibt nur einen Hauptprozessor CPU in einem Monoprozessorsystem
● Es gibt meist mehrere DMA-fähige Controller für schnelle EA-Geräte
● � das sind letztendlich eigene, spezialisierte Prozessoren, die man als unabhängige Betriebsmittel betrachten kann
● Idee: Einrichten einer separaten Warteschlange für jeden DMA-Controller
● Konsequenz: Dispatching in diesem System bedeutet Umhängen von Jobs aus einer Warteschlange in eine andere (mit kurzen CPU-Bursts, die dazwischen liegen)
Hauptprozessor
EA-Festplatte 1
EA-Festplatte 2
EA-Grafikkarte
EA-CDROM
CPU
DMA-Contr.
DMA-Contr.
DMA-Contr.
DMA-Contr.
87
Stichworte
Notizen
Prof. W. Burkard 87
Multilevel-Schedulingund
Multilevel-Feedback-Scheduling
● Kategorisierung der Jobs, d.h. für jede Job-Kategorie gibt es eine eigene Warteschlange
● Jede Warteschlange hat ihre eigenes Scheduling-Verfahren
● Ein übergeordnetes Scheduling-Verfahren wechselt zwischen den Warteschlangen
● Können Jobs bei längerer Wartezeit in eine Warteschlange höherer Priorität wechseln spricht man von multilevel-feedback scheduling
CPU
Prio 0 � Systemprozesse
Prio 1 � Interaktive Jobs
Prio 2 � allgemeine Jobs
Prio 3 � rechenintensive Jobs
88
Stichworte
Notizen
Prof. W. Burkard 88
Zweistufiges Scheduling
Das zweistufige Scheduling transportiert Prozesse zwischen Hauptspeicher und Festplatte und wählt nur aus den eingelagerten Prozessen zur Ausführung aus.
Scheduler der unteren Ebene: wählt zwischen den eingelagerten Prozessen ausScheduler der oberen Ebene: tauscht Prozesse von RAM auf DISK und umgekehrt
Hauptspeicher
Prozesse1: a2: b3: k4: s
Festplatte
Prozessor
Scheduler (obere Ebene):
lagert unter 1-4 Prozesse ein
Scheduler (untere Ebene):
wählt Prozesse aus 1-4
89
Stichworte
Notizen
Prof. W. Burkard 89
Trennung vonStrategie und Mechanismus
Der Scheduler des Betriebssystems kennt nicht die Aufgabe eines Prozesses ==> er kann also auch nicht anhand der prozeßspezifischen Aufgabenstellung
den Prozessor zuteilen !Idee: Betriebssystem stellt eine Schnittstelle (System-Calls) zur Verfügung,
durch die Prozesse die Prioritäten anderer Prozesse beeinflussen können.Resultat: Der Mechanismus des Kontextwechsels bleibt weiterhin im Betriebssystem
und den Anwendungsprozessen verborgen, ABER==> Anwendungsprozesse können nach eigenen Verfahren/Algorithmen die
Prozessorzuteilung steuern
Beispiel: Ein Datenbanksystem bestehe aus einem Vaterprozeß und einer Reihe von Kindprozessen für diverse Einzelaufgaben (Kommunikation mit Anwendungen,Caching der Daten, Locking-Mechanismen, Garbage-Collection) Der Vater kann dann z.B. die Priorität der Garbage-Collection reduzieren, wenn das DB-System viele Anfragen zu bearbeiten hat.
90
Stichworte
Notizen
Prof. W. Burkard 90
Scheduling in Unix
● Zentrale Multilevel-Warteschlange (mit meist 256 Elementen)● Jedes Element dieser zentralen Warteschlange ist selbst wieder eine
Warteschlange, die nach Round Robin betrieben wird● Scheduler verwendet Aging-Verfahren um die Benachteiligung von
dialogorientierten Anwendungen durch RR zu verhindern:
� Erhöhung (Verschlechterung!) der Priorität eines Tasks proportional zu seiner Prozessorauslastung (multilevel-feedback) d.h. Umhängen in andere Queue
012...127128...177178...255
Real time
System
User
PCB PCB
PCB PCB
PCB PCB
● UNIX-Scheduler durchsucht Liste oben bei 0 beginnend und startet ersten gefundenen Job
● Jeder Task bekommt eine initiale Priorität● Durch Warten steigt die Priorität
● „nice“ – Kommando erlaubt Usern ihre Anwendungen in der Priorität zu senken
91
Stichworte
Notizen
Prof. W. Burkard 91
Scheduling in Windows
● ebenfalls Multilevel-Scheduling, wobei Echtzeitjobs möglich, jetzt aber nur 32 Prioritäten 0-31
● Priorität 0 = niedrigste Priorität, 31 = höchste Priorität● Es werden Threads verwaltet, dabei ist Scheduling und Dispatching getrennt
● Windows 2000 unterstützt symmetrisches Multiprocessing● Ist kein Thread abzuarbeiten, läuft der spezielle Idle Thread (hat Priorität 0)
● Jeder Thread hat eine (von der Art des Jobs abhängige) initiale Priorität:Interaktive Jobs sind wichtiger als z.B. rechenintensive Jobs
● Wird ein Prozess
313029...1615...
210
Real time
variablePriorität
PCB PCB
PCB PCB
PCB PCB
● Nach Ende der Zeitscheibe wird Priorität des Threads abgesenkt und er dementsprechend frisch eingereiht. Dann wird der jetzt höchstpriore Thread genommen, der auf der gerade freien CPU laufen kann (Prozessoraffinität=auf welchen CPUs kann Thread t laufen)
● Wird Thread mit Realzeitprio. grösser der eines laufenden Thread bereit � Interrupt an die entsprechende CPU� Threadwechsel
Idle thread
Dispatcher ready queue in Windows
92
Stichworte
Notizen
Prof. W. Burkard 92
Überblick Echtzeit-Scheduling
● Echtzeitsysteme fordern die Einhaltung von Zeitvorgaben● Diesem Scheduling-Ziel werden alle anderen Aspekte untergeordnet
● Die Zeitvorgaben werden immer von der jeweiligen Anwendung definiert: Man gibt vor, wie lange die Anwendung im Maximalfall für die Reaktion auf einzelne Ereignisse benötigen darf.
Beispiel Flugzeug, das von Computern gesteuert wird:■ Flugdaten sind erforderlich, die in bestimmten Intervallen verarbeitet werden müssen:■ Beschleunigungswerte in x- y- und z-Richtung alle 5 msec■ Werte der Drehung in die drei Richtungen alle 40 msec■ Außentemperatur jede Sekunde■ Absolute Position des Flugzeugs alle 3 Sekunden■ Das Display im Cockpit wird alle 300 msec aktualisiert
Man unterscheidet:■ Strikte Echtzeitsysteme = Verletzung einer Zeitvorgabe bedeutet meist eine Katastrophe, die
unter allen Umständen zu vermeiden ist (Beispiel Überdrucksignal wird verspätet umgesetzt in Ventil öffnen � Explosionsgefahr)
■ Schwache Echtzeitsysteme = Verletzung einer Zeitvorgabe ist nach Möglichkeit zu vermeiden, hat aber nur störenden/ärgerlichen Charakter, keine katastrophalen Konsequenzen (Beispiel Behandlung multimedialer Daten bei denen Verzögerungen und Verschiebungen zwischen Ton- und Bildsignal bis zu einem gewissen Grad toleriert werden können)
93
Stichworte
Notizen
Prof. W. Burkard 93
Allgemein umfasst eine Echtzeitanwendung eine Menge von Einzelaktivitäten, die sporadisch oder periodisch auftreten können:
Hierfür gibt es die Kenngrößen:
■ Bereitzeit (r ready time) = Frühestmöglicher Ausführungsbeginn■ Frist ( d deadline) = Spätester Zeitpunkt für die Beendigung einer Aktivität■ Ausführungszeit
(∆∆∆∆e execution time) = Worst-Case-Abschätzung für das benötigte Zeitintervall zur Erledigung der Aktivität
■ Periode (∆∆∆∆p ) = In welchen zeitlichen Abständen wiederholt sich die Aktivität
■ Phase ( ∆∆∆∆h ) = Versatz des Ausführungsbeginns relativ zum Periodenanfang
Formalisierung der Zeitvorgaben
sporadisch
periodisch
r d∆∆∆∆e
r1 r3 = d2
∆∆∆∆e∆∆∆∆h
r2 = d1
∆∆∆∆e
∆∆∆∆p
94
Stichworte
Notizen
Prof. W. Burkard 94
Gängige Scheduling - Ansätze
● Polled LoopCPU fragt in einer Schleife alle Geräte ab und verarbeitet neu eintreffende Daten sofort
� schlechte Lösung, wenn bei der Verarbeitung Daten an anderem Gerät eintreffen
● Interruptgesteuerte SystemeCPU führt leere Schleife aus (idle loop). Geräte lösen Interrupt aus, wenn Daten zu bearbeiten sind. In Interrupt-Service-Routine verarbeitet CPU die Daten. � schlechte Lösung, wenn sich Interrupts häufen (Interrupt in einem Interrupt, d.h. niederpriores Gerät kommt nicht mehr durch)
● Earliest Deadline FirstAbarbeitung desjenigen Prozesses durch die CPU, der in der kürzesten Frist fertig sein soll.Problematisch, wenn alle Prozesse gleiche Fristen haben, z.B. in einem Notfallszenario
● Minimal Processing Time First
● Abarbeitung des Prozesses mit der minimalen restlichen Bedienzeit, also SJF.Konsequenz: eventuell wird kurzer unwichtiger Prozess vorgezogen
● Rate-Monotonic-SchedulingHaben alle Tasks feste Perioden, so vergebe man feste Prioritäten, wobei die höchste Priorität der Task mit der höchsten Frequenz erhalte (Details siehe Folie 97)
● Foreground/Background SchedulingUnterteile auch im Echtzeitsystem die Tasks in drei Kategorien: realtime-kritisch, realtime-unkritisch, zu-erledigen-wenn-Zeit-verfügbar. Optimiere für jede Kategorie separat.
95
Stichworte
Notizen
Prof. W. Burkard 95
Earliest Deadline First (EDF)
● Echtzeit-Scheduling-Verfahren bei dem immer dem Task mit der am nächsten in der Zukunft liegenden Frist die CPU gegeben wird,
● Setzt man Frist = Priorität, so hat man im Prinzip ein prioritätsbasiertes Scheduling
● Non-preemtiv: Task bleibt bis zu einer EA oder freiwilligen Aufgabe auf der CPU
● Preemptiv: Kontextwechsel erfolgt, sobald ein Task mit näher in der Zukunft liegenden Frist rechenbereit wird (z.B. Bereitzeit eines Tasks mit kürzerer Deadline wurde überschritten)
● Non-preemptiv-Variante ist nicht optimal, da sie nicht immer eine funktionierende Reihenfolge findet, selbst wenn es diese gibt ! Beispiel:
96
Stichworte
Notizen
Prof. W. Burkard 96
Preemptives Earliest Deadline First (EDF)
● Preemptives EDF kann sich auf die Tasks konzentrieren, deren Bereitzeit bereits erreicht bzw. überschritten ist.
● Warum ? Weil durch die Unterbrechbarkeit bereits laufender Tasks „Korrekturen“ jederzeit möglich sind.
In unserem Beispiel gilt somit:■ Es startet P1, der zum Zeitpunkt 2 endet.
■ Jetzt wird aber P3 gestartet, aber zum Zeitpunkt 4 unterbrochen, um dann P2 auf die CPU zu lassen
■ P2 endet fristgerecht und der „Rest“ von P3 wird ebenfalls fristgerecht zu Ende gebracht.
97
Stichworte
Notizen
Prof. W. Burkard 97
Rate-Monotonic-Scheduling (RMS)
● Verbreitetes Verfahren im Echtzeitbereich● Basiert auf statischen Prioritäten● Eignet sich besonders zum Scheduling in periodischen Systemen● RMS ordnet Prioritäten in Abhängigkeit von der Periode der einzelnen Aktivitäten zu● Die kürzeste Periode erhält die höchste Priorität � hochfrequente Aktivitäten werden bevorzugt● � minimale Verzögerung für hochfrequente Tasks, damit Minimierung der Wahrscheinlichkeit
einer Fristverletzung für diese Tasks● Aber: verstärkte Zerstückelung niederfrequenter Aktivitäten aufgrund ständiger Kontextwechsel
hin zu Tasks mit höherer Priorität● Die Prozessorauslastung eines Tasks ist dabei das Verhältnis ∆e / ∆p● Die Gesamtprozessorauslastung ist die Summe aller Prozessorauslastungen aller Tasks● Es wurde bewiesen, dass bei einer Gesamtprozessorauslastung von unter 70 % (genauer ln 2)
RMS immer eine Ausführungsreihenfolge liefert, bei der alle Zeitvorgaben eingehalten werden können.
● Umgekehrt gilt: Bei über 70% Gesamtauslastung gibt es nicht immer eine Lösung bei der alle Zeitvorgaben eingehalten werden können.
98
Stichworte
Notizen
Prof. W. Burkard 98
RMS an einem Beispiel (I)
● Gegeben seien zwei Tasks t1 und t2, wobei gelte: t1 habe Periode 50 msec und Ausführungszeit 25 msec für t2 gelte: Periode sei 100 msec und Ausführungszeit 40 msec
● Daraus folgen die Prozessorauslastungen sind t1 = 50% und t2 = 40%, also Gesamtprozessorauslastung 90%. Wird das gehen?
● Ansätze: in Fall a sei t1 wichtiger als t2 ( Fall b umgekehrt )
99
Stichworte
Notizen
Prof. W. Burkard 99
RMS an einem Beispiel (II)
● Nun gelte aber für t2: Periode sei 75 msec und Ausführungszeit 30 msec● Wie sieht die Lösung aus ?
● Was passiert wenn die Prioritäten vertauscht werden ?● Warum ist das so ? � über 70% Gesamtauslastung
100
Stichworte
Notizen
Prof. W. Burkard 100
Interprozess-Kommunikation
Durch Nutzung gemeinsamen Speichers (egal, ob Hauptspeicher oder Plattenplatz) könnenProzesse miteinander kommunizieren, indem sie Daten austauschen.
Problem: hierbei entstehen zeitkritische Abläufe (race conditions)
Def.: Eine Situation, in der mindestens zwei Prozesse auf gemeinsam genutzte Daten zugreifen,und die Ergebnisse von der zeitlichen Reihenfolge des Zugriffs abhängen, nennt man zeitkritischen Ablauf (race condition)
Beispiel: gespoolte DruckausgabeIdee: in einer Tabelle stehen alle zu druckenden Dateien, Variable out zeigt auf die nächste zu druckende Datei, Variable in zeigt auf nächsten freien Tabellenplatz. Zwei ProzesseA und B wollen nahezu gleichzeitigetwas ausdrucken.Katastrophe: BS wechselt von A nach BVOR dem vollständigen Ende des Zugriffs !!!
1 2 test.c 3 note.xls4 dipl.doc5 kase.xls6 folie.ppp7 8
out = 2in = 5
Prozeß A
Prozeß B
Spooler
101
Stichworte
Notizen
Prof. W. Burkard 101
Race conditions an einem Beispiel
In einer Warteschlange des BS seien mehrere Prozesse eingehängt und warten auf eineBearbeitung:
Für das Einhängen des Prozesses A gilt:• Lese den Anker: PointToB• Setze den NextZeiger: Point ToB• Setze den Anker: Point ToA
Was passiert, wenn die Operationen nicht in einem Stück durchgeführt werden ?
Für das Entfernen von B gilt:• Lese den Anker: PointToB• Lese den NextZeiger: PointToC• Setze den Anker: PointToC
102
Stichworte
Notizen
Prof. W. Burkard 102
zeitkritische Bereiche
Def: Derjenige Teil eines Prozesses, in dem der Zugriff auf gemeinsam benutzten Speicher stattfindet, wird als (zeit-)kritischer Bereich des Prozesses bezeichnet.
Idee: Probleme mit zeitkritischen Abläufen lassen sich vermeiden, wenn sich niemals zwei oder mehr Prozesse gleichzeitig in einem kritischen Bereich befinden.
==> wechselseitiger Ausschluß <==
Für ein funktionierendes System fordern wir also:
1. nur ein Prozeß darf sich zu einem Zeitpunkt in einem kritischen Bereich befinden
2. Nur durch das Eintreten in einen kritischen Bereich blockiert ein Prozeß andere Prozesse
3. Kein Prozeß soll unendlich lange warten müssen, bis er in seinen kritischen Bereich darf
4. kein Prozeß darf Annahmen über Prozessoranzahl oder Ausführungsgeschwindigkeit seiner selbst oder anderer Prozesse machen
103
Stichworte
Notizen
Prof. W. Burkard 103
aktives Warten
= (schlechte) Lösung des Problems des wechselseitigen Ausschlusses
Ansatz 1: Sperren aller Unterbrechungen beim Eintritt in einen kritischen Bereich- sinnvolle Lösung für diverse Prozesse des Betriebssystems- gefährliche Lösung, bei Nutzung durch Anwenderprozesse
Ansatz 2: Eine globale Sperrvariable kann die Werte 0 oder 1 annehmenNur wenn Sperrvariable=0 geht ein Prozeß in den kritischen Bereichund setzt als erstes die Variable auf 1.Problem: siehe Beispiel “gespoolte Druckausgabe”
Ansatz 3: striktes Alternieren durch aktives Warten: Jeder Prozeß hat einen Kennwert W und wartet darauf, daß die Schaltvariable SV diesen Wertannimmt. Nach Beenden des kritischen Bereiches wird SV weitergeschaltet,
also: warten, bis SV == WEintreten in krit. Bereich....Austreten aus kritischem BereichSV weiterschalten
104
Stichworte
Notizen
Prof. W. Burkard 104
Erster Versuch zur Prozess-Synchronisation
Die einfachste Idee zur Erreichung eines gegenseitigen Ausschlusses besteht darin, einen Prozess beim Eintreten in einen kritischen Abschnitt so lange warten zu lassen, bis der Abschnitt wieder frei ist.
Für zwei parallel ablaufende Prozesse würde das wie folgt aussehen:
Die gemeinsame Variable dran sei mit 1 initialisiert, so erreichen wir den gegenseitigen Ausschluss.
Wo ist das Problem ?Beide Prozesse können nur abwechselnd in den kritischen Bereich !
� Ein Prozess hindert sich eventuell selbst daran, ein zweites Mal in den krit. Bereich zu gehen!!!
105
Stichworte
Notizen
Prof. W. Burkard 105
Zweiter Versuch zur Prozess-Synchronisation
Wir wollen beide Prozesse in beliebiger Reihenfolge synchronisierenEin Prozess achte also nur darauf, dass der andere nicht drin ist.
Die Variablen drin1 und drin2 seien beide mit false initialisiert.
Wo ist jetzt das Problem ?Jetzt gehen eventuell BEIDE gleichzeitig in den kritischen Abschnitt ! Warum ?Hilft es die beiden Zeilen des ersten grauen Bereiches zu vertauschen?
106
Stichworte
Notizen
Prof. W. Burkard 106
Wie kommt ein Prozess voran, wenn der andere kein Interesse bekundet hat ?
Wie ist der Ablauf, wenn beide nahezu zeitgleich (im ersten grauen Bereich) Interesse bekunden ?
aktives Warten: Petersons Lösung (von 1981)
● Die Variablen Interesse1 und Interesse2 sowie dran sind globale, gemeinsame Variablen● Die Variablen Interesse1 und Interesse2 sind beide mit false initialisiert.
107
Stichworte
Notizen
Prof. W. Burkard 107
Petersons Lösung in Java / C / C++#define FALSE O #define TRUE 1#define N 2 /* Anzahl der Prozesse */
int dran; /* Wer ist an der Reihe ? */int interessiert [N]; /* Alle Werte sind anfangs O (FALSE) */
void enter_region (int prozess) /* prozess: wer tritt ein (O oder 1) */{
int anderer; /* Nummer des anderen Prozesses */
anderer = 1 - prozess; /* Konkurrent des Prozesses */interessiert[process] = TRUE; /* ich zeige mein Interesse */dran = prozess; /* setze Marke: ich bin dran! */while ( dran == prozess /* Wer dran zuletzt setzt, muss warten, */
&& interessiert[anderer] == TRUE) /* wenn auch der andere rein will */; /* leere Anweisung, NoOP */
}
void leave_region (int prozess) /* prozess , der den Bereich verläßt */{
interessiert[prozess] = FALSE; /* gibt das Verlassen des krit. Bereiches bekannt */}
108
Stichworte
Notizen
Prof. W. Burkard 108
Sleep und Wakeup
wichtige Erkenntnis: Durch aktives Warten wird Prozessorzeit verschwendet!(Prozesse prüfen aktiv in einer Schleife das Eintreffen einer Änderung)
Dazu kommt das Prioritäteninversionsproblem:Ein höher priorisierter Prozeß H wartet unendlich lang auf das Verlassen des krit. Bereiches eines niedriger priorisierten Prozesses L, da der Scheduler den rechenbereiten Prozeß H stets vorzieht => L kommt nicht mehr zum Zug und damit nicht aus dem kritischen Bereich
Neue Idee: wartende Prozesse “gehen schlafen” (werden in den Zustand “blockiert” gesetzt) und lassen sich nach Verbesserung der Lage wieder wecken:
Aufrufender Prozeß geht schlafen ==> Funktion sleep()Prozeß mit der Nr. <n> soll aufwachen ==> Funktion wakeup(xyz)
109
Stichworte
Notizen
Prof. W. Burkard 109
das Erzeuger-Verbraucher-Problem
... oder: das Ärgernis mit den verlorenen Weckrufen
Zwei Prozesse benutzen einen Ringpuffer, der eine schreibt Daten hinein, der andere ließt diese aus.
Ist der Puffer voll und der Schreiber hat etwas zum eintragen, legt er sich schlafen und läßt sich vom Verbraucher wecken, wenn jener ein Element entfernt hat. (Denn dann ist wieder Platz im Ring)
Ist der Puffer leer und der Leser soll etwas lesen, legt er sichschlafen und läßt sich vom Schreiber wecken, wenn der etwas eingetragen hat.
N Elementemaximalim Ring
PROBLEM: Eine gemeinsam benutzte Variable ANZAHL nennt die Anzahl der im Puffer befindlichen Elemente. Der Zugriff auf diese Variable ist kritisch !!
110
Stichworte
Notizen
Prof. W. Burkard 110
das Erzeuger-Verbraucher-Problem
Erzeuger-Algorithmus:1. Nimm nächstes Element2. Lies die Variable Anzahl3. Wenn Puffer voll, dann “Schlafen-gehen”4. Element in den Puffer eintragen5. Anzahl um 1 erhöhen6. Wenn die Anzahl jetzt 1 lautet, “Leser-wecken”
Leser-Algorithmus:1. Lies die Variable Anzahl2. Wenn Puffer leer, “Schlafen-gehen”3. Element lesen4. Anzahl um 1 erniedrigen5. Wenn Puffer jetzt einen freien Platz hat, “Erzeuger-wecken”
Die beiden“gefährlichen”Stellen, hierdarf derScheduler nichtden Prozeßwechseln, sonstbricht dieSynchronisation
111
Stichworte
Notizen
Prof. W. Burkard 111
das Leser-Schreiber-Problem
● auf eine Datei dürfen gleichzeitig mehrere Prozesse lesend zugreifen, ABER:● wenn ein Prozeß schreibend zugreift, darf kein anderer Prozeß (lesend oder schreibend)
agieren.Lösung 1: (Bevorzugt die Leser-Prozesse)Schreiber: Sperrt Datei, schreibt Daten, gibt Datei freiLeser: (Nur der erste Leser!! :) sperrt die Datei
ließt die Daten (Nur der letzte Leser!! :) gibt Datei wieder frei
Lösung 2: (Bevorzugt Schreiber-Prozesse)grundlegendes Konzept:
Prozesse mit Lesewunsch überprüfen die Existenz von schreibenden bzw. schreibwilligen Prozessen und blockieren, bis die Schlange der Schreiber leer ist.
112
Stichworte
Notizen
Prof. W. Burkard 112
Semaphore: die IdeeIdee des holl. Mathematikers Dijkstra (1965):Man zähle Wecksignale mit Hilfe einer Integer-Variablen � Name: Semaphore(Semaphore sind Signalmasten in der Seefahrt und bei Eisenbahnnetzen)
Def.: Eine Semaphore s ist eine Integervariable, die (aus Benutzersicht!) nicht negativ werden kann und auf der nur zwei Operationen DOWN (auch P genannt) und UP (auch V genannt) definiert sind:
DOWN(s) = P(s) = Reduziere s um 1, wenn s > 0, (sonst geht rufender Prozeß schlafen)UP(s) = V(s) = Erhöhe s um 1 und wecke einen der schlafenden Threads (falls da)
WICHTIG:● Das Überprüfen auf 0, ● das Verändern des Wertes von s ● und das Schlafengehen bzw. „Task wecken“ sindeine untrennbare, atomare Aktion des Betriebssystems!!
Struktur einesSemaphors Zähler
Zeiger auf wartende Threads/Tasks
113
Stichworte
Notizen
Prof. W. Burkard 113
Semaphore: die Implementierung
114
Stichworte
Notizen
Prof. W. Burkard 114
wechselseitiger Ausschluß mit Semaphoren
Zwei Prozesse 1 und 2 konkurrieren um den Eintritt in einen kritischen Bereich.Semaphor s ist initial auf 1 gesetzt
Prozeß 1:... beliebige Aktionen ...down(s) <= Eintritt in kritischen Bereich...kritischer Bereich ...up(s) <= Austritt aus dem kritischen Bereich
Prozeß 2:... beliebige Aktionen ...down(s) <= Eintritt in kritischen Bereich...kritischer Bereich ...up(s) <= Austritt aus dem kritischen Bereich
115
Stichworte
Notizen
Prof. W. Burkard 115
Erzeuger-Prozess:
LOOPproduziere(einElement);P(frei);P(mutex);fuelleInPuffer(einElement);V(mutex);V(belegt);
END
Erzeuger-Verbraucher-Problem gelöst mit Semaphoren
Zwei Semaphore „frei“ und „belegt“ werden benutzt um zwischen den Prozessen die Zustände des Puffers zu signalisieren. Der Semaphor „mutex“ dient nur dazu, den Zugriff auf den Puffer exklusiv zu machen. Der Puffer fasst N Elemente. Initial gilt:
Semaphor frei = N, belegt = 0, mutex = 1;
Verbraucher-Prozess:
LOOPP(belegt);P(mutex);holeAusPuffer(einElement);V(mutex);V(frei); verarbeite(einElement);
END
116
Stichworte
Notizen
Prof. W. Burkard 116
Leser-Schreiber-Problem gelöst mit Semaphoren
Hier Bevorzugung der Leser: ein gemeinsamer Zähler „AnzahlLeser “ zählt die Anzahl der Leser im kritischen Abschnitt. Ein Semaphor „LeseSem“ schützt diesen Zähler, ein zweiter Semaphor „ lock “ schützt den exklusiven Zugang zum Lesen/Schreiben. Initial gilt:AnzahlLeser = 0; lock = 1; ZaehlerSemaphor = 1;
Leser-Prozess:
{ ... // tue irgendwas anderes
P(ZaehlerSemaphor);
AnzahlLeser++;
if (AnzahlLeser==1) then P(lock);V(ZaehlerSemaphor);
... leseDieDaten(); ...
P(ZaehlerSemaphor);
AnzahlLeser--;
if (AnzahlLeser==0) then V(lock);
V(ZaehlerSemaphor);... // tue irgendwas anderes
}
Schreiber-Prozess:
{... // tue irgendwas anderesP(lock);... modifiziereDieDaten(); ...V(lock);... // tue irgendwas anderes
}
ein Schreiber im kritischen Abschnitt:� der erste Leser, der kommt,
wird durch lock blockiert.
Kommen weitere Leser, so warten diese auf ZaehlerSemaphor
117
Stichworte
Notizen
Prof. W. Burkard 117
Leser-Schreiber-Problem gelöst mit Semaphoren
Bevorzugung der Schreiber:
ein Schreiber erhält frühestmöglich Zutritt zum kritischen Abschnitt, d.h. ebenfalls wartenden Lesern wird der Zugriff so lange verwehrt, bis keine Schreiber mehr warten. Die Lösung umfasst:
■ 2 Zähler AnzahlLeser und AnzahlSchreiber,
die die Anzahl der Leser/Schreiber zählen
■ 2 Semaphore LeserSem und SchreiberSem , die diese Zähler schützen
■ 1 Semaphor lock , der wie vorhin den exklusiven Zugriff auf die Daten schützt
■ 1 Semaphor R erzwingt die Bevorzugung der Schreiber vor den Lesern
■ 1 Semaphor M stellt sicher, dass maximal ein Leser einem Schreiber zuvorkommt, egal
wie der Scheduler agiert! Beispiel: zwei Leser und ein Schreiber greifen fast gleichzeitig zu: im schlimmsten Fall hat dann nur ein Leser die Nase vorn (siehe Folgefolien)
Die Initiliasierung sieht so aus:Int AnzahlLeser = 0, AnzahlSchreiber = 0;
Semaphor LeserSem=1, SchreiberSem=1, R=1, M=1, lock=1;
118
Stichworte
Notizen
Prof. W. Burkard 118
Leser-Schreiber-Problem gelöst mit Semaphoren
Der Leserprozess bei Bevorzugung der Schreiber
{ ... // tue irgendwas anderesP(M); // so kommt auf jeden Fall nur ein Leser durch!
P(R); // hier geht’s nur weiter, wenn kein Schreiber aktiv istP(LeserSemaphor);
AnzahlLeser++;if (AnzahlLeser==1) then P(lock);
V(LeserSemaphor);V(R);
V(M);
... leseDieDaten(); ... // dies hier ist der kritische Abschnitt
P(LeserSem);AnzahlLeser--;if (AnzahlLeser==0) then V(lock); //kein Leser mehr da � Freigabe
V(LeserSem);... // tue irgendwas anderes
}
119
Stichworte
Notizen
Prof. W. Burkard 119
Leser-Schreiber-Problem gelöst mit Semaphoren
Der Schreiberprozess bei Bevorzugung der Schreiber
{ ... // tue irgendwas anderesP(SchreiberSemaphor);
AnzahlSchreiber++; // der erste Schreiberif (AnzahlSchreiber == 1) then P(R); // sperrt die Leser
V(SchreiberSemaphor);
P(lock); // Sperre Datei... bearbeiteDieDaten(); ... // dies hier ist der kritische Abschnitt
V(lock); // entsperre Datei // es können aber nur andere Schreiber dran
P(SchreiberSemaphor);AnzahlSchreiber--; // der letzte Schreiberif (AnzahlSchreiber == 0) then V(R); // gibt die Leser wieder frei
V(SchreiberSemaphor);... // tue irgendwas anderes
}
120
Stichworte
Notizen
Prof. W. Burkard 120
Semaphore in Echtzeitsystemen
Durch kritische Abschnitte können Prozessprioritäten verletzt werden, Beispiel:
● P3 macht zuerst das P(S), gewinnt das Rennen um den kritischen Abschnitt
● P2 und P1 werden durch ihr P(S) blockiert, P2 liegt aber in der Queue der Semaphore S vorne, da der Task das P(S) früher abschickt als P1
● Das V(S) von P3 lässt dann P2 weiterlaufen, obwohl der höher priorisierte P1 ebenfalls weiterlaufen könnte...
● Die Lösung: Einreihung der Tasks in die Semaphor-Queue nicht chronologisch sondern nach Prozess-Priorität !
121
Stichworte
Notizen
Prof. W. Burkard 121
Semaphore in Echtzeitsystemen
Problem 2:● Ein Prozess P3 mit niedrigster Priorität sei im kritischen Abschnitt● Ein Prozess P1 hoher Priorität wartet am zugehörigen Semaphor● Was passiert, wenn ein oder mehrere Prozesse P2 mittlerer Priorität nun P3 ständig
verdrängen? � Wichtiger Prozess P1 wird unnötig lange ausgestoppt!!● Lösung: Prioritätsvererbung
= der Prozess im kritischen Abschnitt erhält dynamisch die höhere Priorität eines anderen Prozesses, der am entsprechenden Semaphor auf Zugang wartetBei Verlassen des kritischen Abschnitts fällt der Prozess wieder auf seine alte Priorität
Unnötig!!
122
Stichworte
Notizen
Prof. W. Burkard 122
Prioritätsvererbung durch Semaphore
Problem 2 gelöst durchPrioritätsvererbung
P3 erhält die hohe Priorität von P1 � Scheduler wählt NICHT P2 !
P3 fällt auf alte Priorität zurück
P1 erhält nun sofort die CPU,P2 kommt erst danach
123
Stichworte
Notizen
Prof. W. Burkard 123
Ereigniszähler
Vermeidung zeitkritischer Abläufe mit Semaphoren = wechselseitiger Ausschluß
Ereigniszähler = Lösung OHNE wechselseitigen Ausschluß
Def. Ereigniszähler E sind Integervariablen, die nur erhöht werden und auf denen folgende Operationen definiert sind:
read(E) liefert den aktuellen Wert von EAdvance(E) erhöht den Wert von E um 1 (dies ist eine atomare Funktion)Await(E,i) wartet bis E mindestens den Wert i erreicht
Merke: Ereigniszähler beginnen immer bei 0 und werden stets nur erhöht !!!
124
Stichworte
Notizen
Prof. W. Burkard 124
Lösung des Erzeuger-Verbraucher-Problems mit zwei Ereigniszählern
N = ( z.B.) 100 /* Größe des Puffers */Ereigniszaehler rein=0, raus=0; /* zählen die eingefügten/entnommenen Einträge */
Erzeuger:int zaehler=0; /* alle Einträge werden durchnummeriert */Schleife: zaehler inkrementieren
await(raus, zaehler-N); /* warten bis Platz im Puffer ist */Element einfügen ...advance(rein);
Verbraucher:int vzaehler=0;Schleife: vzaehler inkrementieren
await(rein,vzaehler) /* warte bis ein Element im Puffer ist */Element entnehmen...advance(raus)
125
Stichworte
Notizen
Prof. W. Burkard 125
Nachrichtenaustausch
Problem aller bisherigen Synchronisationsverfahren: Man braucht einen GEMEINSAMEN Speicherplatz für die partizipierenden Prozesse !!
Erkenntnis: Dann funktionieren diese Verfahren nicht über Rechnergrenzen hinweg !!
Problem: Wir brauchen ein Synchronisationsverfahren auch in verteilten Systemen
Idee: Synchronisation durch Nachrichtenaustausch
Wir definieren zwei Systemfunktionen:
sende(Ziel, Nachricht) Sendet die Nachricht an das angegebene Zielempfange(Quelle, Nachricht) Empfängt eine Nachricht von der Quelle und blockiert,
d.h. wartet, solange keine Nachricht kommt.
126
Stichworte
Notizen
Prof. W. Burkard 126
Lösung des Erzeuger-Verbraucher-Problems mit Nachrichten
N = ( z.B.) 100 /* Größe des Puffers */
Erzeuger:
Schleife: empfange(Verbraucher, leere Nachricht)... setze Element in die leere Nachricht ...sende(Verbraucher, Nachricht mit Element)
Verbraucher:
Wiederhole 100 mal: sende(Erzeuger, leere Nachricht)Schleife: empfange(Erzeuger, Nachricht mit Element)
... entnehme Element aus der Nachricht und verarbeite es...sende(Erzeuger, leere Nachricht)
127
Stichworte
Notizen
Prof. W. Burkard 127
Monitore, die IdeeProblem: Alle bisherigen Konzepte sind kompliziert und sehr sensibel bei kleinsten subtilen Fehlern!Beispiel Semaphore:
Verwechseln von P und V oder Vertauschen von geschachtelten P und V: P(frei); P(m); doTheCritAction(); V(frei();V(m);
Idee: man überlasse einem Compiler die richtige Anordnung der Befehle und finde ein höheres, abstrakteres Sprachkonstrukt � den kritischen Bereich (critical region)
Statt: P(s); <kritische Befehle> V(s);
Nun: shared s;
region s do <kritische Befehle>;
Der vom Compiler erzeugte Code garantiert, dass nur einer von mehreren Prozessen im kritischen Code arbeitet.
Monitor1973-74 (!!) haben Hansen und Hoare das Konzept erweitert: Man nehme einen ADT (heute Klasse), der die Aufgabe übernimmt
■ alle darin enthaltenen und von außen ansprechbaren Prozeduren ■ und die lokalen Daten, Variablen und Funktionen
■ durch Synchronisationsmechanismen automatisch zu schützen und
■ den wechselseitigen Ausschluss von Prozessen darin zu garantieren.
Diese Klasse nannte man einen MONITOR
Monitor = Zusammenfassung der
gemeinsam genutzten Daten und
der darauf definierten Zugriffsfunktionen
128
Stichworte
Notizen
Prof. W. Burkard 128
Monitore, das KonzeptMonitor Monitorname ( Parameter )
Datendeklarationen; /* gemeinsame Daten */
ENTRY Funktionsname1 ( Parameter ) { Prozedurkörper }
ENTRY Funktionsname2 ( Parameter ) { Prozedurkörper }
ENTRY Funktionsname3 ( Parameter ) { Prozedurkörper }
...
ENTRY FunktionsnameN ( Parameter ) { Prozedurkörper }
INIT { Initialisierungsanweisungen }
END
Die Initialisierung der Monitordaten erfolgt durch einmaligen Aufruf vonMonitorname(aktuelle Parameter);
Dadurch wird letztendlich der Initialisierungsteil durchlaufen.Prozesse benutzen den Monitor durch Aufruf der Monitorprozeduren in der Form:
Monitorname.Funktionsname ( aktuelle Parameter );
129
Stichworte
Notizen
Prof. W. Burkard 129
Monitore, die Vorteile
● Gemeinsam (durch mehrere Prozesse) bearbeitete Daten werden explizit in der
Programmstruktur sichtbar gemacht
� sie sind in Monitoren organisiert
● Die bereitgestellten Monitorprozeduren definieren allein
die Zugriffsalgorithmen zu den Monitordaten.
● Ein Umgehen der Monitorprozeduren ist nicht möglich
● Monitore kapseln wie Module die gemeinsamen Daten.
Eine Änderung der monitorinternen Datenstrukturen und Algorithmen bleibt für
Prozesse unsichtbar, solange die Schnittstelle unverändert bleibt � information hiding
130
Stichworte
Notizen
Prof. W. Burkard 130
Erzeuger-Verbraucher-Problem gelöst mit einem Monitor
Erzeuger und Verbraucher-Prozesse:
Erzeuger
LOOP{
produziere(Element);Buffer.putInBuffer(Element);
}END
Verbraucher
LOOP{
Buffer.getFromBuffer(Element);verarbeite(Element);
}END
131
Stichworte
Notizen
Prof. W. Burkard 131
Erzeuger-Verbraucher-Problem gelöst mit einem Monitor
Deklaration des Monitors:
132
Stichworte
Notizen
Prof. W. Burkard 132
Erzeuger-Verbraucher-Problem gelöst mit einem Monitor
Monitor ist unvollständig ! Was fehlt ?
� Implementierung der beiden zentralen Prozeduren!
Problem : wir brauchen zusätzliche Wartebedingungen zur Kontrolle des Pufferüber-/unterlaufs
Lösung : in Monitoren gibt es Condition-Variable mit nur zwei Operationen:signal(s) = sendet der Condition-Variable s ein Signal zur Befreiung
der an dieser Condition wartenden Taskswait(s) = Task soll an der Condition-Variable s solange warten,
bis ein Signal gesendet wird.
Konsequenz: Der Monitor Buffer muss um zwei Condition-Variable erweitert werden:
VAR frei, belegt: CONDITION
Dann ergeben sich die beiden Monitor-Prozeduren gemäss nächster Folie!
133
Stichworte
Notizen
Prof. W. Burkard 133
Erzeuger-Verbraucher-Problem gelöst mit einem Monitor
Die zentralenMonitor-Prozeduren
134
Stichworte
Notizen
Prof. W. Burkard 134
Ein klassisches IPC-Problem
das Philosophenproblem
(oder: die Rangelei um den exklusiven Zugriff auf begrenzte Betriebsmittel )
Problem: Ein Philosoph ißt oder denkt. (richtig ! Das ist eine seehr starke Abstraktion!!)● Es sitzen 5 Philosophen am Tisch mit fünf Tellern und fünf Gabeln● Ein hungriger Philosoph versucht linke und rechte Gabel aufzunehmen, dann ißt er ein
Weilchen, danach legt er die Gabeln zurück und denkt wieder.
Aufgabe: Man finde für die Philosophen Mittagszeit bei den Philosopheneinen funktionierenden Algorithmus !!
Einfache, aber fehlerhafte Lösung:
Philosoph denkt ...nimmt linke Gabel auf
nimmt rechte Gabel aufißt von seinem Teller
legt linke Gabel zurücklegt rechte Gabel zurück
135
Stichworte
Notizen
Prof. W. Burkard 135
prinzipieller Lösungsansatz für
das Philosophenproblem
● Man muß den Zugriff auf die beiden Gabeln und andere gemeinsame Ressourcen regeln● Es gibt also eine Semaphore G für den wechselseitigen Ausschluß
● Jeder Philosoph befindet sich in einem von drei Zuständen: denkend, hungrig, essend● Es gibt also je Philosoph i eine Zustandsvariable Z(i) 1<=i<=5 mit den Werten d,h,e
● Ein hungriger Philosoph ist blockiert, wenn er nicht beide Gabeln erhält. (mit leerem Magen kann man nicht denken)
● Es gibt somit je Philosoph eine Semaphore S(i) 1<= i<=5
● Hat ein Philosoph seine Mahlzeit beendet, so schaut er, ob seine Nachbarn jetzt essen könnten und weckt sie gegebenenfalls auf
136
Stichworte
Notizen
Prof. W. Burkard 136
Alles klar ??
1. Was ist ein zeitkritischer Ablauf ?2. Zeigen Sie an folgendem Beispiel, daß der Algorithmus SJF bei nicht-gleichzeitigem
Vorliegen der Jobs nicht korrekt arbeitet: Es sollen zum Zeitpunkt 0 zwei Jobs A und B mit vermuteten Laufzeiten 4 und 8 Min. vorliegen. Nach 5 Minuten kommen drei weitere Jobs C,D und E mit je 2 Min. Laufzeit dazu. Wie ist die Ausführungsreihenfolge und die durchschnittliche Verweilzeit? Wie wären die Werte, wenn die Jobs gleichzeitig vorlägen?
3. Was ist der Unterschied zwischen aktivem Warten und Blockieren ?4. Nennen Sie Argumente für ein kleines bzw. großes Quantum beim Round-Robin.5. Was passiert, wenn beim Round-Robin ein Prozeß mehrmals in der Schlange steckt ?
Sehen Sie einen Grund, dieses zu gestatten ?6. In einer Bäckerei verkaufen n Verkäufer Backwaren. Jeder eintretende Kunde zieht eine
Nummer von einem fortlaufend nummerierten Band. Ein Verkäufer ruft die nächste Nummer auf, sobald er wieder frei ist. So findet jeder Kunde schnellstens den Käufer, der ihn bedient. Skizzieren Sie die Algorithmen für Kunden und Verkäufer (Lösung mittels Semaphore)
137
Stichworte
Notizen
Prof. W. Burkard 137
Aufgaben der Speicherverwaltung
Die Speicherverwaltung ist neben der Prozeßverwaltung die zweite, wesentliche Aufgabe des Betriebssystems.
Teilaufgaben:
• Verwaltung der freien und belegten Hauptspeicherbereiche
• Zuweisung von freiem Speicher an Prozesse, die diesen benötigen
• Rücknahme von Speicher von Prozessen, wenn sie diesen nicht mehr benötigen
• Durchführung von Auslagerungen zwischen Hauptspeicher und Festplatte, wenn derHauptspeicher nicht groß genug ist, um alle Prozesse auf einmal zu halten
138
Stichworte
Notizen
Prof. W. Burkard 138
Speichernutzung bei Einprogramm-Betrieb
• Es wird jeweils nur ein Programm im Hauptspeicher gehalten
• Dieser Prozeß erhält allen, vom Betriebssystem nicht benötigten Speicher
• Eine Speicherverwaltung ist nicht erforderlich, für den Prozess gilt:Prozessadressraum = realer Adressraum, also Prozessadresse = reale Adresse
Gängige Varianten:
Benutzer-programm
Betriebs-system
Gerätetreiberim ROM
Benutzer-programm
Betriebssystemim RAM
Betriebs-system im
ROM
Benutzer-programmerste
Speicheradresse
höchsteSpeicheradresse
139
Stichworte
Notizen
Prof. W. Burkard 139
Fixierte Speicher-Partitionen
Bisherige Erkenntnis: Es ist sinnvoll mehrere Prozesse im Speicher zu haltenFrage: Wie macht man’s am besten ? Einfachste Lösung: Speicheraufteilung fest vorgeben
140
Stichworte
Notizen
Prof. W. Burkard 140
Algorithmen bei fixierten Speicher-Partitionen
Bei mehreren Warteschlangen:● Neuer Prozeß wird in diejenige Warteschlange eingereiht, in die er gerade noch passt.
● Problem: zeitweise sind die größeren Warteschlangen leer ! => Speicherverschwendung
Bei nur einer Warteschlange:● Man nehme aus der einen Warteschlange immer denjenigen Prozeß, der optimal in die
freigewordene Partition passt.● Problem:
Benachteiligung kleiner Prozesse, die nur selten eine größere Partition erhalten
● Lösungen: Vorhalten einer ausreichenden Zahl kleiner PartitionenPunktesystem: Jeder bei der Zuteilung übersprungene Prozeß erhält einen Punkt. Bei erreichen einer Summe darf er nicht mehr übergangen werden.
141
Stichworte
Notizen
Prof. W. Burkard 141
Variable Speicher-Partitionierung
● Größe und Anzahl der Partitionen korrelieren mit der Größe und Anzahl der ProzesseZ E I T
unbenutzterSpeicher
• Zunächst werden Prozeß A, B und C eingelagert.• Dann terminiert A oder wird ausgelagert• Nun wird D eingelagert, danach B entfernt• Zum Schluß wird E eingelagert
142
Stichworte
Notizen
Prof. W. Burkard 142
Probleme bei der variablen Partitionierung
Problem 1:nach kurzer Zeit ist der Speicher von ungenutzten Fragmenten (Löchern) durchsetztLösung:Speicherverdichtung: alle Prozesse werden zusammengeschoben, es entsteht ein
einziger, großer und ungenutzter Bereich
Problem 2: Prozesse mit dynamischem Speicherbedarf !! Lösung:
143
Stichworte
Notizen
Prof. W. Burkard 143
Probleme des Swapping
Das Relokationsproblem:● Variablen und Prozeduren eines Programmes liegen im Speicher auf bestimmten
Adressen, wo sie angesprochen werdenABER: Diese Adressen sind von Einlagerung zu Einlagerung verschieden !!
Das Schutzproblem:● Wie verhindert man den (absichtlichen oder versehentlichen) Zugriff des Prozesses X
in den Speicherbereích des Prozesses Y ??
Lösung: relative Adressierung● Implementierung 1: Ersetzen aller rel. Adressen beim Laden durch korrekte abs. Adr.
Implementierung 2: Einführung von Basis-Registern (beim PC sog. Segment-Register)● Impl. 1 löst nicht das Schutzproblem ! ( kein Schutz bei sog. “Self-modifying code”)● Impl. 2 löst nur dann das Schutzproblem, wenn auch Grenzregister existieren!
144
Stichworte
Notizen
Prof. W. Burkard 144
Swapping mittels Bitmaps
● Der Speicher wird in Allokationseinheiten unterteilt (fragmentiert)● In einer Tabelle (Bitmap) wird für jede Allokationseinheit ein Bit verwendet: 0=dieses
Speicherfragment ist frei, 1=belegt● Beispiel: ein Speicher mit 5 Prozessen und 3 “Löchern”:
Nachteil:Ein Prozeß der Länge m Einheiten soll eingelagertwerden.Dann muß man in der Bitmap m 0-Bits in Folgefinden ! ==> langsamer Algorithmus
I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I II IProzeß A Prozeß B Prozeß C Prozeß D Pr. E
I I
11111000
11111111
11001111
11111000
Bitmap
145
Stichworte
Notizen
Prof. W. Burkard 145
Swapping mittels verketteter Listen
Prozesse und Löcher werden in einer verketteten Liste verwaltet:
P 0 5 L 5 3 P 14 4
P 20 6 P 26 2 L 28 3
L 18 2P 8 6
Freigabe eines Bereiches: 1. Eintrag von P auf L ändern. Wenn Vorgänger bzw. Nachfolger == L, dann verschmelzen
Einlagerung eines Prozesses der Länge m Einheiten:Durchsuchen der Liste nach einem Element mit Kennung L und einer Länge >= m
Algorithmen: First Fit: Suche vorne beginnend, nimm erstes, passendes LochNext Fit: wie First Fit, aber Suche hinter dem letzten gefundenen Loch fortsetzenBest Fit: Durchsuche komplette Liste, nimm kleinstes, gerade noch passendes LochWorst Fit: Nimm das größte Loch und hoffe, daß der verbleibende Rest noch zu was taugt!
Prozeß Loch
146
Stichworte
Notizen
Prof. W. Burkard 146
virtueller Speicher
Problem: Was tun, wenn ein Programm größer als der komplette Hauptspeicher ist ??1. Ansatz: Programm aufteilen ==> Overlay-Technik
Programmteil 1 startet und lädt nach Bedarf weitere Overlays hinzuDer Programmierer entscheidet, wie ein Programm zergliedert wirdDas Betriebssystem liefert Systemcalls zum Nachladen von Overlays
Nachteil: saubere Programmzergliederung ist aufwendige,aber brotlose Kunst
2. Ansatz: Man überlasse die Arbeit des Zergliederns dem Computer !==> virtueller Speicher <==
Idee: Hauptspeicher wird auf Festplatte simuliert und in gleich große Stücke eingeteilt (Seiten)Der reale Hauptspeicher wird unterteilt (Seitenrahmen) und als Puffer verwendetCPU greift auf den virtuellen, (real nicht existierenden) großen Hauptspeicher zuDie Zugriffe werden von einer Speicherverwaltungseinheit abgefangen. (MMU)MMU lädt benötigte Seite in einen freien Seitenrahmen, wenn sie nicht im RAM istMMU “verbiegt” die Original CPU-Adresse so, daß sie nun auf die richtige RAM-Adressezeigt.
147
Stichworte
Notizen
Prof. W. Burkard 147
virtueller Speicher
System-Bus
CPU-Kartebzw. Chip
CPU
MMU
realerHauptspeicher
Festplatten-steuereinheitCPU verwendet
virtuelle Adressen
MMU verwendetphysik. Adressen
148
Stichworte
Notizen
Prof. W. Burkard 148
Paging
Die Beziehung zwischen Seiten und Seitenrahmen, also zwischen virtueller Adresse und physikalischer Adresse wird durch eine Seitentabelle geschaffen
149
Stichworte
Notizen
Prof. W. Burkard 149
MMU
Seitentabelle
in die MMU eingehende, virtuelle Adresse der CPUmit 16 Bit (CPU “glaubt” an 64 KB Speicher)
0 I 0 I 1 I 0 I 0 I 0 I 0 I 0 I 0 I 0 I 0 I 0 I 0 I 1 I 0 I 0
1 I 1 I 0 I 0 I 0 I 0 I 0 I 0 I 0 I 0 I 0 I 0 I 1 I 0 I 0
die MMU verlassende, reale Adresse auf dem Systembus( 15 Bit Adreßbus-Breite, 32 KB realer Speicher)
Der
12-
Bit-
Offs
etw
ird d
irekt
von
de
r Ein
gabe
zur
Aus
gabe
kop
iert
0: 010 11: 001 12: 110 13: 000 14: 100 15: 011 16: 000 07: 000 08: 000 09: 101 1
10: 000 011: 111 112: 000 013: 000 014: 000 015: 000 0
Seitentabellebei Seitengröße 4 KB
Present/Absent-Bit
Virtuelle Seite = 2, wird alsIndex auf die Seitentabellebenutzt:
0 0 1 0
1 1 0
150
Stichworte
Notizen
Prof. W. Burkard 150
zweistufige Seitentabellen
Für einen 4 GB großen, virtuellen Speicher bräuchteman (Seitengröße 4 KB) über 1 Mio Tabelleneinträge !!
Besser: EINE Tabellen mit 1024 Einträgen, die auf1024 Tabellen zeigen, die auf die eigentlichen Seitenzeigen.
Resultat: Nicht benötigte Seitentabellen brauchennicht im Hauptspeicher gehalten zu werden! UND: Erfolgt Page Fault bei PT1, so weiß das Betriebssystem, daß der Prozeß Speicheranspricht, der ihm nicht zugeordnet ist.
151
Stichworte
Notizen
Prof. W. Burkard 151
ein typischer Seitentabelleneintrag
Caching-Bit: Caching ein/aus-schalten ( wichig bei memory-mapped I/O )
Referenz-Bit: Bit ist gesetzt, wenn die Seite von einem Prozeß angesprochen wird.
(dann sollte das Betriebssystem die Seite möglichst nicht auslagern)
Modifikation-Bit: Seiteninhalt wurde modifiziert, vor dem Überschreiben des
Seitenrahmens muß die Seite zurückgeschrieben werden.
Schutz-Bit: Zugriffssteuerung: Bit=1 bedeutet z.B. nur lesender Zugriff erlaubt
Present/Absent: Bit=1 heißt, Seitenrahmennummer ist gültig, kann genutzt werden
Seitenrahmennr: wird am höherwertigen Ende des Adressen-Offset angefügt und
ersetzt die virtuelle Seitennummer, um eine physikalische Adresse zu bilden
Caching Referenz Modifikation Present/ Seitenrahmen-Bit Bit Bit Absent Nummer
152
Stichworte
Notizen
Prof. W. Burkard 152
Assoziativspeicherder Cache für die Seitentabelle
Problem: Bei n-stufigem Paging wird aus einem CPU-Speicherzugriff eine Sequenz vonn Zugriffen auf den realen Speicher (man muß schließlich die n Tabelleneinträge lesen !)
==> drastische Performance-Einbußen, da der Prozessor nur noch einen Bruchteil seiner Ausführungsgeschwindigkeit erreicht ! (Beispiel: SPARC-Prozessor: dreistufiges Paging == 25% “Restspeed” 1 CPU +3 MMU-Zugriffe)
Lösung:
kleiner Hochgeschwindigkeits-Speicher
wird in MMU integriert und dient als
Zwischenspeicher für genutzte
SeitentabelleneinträgeCPU
Seiten-tabelle
Systembus
MMUAS
153
Stichworte
Notizen
Prof. W. Burkard 153
Trefferrate bei Assoziativspeicher
= wieviele Speicherzugriffe werden bereits durch den Assoziativspeicher bedient
Durchschnittliche Zugriffszeiten auf den Hauptspeicher, wenn der Hauptspeicherzugriff 100 nsecdauert und die MMU nur 20 nsec für den Zugriff auf den Assoziativspeicher braucht:
154
Stichworte
Notizen
Prof. W. Burkard 154
der optimale Ersetzungsalgorithmus
● Wenn ein Seitenfehler (page fault) auftritt, wählt das Betriebssystem einen Seitenrahmen aus, in den die geforderte Seite eingelagert wird
● Dadurch wird die vorher in diesem Seitenrahmen liegende Seite überschrieben
Achtung:● Wurde diese vorherige Seite verändert, muß sie vor dem “Überschriebenwerden”
durch Zurückschreiben auf die Platte aktualisiert werden
Überlegung:● Am besten überschreibt man nicht irgendeine Seite,
sondern eine solche, die wenig gebraucht wird.
optimaler Algorithmus zur Ersetzung Problem:von eingelagerten Seiten:“ Man entferne diejenige Seite Dieser Algorithmus ist
aus dem Speicher, die bei NICHT implementierbar !!!Betrachtung aller nachfolgenden Befehle zuletzt benötigt wird ”
155
Stichworte
Notizen
Prof. W. Burkard 155
SeitenersetzungsalgorithmenNRU und FIFO
● Betriebssystem verwendet die Bits M und R der Seitentabelle und setzt das R-Bit periodisch (alle n msec) zurück. Dann gibt es vier Klassen von Tabelleneinträgen:
■ Klasse 0: nicht referenziert, nicht modifiziert■ Klasse 1: nicht referenziert, modifiziert■ Klasse 2: referenziert, nicht modifiziert■ Klasse 3: referenziert und modifiziert
● NRU (Not-Recently-Used): Entferne eine zufällige Seite aus der niedrigsten, nicht leeren Klasse
● FIFO (First-In, First-Out):Entferne diejenige Seite, die am längsten im Speicher ist.
156
Stichworte
Notizen
Prof. W. Burkard 156
Seitenersetzungsalgorithmen
Second Chance bzw. Uhr
● Abwandlung von FIFO:Falls das R-Bit der ältesten Seite nicht gesetzt ist, wird die Seite ersetztFalls das R-Bit der ältesten Seite gesetzt ist, wird es auf 0 gesetzt und die älteste Seite an das Ende der Seitenliste gestellt
● Uhr ist nur eine andere Implementierung von Second Chance.
157
Stichworte
Notizen
Prof. W. Burkard 157
zum Schluß: ein ganz grober Überblick zur
Segmentierung
statt Seiten mit fest vorgegebener Länge verwende man Segmente mit variabler Länge, die vom Programmierer definiert werden können
Segmentierung = “Intra-Prozeß-Swapping”
Zusammenfassung
Swapping = Ein/Auslagern kompletter ProzessePaging = Ein/Auslagern von Prozeßteilen fester Größe
Segmentation = Ein/Auslagern von Prozeßteilen variabler Größe
Merke:In der Realität ( z.B. beim Pentium unter Unix-BS )
werden alle drei Verfahren miteinander kombiniert !!!
158
Stichworte
Notizen
Prof. W. Burkard 158
Alles klar ??
1. Wieviel Prozent der CPU-Zeit wird auf Dauer verschwendet, wenn in einem Computer 4 Programme gleichzeitig im Hauptspeicher gehalten werden können und 50% ihrer Zeit mit Warten auf E/A verbringen ?
2. Paging: Wie lange dauert es ein 64 KB großes Programm von einer Festplatte zu laden, deren mittlere Suchzeit bis zum Auffinden des Anfangs der gesuchten Daten 30 msecbeträgt. Gehen Sie von einer Rotationszeit von 20 msec bei einer Spurkapazität von 32Kbyte aus und berechnen Sie das Ergebnis für eine Seitengröße von 2 KB bzw. 4 KB. (Die Seiten sind zufällig auf der Platte verteilt, gelle!
3. Wie groß wäre bei einstufigem Paging die Seitentabelle eines Rechners mit 48 Bit virtuellem Adreßraum bei einer Seitengröße von 16 Kbyte und einem physikalischen Adreßbus mit 32 Bit Breite ?
4. In einem Computer dauere eine Instruktion 1 µsec, aber jede k-te Instruktion erzeuge einen Seitenfehler, zu dessen Abarbeitung weitere n µsec benötigt werden. Nennen Sie die Formel zur Berechnung der effektiven Instruktionsdauer!
5. In einem Swapping-System befinden sich in dieser Reihenfolge folgende Löcher:10K,4K,20K,18K,7K,9K,12K und 15K. Welche Löcher werden in welcher Reihenfolge ausgewählt, wenn die Anforderungen lauten: 12K,10K und dann 9K bei alternativer Verwendung der Algorithmen First-,Best-, Worst-, und Next-Fit ?
159
Stichworte
Notizen
Prof. W. Burkard 159
Dateien & DateisystemeDateien sind Container, in denen Daten persistent gespeichert werden können
Persistenz = Existenz der Daten unabhängig von der Existenz von Prozessen
(Variablen speichern keine persistenten Daten, da sie bei Programmende nicht weiter existieren.)
Dateien werden vom Betriebssystem verwaltet. Der Betriebssystemteil, der sich mit der Dateien-Verwaltung beschäftigt, wird auch Dateisystem bezeichnet
Das Dateisystem regelt...
... wie Dateien strukturiert sind
... wie Dateien benannt werden müssen
... den Zugriff und die Art der Benutzung von Dateien
... den Schutz von Dateien
Bei der Betrachtung von Dateisystemen muß man zwischen der Sicht des Anwenders und des Entwicklers unterscheiden.
160
Stichworte
Notizen
Prof. W. Burkard 160
Dateinamen● Dateisysteme verbergen die physikalische Realität einer Festplatte vor dem Anwender
● Das Dateisystem bildet die abstrakte Benutzersicht auf die physikalische Realität ab.
● zusammengefaßte Information (Dateien) werden unter einem Namen identifiziert und angesprochen (Dateiname)
● Dateinamen unterliegen bestimmten Regeln und Konventionen
● Beispiel MSDOS: “Datei-Vorname” max. 8 Zeichen, “Datei-Nachname” max. 3 Z.
■ file.bak = Sicherungskopie einer Datei■ file.c = C Quellcode eines Programmes■ file.doc = Dokumentationsdatei, am PC meistens WORD-Datei■ file.hlp = Hilfe-Datei, enthält Hilfe-Info zu bestimmten Themen/Programmen■ file.txt = allgemeine Text-Datei, am PC einfacher ASCII-Code■ file.ddl = dynamic data library: Bibliotheksdateien unter Windows■ file.dat = Datei enthält Daten, die ein Programm nutzen kann, z.B. Datenbanken■ file.exe = Ausführbarer (Maschinen-) Code eines Programmes unter MSDOS/Windows
161
Stichworte
Notizen
Prof. W. Burkard 161
innerer Aufbau von Dateien
(a) Datei als (b) Datei als Folge (c) Datei als strukturierterFolge von Bytes von Datensätzen Baum
162
Stichworte
Notizen
Prof. W. Burkard 162
Dateitypen
● “Gewöhnliche Dateien”: Enthalten Daten von Benutzern bzw. Programmen
● Verzeichnisse: Systemdateien zur Verwaltung der Struktur eines Dateisystems
● zeichenorientierte Spezialdateien: Dienen zur Modellierung zeichenorientierte Ein/Ausgabe-Geräte (Terminals, Drucker, ...)
Man schreibt in eine Datei “PRN”, wenn etwas gedruckt werden soll
● Blockorientierte Spezialdateien: Dienen zur Modellierung von Hintergrundspeichersystemen, z.B. Bandlaufwerken
Man schreibt in eine Datei “TAPE”, wenn etwas auf Band geschrieben werden soll. Die zu schreibenden Daten werden blockweise geschrieben.
163
Stichworte
Notizen
Prof. W. Burkard 163
Dateiattribute
164
Stichworte
Notizen
Prof. W. Burkard 164
Operationen auf Dateien
● CREATE = leere Datei anlegen, erschaffen● DELETE = Datei löschen● OPEN = Datei öffnen, Zugriff checken● CLOSE = Datei schließen, Ressourcenrückgabe● READ = aus der Datei lesen● WRITE = in die Datei schreiben● APPEND = an die Datei Daten anfügen● SEEK = in der Datei bestimmte Position anfahren● GET ATTRIBUTES = Dateiattribute erfragen● SET ATTRIBUTES = Dateiattribute verändern● RENAME = Datei umbenennen
165
Stichworte
Notizen
Prof. W. Burkard 165
Hierarchische Verzeichnissysteme
166
Stichworte
Notizen
Prof. W. Burkard 166
Pfadnamen
● In hierarchischen Dateisystemen dienen absolute Pfadnamen zur eindeutigen Identifizierung einer Datei: MERKE: Absolute Pfadnamen beginnen stets mit dem SeparatorzeichenBeispiel MSDOS/WIN: Separatorzeichen ist “\”Beispiel absoluter Pfad: \windows\system\programme\spiele\solitaire.exe
● relative Pfadnamen beginnen niemals mit dem Separatorzeichen und sind relativ zur aktuellen Position im Dateibaum zu verstehen:
Beispiel: Im Unterverzeichnis “Benutzer” gebe es zwei Unterverzeichnisse “Hinz” und “Kunz”. Beide Anwender haben ihr Verzeichnis ausgebaut mit Unterverzeich-nissen “Studium” und “Diplom”
Studium\Diplom\Kapitel1
ist nicht mehr eindeutig !!
Benutzer
Hinz Kunz
Studium
Diplom Diplom
Studium
167
Stichworte
Notizen
Prof. W. Burkard 167
Operationen auf Verzeichnissen
● CREATE = Verzeichnis anlegen, erschaffen● DELETE = Verzeichnis löschen● OPENDIR = Verzeichnis öffnen, Zugriff checken● CLOSEDIR = Verzeichnis schließen● READDIR = Verzeichnis lesen● LINK = zusätzlichen Verweis auf Datei bauen● UNLINK = Verweis auf Datei löschen
168
Stichworte
Notizen
Prof. W. Burkard 168
Implementierung von Dateien
● Festplatten sind eine Ansammlung von Sektoren auf Spuren und Oberflächen
● Aufgabe des Dateisystems: Verwaltung dieser Plattensektoren und Zuordnung zu Dateien und Verzeichnissen
● Lösung 1: Kontinuierliche Allokation der Sektoren Vorteile: einfache Implementierung, hohe PerformanceNachteile: Allokation muß Dateigröße kennen, Fragmentierung der Platte
● Lösung 2: Allokation mittels verketteter ListenDie ersten 2-4 Bytes eines Sektors werden als Zeiger auf den nächsten Sektor der Datei verwendet. Die restlichen Bytes eines Sektors sind die Daten.Vorteile: keine Fragmentierung der PlatteNachteil: sehr langsames Lesen bei wahlfreiem Zugriff
● Lösung 3: Allokation mittels verketteter Liste und Einsatz einer Tabelle (Index)Vorteil: Nachteile aus Lösung 2 sind eliminiert, dehr schnelles Lesen, da dieTabelle im Hauptspeicher gehalten wird.
==> MSDOS verwaltet Platten gemäß Lösung 3 (Die Tabelle heißt unter DOS“FAT” = File Allocation table
169
Stichworte
Notizen
Prof. W. Burkard 169
Implementierung von Dateien
Lösung: 2
Lösung: 3 Hier beginnt...
...Datei A ...Datei B (freie Blöcke)
PhysikalischerBlock
Physika-lischerBlock
Datei A Datei B
170
Stichworte
Notizen
Prof. W. Burkard 170
Implementierung von Verzeichnissen
● MSDOS-Verzeichnis-Eintrag
● Erste Blocknummer zeigt auf den ersten Plattensektor der Datei
in der FAT
● Durch das Durchlaufen der FAT werden alle weiteren Sektoren
der jeweiligen Datei gefunden
171
Stichworte
Notizen
Prof. W. Burkard 171
Mehrfachzugriff auf Dateien
● Idee: Eine Datei, die zwei Anwender benutzen, soll in beiden Verzeichnisstrukturen referenziert sein, aber physikalisch nur einmal existieren!!
● Lösung 1 : sogenannter Hard-LinkIndextabelle wird erweitert um ein Feld“Anzahl der Verweise”, Dieses Feld wird bei jedemzusätzlichen Verweis erhöht, bzw. beim Löschendekrementiert
● Lösung 2: sogenannte “symbolic links”Schaffung eines speziellen Dateityps “Link”.Der zweite Verzeichniseintrag zeigt dann auf einesolche “Link”-Datei, in der nur der vollständige Name(inkl. Pfad) der eigentlich gemeinten Datei steht
??
172
Stichworte
Notizen
Prof. W. Burkard 172
Plattenmanagementoder: was ist die optimale Blockgröße
Problem: Datenrate beim Zugriff und effiziente Nutzung des Plattenplatzes stehen im Konflikt zueinander
Beispiel: Festplatte mit 32 KByte je Spur, 16,67 msec Rotationszeit und durchschnittlich 30msec für die Positionierung des Schreib-Lesekopfes. Angenommen, auf dieser Platte werden 1 KByte große Dateien gespeichert, dann ergibt dies:
173
Stichworte
Notizen
Prof. W. Burkard 173
defekte Sektoren
● kaum eine Festplatte wird fehlerfrei produziert.
● Die Hersteller notieren auf dem Plattencover die als defekt analysierten Sektoren
● Wie lassen sich defekte Sektoren ausgrenzen ?
● Hardware-Lösung: = Die defekten Sektoren sind z.B. auf der letzten Spur gespeichert.= Die Steuereinheit der Platte weißt jedem defekten Sektor einen guten Sektor zu.= Jeder Sektorzugriff wird durch die Steuerung abgefangen und “umgebogen”,
wenn er einen defekten Sektor referenziert.
● Software-Lösung:Es wird eine spezielle Datei angelegt, die genau alle defekten Sektoren umfaßt.Diese Datei darf nie gelesen oder geschrieben werdenProblem: Backup-Programme könnten diese Datei lesen !!
174
Stichworte
Notizen
Prof. W. Burkard 174
Performancebetrachtungen
Ein Festplattenzugriff ist 100.000 mal langsamer als der Zugriff auf den Hauptspeicher !!!
hohe Performance = wenige Plattenzugriffe + alle Daten nahe beisammen
Lösungen:
● Platten-Caching: “write-through” = Schreibbefehle schlagen durch auf die Platte“write-back” = Wegschreiben verzögert, erst bei Bedarf
● Look-ahead: Moderne Festplatten sind mit ein wenig RAM auf der Steuerplatine ausgestattet und Lesen (bei Anforderung eines Sektors) stets komplette Spuren bzw. Zylinder
● De-Fragmentier-Software: (unter Windows z.B. scandisk)“Räumt” die Platte auf, indem die zu einer Datei gehörenden Sektoren kontinuierlich neuallokiert werden.
175
Stichworte
Notizen
Prof. W. Burkard 175
Alles klar ??
1. Geben Sie eine Formel für die durchschnittliche Plattenzugriffszeit an, wenn ein im Cache befindlicher Sektor in 1 msec geliefert werden kann, während das Lesen von Platte insgesamt 40 msec braucht. Die Trefferrate sei f, wobei selbstverständlich 0% <= f <= 100%. Zeichnen Sie die Funktion im Intervall 0-100%
2. Warum ist ein Systemcall RENAME nicht genau das gleiche, wie das Anfertigen einer Kopie unter dem neuen Namen mit anschließendem Löschen der Quelldatei.
3. Vergleichen Sie den Aufwand des Betriebssystems zur Auflösung symbolischer Links mit dem Aufwand für Hard-Links!
4. Wenn Dateien durch Verkettung der Sektoren implementiert sind, werden am Sektoranfang 2-4 bytes für die Verzeigerung benötigt. Welche äußerst negativen Auswirkungen hat diese Implementierung im praktischen Einsatz. Denken Sie an die verbleibende Sektorlänge !
5. “.” bzw. “..” sind in hierarchischen Dateisystemen spezielle Verzeichniseinträge mit Sonderfunktion. Sehen Sie in der Literatur nach und erklären Sie diese Funktion !
6. Plattenchecker (z.B.scandisk) versuchen, inkonsistente Dateisysteme zu reparieren. Ein Sektor kann keiner, einer oder mehreren Dateien zugeordnet sein. Er könnte auch gleichzeitig keiner und einer Datei zugeordnet sein. Bauen Sie eine Tabelle, in der für jeden denkbaren Fehler-und Normalfall eine Reparaturlösung skizziert wird.
176
Stichworte
Notizen
Prof. W. Burkard 176
Ein/Ausgabe-Geräte
Die Steuerung und Überwachung aller Eingabe- und Ausgabegeräte (I/O-Geräte) ist eine weitere wesentliche Aufgabe des Betriebssystems.
Hierzu gehört:
• Anbieten einer einfach zu handhabenden, die physikalischen Detailsüberdeckenden Schnittstelle zum realen Gerät
• Aufbereiten und Weiterleiten der Kommandos an die Geräte
• Interrupt-Management, d.h. Abfangen und Erledigen der Unterbrechungen
• Fehler-Behandlung
Arten von I/O-Geräten:
• Block-orientierte Geräte, wie Festplatten, Diskettenlaufwerke, Bandlaufwerke
• Zeichen-orientierte Geräte, wie Drucker, Netzwerkanschlüße, ser. Terminals
• Nicht einordenbare Geräte, wie Zeitgeber, Memory-mapped (PC-) Monitore
177
Stichworte
Notizen
Prof. W. Burkard 177
Steuerwerke & Schnittstellen
● Geräte bestehen aus einer mechanischen und einer elektronischen Komponente■ Mechanik = das eigentliche Gerät■ Elektronik = das Steuerwerk ( bei PC-Systemen oft auch als Einsteckkarte
realisiert, z.B. Monitorkarte)
Schnittstelle zwischenGerät und Steuerwerk
Schnittstelle zwischenSteuerwerk und Betriebs-system
Systembus
Schnittstelle zwischenGerät und Steuerwerk
178
Stichworte
Notizen
Prof. W. Burkard 178
Steuerwerke & Register
● Jedes Steuerwerk besitzt einige Register (Speicherstellen mit 8-32 Bit) zur Kommunikation mit dem Prozessor:
■ Control-Register: Damit steuert die CPU das Gerät (mittels passender Kommandos)■ Status-Register: Damit meldet das Steuerwerk der CPU bestimmte Sachverhalte
● Memory-mapped-IO: Die Steuerwerksregister sind im Adreßraum des Hauptspeichers ansprechbar
● IO-Mapping: Die Ein/Ausgabe-Register haben einen eigenen Adreßraum, (CPU mit spezieller IO-Memory-Select-Leitung)
● Der Ablauf einer EA-Operation:■ 1. CPU beginnt eine IO-Operation, indem es Kommandos in die Control-Register
schreibt.■ 2. Prozessor wendet sich anderen Aufgaben zu (im allg. Suspension des Prozesses)■ 3. Steuerwerk erledigt die Aufgabe (z.B. Lesen eines Sektors von der Platte)■ 4. Steuerwerk sendet Interrupt (Unterbrechung) an das System■ 5. Durch den Start der Interrupt-Service-Routine werden die Ergebnisse durch die
CPU abgeholt (Lesen der Statusregister)
179
Stichworte
Notizen
Prof. W. Burkard 179
Steuerwerke beim PC
180
Stichworte
Notizen
Prof. W. Burkard 180
DMA
DMA = Direct Memory Access =
das Steuerwerk schreibt die vom Gerät eintreffenden Daten direkt an die von der CPU angegebene Speicheradresse
Vorteil: CPU-Entlastung und höhere Performance des Gesamtsystems
181
Stichworte
Notizen
Prof. W. Burkard 181
Schichtenmodell des IO-Systems
Benutzerprozesse
geräteunabhängige Software
Gerätetreiber
Unterbrechungsbehandlung
Hardware
Schicht Aufgabe
IO-A
nfra
ge
IO-A
ntw
ort
IO ausführen, formatieren, spoolen
Benennung, Blockierung, Schutz, Pufferung, Zuteilung
Geräteregister setzen, Status prüfen
Wecken des Treibers nach der Aufgabenerledigung
Ausführung der IO-Operation
182
Stichworte
Notizen
Prof. W. Burkard 182
Unterbrechungsbehandlung
● Hat ein Prozeß eine IO-Operation angefordert, so blockiert er sich selbst durch z.B. ein Down auf eine Semaphore. (Zumindest SOLLTE es so sein...)
● Das Betriebssystem teilt einem anderen Prozeß die CPU zu
● Wenn das Peripheriegerät die Aufgabe erledigt hat, muß es den Prozeß wecken
==> Unterbrechungsbehandlung:
● die ausgelöste Aktion (Interrupt-Service-Routine) ist Teil des Betriebssystems und entblockiert den schlafenden Prozeß. (Up auf die Semaphore, etc...)
Problem Interrupt-Service-Routinen:
● Hardwarenahe Routinen, daher meist in Assembler geschrieben● hochsensibler Code von zentraler Bedeutung für das Funktionieren des
Betriebssystems
● in hohem Maße zeitkritisch, da von den Geräteleistungsdaten abhängig ● kritische Bereiche dürfen nicht durch nachfolgende Interrupts unterbrochen werden
==> Unterbrechungsmaskierung <==> NMI ( Non-maskable-Interrupt )
183
Stichworte
Notizen
Prof. W. Burkard 183
Geräte-Treiber● Der gesamte geräteabhängige Code wird im Geräte-Treiber zusammengefaßt
● Aufgabe des Treibers: Abbildung der abstrakten Anfrage der geräteunabhängigen Software auf das jeweils reale Gerät und Durchführung der erforderlichen Aktionen
Beispiel Festplatte:● abstrakte Anfrage der geräteunabhängigen Software: LESE BLOCK N
● Aktionen des Treibers:■ Abbildung von “BLOCK N” auf Zylinder/Spur/Sektor■ Prüfung, ob Motor korrekt läuft■ Anfahren des Zylinders■ Lesen des richtigen Sektors■ DMA zur angegebenen Adresse■ Rückmeldung, ob Transfer OK bzw. Fehlermeldung
MERKE:
Nur der Treiber eines Gerätes hat Kenntnis über reale Details des Steuerwerkes und der Mechanik eines Gerätes (z.B. Festplatte: Register des Steuerwerkes,Interleavefaktoren, Antrieb, Kopfberuhigungszeiten, etc.)
184
Stichworte
Notizen
Prof. W. Burkard 184
geräteunabhängige Software
“logische Geräte”
Aufgabe dieser Schicht:einheitliche Schnittstelle zur Benutzersoftware bereitstellen und Benutzer-IO-Requests an zuständige Treiber aufbereitet weiterleiten
Dazu gehört:■ Benennung von Geräten: Umsetzung logischer Gerätenamen in Treibernamen (z.B.
PRN => Druckertreiber für den Drucker xyz)■ Zuteilung, Freigabe, Schutz: Abweisung unberechtigter Anwender, Regelung der
Exklusivnutzung■ geräteunabhängige Blockung: z.B. 512 Byte je Block, egal welche Platte, welches Band■ Pufferung der Datenströme bei blockorientierten und bei zeichenorientierten Geräten■ Ressourcenmanagement des logischen Gerätes: z.B. logisches Gerät hat belegte und
freie Speicherblöcke ==> Allokationsalgorithmus muß nicht im Treiber realisiert seinlogischer Drucker entspricht 4 realen Druckern (gleiches Modell) ==> Jobverteilung erfolgt im logischen Gerät
185
Stichworte
Notizen
Prof. W. Burkard 185
Festplattensteuerung
Der Plattentreiber entscheidet wesentlich über die Performance des Plattensubsystem eines Rechners
( Und dies teilweise unabhängig von den Leistungsdaten der Platten!! )
Durch den Treiber realisierbar:
==> Minimierte Rotationswartezeiten durch Interleaving (nächste Folie)
==> Minimierung der Plattenarmbewegungen ( Plattenarm-Scheduling-Algorithmen)
==> Optimale FehlerbehandlungKompensation flüchtiger Fehler (z.B. durch Lese-Wiederholung)Kompensation falscher Positionierung (z.B. durch Rekalibration)Blockieren, d.h. Nicht-Ausführen offensichtlicher Fehlanweisungen (z.B. Leseanforderung mit zu hoher Sektornummern)
==> Hardware-orientiertes Puffern: Spur / Cylinder- Caching==> Plattensimulation im Hauptspeicher: RAM-Disks
186
Stichworte
Notizen
Prof. W. Burkard 186
Platten-Interleaving
Problem beim Lesen von Plattensektoren:
● Nach dem Lesen eines Sektors muß dieser zunächst vom Puffer des Steuerwerkes in den Hauptspeicher kopiert werden (durch die CPU oder via DMA)
● In dieser Zeit überstreift der Plattenkopf bereits den bzw. die Folgesektoren
● ==> Zum Lesen des nächsten Sektors muß also eine Umdrehung gewartet werden
● Problemlösung: Interleaving = Versetztes Durchnummerieren der Sektoren
Interleaving mit Faktor
Null: Eins: Zwei:7 0
6 1
5 2
4 3
7 0
3 4
6 1
2 5
5 0
2 3
7 6
4 1
187
Stichworte
Notizen
Prof. W. Burkard 187
Plattenarm-Scheduling-Algorithmen
SSF: Shortest Seek FirstDie Leseanforderungen werden so sortiert, daß der Schreib-Lesekopf minimale Fahrbewegungendurchführt: nach dem Lesen/Schreiben des Zylinders n wird der Zylinder m angefahren, so daß Im-nI minimal wird.
Problem/Ärgernis: Der Algorithmus ist bei vielbenutzten Platten unfair, er bevorzugt Zylinder in derPlattenmitte !!!
188
Stichworte
Notizen
Prof. W. Burkard 188
Plattenarm-Scheduling
Elevator-AlgorithmDer Schreib/Lesekopf fährt solange in eine Richtung, bis es in dieser Richtung keine Requests mehr gibt, dann beginnt das Spiel in die andere Richtung:
Variante des Elevator-Algorithm: Nach dem letzten Request in die eine Richtung wird der am weitesten entfernte Request bedient: “Plattenarm-Round-Robin”
189
Stichworte
Notizen
Prof. W. Burkard 189
Zeitgeber in DV-SystemenOhne Zeitgeber kann kein Betriebssystem arbeiten:
● Verwalten der Uhrzeit Prinzipieller Aufbau:
● preemptive Scheduling
● Profiling: Führen von Statistiken
● Bereitstellung von (Stop-)Uhren für Prozesse
One-shot-mode:Uhr steht nach dem Interrupt
Square-wave-mode:Automatischer Neustart nachdem Interrupt
Beispiel: Oszillator mit 1 MHz-Kristall ==> Jede Schwingung dauert 1 Mikrosekunde (1µsec)16 Bit-Register + Zähler ==> Interrupts programmierbar von 1 bis 65536 µsec
Zähler
Register
Oszillatorquarz...
... dekrementiert Zähler bei jeder Schwingung
Initialisieren des Zählers
Interrupt bei
Erreichen von 0
190
Stichworte
Notizen
Prof. W. Burkard 190
Monitorsteuerungin PCs und Workstations
Moderne grafische Oberflächen erfordern ein Hochleistungssteuerwerk zur pixelgenauen Steuerung des Monitors ==> Grafikkarten
Idee: ● Jeder Bildschirmleuchtpunkt (Pixel) wird durch 1 - 24 Bit repräsentiert.
● Die CPU “malt” auf dem Bildschirm, indem sie einen Pufferspeicher beschreibt (Bildwiederholspeicher)
● Die Monitorsteuerung (Grafikkarte) ließt den Puffer und generiert die erforderlichen Analogsignale
● Über separate Register der Grafikkarte sind weitere Einstellungen steuerbar (z.B. Anzahl Bits je Pixel, Bildwiederholrate, ...)
CPU
Grafikkarte
Systembus
dual-ported-RAMBildwieder-holspeicher
MonitorMonitor-Steuerwerk
“normaler”Haupt-
speicher
191
Stichworte
Notizen
Prof. W. Burkard 191
Alles klar ??1. Eine Festplatte habe s Sektoren je Spur und arbeite bei einem Interleavefaktor f
(f>=0) optimal. Wieviele Umdrehungen benötigt man, um die Spur vollständig zu lesen ? Wieviele Umdrehungen benötigt man im schlechtesten Fall, wenn derInterleavefaktor falsch gewählt wurde für das gegebene Paar Platte/Steuerwerk ?
2. Ein Plattenarm befinde sich auf Zylinder 20. Nacheinander treffen Anfragen ein, die Zylinder 10,22,20,2,40,6,38 zu lesen (noch bevor der Arm lossausen konnte). Die Bewegung von einem Zylinder zum nächsten dauere 6 msec, wie lange ist diegesammte Fahrzeit des Plattenarms bei SSF, Elevator, und bei einfachem First-come,First-serve ? Wie lauten die Reigenfolgen der angefahrenen Zylinder ?
3. Die Behandlung eines TimerInterrupts dauere auf einem Rechner 2 Milisekunden(inkl. allen Aufwandes für den Prozeßwechsel etc. ) Der Timer läuft mit 60 Hz. Wieviel Prozent der Systemzeit wird in diesem System für den Timer “verbraten” ?
4. Üblicherwesie ist das RAM heutiger Rechner mit dynamischen Speicherbausteinenaufgebaut, die innerhalb gewisser Zeiten ein Refresh der Inhalte benötigen, weil die Inhalte sonst verloren gehen. Zum Refreshen genügt bereits das Auslesen der Speicherinhalte. Skizzieren Sie eine Lösung für dieses Problem, d.h. entwerfen Sie in groben Zügen ein Steuerwerk “ODEM-of-RAM”, das DMA-fähig ist und einen Timer und eine Interruptleitung benutzt.
192
Stichworte
Notizen
Prof. W. Burkard 192
Grundlagen & Definitionen zu
Systemverklemmungen
Def.: BetriebsmittelEin Betriebsmittel in einem Computer ist etwas, was zu jedem Zeitpunkt nur von einem einzelnen Prozeß benutzt werden kann.
Beispiele: Diskettenlaufwerk, Hauptspeicher, Datensatz einer Datenbank (also Information)
unterbrechbares Betriebsmittel = Betriebsmittel kann einem Prozeß entzogen werden, ohne daß die Arbeit des Prozesses hinfällig wird. (typisches Beispiel ist der Hauptspeicher)
nicht unterbrechbare Betriebsmittel = Werden diese Betriebsmittel einem Prozeß entzogen, so sind die Arbeiten des Prozesses hinfällig. Beispiel: Drucker kann nicht mitten in der Arbeit entzogen werden.
Ablauf zur Nutzung eines Betriebsmittels: => BM anfordern => BM nutzen => BM freigeben
WICHTIG: Bei fehlschlagender BM-Anforderung sollte das BS den Prozeß schlafen legen
193
Stichworte
Notizen
Prof. W. Burkard 193
Deadlocks
Def.: DeadlockWenn alle Prozesse einer Menge sich gegenseitig blockieren, so nennt man dies einenDeadlock. Ein Deadlock entsteht, wenn jeder Prozeß auf ein Ereignis wartet, das nur ein anderer Prozeß (der dummerweise aber eben auch auf etwas wartet!) auslösen kann.
Bedingungen für die Existenz eines Deadlock:
1. wechselseitiger Ausschluß: Ein BM ist frei oder genau einmal belegbar
2. Belegungsbedingung: Ein Prozeß kann suzzesive mehrere BM belegen
3. Nicht-Unterbrechbarkeitsbedingung: Ein belegtes BM kann nicht entzogen werden
4. zyklische Verkettung der BM-Anforderugen: Je ein Prozeß fordert ein BM an, das bereits durch einen anderen Prozeß belegt ist
ODER KURZ:
Ein Betriebsmittel, eine Zuteilung (1) und: Zugeteilt ist zugeteilt ! (3)
Ein Prozeß, viele Betriebsmittel (2) und: was ich will, hast du! (und umgekehrt!) (4)
194
Stichworte
Notizen
Prof. W. Burkard 194
Darstellung von DeadlocksModellierung von Prozessen, Betriebsmitteln und ihren Beziehungen durch
gerichtete Graphen mit zwei Typen von Knoten
Kreise: stellen die agierenden Prozesse darRechtecke: stellen die Betriebsmittel darKanten (Pfeile): gehen stets von Kreis zu Rechteck oder umgekehrt
Kante von Rechteck zu Kreis: Kante von Kreis zu Rechteck: Betriebsmittel ist dem Prozeß zugeteilt Prozeß wartet auf die Betriebsmittelzuteilung
P
BM P
BM
Deadlock
P1
P2
BM1 BM2
195
Stichworte
Notizen
Prof. W. Burkard 195
Deadlock
Lösungs-Strategien
● Ignorieren des Problems: Methode: toi,toi,toi
● Betriebssystem erkennt und behebt Deadlocks
● Betriebssystem vermeidet (möglichst) Deadlocks durch vorsichtige BM-Zuteilungen
● Elimieren von Deadlocks durch geschickte Systemkonzeption( die vier notwendigen Bedingungen werden verhindert)
196
Stichworte
Notizen
Prof. W. Burkard 196
Warum Vogel-Strauss ??
● hoher Aufwand zur Eliminierung von Deadlocks● geringe Wahrscheinlichkeiten für das Auftreten von Deadlocks
● Bequemlichkeit (Arroganz ??) der Betriebssystementwickler● Work-around: fehlgeschlagener Betriebsmittelzugriff wird (hin und wieder) wiederholt
● Beispiel Straßenverkehr: (ebenfalls ohne Regelung):Wer hat Vorfahrt ?
197
Stichworte
Notizen
Prof. W. Burkard 197
Deadlock-Erkennung
= Erkennung von Zyklen im Betriebsmittelgraphen
R A
S
W
U
T
V
B
C D E
F G
Algorithmus:
1. Für jeden Knoten K des Graphen tue:1.1 Setze alle Kanten auf “unmarkiert”
Erzeuge leere Liste L1.2 Setze aktuellen Knoten AK = K1.3 Füge Ak in L ein1.4 Wenn AK zweimal in L, dann
wurde ein Zyklus gefunden, ENDE1.5 Für alle unmarkierten Kanten, die
von AK ausgehen tue:1.5.1 Markiere Kante1.5.2 Setze Knoten am Ende der
Kante = AK und gehe nach 1.31.6 Es gibt keinen Zyklus, ENDE
198
Stichworte
Notizen
Prof. W. Burkard 198
Deadlock-Behebung
= Auflösung einer entstandenen Deadlock-Situation
1. Behebung durch (manuelle) Suspension eines Prozesses:
Prozeß wird suspendiert, die blockierten BM werden freigegeben, danach werden die BM wieder dem Prozeß zugeteilt und der Prozeß freigegeben
2. Behebung durch Rücksetzen der Prozesse auf “Checkpunkte”:
Prozesse erzeugen periodisch Checkpunkte (Speicherung des Prozeßzustandes in einer Datei) Beim Rücksetzen auf einen Checkpunkt gehen die Arbeiten, die der Prozeß nach dem Checkpunkt durchführte verloren !
3. Behebung durch Prozeßabbruch (Brute-force-Methode)
Problem: Welchen Prozeß sollte man abbrechen ?=> Möglichst wenig Seiteneffekte, Prozeßwiederholbarkeit muß gegeben sein!
199
Stichworte
Notizen
Prof. W. Burkard 199
Deadlock-Verhinderung= “wohl durchdachte” Betriebsmittel-Zuteilung
“Betriebsmittel-Flugbahnen”
= A+B belegen denDrucker gleichzeitig
= A+B belegen denPlotter gleichzeitig
Prozeß A
Prozeß B
200
Stichworte
Notizen
Prof. W. Burkard 200
sichere und unsichere ZuständeDef.: Ein Zustand heißt sicher, wenn...
1. ... er kein Deadlock-Zustand ist und ...2. ... es eine Möglichkeit gibt, alle Anforderungen bis zum Terminieren aller
Prozesse zu erfüllenAkt = aktuell belegte BM
Beispiel: Ein sicherer Zustand (a) Max = maximal benötigte BM
Frei = noch freie BM
Beispiel: Ein unsicherer Zustand (b)
201
Stichworte
Notizen
Prof. W. Burkard 201
Dijkstras Bankier-Algorithmus
1. Suche in R eine Zeile Z (z1,z2,z3,z4), so daß z i <= ai für 1<=i<=4 2. Zeile nicht gefunden: => ein kommender Deadlock ist nicht mehr abwendbar3. Zeile gefunden: Nimm an, der gefundene Prozeß bekommt die BM, kann
weiterlaufen und terminiert4. Dann gibt dieser Prozeß alle seine BM frei. Entferne Prozeß in R, erhöhe A5. Wiederhole Schritte 1-4 bis ...
... R leer ist ==> Zuteilung ist sicher
... oder bis Schritt 2 eintritt, ==> Deadlockgefahr, d.h. unsichere Zuteilung
insgesamt verfügbare BM
belegte BM
derzeit freie BM
Request-table RIn-Use-table U
202
Stichworte
Notizen
Prof. W. Burkard 202
Deadlock-Vermeidung= Sicherstellen, daß die vier Bedingungen nie erfüllt sein können!
Ansätze und Ideen:1. wechselseitiger Ausschluß:
Minimierung der BM-Zuteilung, d.h. Zuteilung an möglichst wenige ProzesseBeispiel: Druckerspooling: Das BM “Drucker” wird nur einem Prozeß (dem Spooler)
zugeteilt
2. Belegungsbedingung:
“Alles-oder-nichts-Methode”: Bei Prozeßstart werden dem Prozeß alle erforderlichenBM zugeteilt, oder der Prozeß wird suspendiert bis dies möglich ist!
3. Nicht-Unterbrechbarkeit:es gibt prinzipiell keine Lösung, die Nicht-Unterbrechbarkeit ist ja gerade das wesentliche Merkmal bestimmter Betriebsmittel!
4. zyklische Wartebedingung:
Durchnummerieren der BM und BM-Vergabe nur in sortierter Weise, d.h.:fordert ein Prozeß zwei BM X und Y an, so muß Y > X gelten.
203
Stichworte
Notizen
Prof. W. Burkard 203
Durchführungder
Aufgabe
Two-Phase-Commit
Idee: ● In einer ersten Phase werden alle Betriebsmittel zur Erledigung der Aufgabe angefordert.● Kann eine Ressource nicht zugeteilt werden, werden alle Ressourcen wieder freigegeben
und von vorne begonnen● Sind alle Ressourcen zugeteilt erfolgt die Erledigung der Aufgabe, danach die Freigabe
aller Ressourcen
WICHTIG:
Two-Phase-Commit istnur anwendbar, wenn alle
Aktionen der Phase 1wieder rückgängiggemacht werden können Zeit
Betriebsmittel
D
C
B
A Two-Phase-Commit
Phase 1
Phase 2
204
Stichworte
Notizen
Prof. W. Burkard 204
“Verhungern” von ProzessenEin Prozeß fordert eine Ressource an, die er nie erhält.==> kein Deadlock im eigentlichen Sinne, aber der Prozeß ist auf Dauer festgefahren
Beispiel :Shortest-Seek-First-Algorithmus beim Plattenzugriff:
Ein Prozeß P will z.B. den innersten Plattenzylinder lesen, nachfolgende Prozesse lesen ständig Zylinder in der Plattenmitte.Resultat: Prozeß P bleibt solange suspendiert, bis keine anderen (näheren) Anforderungen mehr in der Warteschlange sind! Das kann u.U. dauern !
Grundsätzlich gilt:Algorithmen, die aus einer Warteschlange jeweils ein “Bestes Element” auswählen lassen “schlechte Elemente” verhungern, wenn beständig neue Elemente in die Schlange strömen! (d.h. die Schlange nie leer wird)
“Gegenmittel”: temporäres Umschalten auf “First-Come,First-Serve”dynamische “Verbesserung” der Elementsituation durch das Warten
205
Stichworte
Notizen
Prof. W. Burkard 205
Alles klar ??1. Wann sind bei der Deadlock-Verhinderung diagonale Betriebsmittelflugbahnen denkbar ?2. Ein Computer verfügt über sechs CD-ROM-Laufwerke und es gibt n Prozesse, die um die
Bandgeräte konkurrieren. Jeder Prozeß benötige zwei CD-ROM-Laufwerke. Für welche Werte von n ist kein Deadlock möglich ? (Deadlock-freies System )
3. Kann ein System sich in einem Zustand befinden, der weder ein Deadlock- noch ein sicherer Zustand ist? Falls ja, skizzieren Sie ein Beispiel, falls nein, beweisen Sie, daß jeder Zustand entweder ein Deadlock-Zustand oder ein sicherer Zustand ist!
4. Führt es in einen Deadlock, falls der Prozeß A auf Folie 114 das letzte Bandgerät anfordert ?5. Aschenputtel und der Prinz lassen sich scheiden. Sie wollen ihr Eigentum nach folgendem
Verfahren aufeilen. Täglich können beide in einem Brief einen Anspruch auf etwas aus ihrem Eigentum anmelden. Weil es einen Tag dauert, bis ein Brief zugestellt ist, haben sich beide darauf geeinigt, daß, falls sie beide feststellen, daß sie dasselbe am gleichen Tag angefordert haben, am nächsten Tag einen Brief senden, in dem sie ihren Anspruch zurücknehmen. Zu ihrem Eigentum gehört insbesondere ihr Hund Bello und seine Hundehütte. Da das Tier seine Behausung liebt, haben Aschenputtel und der Prinz sich darauf verständigt, daß eine Verteilung des Eigentums, das das Tier von seiner Behausung trennt, nicht zulässig ist, und dann der gesamte Verteilungsprozeß von vorne beginnt. Sowohl Aschenputtel als auch der Prinz wollen verzweifelt Bello haben. Damit sie (getrennt voneinander) auf eine Reise gehen können, haben die Ehegatten je einen PC programmiert, der die Verhandlungen führen soll. Als beide von ihren Reisen zurückkommen, verhandeln die Computer immer noch. Warum? Ist ein Deadlockaufgetreten? Ist ein Verhungern möglich? Diskutieren Sie.