BS
Upcoming SlideShare
Loading in...5
×
 

BS

on

  • 1,869 views

 

Statistics

Views

Total Views
1,869
Views on SlideShare
1,869
Embed Views
0

Actions

Likes
0
Downloads
9
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    BS BS Presentation Transcript

    • Überblick Betriebssysteme am Beispiel klassische Betriebssysteme q Einführung und Überblick s Linux Hardware-Grundlagen s Prozessverwaltung s Speicherverwaltung s Dateisysteme s Ein-/Ausgabe s Deadlocks s Einführung in Linux/Unix q Überblick, Installation, System-Grundlagen s Fachhochschule Pforzheim Dateisystem, die Shell, Task-Management, s Linux administrieren, die grafische Oberfläche s Prof. W. Burkard Linux im Netz: NIS und NFS s Praxisteil Java-Threads q FB 7, Studiengang Wirtschaftsinformatik Threads und Prozesse in Java s die Synchronisationsproblematik und ihre Lösungen s Interprozesskommunikation s Prof. W. Burkard 1 Prof. W. Burkard 2 Stichworte Stichworte Notizen Notizen 14:00, 09.07.2007 Von Yan, Jörg, Marcus , 14:00, 09.07.2007 1 2
    • Organisation der Vorlesung Literatur Teilnehmer [Tannen95] Andrew S. Tannenbaum, Moderne Betriebssysteme, Betriebswirte SG Wirtschaftinformatik s Hanser-Verlag München/Wien 1995 s Bachelor of Information Systems [Oechsle01] Rainer Oechsle, Parallele Programmierung mit Java s Ingenieure der Elektrotechnik Diplom/Bachelor Threads, Hanser-Verlag München/Wien 2001 [Nehmer01] Jürgen Nehmer und Peter Sturm, Systemsoftware oc 1 oc 12 oc 0 14 oc 3 (Grundlagen moderner Betriebssysteme), dpunkt-Verlag, Heidelberg 2001 5 1 3 7 2 6 1 4 1 9 8 1 he he he he he he he he he he he he he he [Kredel02] H. Kredel & A. Yoshida, Thread- und Netzwerkprogrammierung mit Java, oc oc oc oc oc oc oc oc oc oc W W W W W W W W W W W W W W dpunkt-Verlag, Heidelberg 2002 [Brause98] Rüdiger Brause, Betriebssysteme, Springer-Verlag, Berlin 1998 für Betriebswirte keine Pflicht Pflichtteil Betriebswirte [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 Pflichtprogramm für alle Ingenieure Thread- [Stucky97] Wolffried Stucky, Der Rechner als System, Betriebssysteme Theorie (7) Linux / Unix-Teil (4) Programming (3) Teubner-Verlag, Stuttgart 1997 Prof. W. Burkard 3 Prof. W. Burkard 4 Stichworte Stichworte Notizen Notizen 3 4
    • Aufgaben der Betriebssysteme Geschichte der Betriebssysteme Definition: Generation 1: Generation2: Das Betriebssystem steuert und verwaltet die vorhandenen Betriebsmittel eines Rechners Rechner ohne Betriebssystem, keine Idee des Stapelbetriebes mit getrennten und stellt den Anwendern und den Anwendungsprogrammen Schnittstellen zur Verfügung, Unterscheidung der Anwender in Systemen für Eingabe, Verarbeitung, Ausgabe. die den möglichst einfachen und damit effiziente Umgang mit den Ressourcen ermöglichen. Entwickler,Operateur, Programmierer Der teuere Rechner wurde besser ausgenutzt, und Nutzer. ( bis Mitte der 50er) durch Verringern der Stillstandszeiten. 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 Prof. W. Burkard 5 Prof. W. Burkard 6 Stichworte Stichworte Notizen Notizen Ein Betriebssystem ist die Software, die die Verwendung (den Betrieb) eines Computers ermöglicht. Es verwaltet Betriebsmittel wie Speicher, Ein- und Ausgabegeräte und steuert die Ausführung von Programmen. 5 6
    • Mehrprogrammbetrieb Timesharing Mehrere Jobs werden im Hauptspeicher gehalten. q Wenn ein Job auf das Ende einer I/O-Operation wartet, wird die CPU einem anderen q = Variante des Mehrprogrammbetriebes Job zugeteilt. q Bisheriges Problem: zu lange Antwortzeiten verhinderten interaktives Arbeiten nur ein Job gibt d.h. es können zu einem bestimmten Zeitpunkt mehrere Jobs “in Arbeit” sein. q q Lösung: Betriebssystem weist die CPU den Jobs explizit zu und “entreist” sie ABER: Nur ein in “Warteposition” gehender Job gibt die CPU frei q CPU frei, und zwar ihnen wieder, auch unabhängig von deren Bearbeitungsstand !! ==> non-preemptive-scheduling q d.h. das BS stellt sicher, dass die aktiven Jobs innerhalb einer gewissen der der gerade Job-Spooling (Simultaneous Peripheral Operation On Line) = q Zeitspanne immer wieder auf der CPU ein Stück weiterlaufen. Zwischenlagerung der ankommenden Jobs auf Magnetplatte, so dass beim dran war Freiwerden einer Partition ein neuer Job sofort nachgeladen werden konnte q ==> preemptive-scheduling Speicherpartitionierung = Aufteilung des Hauptspeichers in separate Teile, in die q ! !W je ein Job geladen werden kann Forderungen an einen guten Scheduling-Algorithmus:    ide ¥ £ rs ¥ q Fairness: Jeder Job erhält gerechten Anteil an CPU-Zeit pr üc ¥£ Speicher- Speicher- Speicher- Speicher- q Effizienz: CPU ist immer voll ausgelastet hl   Speicherbereich für das ... ich partiton 1 partiton 2 partiton 3 partiton n Betriebssystem q Antwortzeit: Ist für interaktive Nutzer minimal   e  “Job 1” “Job 2” “Job 3” “Job n” Zi §©¨ q Verweilzeit: Stapeljobs bleiben möglichst kurz im System el § ¥¦ £¤ e!! q Durchsatz: Möglichst viele Aufträge je Zeiteinheit ¢    ¡ Synonyme Begriffe: Job = Task = Prozeß (aber nur bedingt = Thread ) Prof. W. Burkard 7 Prof. W. Burkard 8 das BS weist Stichworte Stichworte explizit die Jobs zu Notizen Notizen Time-Sharing war der erste konzeptionelle Ansatz in der Computertechnologie mehrere Benutzer an einem Computer quasi gleichzeitig arbeiten zu lassen, in dem sie sich die Rechenzeit des einzigen vorhandenen Prozessors teilten. Jedem einzelnen Benutzer erschien es dabei so, als hätte er die gesamten Ressourcen des Computer stets für sich allein zur Verfügung. Heutzutage wird der Begriff Time-Sharing, wenn er überhaupt noch verwendet wird, häufig irrtümlich mit dem Multitasking 7 8 gleichgesetzt. Auch wenn beide Konzepte das quasi parallele Arbeiten an einem Prozessor betreffen, so beruht
    • Schnittstelle Betriebssystem? vernetzte Rechner Was ist das eigentlich? Anwendungsprogramme neue Herausforderungen: SAP/R3 MS-Office Browser ... Betriebssysteme mehrerer Rechner müssen miteinander kommunizieren Compiler Editoren MMS Ressourcenverteilung über Rechnergrenzen hinweg Systemprogramme Entstehung von Arbeitsteilung und Spezialisierung im Verbund (=>Client/Server) BETRIEBSSYSTEM 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. Maschinensprache Hardware verteilte Betriebssysteme: Das gesamte Netz erscheint dem Anwender gegenüber wie ein einziger Rechner. Mikroprogramme GUI 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. physikalisches Gerät Prof. W. Burkard 9 Prof. W. Burkard 10 Stichworte Stichworte MMS = Mensch-Maschine-Schnittstelle, in der Regel Kommandointerpreter bzw. grafische Benutzeroberfläche Schnittstelle zw. Anwendungsprogrammen und Hardware Notizen Notizen 9 10
    • I Wozu brauchen wir ein BS? Softwarestrukturen in einem Rechner 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 q Benutzung eines Dateisystems, das seinerseits eine Festplatte bzw. Blöcke nutzt q Benutzung eines Datenbank-Systems, das auf einem Dateisystem aufsetzt, das ... q Verwendung persistenter Objekte in einer OO-Programmierumgebung, die eine q Datenbank als Unterstützung voraussetzt, die auf einem Dateisystem fußt, das ... Prof. W. Burkard 11 Prof. W. Burkard 12 Stichworte Stichworte MMS = Mensch-Maschine-Schnittstelle, in der Regel Daten sind persistent, wenn sie die Lebensdauer in Kommandointerpreter bzw. grafische Benutzeroberfläche der Applikation, in der sie entstanden sind, überleben. Notizen Notizen -Klasse ist ein Plan, es beschreibt wie ein objektorientierte Objekt auszusehen hat Programmierung Java: Klasse = Bauplan 11 12
    • II III Wozu brauchen wir ein BS? Wozu brauchen wir ein BS? Das Beispiel zeigt: Der direkte Umgang der Anwendungsprogramme mit der Hardware ist aus mehreren Gründen problematisch: q Es wird immer ein Gerät benutzt (Festplatte) Schnittstellen zu Geräte-Controllern sind heute zwar weitgehend genormt, aber q q Es gibt mehrere unterschiedliche Abstraktionsebenen dennoch unhandlich. q Welche Abstraktionsebene gewählt wird ist sehr stark von der Anwendung abhängig Koordination von Prozessor und anderen Komponenten mit den hardwareseitig q Schnittstelle einer q Wie lassen sich die Dienste einer Abstraktionsebene nutzen ? verfügbaren Hilfsmitteln (Interruptmechanismen, Zyklisches Abfragen (Polling) ) führt es gibt ein Laufzeitpaket, d.h. einer Anwendung wird eine Menge von Funktionen q Anwendung zu zu schwer durchschaubaren Progammstrukturen, die wir auf Anwendungsebene nicht   zur Verfügung gestellt, die den Zugang zu den gebotenen Diensten ermöglicht. haben wollen. einem Dienst der (Application Programming Interface API ) Direkter Hardwarezugriff bedeutet in Mehrbenutzerbetrieb schwerwiegende q q Die gebotenen Dienste können vom BS selbst oder aber von anderen Serviceleistern Abstraktionsebene Schutzprobleme durch unvermeidbare Benutzung privilegierter Instruktionen erbracht werden (dann aber ist das BS nur als Vermittler tätig) Ohne unterstützende Software ist die Abwicklung unabhängiger Benutzeraktivitäten in q q Die Dienste des Betriebsystems werden also durch einen „ganz normalen“ einem Multiuserbetrieb undenkbar, Koordinationsaufwand zu komplex. Prozeduraufruf angefordert. q Dieser „ganz normale“ Prozeduraufruf wird system call (Systemaufruf) genannt und Anwender wünschen sich indirekten Zugang zur Hardware über eine Dienstschicht, mündet in aller Regel in einem TRAP (Einsprung in den Betriebssystemkern)   die quasi eine virtuelle Maschine darstellt und komfortabel benutzbar ist. TRAP (Falltür) Prof. W. Burkard 13 Prof. W. Burkard 14 Ein Systemaufruf, auch Systemcall (von engl. = entladen des system call) oder kurz Syscall, ist in der Stichworte Stichworte Prozesses aus dem Computertechnik eine Methode, um von einem Speicher und Benutzer-Prozess aus Aufgaben im Ergebnisse des system Systemkontext ausführen zu lassen. calls verschicken an das BS Eine Programmierschnittstelle ist eine Schnittstelle, die von einem Softwaresystem anderen Programmen zur AnbindungNotizen System an das Notizen zur Verfügung gestellt wird. Oft wird dafür die Abkürzung API (für engl. application programming interface, deutsch: „Schnittstelle zur Anwendungsprogrammierung“) verwendet. Im Gegensatz zu einer Binärschnittstelle (ABI) definiert eine API nur die Verwendung der Schnittstellen auf Quelltextebene. Neben dem Zugriff auf Datenbanken, die Hardware wie Festplatte oder Grafikkarte kann eine API auch das Erstellen von Komponenten der grafischen Benutzeroberfläche ermöglichen oder vereinfachen. Heutzutage stellen auch viele Internetdienste APIs zur Verfügung (für Beispiele siehe die Weblinks). Im weiteren Sinne wird die Schnittstelle jeder Bibliothek (Library) als 13 14 API bezeichnet.
    • Grundlagen: Systemaufrufe System calls Problem: Anwendungsprogramme kommunizieren mit dem Betriebssystem indem sie q Wie verhindert man, dass bei Verschiebungen des BS im Speicher die Anwendungen neu q Systemaufrufe tätigen. ==> Aufruf von Systemfunktionen kompiliert werden müssen, um die Systemprozeduren korrekt anzusprechen ? Anwendungsentwicklungssysteme müssen alle Systemaufrufe in Bibliotheken vorrätig q Lösung: halten. Speichern aller Aufrufparameter auf dem Stack und Auslösen eines speziellen q Die Bibliotheksfunktionen rufen durch sogenannte TRAPs das Betriebssystem q Hardwaresignals (sogenannter Softwareinterrupt) Wie bei einem „normalen“ Hardware-Interrupt speichert der Prozessor seinen aktuellen q Beispiel: Lesen von Datei Stand, springt in die Interruptbehandlung und erledigt den geforderten Job, um dann an die Stelle des Abbruches zurückzukehren. q im Programmcode stehe: Die Interruptbehandlungsroutine ist q anzahl = read(Dateiname,Zielspeicherplatz-im-Hauptspeicher, Anzahl-zu-lesender-Bytes) somit der zentrale Einsprungpunkt Bibliotheksfunktion read prüft die Parameter und startet dann das BS mit den q in den BS-Kern angegebenen Parametern durch einen TRAP Da nach einem Systemaufruf die q Betriebssystem suspendiert den laufenden Prozeß und erledigt die geforderte q nächste Instruktion nicht gleich Aufgabe. Dann schreibt es die Anzahl der gelesenen Bytes in die entsprechende ausgeführt wird, sondern die Befehlsausführung am BS-Einsprung Prozeßvariable und schaltet den Prozeß wieder “rechenbereit”. plötzlich „aufhört“, wird der Prozeß läuft bei der Bibliotheksfunktion wieder weiter. q Softwareinterrupt auch als Falltür Bibliotheksfunktion liefert der rufenden Funktion die Anzahl gelesener Bytes q (trap door, kurz TRAP) bezeichnet fällt in Falltür Prof. W. Burkard 15 Prof. W. Burkard 16 Programmcounter Stichworte Stichworte Register in CPU Prozessor Status java.lang -> automatisch geladene Bib Stack = Stapel (Aufgabenliste) (enthält READ, OUT, etc.) BS = Betriebssystem Interrupt = Unterbrechung Notizen Notizen -mitten im Programm quot;system callquot; -der Zustand wird gespeichert (stack) und zu einem späteren Zeitpunkt genauso wieder hergestellt -die Anwendung bekommt davon nichts mit 15 16
    • alles außer kritische Dinge Architekturbeispiel Linux / Unix Architekturbeispiel Mach Anwender Experten Prof. W. Burkard 17 Prof. W. Burkard 18 alles möglich Stichworte Stichworte MMS = Mensch-Maschine-Schnittstelle, in der Regel MMS = Mensch-Maschine-Schnittstelle, in der Regel Kommandointerpreter bzw. grafische Benutzeroberfläche Kommandointerpreter bzw. grafische Benutzeroberfläche Notizen Notizen -kritische Anweisung=>sperren von Interrupts -user mode können keine kritischen Programme schreiben; verschiedene Level gibt es im Prozessoren- user-mode nur oberflächlich -kernel mode nur für kurze Abschnitte des Betriebssystem 17 18
    • I Schichtung und Systemaufrufe bei W2K Ein- und Mehrprozessorsysteme Anwendungsprogramme Bei der Rechnerarchitektur, für die ein Betriebssystem Ressourcen verwalten soll, müssen grundsätzliche Konfigurationen unterschieden werden von Neumann- Architektur Massen- BS- Anw. 1 Anw. 2 ... Anw. n speicher Kern Prozessor Simples Einprozessorsystem Betriebssystem Im einfachsten klassischen Fall gibt es nur einen Prozessor, der Hauptspeicher und Massenspeicher benutzt, um das Betriebssystem (BS) und die Anwendungsprogramme auszuführen Prof. W. Burkard 19 Prof. W. Burkard 20 Stichworte Stichworte MMS = Mensch-Maschine-Schnittstelle, in der Regel MMS = Mensch-Maschine-Schnittstelle, in der Regel Kommandointerpreter bzw. grafische Benutzeroberfläche Kommandointerpreter bzw. grafische Benutzeroberfläche Notizen Notizen kernel mode verlagert Dienste in den user mode, dadurch sichert es die stabilität des kernel mode 19 20
    • II III Ein- und Mehrprozessorsysteme Ein- und Mehrprozessorsysteme • Einprozessorsysteme können mit mehreren Prozessoren aufgerüstet werden Interessante Beobachtung bei Mehrprozessorsystemen: • Durch unterschiedliche Kopplungskonzepte entstehen unterschiedliche Architekturen Oft spricht jeder Prozessor nur einen eng umgrenzten Speicherbereich an • Die einfachste Architektur sieht nur eine Vervielfachung der CPU vor, alle CPUs hängen dann ( in dem sich die von ihm gerade abgearbeitete Anwendung befindet ) immer nur parallel an einem Verbindungsnetzwerk (Multi-Master-Systembus) Daher die Idee: Aufteilen des Speichers und enger an den Prozessor binden verdopplung • Der Systembus verbindet die Prozessoren auf der einen Seite mit den Speichermodulen auf der BS- Anw. 1 BS- Anw. 2 BS- Anw. n anderen Seite. Kern Kern Kern • Bei intensiver Nutzung wird der Bus zum Flaschenhals  Leistungseinbußen ... ... Prozessor n Prozessor 2 Prozessor 1 Prozessor 1 Prozessor 2 Prozessor n Multi-Master-Systembus Multi-Master-Systembus Massen- Massen- BS- Anw. 1 Anw. 2 ... Anw. n Multiprozessorsystem (lose Kopplung) speicher Kern speicher Massen- Massen- speicher speicher parallel Multiprozessorsystem (enge Kopplung) Prof. W. Burkard 21 Prof. W. Burkard 22 seriell durch dieses Stichworte Stichworte Design tauchen MMS = Mensch-Maschine-Schnittstelle, in der Regel MMS = Mensch-Maschine-Schnittstelle, in der Regel andere Probleme Kommandointerpreter bzw. grafische Benutzeroberfläche Kommandointerpreter bzw. grafische Benutzeroberfläche auf Notizen Notizen bearbeiten getrennt voneinander anwendungen parallel bearbeiten zusammen anwendungen hintereinander -> symmetrisches Multiprozessing Probleme: CPU1 lagert im Cache und CPU2 soll mit Werten => prinzipiell verteilen sich die Prozesse auf aus CPU1 weiterrechnen -> hat die aber noch nicht! mehrere CPU´s CPU->Cache->Bus-RAM 21 22
    • IV Grundlagen: Prozesse Ein- und Mehrprozessorsysteme Was geschieht, wenn man jedem Prozessor ein eigenes Betriebssystem gibt? MERKE: Prozesse sind das wesentliche Konzept aller Betriebssysteme Vollkommen unabhängige Rechner mit jeweils eigenem (eventuell unterschiedlichem) Ein Prozeß ist ein Betriebssystem werden lose über ein Netzwerk gekoppelt in Ausführung befindliches Programm! Prozeß Cluster = sehr schnelles Netzwerk räumlich dicht beieinander stehender Rechner Prozeß CPU-Register Er umfaßt: - Kontext den ausführbaren Programmcode q BS- Anw. BS- Anw. MMU-Register Massen- die Programmdaten (Variablen und q Kern Massen- Kern Konstanten des Programmes) Stapel (Stack) speicher speicher ... Kernel-Stack den Programmzähler (zeigt auf die q Daten (Heap) aktuell zu bearbeitende Anweisung) Datei-Info, Zugriffsrechte Stack und Stackpointer ( Zwischenpuffer q Programmcode Prozessor 1 für beim Programmlauf anfallende Daten) Prozessor 2 alle weiteren Informationen, die das q Betriebssystem zur Ausführung des Programmes benötigt Prozeßtabelle= Tabelle des Betriebssystems, in der alle Infos eines jeden Prozesses gespeichert sind Verbindungsnetzwerk LAN, WAN ... Threads („Handlungsfäden“) = leichtgewichtige Prozesse innerhalb von Prozessen, vom Anwendungsprogrammierer definiert! Rechnernetz / Cluster Prof. W. Burkard 23 Prof. W. Burkard 24 Klausuraufgabe: Stichworte Stichworte Unterschied zw. Algorithmus(1), Programm(2), Prozess(3) MMS = Mensch-Maschine-Schnittstelle, in der Regel Kommandointerpreter bzw. grafische Benutzeroberfläche zu 1) - löst ein theoretisches Problem durch eine endliche und in ihrer Reihenfolge definierte Sequenz einzelner Schritte - Beschreibung einer Problemlösung - deterministisch (selbe Eingabe=selbe Lösung) Notizen Notizen zu 2) - praktische Möglichkeit (PRAXIS) -lose gekoppelte-parallel-Architektur - enthält Algorithmen (ausführbar) =1000 Rechner über Hochleistungsnetz mit einander zu 3) - in Ausführung befindliches Programm - löst das Programm verbunden -viele einzelne Rechner = Cluster -nicht mit Bus sondern über LAN verbunden 23 24
    • Grundlagen: Dateien Prozesse leben und sterben... Das Betriebssystem erzeugt, verwaltet und eliminiert Prozesse. Zur Erinnerung: Das BS verbirgt die Physik einer Festplatte (Zylinder,Spuren...) q Prozeß A und schafft dem Anwender eine einfache Schnittstelle: Dateien Ein Prozeß kann andere Prozesse erzeugen ==> Prozeßbaum Prozeß B Prozeß C Das Konzept der Dateien und Dateiverzeichnisse q gängige Systemaufrufe (System-Calls): “erzeuge Kindprozeß B“ s Wurzelverzeichnis (root directory) “lösche mich” s Prozeß D Prozeß E Prozeß F “Ich warte auf Ende meines Kindprozesses E” s “Ersetze im Prozeß F den Programmcode durch Code yyy” s “ich brauche mehr Speicher” s Pogramme System Benutzer Prozesse können miteinander und mit dem BS “reden” ==> Interprozeßkommunikation Prozesse in Timesharing-Systemen haben einen Besitzer ==> Sicherheitsproblem MS-Office SAP/R3 Anna Karl Ute uid = user identification Programme werden zwangsweise gid = group identification daran gehindert, versehentlich oder Urlaub DA Studienangelegenh. Prof. W. Burkard 25 Prof. W. Burkard 26 absichtlich auf den Speicherbereich anderer Programme zuzugreifen oder Stichworte Stichworte das Betriebssystem anders als durch standardisierte „Eingänge“ zu benutzen. Hardwareseitige Voraussetzung ist eine Speicherverwaltungseinheit (MMU), die Speicherschutz unterstützt. Notizen Notizen - erster Prozess entsteht beim booten - BS übernimmt erstes Dienst(Prozess) unter Windows -> Explorer = Kommandointerpreter 25 26
    • Grundlagen: Copyright(C) by Foxit Software Company,2005-2007 Handhabung von Dateien Kommandointerpreter Vor dem Lesen oder Schreiben muß man eine Datei öffnen Das Betriebssystem ist also das Programm, das alle Systemaufrufe ausführt. q q ==> Zugriffsrechte regeln den Zugriff q Idee: Eine Datei sei ein Ding, in welches man hineinschreiben oder aus dem man Der Kommandointerpreter ist das Programm, das dem Anwender einen Zugang q lesen kann ==> dann sind viele Geräte auch “Dateien” !!! zum Betriebssystem verschafft, wenn keine Anwendung da ist, die das tun Also: könnte !!! q normale Datei: blockorientierte Byteansammlung auf der Festplatte/Diskette cmd q spezielle Form: zeichenorientierte „Dateien“, z.B. Tastatur, Bildschirm, Drucker textuelle Kommandointerpreter (z.B. DOS: Command.com) q Peripherie stellen eine einfache Sprache zur Verfügung, um Systemaufrufe sinnvoll zu q Pipe, eine „Datei“ für die Interprozesskommunikation nutzen. Beispiel: DIR DEL COPY Edited by Foxit Reader A B For Evaluation Only. grafische Benutzeroberflächen: (grafische Interpreter) q stellen eine erweiterte MMS (Mensch-Maschine-Schnittstelle) zur Verfügung: Der Computer ist für den Anwender das, was die MMS ihm zeigt. Zwei Prozesse, die durch zwei Pipes verbunden sind. Eine Pipe ist unidirektional, man kann sie nur lesen ODER schreiben! Alternativ-Begriff: shell q Art Zwischenablage / virtuelle Verbindung zw. Prozessen nur eine Richtung Prof. W. Burkard 27 Prof. W. Burkard 28 Stichworte Stichworte Explorer = Kommandointerpreter in Windows aus Tastatur wir gelesen wie in einer Datei / in Drucker schreibt man wie in eine Datei Kommandointerpreter = Notprogramm Pipe wird von Prozess erstellt und autom. von Windows beendet Notizen Notizen 27 28
    • Monolithische “Ummantelung” des Systems durch Betriebsystemstrukturen Kommandointerpreter 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: shell-Kommandos Dienstprogramme Anwendungen grafische oder textuelle Shell (z.B. Windows-Oberfläche bzw. command.com) Betriebssystemkern mit allen Systemfunktionen Treiber A Treiber B Treiber C ... Treiber n Gerät A Gerät B Gerät C ... Gerät n Prof. W. Burkard 29 Prof. W. Burkard 30 Stichworte Stichworte Notizen Notizen original Interpreter (shell) kann ersetzt werden (in config.sys): Als monolithischen Kernel bezeichnet man einen durch anderes Programm -> gesamtes System dann aber nur noch Betriebssystemkern, in dem nicht nur Funktionen zu Speicher- und so mächtig wie dieses Programm! Prozessverwaltung und zur Kommunikation zwischen den Prozessen, sondern auch Treiber für die Hardwarekomponenten und möglicherweise weitere Funktionen direkt eingebaut sind. 29 30
    • Virtuelle Maschinen Client-Server-Architektur in einem Rechner: Idee: Bau eines leistungsfähigen Multiuser-Multitasking-Systems durch Verwendung vorhandener, einfacher Betriebssysteme, denen ein “Verteiler” untergeschoben Client- Client- Client- Server- Server- ... Benutzermodus wird. (Beispiel PC/MOS386) Prozeß Prozeß Prozeß Prozeß Prozeß Kernmodus virtuelle MS-DOS-PCs Betriebssystemkern BS-Kern bzw. Netzwerk sichern die Kommunikation zwischen C+S DOS DOS DOS in einem Netz: hier: Systemaufruf Rechner 1 Rechner 2 Rechner 3 Rechner n hier: Ein- /Ausgabe- modifiziertes MSDOS-BIOS operation Klient Klient Klient Klient ... hier: TRAP Kern Kern Kern Kern (unter DOS sind dies SW-Interrupts) PC-MOS386-Betriebssystem hier: TRAP ins MOS Netzwerk die “nackte” Hardware des PC Nachricht vom Client zum Server natives BS Prof. W. Burkard 31 Prof. W. Burkard 32 Stichworte Stichworte Vgl. VPN = virtuelles privates Netzwerk in einem öffentlichen reellen Netz Notizen Notizen Eine IP-Adresse identifiziert einen Rechner. Eine Port-Nr. identifiziert eine Anwendung. -> Schlussendlich kommunizieren die Anwendungen, nicht die Rechner! Eindeutige Identifizierung durch IP+PORT = SOCKET-NUMBER 31 32
    • NEIN! Alles klar ?? Dann zurück zu Seite 1! 1. Nennen Sie die Aufgaben von Betriebssystemen 2. Erläutern Sie den Unterschied zwischen preemptive und non-preemptive zu 1) Prozesse aufrufen, beenden, speichern und scheduling 3. Warum wird Spooling heute insbesondere bei der Ausgabe auf Drucker koordinieren. verwendet? Komfortabler Zugriff auf Hardware-Ressourcen. 4. Worin liegt der Vorteil, wenn die Shell nicht Teil des Betriebssystems ist? Schafft Kommunikationswege zw. den einzelnen 5. Warum macht das in verteilten Systemen beliebte Client/Server-Modell auch in Einzelplatzrechnern Sinn ? Ressourcen des Systems, den Anwendungsprogrammen 6. Warum benötigt ein PC mit nur einem Prozeß keine Prozeßtabelle? und dem Menschen. 7. welche der nachstehenden Aktionen sollten nur im Kern und niemals im Benutzermodus laufen? Steuern und überwachen von Software. - Sperren aller Unterbrechungsleitungen zu 2) non-preemtive = laufender Prozess gibt CPU frei - Lesen der Tageszeit - Setzen der Tageszeit preemptive = das BS gibt frei zu 3) Druckaufträge werden im quot;Stackquot; gespeichert und dann nacheinander gedruckt,d.h. Drucker gibt frei Prof. W. Burkard 33 zu 4) Wenn BS abstürzt kann man durch shell neustarten. Stichworte zu 5) Weil beim Einzelplatzrechner das BS somit die Kommunikation zw. Clientprozessen und Server- prozessen sichert. zu 6) Da es nur einen Prozess gibt, ist die Tabelle nicht nötig, da er nicht switchen muss. zu 7) kernel modus Notizen -Sperren aller Unterbrechungsleitungen (niemals dürfen Interuppts gesperrt werden) -Setzen der Tagesezeit (niemals dürfen Prozesse Zeiten ändern) user mode -Lesen der Tageszeit 33
    • ALU = arithmetic Hardware-Grundlagen Die CPU in der von-Neumann-Architektur logic unit • 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 uni- E/A-Gerätes (Breite je nach System 16,32,64 Bit (= Signalleitungen), dadurch direkt- Festlegung des adressierbaren physikalischen Speichers) ional • 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 beide Richtungen bidirektional Das Steuerwerk (englisch Control Unit, kurz CU) ist der Kern des /8 Leitungen Prof. W. Burkard 34 Prof. W. Burkard 35 Mikroprozessors. Im Steuerwerk befinden sich Befehlsregister und Befehlsdecoder. Seine Aufgabe ist die Abarbeitung des Stichworte Stichworte Programms, d.h. Befehl für Befehl eines Programmes werden ein Bus verbindet mindestens 2 (oder mehrere) durch das Steuerwerk des Mikroprozessors ausgeführt. Stationen miteinander Eine arithmetisch-logische Einheit (englisch arithmetic logic paralleler Bus hat mehrere Leitungen unit, daher oft abgekürzt ALU) ist ein elektronisches Rechenwerk, welches in Prozessoren zum Einsatz kommt. Notizen Notizen Taschenrechner != CPU, da kein Steuerwerk Steuerwerk interpretiert Befehlsregister und inkrementiert Programmcounter um 1 und übergibt dann den Befehl an CPU, diese Wertet aus, und bekommt dann neuen Befehl. 34 35
    • Der zentrale Prozessor (CPU) Die von-Neumann-Architektur • 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 Cache • 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 Prof. W. Burkard 36 Prof. W. Burkard 37 Stichworte Stichworte E/A Register wird behandelt wie Haupt- wie unterscheidet man daten und instruktionen? speicher (d.h. wie eine spezielle Datei) -gar nicht! Notizen Notizen 36 37
    • Der Bus in der von-Neumann-Architektur Gängige Systembusse 1 2 3 4 10100101 5 10100101 6 7 Zelle 4 8 schreiben Prof. W. Burkard 38 Prof. W. Burkard 39 Cache mit vollem CPU-Takt, sonst nur die CPU darf den Adressbus benutzen! Stichworte Stichworte quot;Flaschenhalseffektquot;->quot;Pipeliningquot; Adressbus [Bearbeiten] Datenbus [Bearbeiten] Ein Adressbus ist in der Computertechnologie - im Gegensatz zum Datenbus - ein Bus, der Ein Datenbus überträgt Daten zwischen Computerbestandteilen nur Speicheradressen überträgt. Die Busbreite, also die Anzahl der Verbindungsleitungen, innerhalb eines Computers oder zwischen verschiedenen bestimmt dabei, wieviel Speicher direkt adressiert werden kann. Wenn ein Adressbus n Notizen Notizen Computern. Anders als bei einem Anschluss, bei dem ein Gerät Adressleitungen hat, können 2n Speicherstellen adressiert werden. mit einem anderen Gerät über eine oder mehrere Leitungen Dieser Bus ist unidirektional und wird vom jeweiligen Busmaster (s. a. oben) angesteuert. verbunden ist, kann ein Bus mehrere Peripheriegeräte über den Letzterer ist meistens die CPU, aber vor allem DMA-fähige Bausteine können diesen Bus gleichen Satz von Leitungen miteinander verbinden. auch übernehmen, wenn sie aktiv werden. Die Bezeichnung als Datenbus wird in mehrfachem Zusammenhang verwendet: Steuerbus (Kontrollbus) [Bearbeiten] • mit Betonung auf Daten: zur Abgrenzung gegenüber Der Steuerbus ist ein Teil des Bussystems, welcher die Steuerung (engl. control) des gemeinsamen Anschlüssen, wie der Stromversorgung Bussystems bewerkstelligt. Hierzu zählen unter anderem die Leitungen für die Interrupt- • mit Betonung auf Bus: zur Unterscheidung der Topologie, wie z. Steuerung, Buszugriffssteuerung, der Taktung (falls ein Bustakt erforderlich ist), Reset- und B. direkten Punkt-zu-Punkt-Verbindungen Statusleitungen. Welche der Leitungen in einem Bus eingesetzt sind, ist von der Art und • bei parallelen Bussen: zur Unterscheidung von Adress- oder Struktur des Busses abhängig. In Multi-Master-Systemen, in denen mehr als ein Subsystem 38 39 Steuerleitungen die Buskontrolle übernehmen kann, ist ein Arbiter als Entscheidungsinstanz erforderlich.
    • kommt noch! Maschinenbefehle und Daten im Speicher 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 Programmcounter • 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 Prof. W. Burkard 40 Prof. W. Burkard 41 Stichworte Stichworte Notizen Notizen Schiebeoperationen: pipelining=>64bit datenbus schickt benachbarte ... Speicherzellen gleich mit 40 41
    • Synchrone und asynchrone Unterbrechungen Sprungbefehle und Unterprogramme • Die reguläre Programmabarbeitung kann auch Unterbrechung • Alle gängigen Prozessoren verfolgen ein streng sequentielles Verarbeitungsmodell, durch Unterbrechungen (Interrupts) verändert werden d.h. nach Beendigung der aktuellen Operation wird mit der Bearbeitung des Befehls • Synchrone Unterbrechungen = unmittelbare Folge der fortgefahren, der im Speicher nachfolgt. aktuellen Befehlsabarbeitung, also synchron • Durch Sprungbefehle kann dieser Ablauf beeinflusst werden zum aktuellen Befehl. Beispiele: synchron asynchron • Es wird gerade durch 0 dividiert (Exception) • unbedingter Sprungbefehl: die sequentielle Abfolge wird auf jeden Fall beendet und statt dessen an einer • Es wird auf eine nicht existente Trap Exception Interrupt angegebenen Adresse fortgesetzt Speicherstelle zugegriffen (Exception) • Es wird explizit vom Programmierer durch • bedingter Sprungbefehl: abhängig von einer Bedingung erfolgt der Sprung zu einer den Aufruf eines entsprechenden CPU-Befehls anderen Speicheradresse ( z. B. wenn Inhalt eines Registers = 0 ) ein Interrupt erzeugt (TRAP) • Absoluter Sprung: Zieladresse wird fest vorgegeben • Asynchrone Unterbrechungen = Ereignisse im Computer, die über besondere Leitungen • Relativer Sprung: Angabe der Zieladresse ist relativ zur aktuellen Position an die CPU geleitet werden (Steuerbus!) relative Sprünge machen Programme relokierbar (verschiebbar im Speicher) • asynchron = in keinem kausalen Zusammenhang zum aktuellen Befehl   • Beim Sprung in ein Unterprogramm (JSR Jump SubRoutine) wird zusätzlich erst • Beispiele: IO-Gerät meldet relevantes Ereignis (Taste gedrückt, Paket auf Netzkarte noch die aktuell folgende Speicheradresse auf den Stack gespeichert um bei Ende eingetroffen, DMA beendet, usw... der Subroutine von dort wieder in den Programmcounter geladen zu werden • Maskierung = Unterbinden einer CPU-Reaktion auf einen Interrupt Prof. W. Burkard 42 Prof. W. Burkard 43 d.h. Maschinensprache Sperren eines Interrupts Stichworte Stichworte synchrone: sofortige Abarbeitung der Folge -im eigenen Befehl wird bemerkt, dass es nicht weiter geht! (springt dann) -vorgegebene Sprünge Notizen Notizen bsp. Bedingung Speicherzelle: 1299 und 1300 boolsche Algebra 1299 CMP AX;BX (Compare A mit B) (siehe sonst wo!) 1300 JNE +3000 (Jump-Not-Equal) Bedingung=wenn A gleich B dann JUMP nach 4300 42 43
    • Die Interrupt-Service-Tabelle Unterbrechungsvektoren des PC • Beim Eintreffen einer (nicht maskierten) Unterbrechung wird hardwaremässig der aktuelle Unterbrechung Name Prozessorzustand (also alle Register) auf dem Stack gespeichert • Dann erfolgt ein indirekter Sprung über eine im Speicher befindliche Sprungtabelle 0 Division durch 0 1 Einzelschritt-Modus • Jede Unterbrechung hat folglich einen 2 Nicht-Maskierbar Interrupt 9 festen Index in dieser Sprungtabelle 3 Haltepunkt = Tastatur • In der Tabelle steht die Anfangsadresse 4 Überlauf Unterbrechung k der zugehörigen Interrupt-Service-Routine 5 Bildschirm drucken Sprung- 6 - reserviert - • Die Fortführung eines unterbrochenen Programms erfolgt tabelle 7 - reserviert - später durch Wiederherstellen des Prozessorzustandes 0 was wird bei 8 8253 Systemzeitgeber 1 2 9 Tastatur . Interrupt gemacht? Interrupt-Service-Routine . A - reserviert - . zur Unterbrechung k: k B - reserviert - . Hier stehen die Befehle mit . C - reserviert - denen der Sachverhalt n D - reserviert - erledigt wird 001010111011101011 E Diskette/Festplatte 110101010011101100 101111010101001101 F - reserviert - Speicher Prof. W. Burkard 44 Prof. W. Burkard 45 Stichworte Stichworte IRET = Interrupt Return (holt sich vom Stapel alles zurück, auch den Programmcounter und es geht dort weiter wo aufgehört wurde) Notizen Notizen -Tabelle hat alle Unterbrechungsarten aufgelistet -... 44 45
    • Ausführungsmodi Speicher in der von-Neumann-Architektur Wortlänge=Datenbusbreite • 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 /nicht • Der Modus hat Einfluss auf die Ausführbarkeit einzelner Befehle bitweise • 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 dynamischer RAM: • Rücksprung in den Normalmodus erfolgt über entsprechenden Befehl Prof. W. Burkard 46 Prof. W. Burkard 47 -innerhalb weniger ms verloren, müssen immer gelesen und wieder beschrieben Stichworte Stichworte werden statisches RAM: -mit Transistoren, Cache -groß, teuer, sehr schnell langsam Notizen Notizen SUMME d. Befehle Ring 0 Ring 1 Ring 2 Ring 3 Privilegierung steigt 46 47
    • RAM und ROM Performance durch Caching • Speicher aus CPU-Sicht = hardwareabhängige • Ein Cache ist ein kleiner, aber sehr schneller Puffer, in dem je zwei Anzahl von Speicherzellen, ansprechbar durch Dinge vermerkt werden: eine Speicheradresse und ihr Inhalt entsprechende Belegung des Adressbusses • Cache Hit: CPU greift auf gepufferte Adresse zu, Cache liefert den Inhalt • Der physische Adressraum wird durch die SIMM-Baustein 72 Pin   • Cache Miss: Adresse nicht im Cache langsames Nachladen nötig Breite des Adressbusses begrenzt   • Deferred Write: Schreiben der CPU wirkt nur auf Cache, Speicher wird • Computer sind selten voll ausgebaut, d.h. Lücken später aktualisiert temporäre Speicherinkonsistenz, aber schnell im Adressraum (lösen bei Zugriff eine Exception aus)   • Write Through: CPU-Schreibzugriff geht durch auf Speicher • Speicher besteht überwiegend aus RAM-Bausteinen, langsamer, aber sicherer DIMM-Baustein 168-Pin die ihren Inhalt bei fehlender Stromversorgung verlieren   Cache • Kleiner Speicherteil ist mit ROM-Bausteinen bestückt, nur lesbar, behalten aber ihren Inhalt auch ohne Strom Adresse Daten Cache Miss • Im ROM befindet sich der Urlader des Systems, also Adresse von CPU 1312 148 derjenige Code, den die CPU beim „Aufwachen“ ausführt das ROM muss so in den Adressraum eingefügt sein, 2639 756 2639   Notebook DIMM-Baustein 144 Pins dass es diejenige Adresse mit einschließt auf die der 5265 28 Program-Counter nach einem CPU-Reset zeigt Speicher • Heutige Speicherbausteine haben Zugriffszeiten von rund 10 ns und sind damit cirka 10 mal langsamer als aktuelle Prozessoren Zwischenpuffer erforderlich ( Cache )   DDR-RAM Baustein 184 Pins Prof. W. Burkard 48 Prof. W. Burkard 49 Stichworte Stichworte erst in Cache gespeichert, ROM = Read-Only-Memory wenn Zeit dann in Speicher RAM = Random-Access-Memory direkt in Speicher, nicht erst in Cache Notizen Notizen 48 49
    • Referenzlokalität und Cache-Temperatur Die Speicherhierarchie Gedanke: Cache lohnt sich nur, wenn mittlere Zugriffszeit tD des Systems sinkt ! Durch Kaskadieren, d.h. durch abgestufte Caches wird Systemleistung optimiert: • Nahe an der CPU: kleinster, aber schnellster Cache (teuer!) Wie bestimmt sich tD ? abhängig von der Trefferwahrscheinlichkeit p des Caches   • Weiter weg: Cache wird größer, aber langsamer (billiger!) tD = p * tCache + (1 – p) * tSpeicher 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 Heutige Caches erreichen (auch wenn sie relativ klein sind )Trefferraten von über 90 % und Programmen) Warum ? 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 + 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 ¡ CPU-Register, 1-2 KB, <1ns Konsequenz: Auch die Speicherzellen in der aktuellen Umgebung werden mit hoher ¡ Wahrscheinlichkeit angesprochen Level-1-Cache, 64-512 KB, < 1 - 2 ns Cache-Line: Caches steigern die Trefferrate, weil sie beim Speicherzugriff in einem Burst gleich ¡ mehrere aufeinanderfolgende Speicherzellen laden (Prefetch) Kalter Cache / heißer Cache: Level-2-Cache, 512 KB -2 MB, ca. 3 ns Cache muss sich an die Programmausführung anpassen „warm fahren“ d.h. Programm startet => kalter Cache, da viele neue Speicherstellen angesprochen Vorraussage: wir während Programm läuft => Cache wird besser, da sich viele Zugriffe wiederholen Hauptspeicher, 64 MB und mehr, ca. 10 ns Prof. W. Burkard 50 Prof. W. Burkard 51 brauchen es wieder Stichworte Stichworte Notizen Notizen 50 51
    • Ein- und Ausgabegeräte Ein- / Ausgabe - Architekturvarianten Bei speicherbasierter EA sind die Register • Geräte werden üblicherweise nicht direkt an den Prozessorbus angeschlossen Interrupts eines Controllers nicht von den normalen • Ein E/A-Controller übernimmt die Vermittlerrolle zwischen Prozessor und Gerät Speicherstellen zu unterscheiden. Zugriff erfolgt über normale L2-Cache Beispiel Drucker: ein zu druckendes Zeichen wird dadurch ausgeben, dass es dem E/A- Lese- Schreib-Operationen und Controller der parallelen Schnittstelle übergeben wird, der es über das Druckerkabel gibt ohne Einschränkungen Prozessorbus bei den Adressierungsarten. • Komplizierte Geräte verfügen über einen eigenen Prozessor und Speicher, bilden im E/A-Controller somit ein eigenes kleines Computersystem E/A-Controller E/A-Controller Speicher • 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 Bei einem dedizierten EA-Bus werden EA-Controller Adressraum der CPU zur Verfügung Interrupts über spezielle CPU-Befehle angesprochen. (z.B. • Kommandoregister dienen der Übermittlung von Befehlen an das Gerät IN und OUT -Befehle bei INTEL-CPUs). Für E/A-Bus   die Auswahl der Controller/Register wird • Statusregister dienen der Abfrage des Controller- bzw. Gerätezustands auch hier der Adressbus verwendet, L2-Cache   der Steuerbus hat aber weitere • Datenregister dienen dem eigentlichen Informationsaustausch Signalleitungen um EA-Zugriff   Speicherbus von Speicherzugriff E/A-Controller E/A-Controller E/A-Controller zu trennen Beispiel Drucker . . . Speicher Prozessorbus Prof. W. Burkard 52 Prof. W. Burkard 53 Stichworte Stichworte Notizen Notizen -es gibt eine Steuerleitung: Memory/IO -diese gibt Signal ob IO oder Memory -selber CPU-Befehl für beides -spezielle IO-Befehle IN/OUT->Steuerbus auf IO -alle Speicherstellen sind sowohl als Memory wie auch als IO-Adresse verwendbar 52 53
    • E/A-Buscontroller • 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 Interrupts • Vorteile: • An den sehr schnellen, in der Länge aber L2-Cache massiv begrenzten Prozessorbus sind nur wenige Komponenten angeschlossen Prozessorbus • Keine Beeinträchtigung der Systemleistung durch Bus-Controller langsame E/A-Geräte Speicher • Bus-Controller übernimmt eine Reihe von Grundfunktionen (Interrupt-Handling, DMA) für alle Geräte-Controller CPU-Entlastung ¡ E/A-Controller • Durch standardisierte Gerätebusse können einzelne E/A-Controller E/A-Controller E/A-Controller in unterschiedlichen Computerarchitekturen integriert werden E/A-Controller • Gängige Vertreter: PCI und SCSI Erwartungen: • 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 Prof. W. Burkard 54 -wie CPU -was machen Busse Stichworte -wie IO gesteuert -wie Speicher Notizen DMA=Direct Memory Access Fähigkeit des Adressbus zu manipulieren Bsp.:DVD on the fly brennen -OHNE DMA: Bus-Controller->Interrupt an CPU, CPU schaufelt Daten in RAM und dann in Brenner -MIT DMA: DVD-L. benutzt Adressbus und kopiert Daten sofort an Brenner Problem: Wer benutzt wann den Adressbus? -wird über Takt geregelt (Taktdiagramm) 54 -exaktes Timing wer wann
    • SCHEDULING!!! Das Prozeßmodell in Betriebssystemen Was bringen mehrere parallele Prozesse ? • alle ausführbaren Programme werden als sequentielle Prozesse gesehen Grundsätzliche Überlegung: In einem Prozeß wechseln sich Berechnungen und Ein/Ausgaben ab. • jeder Prozeß besitzt seinen (virtuellen) Prozessor und läuft (scheinbar) kontinuierlich ab Beispiel: Lesen von Daten von der Festplatte, modifizieren, dann speichern. Benötigt • die Prozesse laufen scheinbar parallel zueinander ab. Lesen und Speichern 40 msec, die Bearbeitung 10 msec dann wartet die CPU 80 %   ihrer Zeit untätig !!! • in Wirklichkeit aber wird der Prozessor “schnell” von Prozeß zu Prozeß geschaltet dies macht der Scheduler (Scheduling-Algorithmus) Multiprogramming-Grad V=3 Ein Prozeß verbringe den Bruchteil p Vorsicht bei D   seiner Zeit mit Warten auf Ein/Ausgabe. a-priori-Zeitannahmen in Prozeß Bei n Prozessen im Speicher, ist die V=2 Wahrscheinlichkeit, daß alle gleichzeitig C Programmen !! im Wartezustand sind pn. Die CPU-Auslastung ist dann 1 - pn V=1 B Problem: wachsende Verzögerung V V=0 A Zeit bei wachsender Prozesszahl n n–1 Vd = * k , bei n Tasks, die je k Zeit laufen und keine IO benötigen (reiner CPU-Burst) 2 Prof. W. Burkard 55 Prof. W. Burkard 56 Stichworte Stichworte Bsp.: einer bleibt stehen (Menschenbeispiel) Realität = 98-99% macht die CPU nichts! Bei mehreren Prozessen steigt die Auslastung und die Wartezeit sinkt. Notizen Notizen 55 56
    • errechnet durch 20%=4min Durst, Bedarf normale Zeit 80%=16min -A1 = 20min Performanceanalyse Die Realität: CPU-Bursts -A2 = 15min -A3+A4 = 10min Sobald ein Prozess eine E/A-Operation q Jeder Prozeß besitze 20% CPU-Nutzung ( bzw. 80% sei Warten auf I/O ) veranlasst, wird er vom BS von der CPU 1-pn genommen, und diese einem anderen Prozess gegeben. Der blockierte 160 Prozess wartet auf das Ende der reale CPU-Burst-Verteilung gestarteten E/A 140 ohne dabei die CPU zu nutzen. verbrauchte 120 Ein Prozess wechselt somit ständig q zwischen Abschnitten, in denen er die CPU-Zeit 100 CPU nutzt (CPU-Bursts) und solchen, in denen er E/A-Geräte benutzt (IO-Bursts). 80 Beides gleichzeitig macht keinen Sinn, der q Prozess kann z.B. nicht weiterrechnen, 60 wenn die Daten vom Datenträger noch 40 nicht da sind! CPU- Bursts sind im Verhältnis zu q 20 IO-Bursts sehr kurz: Dauer des Übliche Werte liegen im Bereich weniger CPU-Burst 0 Millisekunden, gegenüber IO-Bursts, 8 10 12 14 16 18 20 22 24 26 28 30 32 in msec 0 2 4 6 10:00 die oft 100 mal länger sind ! Prof. W. Burkard 57 Prof. W. Burkard 58 10:10 5min 5*0,18=0,9 Stichworte Stichworte CPU-Burst = Prozess der CPU braucht Notizen Notizen ohne die anderen Prozesse wäre Auftrag 1 schon 10:20 fertig, durch die Teilung aber brauch er 2 Minuten länger. ABER: Alle 4 Prozesse nacheinander würden 55min brauchen. In diesem Bsp. brauchen sie nur 31,7 Minuten. Die Pausezeiten werden mit der wachsenden Anzahl an Prozessen geringer und damit wird es effizienter! 57 58
    • Ein Ausführungsstrang bzw. eine Ausführungsreihenfolge der Abarbeitung der Software auf einem Prozessor. Was ist eigentlich ein Prozeß ? ... und was ist dann ein Thread ? • Ein Prozess ist ein einzelner sequentieller Ablauf in einem Rechner, • Bei vielen Anwendungen werden keine völlig separaten Prozesse benötigt (ein ablaufendes Anwenderprogramm ist z.B. ein Benutzerprozess) • Dennoch will man innerhalb der einen Anwendung parallele Handlungen ermöglichen • Da alle Prozesse gleichzeitig stattfinden, müsste für jeden Prozess auch ein Prozessor Was heißt das ? vorhanden sein !? • Alle Handlungsfäden (= Threads) sollen im gleichen Prozesskontext ablaufen, somit • Die Anzahl der Prozesse schwankt aber im laufenden Betrieb und ist meist deutlich ein Adressraum für alle Threads größer als die Zahl der vorhandenen Prozessoren ! Was tun ?   • Konsequenz: alle Threads haben zunächst uneingeschränkten gegenseitigen Zugriff auf Das Betriebssystem muss die vorhandenen Prozessoren auf die gegebenen Prozesse ihre Objekte und teilen sich die Ressourcen (geöffnete Dateien, Variablen, Code, ... ) verteilen. Dieses Zeitmultiplexverfahren wird Scheduling genannt. Wie wird das implementiert? • 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 • Einfachste Lösung: die Threads übergeben sich gegenseitig reihum die Kontrolle eines anderen Prozesses wird wieder vom Prozessor übernommen. (sogenanntes Coroutinen-Konzept)   Dann müssen alle Threads sich gegenseitig kennen, der Anwendungsprogrammierer muss ein • Benutzerprozesse führen Benutzeraufträge (Anwendungsprogramme) aus, Scheduling-Verfahren implementieren bzw. berücksichtigen Systemprozesse führen Dienste des BS aus, sind also Teil des Betriebssystems => schlechter Ansatz, besonders bei wachsender Thread-Anzahl • Jeder Prozess (NICHT Thread!) läuft in einem eigenen Prozessadressraum ab. Ein • Besser: keine Implementierung vom Anwendungsprogrammierer, sondern verfügbarer Prozess kann nur dann auf Objekte (z.B. Variablen ...) eines anderen Prozesses Dienst des BS. Dann werden die Umschaltzeiten zwar minimal länger, bleiben aber zugreifen, wenn das BS entsprechende Mechanismen hierfür zur Verfügung stellt immer noch deutlich unter dem Kontext-Switch von „richtigen“ Prozessen. Warum ? IPC = Inter-Process-Communication   Prof. W. Burkard 59 Prof. W. Burkard 60 Ein (Kernel) Thread ist Teil eines Prozesses und teilt sich mit den anderen vorhandenen Threads des Stichworte Stichworte zugehörigen Prozesses eine Reihe von Betriebsmitteln, nämlich das Codesegment, das Datensegment Dienst des Betriebssystems und die verwendeten Dateideskriptoren. Allerdings bewahrt jeder Thread seinen eigenen Befehlszähler mit dessen Hilfe 2 Prozesse und seinen eigenen Stack. Durch die gemeinsame Nutzung des Speicherbereichs kann es natürlich auch kommunizieren (Pipes) zu Konflikten kommen. Diese müssen durch den Einsatz von Synchronisationsmechanismen aufgelöst werden. Prozess: Da Threads, die dem selben Prozess zugeordnet sind, den gleichen Adressraum verwenden, ist eine Notizeneinem Prozess (lat. Unter Notizen Kommunikation zwischen diesen Threads von vornherein möglich (vgl. mit Interprozesskommunikation procedere = voranschreiten; bei Prozessen). PPP: processus) versteht man Threads innerhalb des gleichen Prozesses verwenden voneinander unabhängige Stapel (Stacks), die eine definierte oder unterschiedlichen Abschnitten des Adressraums zugeordnet sind. Andere Betriebsmittel werden von wahrscheinliche allen Threads gemeinsam verwendet. Aufeinanderfolge von Zuständen Jeder „Programmfaden“ ist für die Ausführung einer bestimmten Aufgabe verantwortlich. Die eines Systems in Abhängigkeit Ausführungsstränge der Programmfunktionen können damit in überschaubare Einheiten aufgeteilt von den Vorbedingungen und werden. den äußeren Einflüssen. Der Bei den meisten Betriebssystemen kann ein Thread neben dem Zustand inaktiv die Zustände rechnend Ablauf eines Prozesses kann (engl. running), rechenbereit (engl. ready) und blockiert (engl. waiting) annehmen. Im Zustand rechnend vorgegeben sein, meist aber findet die Ausführung von Befehlen auf der CPU statt, bei rechenbereit ist der Thread gestoppt, um einen auch eigenständig gestaltet 59 60 anderen Thread rechnen zu lassen und bei blockiert wartet der Thread auf ein Ereignis. werden.
    • ... Kontextwechsel bei Threads Der Prozesskontext Der Prozesskontext umfasst alle Informationen, die das Betriebsystem über einen ODER: Prozess besitzt und ändert sich bei Prozessablauf ständig Was muss das Betriebssystem tun, wenn von einem Thread auf einen anderen Identifikatoren umgeschaltet wird ? • Name / ID des Prozesses • Jeder Thread hat Daten, die wirklich nur ihm zuzuordnen sind und in keiner Weise andere • Name des Benutzers, für den der Task gerade arbeitet Threads oder Tasks betreffen: • Name des Vaterprozesses • Namen der Sohn-Prozesse • Das Prozessorstatuswort, also der gesamte Prozessorzustand (Inhalt der CPU-Register) Zustandsinformationen • Der Stackpointer, der auf das oberste Element im Stack (Stapel) zeigt • Prozessorzustand ( alle Register, nur vorhanden wenn Prozess nicht aktiv ) • Der Program-Counter, der auf die nächste auszuführende Instruktion zeigt • Bearbeitungsstand ( Zustand des Tasks: blockiert, ready, ... ) • Diese drei Daten sind vom Scheduler zu sichern bevor der neue Thread geladen wird • Alarmzustand • Beschreibung zugeordneter Objekte/Betriebsmittel • Dies kann in kürzester Zeit erfolgen, da es nur wenige Daten sind ! schnell   Rechte • Zugriffsrechte auf Dateien • Zugriffsrechte auf Speichersegmente und Seiten bei Paging • Prozessprioritäten Betriebsmittelkonten • Abrechnungsdaten • Noch verfügbare Kontingente Prof. W. Burkard 61 Prof. W. Burkard 62 Stichworte Stichworte Threads sind Teile eines Tasks Task=Prozess Notizen Notizen Kontextwechsel (engl. context switch) nennt man den Vorgang in einem Betriebssystem, bei dem die Bearbeitung des aktuellen Prozesses (oder auch Threads oder Tasks) durch einen Interrupt unterbrochen wird und zu einer anderen Routine gewechselt wird. Dabei wird der Kontext (im wesentlichen die Prozessor-Register) des aktuellen Prozesses/Threads/Tasks gesichert und der Kontext des neuen restauriert. Die Strategie für den Kontextwechsel wird vom Scheduler festgelegt, während die Durchführung selbst vom Dispatcher vorgenommen wird. 61 62
    • immer nur einer Einfaches Prozess-Zustands-Modell Prozesszustände • ein Prozeß befindet sich immer in einem von drei möglichen zentralen Zuständen: aktiv / running / rechnend • AKTIV: ein Prozessor arbeitet die Instruktionen des Programmcodes gerade ab Prozesse in diesem Zustand sind im Besitz einer CPU und laufen gerade (bei einfachem Single-Prozessorsystem kann nur immer nur ein Task in diesem • BLOCKIERT: BS hat Befehlsabarbeitung wg. IO gestoppt, Prozessor wurde einem anderen Zustand sein Prozeß zugeteilt. Der blockierte Prozeß wartet auf ein (die Blockierung lösendes) Ereignis. blockiert / wartend / blocked • BEREIT: Prozeß könnte weiterlaufen, wartet auf Zuteilung des Prozessors durch das BS Prozesse, die darauf warten, dass eine E/A-Operation endet oder eine sonstige Systembedingung erfüllt wird, z.B. Eintreffen einer Nachricht... Prozeß Prozeß-Terminierung In diesem Zustand können sich stets beliebig viele Prozesse befinden. ist ng r- Diese Prozesse können nicht weiterlaufen, erst muss das „erlösende“ ilu so W aktiv te e s Ereignis stattfinden ar zu roz te n bereit / rechenbereit / ready P au S f B Er Prozesse in diesem Zustand sind potentiell ausführbar, aber derzeit nicht im h du r- ei rc ug so Besitz einer CPU. gn tz es Prozeß is Auch in diesem Zustand können sich stets beliebig viele Prozesse befinden. En roz ist P Diese Prozesse könnten jederzeit weiterlaufen und „hoffen“ auf CPU- Prozeß-Erschaffung Prozeß Zuteilung durch den Scheduler bereit ist blockiert Prof. W. Burkard 63 Prof. W. Burkard 64 Ereignis tritt ein Stichworte Stichworte Notizen Notizen 63 64
    • Erweitertes Prozess-Zustands-Modell Prozesskontrollblock (PCB) Der PCB umfasst alle wichtigen Informationen aus dem Prozesskontext, damit das Betriebssystem die einzelnen Tasks verwalten kann: • das einfache Modell muss erweitert werden, wenn durch Swapping ganze Prozesse • PID = Process Identification wegen Speichermangels auf die Festplatte ausgelagert werden (swap out) • Speicherplatz zur Sicherung des • Bis zur erneuten Einlagerung (Swap in) kann keiner der betroffenen Threads ausgeführt Prozessorzustandes bei einem Kontextwechsel Prozessidentifikation werden. • Informationen über den Wartegrund, Registerzustand falls der Task blockiert ist • Zustandsübergänge von allen drei bisherigen Zuständen sind möglich ! (Ein- und Auslesen • Adressrauminformationen, z.B. einen Verweis bei Kontextwechsel) Prozeß auf die oberste Seitentabelle Prozeß-Terminierung ist ng r- • Weitere Zustandsinformationen und ilu so aktiv Statistiken für das Scheduling te e s Scheduling-Informationen W rei zu roz ar gn E Swap out te is P n Adressrauminformationen au S aktiv f ...Seitentabelle... B Prozeß h du r- ... rc ug so Prozeß ist tz es En roz ist ausgelagert bereit P Prozeß bereit Sonstiges ist Ereignis tritt ein Swap in Prozeß-Erschaffung blockiert blockiert Nächster PCB Prof. W. Burkard 65 Prof. W. Burkard 66 Stichworte Stichworte Notizen Notizen 65 66
    • Dispatcher und Scheduler Zeitlicher Ablauf beim Kontextwechsel Langzeitscheduling zeitliche Verschränkung der Prozessbearbeitung in einem Einprozessorsystem • Planen der Jobausführung: es sollen nur so viele Benutzer mit ihren Anwendungen neu ins System, wie das System verkraften kann. Begrenzung der Taskanzahl Zeit   Beispiel: ftp- oder www-Server Zugangskontrolle verhindert Serverüberlastung, Prozess A Betriebssystem-Kern Prozess B d.h. ab der n-ten Verbindung wird der Request abgewiesen A arbeitet, hat CPU, B steht, hat keine CPU, • Ausführen von nicht-interaktiv ablaufenden Jobs (Batch-Jobs) „aktiv“ im Zustand „bereit“ zu bestimmten Zeiten (z.B. nachts ...) Jobende Unterbrechung Nutzer Kurzzeitscheduling Langzeitscheduling Kurzzeitscheduling BS-Kern arbeitet, A im Zustand bereit, • Das „eigentliche“ Scheduling: Scheduler & Dispatcher steht (keine CPU) Strategie zur Zuweisung des (der) Prozessors (Prozessoren) an die Prozesse. Zuweisung CPU an B • Der Scheduler wählt somit aus der Menge der bereiten Prozesse den nächsten B im Zustand „aktiv, Kandidaten für die CPU anhand einer bestimmten Strategie. Läuft jetzt auf CPU Unterbrechung BS-Kern arbeitet Zuweisung CPU an A Dispacher hat CPU, aktiv B steht, hat keine CPU, • Die Durchführung der Zustandsübergänge selbst ist die Aufgabe des Dispatchers. A arbeitet im Zustand „bereit“ hat CPU, aktiv • Er stellt dafür entspr. Funktionen zur Verfügung, die von anderen Teilen der Prozessverwaltung des Betriebssystems aufgerufen werden. Prof. W. Burkard 67 Prof. W. Burkard 68 Stichworte Stichworte Im Rahmen der Prozessverwaltung eines Betriebssystems dient der Dispatcher dazu, bei einem Prozesswechsel dem derzeit aktiven Prozess die CPU zu entziehen und anschließend dem nächsten Prozess die CPU zuzuteilen. Notizen Notizen Die Entscheidung, welcher Prozess der nächste ist, wird vom Scheduler im Rahmen der Warteschlangenorganisation getroffen 67 68
    • Copyright(C) by Foxit Software Company,2005-2007 Scheduling Zielkonflikte beim Scheduling Sind mehrere Prozesse rechenbereit, muß das Betriebsystem den Prozeß bestimmen, der Alle Scheduling-Strategien versuchen, gewisse Ziele zu verwirklichen: als nächster die CPU erhält. Auslastung der CPU s ===> Dieser Teil des Betriebssystems wird SCHEDULER genannt. Dieses Betriebsmittel ist meistens am wenigsten vorhanden, also will man es möglichst effizient gebrauchen.  Ziel ist 100%-ige Auslastung, (normal sind 40% - 90%) ===> Den angewendeten Algorithmus nennt man SCHEDULING-ALGORITHMUS. Durchsatz (Throughput) s Die Zahl der Prozesse pro Zeiteinheit, die das System abwickelt soll maximal zu bewältigende Aufgabe: Fairness s In Mehrbenutzer-Timesharing-Systemen mischen sich unterschiedliche Anwendungen: Keine Bevorzugung eines Jobs, sofern nicht ausdrücklich gewünscht - interaktive Anwendungen, die ständig mit dem Anwender kommunizieren Ausführungszeit s - nicht-interaktive Anwendungen, die ständig im Hintergrund wirken (z.B. Email) soll minimal sein. Umfasst die Zeit von Jobstart bis Ende inkl. aller Wartezeiten etc. Edited by Foxit Reader - Stapeljobs werden asynchron (im Hintergrund) von Anwendern angestoßen Wartezeit s For Evaluation Only. Problem: in der Bereit-Liste soll minimal sein. Ist als einzigste direkt vom Scheduler beeinflussbar !!! widersprüchliche Forderungen nach Fairneß, Effizienz, Antwortzeit, Verweilzeit, Durchsatz Antwortzeit (response time) s Zeit zwischen einer Eingabe und der Reaktion durch das System. Muss für interaktive Merke: Anwendungen unterhalb der menschlichen Wahrnehmungsgrenze liegen. Ein Scheduling-Algorithmus, der einen Job-Typ bevorzugt, benachteiligt andere Job-Typen Realzeit s (Da die CPU-Zeit endlich ist, muß die einem Anwender vermehrt gegebene Rechenzeit bei Garantierte Einhaltung der von Anwendungen vorgegebenen Realzeitanforderungen den anderen eingespart werden) Prof. W. Burkard 69 Prof. W. Burkard 70 Stichworte Stichworte Ein Prozess-Scheduler (Scheduler = Steuerprogramm) regelt die zeitliche Ausführung mehrerer Prozesse in Betriebssystemen. Prozess-Scheduler kann man grob in unterbrechende (preemptive) und nicht unterbrechende (non preemptive, auch kooperativ genannt) aufteilen. Nicht unterbrechende Scheduler lassen einen Prozess, nachdem Notizen Notizen ihm die CPU einmal zugeteilt wurde, solange laufen, bis dieser diese von sich aus wieder freigibt oder bis er blockiert. Unterbrechende Scheduler teilen die CPU von vornherein nur für eine bestimmte Zeitspanne zu und entziehen dem Prozess diese daraufhin wieder. Man kann verschiedene Systeme unterscheiden, in welchen jeweils verschiedene Anforderungen an den Scheduler gestellt werden: 69 70
    • Prozeß Prozeß Prozesszustände und Übergänge ist ist noch nicht Wie bekommt das BS die CPU ? am Beispiel Linux / Unix nicht mehr existent existent Ausgangslage blockiert Warte auf Ereignis mit der Ausführung eines Tasks durch eine CPU übernimmt die zugehörige Erhalte Signal terminiert Anwendung die Kontrolle über den Prozessor Erzeugt (fork() Prozeß Problem zugeteilt exit() idle bereit aktiv ist ein non-preemptive entzogen Wie kann die Systemsoftware, also die Prozesse, die das Betriebssystem „Zombi“ darstellen, wieder die Kontrolle über die CPU bekommen? drei Lösungen Warte auf Eltern weitermachen gestoppt • 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“. • Durch Aufruf des System-Calls fork() wird vom laufenden Task (von sich selbst!) eine • Der laufende Prozess gibt die CPU „freiwillig“ auf, z.B. durch den Aufruf einer Kopie gezogen und in die Bereit-Liste eingetragen ( quasi „Zellteilung“ bei Prozessen ) Betriebssystemfunktion „Ich will/muss jetzt warten“ • Ein asynchroner Hardware-Interrupt trifft die CPU und die zugehörige Service- • Dann gibt es zwei fast identische Prozesse, die beide aus dem fork()-Aufruf Routine ist Teil des Betriebssystems zurückkehren Erkenntnis • Der Unterschied liegt im Rückgabewert von fork() : der Kindprozess erhält 0 zurück • Tritt keiner der drei Fälle ein, erlangt eine Anwendung das Ausführungsmonopol und erkennt daran, dass er der „Ableger“ ist. Der Elternprozess erhält die PID des auf der CPU. Nutzt das BS Möglichkeit 3, so haben wir preemptives Scheduling, Kindes und kann z.B. auf das Ende (exit()-Aufruf) des Kindes warten sonst non-preemptives Scheduling  besondere Gefahr durch „schlechte ( durch waitpid(PID) ) Programme“ preemptive Prof. W. Burkard 71 Prof. W. Burkard 72 Stichworte Stichworte Notizen Notizen 71 72
    • Erzeugung und Vernichtung eines Prozesses Zombis unter Linux / Unix am Beispiel Linux / Unix • Alle Prozesse in Unix stammen direkt oder indirekt von einem einzigen Prozess ab, Kindprozess Vaterprozess dem init-Prozess mit der PID = 1 ... ... PID = fork() PID = fork() • Alle Prozesse stehen also in einer Hierarchie zueinander // Wer bin ich ? // Wer bin ich ? If ( PID == 0 ) If ( PID == 0 ) • Beim „Sterben“ eines Kindprozesses wird der Elternprozess benachrichtigt { // ich bin das Kind { // ich bin das Kind exec(“programm.exe“) exec(“programm.exe“) • Ist beim Ende des Kindes der Elternprozess nicht mehr existent, wird init benachrichtigt ... ... Kindprozess exit(); exit(); läuft in Elternprozess • In der Zeit zwischen dem exit()-Systemaufruf und dem Akzeptieren der Nachricht ... ... das if überspringt if darüber beim Elternprozess gelangt der Kindsprozess in einen besonderen Zustand, er } } hinein // ich bin der Vater // ich bin der Vater wird zum Zombi waitpid (PID); waitpid (PID); ... ... • Bleibt ein Prozess durch einen Fehler im Zombi-Zustand, kann er nur noch durch einen System-Neustart eliminiert werden 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 ? Prof. W. Burkard 73 Prof. W. Burkard 74 Stichworte Stichworte Notizen Notizen 73 74
    • Prozesszustände und Übergänge non-preemptives Monoprozessor-Scheduling am Beispiel Windows 2000 • Komplexes Modell, da Kompatibilität von Neumann vorausgesetzt Es gibt nur eine CPU q swap out zu vielen Prozessmodellen angestrebt transition waiting Die Prozesse werden vom BS nicht unterbrochen, geben die CPU also q • Spezielle Ausprägungen werden in entweder explizit freiwillig oder implizit durch Starten einer EA-Aktivität frei te le den NT-Subsystemen gekapselt mp swap in wait on object co ait Einfachstes Verfahren: FCFS = First Come, First Serve ! • Zur Erzeugung eines Tasks gibt es w Exe nur einen einzigen Systemaufruf com cution Teilt den Prozessor in der Reihenfolge des Auftragseingangs zu q preempt ready running pl e NTCreateProcess() bei dem die tes Einfache Schlangen-basierte Implementierung: Task am Schlangenkopf erhält stets die CPU q t ar Initialisierung durch entspr. pre st Kontextwechsel, wenn rechnender Task wegen EA eine blockierende BS-Funktion aufruft em q Code und der Elternprozess pt sel nach Abschluss der EA wird der Task wieder an das Schlangenende eingefügt dispatch ect angegeben werden kann   standby terminated initialized Kontextwechsel, wenn rechnender Task CPU „freiwillig“ aufgibt q • Das Subsystem schafft die Task wird SOFORT wieder am Schlangenende eingefügt, also sofortige Neubewerbung um CPU   geforderte Kompatibilität reinitialized Konsequenzen: q • Beispiel: POSIX-Subsystem mit fork(): Hohe CPU-Auslastung kann erreicht werden s POSIX-Prozess ruft über API fork()-Befehl. Dadurch wird Nachricht über Kern an das POSIX-Subsystem Alle anderen Kriterien werden aber nicht optimiert! s 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. Wartezeiten hängen sehr stark von der aktuellen Lastsituation ab s D.h. alle Systemaufrufe des POSIX-Programms werden als Nachrichten zum POSIX-Subsystem Mittlere Wartezeit u.U. sehr schlecht und Konvoi-Effekt (siehe Folgefolien!) s 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 ! Prof. W. Burkard 75 Prof. W. Burkard 76 Stichworte Stichworte Notizen Notizen 75 76
    • FCFS: Varianz bei der mittleren Wartezeit FCFS: Konvoi-Effekt Konvoi-Effekt = q Gegeben: 3 Threads mit CPU-Bursts von 24, 3 und 3 Zeiteinheiten q trotz hoher CPU-Auslastung ist die Auslastung des Gesamtsystems eher gering Mittlere Wartezeit , wenn CPU-Burst 24 zuerst dran ist: 17 (z.B. ms) q Negativer Effekt, der entsteht, wenn Threads mit langen CPU-Bursts und EA-intensive q Mittlere Wartezeit , wenn CPU-Burst 24 zuletzt dran ist: 3 (z.B. ms) q Threads kombiniert auftreten. Kurzlaufende IO-Prozesse können nicht genügend EA-Aktivitäten anstoßen, stehen q wieder in der Warteschlange wenig nebenläufige EA im System ! (0+24+27) / 3 = 17   24 msec 3msec 3msec (0+3+6) / 3 = 3 3msec 3msec 24 msec Prof. W. Burkard 77 Prof. W. Burkard 78 Stichworte Stichworte - wenn kurze Prozesse abgehandelt werden, werden wenn viele in blockiert und wenige in bereit sie immer wieder hinter dem Langen hängen bleiben = Gesamtsystem gut ausgelastet (CPU + IO) -> schlechte Auslastung wenn viele bereit, aber wenige blockiert - wenn die Prozesse länger in IO arbeiten bleibt = nur CPU gut ausgelastet die Warteschlange hinter dem Langen leer Notizen Notizen wenn quot;vielequot; Prozesse bereit sind ist quot;nurquot; die AKTIV (einer) CPU ausgelastet -> Rest des Systems nicht -> Konvoi-Effekt: schnelle, kurze Prozesse können nicht I-O-Aktivitäten ausführen wegen großem, BEREIT langen Prozess => miserable Auslastung (wenige) BLOCKIERT 77 78 (viele)
    • Shortest Job First Kooperatives Scheduling die FCFS-Variante unter Windows 3.x die Grundlagen Reihenfolge wird „kooperativ“ zwischen den aktuell ausgeführten Tasks ermittelt q Prozessorzuteilung in der Reihenfolge wachsender CPU-Bursts q Im Zentrum steht eine für alle Anwendungen globale Ereignisschlange q Task mit dem kleinsten nächsten CPU-Burst erhält die CPU q Grafiksystem erzeugt Ereignisse (Benutzereingaben durch Maus/Tastatur, q Gibt es davon mehrere, wird FCFS verwendet q Statusänderungen von Fenstern, ...), stellt diese an Ende der Ereignisschlange SJF versucht offensichtlich den Konvoi-Effekt von FCFS zu eliminieren q Auch jede Anw. kann Ereignisse über zentrale Schlange an andere Anw. „senden“ q hohe Auslastung des Gesamtsystems   SJF ist beweisbar optimal bezüglich der Wartezeit der Tasks! Jedes Ereignis ist an bestimmten Prozess adressiert der Ereignis-Empfänger q q   SJF minimiert die Verweilzeiten der Jobs/Tasks im System q Scheduler wählt stets den Prozess, der am Schlangenkopf der E.-Empfänger ist q Konsequenz: gute Antwortzeiten sind nur möglich, wenn ALLE Anwendungen q Beispiel: Job A = 8 Minuten, Job B= 6 Minuten, Job C+D je 4 Minuten kooperativ sind, d.h. häufig die Kontrolle an andere Anwendungen abgeben 86 4 4 Min. ABCD 44 6 8 Min. CDBA Verweilzeiten: A= 8 Min. A=22 Min. B=14 Min. B=14 Min. C=18 Min C= 8 Min. SJF D=22 Min. D= 4 Min. Durchschnitt: 15,5 Min. 12 Min. Prof. W. Burkard 79 Prof. W. Burkard 80 Stichworte Stichworte Verweilzeit = Wartezeit + Bearbeitungszeit ...ist ein weiteres Verfahren, das nicht für Mehrbenutzersysteme geeignet ist. SJF lässt sich in Fällen einsetzen, in denen die benötigte Rechenzeit für einzelne Aufgaben aus Erfahrungswerten gut vorhergesagt werden Notizen Notizen kann. Ein Nachteil ist, dass große Prozesse u.U. niemals die CPU zugeteilt bekommen, wenn sich Vgl.: An der Kasse im Supermarkt: immer kürzere Jobs vordrängeln. Oma hat viel, ich wenig Oma lässt mich durch - jede Anwendung gibt die CPU kooperativ wieder frei - bei Endlosschleife einer Anwendung quot;hängtquot; das das gesamte System -> Windows quot;aufgehangenquot; 79 80
    • Shortest Job First Highest Response Ratio Next die Probleme HRN shortest SJF ist nur bedingt realisierbar ! q job first Warum ? die Länge des CPU-Bursts ist vorher nicht bekannt! aufgrund vergangener q   Man schätze die Antwortzeit eines Tasks q Lösung: Näherungsweise Bestimmung (Approximation) der Dauer durch q Erfahrungswerte (im + gemessene Dauer des letzten Bursts und dessen damaliger Schätzwert s Man schätze die Bedienzeit eines Tasks q Hauptspeicher abgelegt), bonuspoints ... und Bildung eines Mittelwertes dazwischen: s Man bilde den Quotienten Antwortzeit / Bedienzeit q Burst geschätzt,n+1 = α * Burst gemessen,n + (1- α) * Burst geschätzt,n werden neue geschätzt SJF Der Faktor α liegt zwischen 0 und 1 und bestimmt, Man wähle den Prozess mit dem größten Quotienten q s welchen Einfluss der zurückliegende Burst auf die Schätzung hat es werden Prozesse mit kurzen Bedienzeiten bevorzugt SJF existiert in nicht-preemptiver und preemptiver Variante q   die Wartezeit von Tasks mit langen Bedienzeiten werden begrenzt, Nicht-preemptive Variante: Während Prozess P2 läuft wird P1 rechenbereit und der q   Stand von P2 wird kalkulierte CPU-Burst von P1 ist kürzer als die Restlaufzeit von P2: da bei einer ständigen Benachteiligung deren Antwortzeit zunimmt! P1 kommt erst auf CPU, wenn der P2-Burst zu Ende ist (EA-Operation, Aufgabe der CPU) gespeichert und später   Preemptive Variante, Situation wie oben: q weiterverarbeitet Betriebssystem entzieht sofort P2 die CPU und lässt P1 laufen. Noch ein Problem mit SJF: Starvation (Verhungern): bereiter Task kommt nie dran, wenn q viele kurze Prozesse im System zuströmen Prof. W. Burkard 81 Prof. W. Burkard 82 Stichworte Stichworte nonpreemtive->großer Prozess wird fertiggestellt Antwortzeit: Bedienzeit + Wartezeit und danach der erst später hinzugekommenen kurze Prozess Bedienzeit: CPU-Zeit preemetive->großer P. wird sofort unterbrochen wenn kurzer kleiner P. in Schlange kommt Notizen Notizen wenn ich nicht warten muss 1 manche Prozesse können quot;verhungernquot; (to starve), +1 wenn ich nicht drankomme kommen nie dran Lösung von Starvation! deswegen gibt es Prioritätsliste, wenn man immer Bonuslösung nach hinten geschoben wird, steigt die eigene Priorität, damit man irgendwann drankommt 81 82
    • Einem Prozess wird die CPU =Ringel Reihe für eine bestimmte (kurze) Zeitspanne zugeteilt. Danach wird der Prozess wieder Preemptive Scheduling Verfahren hinten in die Warteschlange Round-Robin First Come, First Serve Non-preemptiv Priority-Scheduling eingereiht. grundlegende Idee: Die Prozesse sind unterschiedlich wichtig einfaches Scheduling-Verfahren, fair, weit verbreitet ( RR = preemptives FCFS ) q und sollen daher öfter bzw. seltener die CPU erhalten. Jeder Prozeß erhält ein Zeitintervall Rechenzeit (Quantum) q Lösung: Jedem Prozeß wird eine Priorität zugewiesen, Nach Ablauf des Quantum wird der Prozessor entzogen und dem nächsten zugeteilt q Prozesse altern der ausführbereite Prozeß mit der höchsten Priorität erhält die CPU Wenn ein Prozeß blockiert oder zu Ende ist vor dem Ende des Quantums, q Problem: sehr lange CPU-Nutzung hochpriorer Prozesse, Verhungern von Jobs erfolgt ebenfalls sofort ein Prozeßwechsel ( Kontextwechsel, Contextswitch) Lösung: dynamisches Ändern der Priorität während der Laufzeit Aging Implizite Annahme: Alle Prozesse sind gleich wichtig! q   Problem: Wie lange soll das Quantum sein ??? (heute üblich 10 – 20 msec) q statische Prioritätszuweisung erfolgt durch den Anwender / Administrator z.B. personengebunden ( Professor - Assistent - Student ) Liste der ausführbaren Prozesse ... dynamische Prioritätszuweisung erfolgt durch das Betriebssystem ... vor dem Kontextwechsel ... nach dem Kontextwechsel z.B. I/O-intensive Prozesse werden in der Prioriät erhöht Kopf der rechenbereite Proz A Proz B Proz I Proz P Proz T Proz B Proz I Proz P Proz T Proz A Prioritätsklassen: Warteschl. Prozesse Einteilung der Prozesse in Prio.3 Px Pz höchste Priorität verschiedene Klassen von Prioritäten Prozeß nächster Prozeß nächster ==> Prioritäts-Scheduling zwischen den Klassen Prio.2 Pk Ps Pn mit Prozeß mit Prozeß ==> Round-Robin innerhalb der Klassen CPU CPU niedrigste Priorität Prio.1 Pa Prof. W. Burkard 83 Prof. W. Burkard 84 Stichworte Stichworte First Come, First Serve Nutzungsdauer der CPU: Bsp.: 20ms Quantum +2ms Entscheidungszeit Bsp.: Kindergarten 20/22=0,9=90% normale Kinder - niedrige Priorität gestörte Kinder - hohe Priorität mit der Wartezeit geht die Anwortzeit in die Höhe Notizen Notizen Problem: Quantum Verkürzung: CPU-Auslastung sinkt Prioritätswert im PCB (prozess control block) (ineffizient), viele Prozesse werden nicht fertig Quantum Verlängerung: Viele Prozesse könnten früher fertig sein; Wartezeit für andere wird größer => Antwortzeit CPU-Auslastung geht 83 84 scheinbar höher
    • direct memory access Preemptives Prioritäts-Scheduling und Multiple Warteschlangen dynamic priority Round Robin (DPRR) grundlegende Idee beim preemptiven Prioritäts-Scheduling: Es gibt nur einen Hauptprozessor CPU in einem Monoprozessorsystem q wie bei der non-preemptiven Variante Es gibt meist mehrere DMA-fähige Controller für schnelle EA-Geräte q jetzt aber neu: das sind letztendlich eigene, spezialisierte Prozessoren, die man als q Unterbrechung der aktuellen Prozessorzuordnung unmittelbar dann   unabhängige Betriebsmittel betrachten kann aus blockiert wenn ein neuer Task mit höherer Priorität erzeugt wird s Idee: Einrichten einer separaten Warteschlange für jeden DMA-Controller q in bereit s wenn ein deblockierter Task mit höherer Priorität erneut rechenbereit wird Konsequenz: Dispatching in diesem System bedeutet Umhängen von Jobs aus einer q DPRR: Warteschlange in eine andere (mit kurzen CPU-Bursts, die dazwischen liegen) Erweiterung von RR durch eine vorgeschaltete Stufe s Jeder Job hat eine bestimmte Priorität s Hauptprozessor CPU In dieser Vorstufe gibt es eine prioritätsgesteuerte Warteschlange für die Jobs s Die Priorität der Jobs in der Warteschlange wächst nach jeder Zeitscheibe, in der s DMA-Contr. EA-Festplatte 1 sie nicht berücksichtigt wurden Wird die Schwellenpriorität des eigentlichen RR-Verfahrens erreicht, wird der Job s EA-Festplatte 2 DMA-Contr. in die Hauptwarteschlange des RR einsortiert Folge: RR-Verfahren wird direkt nicht verändert, aber trotzdem unterschiedliche s EA-Grafikkarte DMA-Contr. Bearbeitung der Jobs nach Systemprioritäten DMA-Contr. EA-CDROM Prof. W. Burkard 85 Prof. W. Burkard 86 Stichworte Stichworte Warteschlange logisch gesehen ist ein Prozess blockiert, wenn er einen IO-Zugriff macht -> hier Warteschlange für jedes IO-Gerät Notizen Notizen kein Verfahren - nur Idee zusätzliches Anstehen an DMA-Controller 85 86
    • Auslagerung: - swap in / out Multilevel-Scheduling Zweistufiges Scheduling und Idee Windows- Multilevel-Feedback-Scheduling verfahren Kategorisierung der Jobs, d.h. für jede Job-Kategorie gibt es eine eigene q Das zweistufige Scheduling transportiert Prozesse zwischen Hauptspeicher und Warteschlange Festplatte und wählt nur aus den eingelagerten Prozessen zur Ausführung aus. Jede Warteschlange hat ihre eigenes Scheduling-Verfahren q Ein übergeordnetes Scheduling-Verfahren wechselt zwischen den Warteschlangen q Scheduler der unteren Ebene: wählt zwischen den eingelagerten Prozessen aus Können Jobs bei längerer Wartezeit in eine Warteschlange höherer Priorität q Scheduler der oberen Ebene: tauscht Prozesse von RAM auf DISK und umgekehrt wechseln spricht man von multilevel-feedback scheduling Hauptspeicher Scheduler (obere Ebene): Prio 0  Systemprozesse Festplatte Prozesse lagert unter 1-4 Prozesse ein Prio 1  Interaktive Jobs 1: a CPU Scheduler (untere Ebene): 2: b Prio 2  allgemeine Jobs 3: k Prozessor 4: s Prio 3  rechenintensive wählt Prozesse aus 1-4 Jobs Prof. W. Burkard 87 Prof. W. Burkard 88 Stichworte Stichworte Notizen Notizen ebend: jobs haben priorität und damit in liste der obere holt ausgelagerte prozesse von HDD eingeordnet in speicher jetzt: mehrere wartschlangen (listen) mit prioriäts zuordnung und jobs werden dort eingelistet der untere nimmt nur aus Speicher übergeordnetes verfahren schiebt prozesse zw. wartelisten nach wartezeit bei multilevelfeedbackscheduling 87 88
    • Trennung von Strategie und Mechanismus Scheduling in Unix Linux Idee Zentrale Multilevel-Warteschlange (mit meist 256 Elementen) q Der Scheduler des Betriebssystems kennt nicht die Aufgabe eines Prozesses Jedes Element dieser zentralen Warteschlange ist selbst wieder eine q ==> er kann also auch nicht anhand der prozeßspezifischen Aufgabenstellung Warteschlange, die nach Round Robin betrieben wird den Prozessor zuteilen ! Scheduler verwendet Aging-Verfahren um die Benachteiligung von q Idee: Betriebssystem stellt eine Schnittstelle (System-Calls) zur Verfügung, dialogorientierten Anwendungen durch RR zu verhindern: durch die Prozesse die Prioritäten anderer Prozesse beeinflussen können. Erhöhung (Verschlechterung!) der Priorität eines Tasks   proportional zu seiner Prozessorauslastung (multilevel-feedback) d.h. Umhängen in Resultat: Der Mechanismus des Kontextwechsels bleibt weiterhin im Betriebssystem andere Queue und den Anwendungsprozessen verborgen, ABER ==> Anwendungsprozesse können nach eigenen Verfahren/Algorithmen die Prozessorzuteilung steuern UNIX-Scheduler durchsucht Liste oben bei 0 q PCB PCB 0 beginnend und startet ersten gefundenen Job 1 Jeder Task bekommt eine initiale Priorität Real time q PCB PCB 2 Beispiel: Durch Warten steigt die Priorität q ... Ein Datenbanksystem bestehe aus einem Vaterprozeß und einer Reihe von 127 „nice“ – Kommando erlaubt Usern ihre q Kindprozessen für diverse Einzelaufgaben (Kommunikation mit Anwendungen, oder 128 Anwendungen in der Priorität zu senken PCB PCB System Caching der Daten, Locking-Mechanismen, Garbage-Collection) Der Vater kann ... zu 177 dann z.B. die Priorität der Garbage-Collection reduzieren, wenn das DB-System 178 viele Anfragen zu bearbeiten hat. erhöhen User ... 255 Prof. W. Burkard 89 Prof. W. Burkard 90 Stichworte Stichworte wie im bps. regeln die Anwendungen die Priorität ... Schnittstellen zum Scheduling -> Optimum! Notizen Notizen arbeitet nach multilevelscheduling problem: BS kann nicht entscheiden was für eine - innerhalb dessen roundrobinprinzip priorität prozess hat lösung: prozess entscheidet selbst problem des ganzen: zu unsicher! 89 90
    • Scheduling in Windows Überblick Echtzeit-Scheduling Echtzeitsysteme fordern die Einhaltung von Zeitvorgaben q ebenfalls Multilevel-Scheduling, wobei Echtzeitjobs möglich, jetzt aber nur 32 Prioritäten 0-31 q Diesem Scheduling-Ziel werden alle anderen Aspekte untergeordnet q Priorität 0 = niedrigste Priorität, 31 = höchste Priorität q Die Zeitvorgaben werden immer von der jeweiligen Anwendung definiert: Man gibt vor, q Quantum Es werden Threads verwaltet, dabei ist Scheduling und Dispatching getrennt q wie lange die Anwendung im Maximalfall für die Reaktion auf einzelne Ereignisse benötigen darf. Windows 2000 unterstützt symmetrisches Multiprocessing q Beispiel Flugzeug, das von Computern gesteuert wird: wenn Ist kein Thread abzuarbeiten, läuft der spezielle Idle Thread (hat Priorität 0) q Flugdaten sind erforderlich, die in bestimmten Intervallen verarbeitet werden müssen: s Aging Jeder Thread hat eine (von der Art des Jobs abhängige) initiale Priorität: q Forderung Beschleunigungswerte in x- y- und z-Richtung alle 5 msec s Interaktive Jobs sind wichtiger als z.B. rechenintensive Jobs Werte der Drehung in die drei Richtungen alle 40 msec s Wird ein Prozess q erfüllt Außentemperatur jede Sekunde s Absolute Position des Flugzeugs alle 3 Sekunden s Dispatcher ready queue in Windows -> Real- Das Display im Cockpit wird alle 300 msec aktualisiert s Nach Ende der Zeitscheibe wird Priorität des q PCB PCB 31 Threads abgesenkt und er dementsprechend 30 Time Man unterscheidet: frisch eingereiht. Dann wird der jetzt PCB PCB Real time 29 höchstpriore Thread genommen, der auf der Strikte Echtzeitsysteme = Verletzung einer Zeitvorgabe bedeutet meist eine Katastrophe, die s ... gerade freien CPU laufen kann unter allen Umständen zu vermeiden ist (Beispiel Überdrucksignal wird verspätet umgesetzt in 16 (Prozessoraffinität=auf welchen CPUs kann Ventil öffnen  Explosionsgefahr) 15 PCB PCB Thread t laufen) Schwache Echtzeitsysteme = Verletzung einer Zeitvorgabe ist nach Möglichkeit zu vermeiden, s ... variable Wird Thread mit Realzeitprio. grösser der q hat aber nur störenden/ärgerlichen Charakter, keine katastrophalen Konsequenzen (Beispiel Priorität eines laufenden Thread bereit  Interrupt an Behandlung multimedialer Daten bei denen Verzögerungen und Verschiebungen zwischen 2 die entsprechende CPU Threadwechsel Ton- und Bildsignal bis zu einem gewissen Grad toleriert werden können) 1   0 Idle thread Prof. W. Burkard 91 Prof. W. Burkard 92 Leerlauf im Taskmanager Stichworte Stichworte symmetrisches Multiprozessing: 1) Unterstützung mehrer Prozessoren schwache Echtzeit-Systeme können 2) alle gleichwertig Forderungen nicht erfüllen assymmetrisches ,, 1) einer kümmert sich ums NUR um BS -z.B. Windows -bei brennen 2) die anderen/der andere -bei wiedergabe um den Rest Notizen Notizen für technische Prozesse ist man kann keinen striktes Echtzeitsystem von nöten! Idle-Prozess auf Real-Time setzen Scheduling=Strategie Dispatching - dispatcher stellt funktionen zur durchführung der zustandsübergänge zur verfügung 91 92
    • Formalisierung der Zeitvorgaben Gängige Scheduling - Ansätze für Echtzeit! Allgemein umfasst eine Echtzeitanwendung eine Menge von Einzelaktivitäten, Polled Loop q die sporadisch oder periodisch auftreten können: CPU 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 sporadisch ∆e   ∆p Interruptgesteuerte Systeme q r d CPU 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 ∆h periodisch ∆e ∆e Interrupts häufen (Interrupt in einem Interrupt, d.h. niederpriores Gerät kommt nicht mehr durch) Earliest Deadline First q r3 = d2 r1 r2 = d1 Abarbeitung 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 Hierfür gibt es die Kenngrößen: Minimal Processing Time First q Abarbeitung des Prozesses mit der minimalen restlichen Bedienzeit, also SJF. q Bereitzeit (r ready time) = Frühestmöglicher Ausführungsbeginn s Konsequenz: eventuell wird kurzer unwichtiger Prozess vorgezogen Frist ( d deadline) = Spätester Zeitpunkt für die Beendigung einer Aktivität s Rate-Monotonic-Scheduling Kenngrößen für q Ausführungszeit s Haben alle Tasks feste Perioden, so vergebe man feste Prioritäten, wobei die höchste Priorität der ∆ (∆e execution time) = Worst-Case-Abschätzung für das benötigte Zeitintervall Echtzeitsystem Task mit der höchsten Frequenz erhalte (Details siehe Folie 97) zur Erledigung der Aktivität Foreground/Background Scheduling q ∆ Periode (∆p ) = In welchen zeitlichen Abständen wiederholt sich die s Unterteile auch im Echtzeitsystem die Tasks in drei Kategorien: realtime-kritisch, realtime- Aktivität unkritisch, zu-erledigen-wenn-Zeit-verfügbar. Optimiere für jede Kategorie separat. Phase ( ∆h ) = Versatz des Ausführungsbeginns relativ zum s Periodenanfang Prof. W. Burkard 93 Prof. W. Burkard 94 Stichworte Stichworte Notizen Notizen 93 94
    • Earliest Deadline First (EDF) Preemptives Earliest Deadline First (EDF) Echtzeit-Scheduling-Verfahren bei dem immer dem Task mit der am nächsten in der Zukunft Preemptives EDF kann sich auf die Tasks konzentrieren, q q liegenden Frist die CPU gegeben wird, deren Bereitzeit bereits erreicht bzw. überschritten ist. Setzt man Frist = Priorität, so hat man im Prinzip ein prioritätsbasiertes Scheduling q Warum ? Weil durch die Unterbrechbarkeit bereits laufender Tasks „Korrekturen“ q Non-preemtiv: Task bleibt bis zu einer EA oder freiwilligen Aufgabe auf der CPU q jederzeit möglich sind. non-preemtiv Preemptiv: Kontextwechsel erfolgt, sobald ein Task mit näher in der Zukunft liegenden Frist q In unserem Beispiel gilt somit: rechenbereit wird (z.B. Bereitzeit eines Tasks mit kürzerer Deadline wurde überschritten) Es startet P1, der zum Zeitpunkt 2 endet. s Non-preemptiv-Variante ist nicht optimal, da sie nicht immer eine funktionierende q Jetzt wird aber P3 gestartet, aber zum Zeitpunkt 4 unterbrochen, um dann P2 auf die s Reihenfolge findet, selbst wenn es diese gibt ! Beispiel: CPU zu lassen P2 endet fristgerecht und der „Rest“ von P3 wird ebenfalls fristgerecht zu Ende s gebracht. bei preemtiv würde das stück p3 laufen Prof. W. Burkard 95 Prof. W. Burkard 96 Stichworte Stichworte auch aber mit optimal Verwaltung Notizen Notizen 95 96
    • Rate-Monotonic-Scheduling (RMS) RMS an einem Beispiel (I) Verbreitetes Verfahren im Echtzeitbereich q Gegeben seien zwei Tasks t1 und t2, wobei gelte: t1 habe Periode 50 msec und Ausführungszeit q 25 msec für t2 gelte: Periode sei 100 msec und Ausführungszeit 40 msec Basiert auf statischen Prioritäten q Eignet sich besonders zum Scheduling in periodischen Systemen q Daraus folgen die Prozessorauslastungen sind t1 = 50% und t2 = 40%, q RMS also Gesamtprozessorauslastung 90%. Wird das gehen? RMS ordnet Prioritäten in Abhängigkeit von der Periode der einzelnen Aktivitäten zu q Die kürzeste Periode erhält die höchste Priorität hochfrequente Aktivitäten werden bevorzugt q Ansätze: in Fall a sei t1 wichtiger als t2 ( Fall b umgekehrt ) q   minimale Verzögerung für hochfrequente Tasks, damit Minimierung der Wahrscheinlichkeit q   einer Fristverletzung für diese Tasks Aber: verstärkte Zerstückelung niederfrequenter Aktivitäten aufgrund ständiger Kontextwechsel q hin zu Tasks mit höherer Priorität Die Prozessorauslastung eines Tasks ist dabei das Verhältnis ∆e / ∆p q Die Gesamtprozessorauslastung ist die Summe aller Prozessorauslastungen aller Tasks q Es wurde bewiesen, dass bei einer Gesamtprozessorauslastung von unter 70 % (genauer ln 2) q 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 q Zeitvorgaben eingehalten werden können. Prof. W. Burkard 97 Prof. W. Burkard 98 nicht RMS Stichworte Stichworte Rate Monotonic Scheduling (RMS) ist ein Prioritätsscheduling- Verfahren für unterbrechbare, periodische Jobs. Es wird häufig in Echtzeit-Systemen eingesetzt. Die Prioritäten werden statisch nach der Periodendauer eines Jobs festgelegt: je kürzer die Periodendauer eines Jobs, desto höher ist seine Priorität. Notizen Notizen Aperiodische Jobs können innerhalb eines fiktiven periodischen Jobs ausgeführt werden. Periode 50ms = 50% Auslastung Ausführungszeit 25ms 97 98
    • RMS an einem Beispiel (II) Nun gelte aber für t2: Periode sei 75 msec und Ausführungszeit 30 msec q Wie sieht die Lösung aus ? q Was passiert wenn die Prioritäten vertauscht werden ? q Warum ist das so ?  über 70% Gesamtauslastung q Prof. W. Burkard 99 Stichworte RMS versagt alles unter einer Prozessorauslastung von 70% geht, darüber kann RMS versagen (muss aber nicht) Notizen CPU-Gebrauchszeit Bearbeitungszeit = CPU-Auslastung deterministisch - bei wiederholter gleicher Eingabe immer gleiche Ausgabe bei endlicher Zeit 99
    • Interprozess-Kommunikation Race conditions an einem Beispiel Durch Nutzung gemeinsamen Speichers (egal, ob Hauptspeicher oder Plattenplatz) können In einer Warteschlange des BS seien mehrere Prozesse eingehängt und warten auf eine Prozesse miteinander kommunizieren, indem sie Daten austauschen. Bearbeitung: Für das Entfernen von B gilt: Problem: hierbei entstehen zeitkritische Abläufe (race conditions) Für das Einhängen des Prozesses A gilt: • Lese den Anker: PointToB • Lese den Anker: PointToB • Lese den NextZeiger: PointToC Def.: Eine Situation, in der mindestens zwei Prozesse auf gemeinsam genutzte Daten zugreifen, • Setze den NextZeiger: Point ToB • Setze den Anker: PointToC und die Ergebnisse von der zeitlichen Reihenfolge des Zugriffs abhängen, nennt man • Setze den Anker: Point ToA zeitkritischen Ablauf (race condition) Was passiert, wenn die Operationen nicht in einem Stück durchgeführt werden ? Spooler 1 Beispiel: gespoolte Druckausgabe 2 test.c out = 2 Idee: in einer Tabelle stehen alle zu 3 note.xls in = 5 druckenden Dateien, Variable out zeigt auf die nächste zu druckende Datei, 4 dipl.doc Variable in zeigt auf nächsten 5 kase.xls Prozeß A freien Tabellenplatz. Zwei Prozesse 6 folie.ppp A und B wollen nahezu gleichzeitig 7 etwas ausdrucken. Prozeß B Katastrophe: BS wechselt von A nach B 8 VOR dem vollständigen Ende des Zugriffs !!! Prof. W. Burkard 100 Prof. W. Burkard 101 Stichworte Stichworte Notizen Notizen 100 101
    • aktives Warten zeitkritische Bereiche Interrupt beide versuchen Def: Derjenige Teil eines Prozesses, in dem der Zugriff auf gemeinsam benutzten Speicher s = (schlechte) Lösung des Problems des wechselseitigen Ausschlusses stattfindet, wird als (zeit-)kritischer Bereich des Prozesses bezeichnet. auf einmal auf knopf zu drücken Ansatz 1: Sperren aller Unterbrechungen beim Eintritt in einen kritischen Bereich Idee: Probleme mit zeitkritischen Abläufen lassen sich vermeiden, wenn sich niemals zwei oder mehr Prozesse gleichzeitig in einem kritischen Bereich befinden. - sinnvolle Lösung für diverse Prozesse des Betriebssystems ==> wechselseitiger Ausschluß <== - gefährliche Lösung, bei Nutzung durch Anwenderprozesse Ansatz 2: Eine globale Sperrvariable kann die Werte 0 oder 1 annehmen Für ein funktionierendes System fordern wir also: Nur wenn Sperrvariable=0 geht ein Prozeß in den kritischen Bereich und setzt als erstes die Variable auf 1. 1. nur ein Prozeß darf sich zu einem Zeitpunkt in einem kritischen Bereich befinden Problem: siehe Beispiel “gespoolte Druckausgabe” 2. Nur durch das Eintreten in einen kritischen Bereich blockiert ein Prozeß andere Prozesse Ansatz 3: striktes Alternieren durch aktives Warten: Jeder Prozeß hat einen 3. Kein Prozeß soll unendlich lange warten müssen, bis er in seinen kritischen Bereich darf Kennwert W und wartet darauf, daß die Schaltvariable SV diesen Wert annimmt. Nach Beenden des kritischen Bereiches wird SV weitergeschaltet, 4. kein Prozeß darf Annahmen über Prozessoranzahl oder Ausführungsgeschwindigkeit also: warten, bis SV == W seiner selbst oder anderer Prozesse machen Eintreten in krit. Bereich....Austreten aus kritischem Bereich SV weiterschalten wie im Amt Prof. W. Burkard 102 Prof. W. Burkard 103 Nummer ziehen Stichworte Stichworte Notizen Notizen 102 103
    • Erster Versuch zur Prozess-Synchronisation Zweiter Versuch zur Prozess-Synchronisation Wir wollen beide Prozesse in beliebiger Reihenfolge synchronisieren Die einfachste Idee zur Erreichung eines gegenseitigen Ausschlusses besteht darin, einen Prozess beim Eintreten in einen kritischen Abschnitt so lange Ein Prozess achte also nur darauf, dass der andere nicht drin ist. 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. Die Variablen drin1 und drin2 seien beide mit false initialisiert. Wo ist das Problem ? Wo ist jetzt das Problem ? Beide Prozesse können nur abwechselnd in den kritischen Bereich ! Jetzt gehen eventuell BEIDE gleichzeitig in den kritischen Abschnitt ! Warum ? Ein Prozess hindert sich eventuell selbst daran, ein zweites Mal in den krit. Bereich zu gehen!!! Hilft es die beiden Zeilen des ersten grauen Bereiches zu vertauschen?   Prof. W. Burkard 104 Prof. W. Burkard 105 Stichworte Stichworte Notizen Notizen 104 105
    • Petersons Lösung in Java / C / C++ aktives Warten: Petersons Lösung (von 1981) #define FALSE O Die Variablen Interesse1 und Interesse2 sowie dran sind globale, gemeinsame Variablen q #define TRUE 1 Die Variablen Interesse1 und Interesse2 sind beide mit false initialisiert. q #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 */ } kritischer bereich Wie kommt ein Prozess voran, wenn der andere kein Interesse bekundet hat ? void leave_region (int prozess) /* prozess, der den Bereich verläßt */ Wie ist der Ablauf, wenn beide nahezu zeitgleich (im ersten grauen Bereich) Interesse bekunden ? { interessiert[prozess] = FALSE; /* gibt das Verlassen des krit. Bereiches bekannt */ Prof. W. Burkard 106 } Prof. W. Burkard 107 Stichworte Stichworte Ansatz 3 funktioniert, aber sehr uneffizient und unpraktikabel wichtig!!! Notizen Notizen 106 107
    • Sleep und Wakeup das Erzeuger-Verbraucher-Problem wichtige Erkenntnis: ... oder: das Ärgernis mit den verlorenen Weckrufen Durch aktives Warten wird Prozessorzeit verschwendet! (Prozesse prüfen aktiv in einer Schleife das Eintreffen einer Änderung) Zwei Prozesse benutzen einen Ringpuffer, der eine schreibt Daten hinein, der andere ließt diese aus. Dazu kommt das Prioritäteninversionsproblem: Ein höher priorisierter Prozeß H wartet unendlich lang auf das Verlassen des krit. N Elemente Ist der Puffer voll und der Schreiber hat etwas zum eintragen, Bereiches eines niedriger priorisierten Prozesses L, da der Scheduler den legt er sich schlafen und läßt sich vom Verbraucher maximal rechenbereiten Prozeß H stets vorzieht => L kommt nicht mehr zum Zug und damit wecken, wenn jener ein Element entfernt hat. (Denn dann nicht aus dem kritischen Bereich im Ring ist wieder Platz im Ring) Neue Idee: wartende Prozesse “gehen schlafen” (werden in den Zustand Ist der Puffer leer und der Leser soll etwas lesen, legt er sich “blockiert” gesetzt) und lassen sich nach Verbesserung der Lage wieder wecken: schlafen und läßt sich vom Schreiber wecken, wenn der etwas eingetragen hat. Aufrufender Prozeß geht schlafen ==> Funktion sleep() Prozeß mit der Nr. <n> soll aufwachen ==> Funktion wakeup(xyz) PROBLEM: Eine gemeinsam benutzte Variable ANZAHL nennt die Anzahl der im Puffer befindlichen Elemente. Der Zugriff auf diese Variable ist kritisch !! Prof. W. Burkard 108 Prof. W. Burkard 109 Stichworte Stichworte Das Erzeuger-Verbraucher-Problem ist eine klassische, abstrakt formulierte Problemstellung der Prozesssynchronisation, welche eine Regelung der Zugriffsreihenfolge auf eine Datenstruktur durch elementerzeugende (schreibende) und elementverbrauchende (lesende) Prozesse bzw. Threads Notizen Notizen thematisiert. Die Zugriffsregelung soll verhindern, dass ein verbrauchender Prozess auf die Datenstruktur zugreift, wenn die Prioritäteninversionsproblem -> Klausur? Datenstruktur keine Elemente enthält und eine Entnahme eines Elements aus der Datenstruktur somit nicht möglich ist. Ist die Aufnahmekapazität der Datenstruktur beschränkt, so soll die Zugriffsregelung ferner verhindern, dass ein erzeugender Prozess auf die Datenstruktur zugreift, wenn die Aufnahmekapazität der Datenstruktur bereits ausgeschöpft ist. 108 109
    • das Erzeuger-Verbraucher-Problem das Leser-Schreiber-Problem auf eine Datei dürfen gleichzeitig mehrere Prozesse lesend zugreifen, ABER: q Erzeuger-Algorithmus: wenn ein Prozeß schreibend zugreift, darf kein anderer Prozeß (lesend oder schreibend) q 1. Nimm nächstes Element agieren. 2. Lies die Variable Anzahl Die beiden Lösung 1: (Bevorzugt die Leser-Prozesse) 3. Wenn Puffer voll, dann “Schlafen-gehen” “gefährlichen” Schreiber: Sperrt Datei, schreibt Daten, gibt Datei frei 4. Element in den Puffer eintragen Stellen, hier Leser: (Nur der erste Leser!! :) sperrt die Datei 5. Anzahl um 1 erhöhen darf der ließt die Daten 6. Wenn die Anzahl jetzt 1 lautet, “Leser-wecken” Scheduler nicht (Nur der letzte Leser!! :) gibt Datei wieder frei den Prozeß Leser-Algorithmus: wechseln, sonst Lösung 2: (Bevorzugt Schreiber-Prozesse) 1. Lies die Variable Anzahl bricht die grundlegendes Konzept: 2. Wenn Puffer leer, “Schlafen-gehen” Synchronisation 3. Element lesen Prozesse mit Lesewunsch überprüfen die Existenz von schreibenden bzw. 4. Anzahl um 1 erniedrigen schreibwilligen Prozessen und blockieren, bis die Schlange der Schreiber leer ist. 5. Wenn Puffer jetzt einen freien Platz hat, “Erzeuger-wecken” Prof. W. Burkard 110 Prof. W. Burkard 111 Stichworte Stichworte Notizen Notizen 110 111
    • Mechanismus des Betriebssystems Semaphore: die Idee Semaphore: die Implementierung Idee 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) kritischer bereich Struktur eines Semaphors Zähler WICHTIG: q Das Überprüfen auf 0, q das Verändern des Wertes von s Zeiger auf wartende Threads/Tasks q und das Schlafengehen bzw. „Task wecken“ sind eine untrennbare, atomare Aktion des Betriebssystems!! Prof. W. Burkard 112 Prof. W. Burkard 113 Stichworte Stichworte P = DOWN V = UP bei jedem UP wird ein schlafender Prozess geweckt Notizen Notizen Semaphore = wie ein Schalter - mit Hilfe von Integer Variablen (kann hinter den quot;Kulissenquot; wohl negativ werden) - wenn Semaphore unten (s<=0) und jemand drückt DOWN, dann bin ich blockiert oder schlafend bis jemand UP drückt und die Semaphore mich weckt. 112 113
    • Erzeuger-Verbraucher-Problem wechselseitiger Ausschluß mit Semaphoren gelöst mit Semaphoren Zwei Semaphore „frei“ und „belegt“ werden benutzt um zwischen den Prozessen die Zwei Prozesse 1 und 2 konkurrieren um den Eintritt in einen kritischen Bereich. Zustände des Puffers zu signalisieren. Der Semaphor „mutex“ dient nur dazu, den Zugriff auf Semaphor s ist initial auf 1 gesetzt den Puffer exklusiv zu machen. Der Puffer fasst N Elemente. Initial gilt: Semaphor frei = N, belegt = 0, mutex = 1; Prozeß 1: ... beliebige Aktionen ... Verbraucher-Prozess: Erzeuger-Prozess: down(s) <= Eintritt in kritischen Bereich ...kritischer Bereich ... up(s) <= Austritt aus dem kritischen Bereich LOOP LOOP P(belegt); produziere(einElement); P(mutex); P(frei); Prozeß 2: holeAusPuffer(einElement); P(mutex); ... beliebige Aktionen ... V(mutex); fuelleInPuffer(einElement); down(s) <= Eintritt in kritischen Bereich V(frei); V(mutex); ...kritischer Bereich ... verarbeite(einElement); V(belegt); up(s) <= Austritt aus dem kritischen Bereich END END Prof. W. Burkard 114 Prof. W. Burkard 115 Stichworte Stichworte Notizen Notizen gegenseitig wechselseitiger ausschluss - Semaphore ist Lösung für Eintritt in kristischen Bereich - Initialwert stellt klar wer alles in einen kritischen Bereich darf normal init = 1 wenn = 2 dann können 2 rein 114 115
    • ZählerSem Leser-Schreiber-Problem Leser-Schreiber-Problem gelöst mit Semaphoren 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 Bevorzugung der Schreiber: Semaphor „ lock“ schützt den exklusiven Zugang zum Lesen/Schreiben. Initial gilt: AnzahlLeser = 0; lock = 1; ZaehlerSemaphor = 1; 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. Leser-Prozess: Schreiber-Prozess: Die Lösung umfasst: { ... // tue irgendwas anderes 2 Zähler AnzahlLeser und AnzahlSchreiber, s { P(ZaehlerSemaphor); die die Anzahl der Leser/Schreiber zählen ... // tue irgendwas anderes AnzahlLeser++; P(lock); 2 Semaphore LeserSem und SchreiberSem, die diese Zähler schützen s if (AnzahlLeser==1) then P(lock); ... modifiziereDieDaten(); ... 1 Semaphor lock, der wie vorhin den exklusiven Zugriff auf die Daten schützt s V(ZaehlerSemaphor); V(lock); ... leseDieDaten(); ... 1 Semaphor R erzwingt die Bevorzugung der Schreiber vor den Lesern s ... // tue irgendwas anderes P(ZaehlerSemaphor); } 1 Semaphor M stellt sicher, dass maximal ein Leser einem Schreiber zuvorkommt, egal s AnzahlLeser--; wie der Scheduler agiert! Beispiel: zwei Leser und ein Schreiber greifen fast gleichzeitig if (AnzahlLeser==0) then V(lock); zu: im schlimmsten Fall hat dann nur ein Leser die Nase vorn (siehe Folgefolien) ein Schreiber im kritischen Abschnitt: V(ZaehlerSemaphor); der erste Leser, der kommt, ... // tue irgendwas anderes   wird durch lock blockiert. Die Initiliasierung sieht so aus: } Kommen weitere Leser, Int AnzahlLeser = 0, AnzahlSchreiber = 0; so warten diese auf ZaehlerSemaphor Semaphor LeserSem=1, SchreiberSem=1, R=1, M=1, lock=1; Prof. W. Burkard 116 Prof. W. Burkard 117 Stichworte Stichworte Notizen Notizen 116 117
    • Leser-Schreiber-Problem Leser-Schreiber-Problem gelöst mit Semaphoren gelöst mit Semaphoren Der Leserprozess bei Bevorzugung der Schreiber Der Schreiberprozess bei Bevorzugung der Schreiber { ... // tue irgendwas anderes P(M); // so kommt auf jeden Fall nur ein Leser durch! { ... // tue irgendwas anderes P(R); // hier geht’s nur weiter, wenn kein Schreiber aktiv ist P(SchreiberSemaphor); P(LeserSemaphor); AnzahlSchreiber++; // der erste Schreiber AnzahlLeser++; if (AnzahlSchreiber == 1) then P(R); // sperrt die Leser if (AnzahlLeser==1) then P(lock); V(SchreiberSemaphor); V(LeserSemaphor); V(R); P(lock); // Sperre Datei V(M); ... bearbeiteDieDaten(); ... // dies hier ist der kritische Abschnitt V(lock); // entsperre Datei // es können aber nur andere Schreiber dran ... leseDieDaten(); ... // dies hier ist der kritische Abschnitt P(SchreiberSemaphor); P(LeserSem); AnzahlSchreiber--; // der letzte Schreiber AnzahlLeser--; if (AnzahlSchreiber == 0) then V(R); // gibt die Leser wieder frei if (AnzahlLeser==0) then V(lock); //kein Leser mehr da  Freigabe V(SchreiberSemaphor); V(LeserSem); ... // tue irgendwas anderes ... // tue irgendwas anderes } } Prof. W. Burkard 118 Prof. W. Burkard 119 Stichworte Stichworte Notizen Notizen 118 119
    • Semaphore in Echtzeitsystemen Semaphore in Echtzeitsystemen Problem 2: Durch kritische Abschnitte können Prozessprioritäten verletzt werden, Beispiel: q Ein Prozess P3 mit niedrigster Priorität sei im kritischen Abschnitt q Ein Prozess P1 hoher Priorität wartet am zugehörigen Semaphor q 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!!   q 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 wartet Bei Verlassen des kritischen Abschnitts fällt der Prozess wieder auf seine alte Priorität Unnötig!! P3 macht zuerst das P(S), gewinnt das Rennen um den kritischen Abschnitt q P2 und P1 werden durch ihr P(S) blockiert, P2 liegt aber in der Queue der Semaphore S vorne, da q 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 q weiterlaufen könnte... Die Lösung: Einreihung der Tasks in die Semaphor-Queue nicht chronologisch sondern nach q Prozess-Priorität ! Prof. W. Burkard 120 Prof. W. Burkard 121 Stichworte Stichworte Notizen Notizen 120 121
    • Ereigniszähler Prioritätsvererbung durch Semaphore Problem 2 gelöst durchPrioritätsvererbung Vermeidung zeitkritischer Abläufe mit Semaphoren = wechselseitiger Ausschluß P3 erhält die hohe Priorität von P1 Scheduler wählt NICHT P2 !   Ereigniszähler = Lösung OHNE wechselseitigen Ausschluß P3 fällt auf alte Priorität zurück 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 E Advance(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 !!! P1 erhält nun sofort die CPU, P2 kommt erst danach Prof. W. Burkard 122 Prof. W. Burkard 123 Stichworte Stichworte Notizen Notizen 122 123
    • Lösung des Erzeuger-Verbraucher- Nachrichtenaustausch 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 */ Problem aller bisherigen Synchronisationsverfahren: Man braucht einen GEMEINSAMEN Speicherplatz für die partizipierenden Prozesse !! Erzeuger: int zaehler=0; /* alle Einträge werden durchnummeriert */ Erkenntnis: Dann funktionieren diese Verfahren nicht über Rechnergrenzen hinweg !! Schleife: zaehler inkrementieren await(raus, zaehler-N); /* warten bis Platz im Puffer ist */ Problem: Wir brauchen ein Synchronisationsverfahren auch in verteilten Systemen Element einfügen ... advance(rein); Idee: Synchronisation durch Nachrichtenaustausch Verbraucher: Wir definieren zwei Systemfunktionen: int vzaehler=0; Schleife: vzaehler inkrementieren sende(Ziel, Nachricht) Sendet die Nachricht an das angegebene Ziel await(rein,vzaehler) /* warte bis ein Element im Puffer ist */ empfange(Quelle, Nachricht) Empfängt eine Nachricht von der Quelle und blockiert, Element entnehmen... d.h. wartet, solange keine Nachricht kommt. advance(raus) Prof. W. Burkard 124 Prof. W. Burkard 125 Stichworte Stichworte Notizen Notizen 124 125
    • Lösung des Erzeuger-Verbraucher- Monitore, die Idee Problems mit Nachrichten N = ( z.B.) 100 /* Größe des Puffers */ Problem: 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); Erzeuger: Idee: man überlasse einem Compiler die richtige Anordnung der Befehle und finde ein höheres, abstrakteres Sprachkonstrukt den kritischen Bereich (critical region) Schleife: empfange(Verbraucher, leere Nachricht)   Statt: P(s); <kritische Befehle> V(s); ... setze Element in die leere Nachricht ... M Nun: shared s; g on sende(Verbraucher, Nachricht mit Element) de eme itor region s do <kritische Befehle>; r d in = ar sa Zu Der vom Compiler erzeugte Code garantiert, au m sa dass nur einer von mehreren Prozessen im kritischen Code arbeitet. f d ge m ef nu me Monitor Verbraucher: in tz nf ie te as 1973-74 (!!) haben Hansen und Hoare das Konzept erweitert: rte n s n Da un Man nehme einen ADT (heute Klasse), der die Aufgabe übernimmt Zu te g Wiederhole 100 mal: sende(Erzeuger, leere Nachricht) gr n u de s alle darin enthaltenen und von außen ansprechbaren Prozeduren iff n r sf d Schleife: empfange(Erzeuger, Nachricht mit Element) s und die lokalen Daten, Variablen und Funktionen un kt ... entnehme Element aus der Nachricht und verarbeite es... s durch Synchronisationsmechanismen automatisch zu schützen und io ne n s den wechselseitigen Ausschluss von Prozessen darin zu garantieren. sende(Erzeuger, leere Nachricht) Diese Klasse nannte man einen MONITOR Prof. W. Burkard 126 Prof. W. Burkard 127 Stichworte Stichworte Notizen Notizen 126 127
    • Monitore, das Konzept Monitore, die Vorteile Monitor Monitorname ( Parameter ) Datendeklarationen; /* gemeinsame Daten */ Gemeinsam (durch mehrere Prozesse) bearbeitete Daten werden explizit in der q Programmstruktur sichtbar gemacht ENTRY Funktionsname1 ( Parameter ) { Prozedurkörper } sie sind in Monitoren organisiert ENTRY Funktionsname2 ( Parameter ) { Prozedurkörper }   ENTRY Funktionsname3 ( Parameter ) { Prozedurkörper } Die bereitgestellten Monitorprozeduren definieren allein q ... die Zugriffsalgorithmen zu den Monitordaten. ENTRY FunktionsnameN ( Parameter ) { Prozedurkörper } Ein Umgehen der Monitorprozeduren ist nicht möglich q Monitore kapseln wie Module die gemeinsamen Daten. q INIT { Initialisierungsanweisungen } END Eine Änderung der monitorinternen Datenstrukturen und Algorithmen bleibt für Die Initialisierung der Monitordaten erfolgt durch einmaligen Aufruf von Prozesse unsichtbar, solange die Schnittstelle unverändert bleibt information hiding   Monitorname(aktuelle Parameter); Dadurch wird letztendlich der Initialisierungsteil durchlaufen. Prozesse benutzen den Monitor durch Aufruf der Monitorprozeduren in der Form: Monitorname.Funktionsname ( aktuelle Parameter ); Prof. W. Burkard 128 Prof. W. Burkard 129 Stichworte Stichworte Notizen Notizen 128 129
    • Erzeuger-Verbraucher-Problem Erzeuger-Verbraucher-Problem gelöst mit einem Monitor gelöst mit einem Monitor Erzeuger und Verbraucher-Prozesse: Deklaration des Monitors: Verbraucher Erzeuger LOOP LOOP { { Buffer.getFromBuffer(Element); produziere(Element); verarbeite(Element); Buffer.putInBuffer(Element); } } END END Prof. W. Burkard 130 Prof. W. Burkard 131 Stichworte Stichworte Notizen Notizen 130 131
    • Erzeuger-Verbraucher-Problem Erzeuger-Verbraucher-Problem gelöst mit einem Monitor gelöst mit einem Monitor Monitor ist unvollständig ! Was fehlt ? Implementierung der beiden zentralen Prozeduren!   Die zentralen Problem: wir brauchen zusätzliche Wartebedingungen zur Kontrolle des Pufferüber- Monitor-Prozeduren /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 Tasks wait(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! Prof. W. Burkard 132 Prof. W. Burkard 133 Stichworte Stichworte Notizen Notizen 132 133
    • Ein klassisches IPC-Problem prinzipieller Lösungsansatz für das Philosophenproblem das Philosophenproblem (oder: die Rangelei um den exklusiven Zugriff auf begrenzte Betriebsmittel ) Man muß den Zugriff auf die beiden Gabeln und andere gemeinsame Ressourcen regeln q Es gibt also eine Semaphore G für den wechselseitigen Ausschluß q 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 q Jeder Philosoph befindet sich in einem von drei Zuständen: denkend, hungrig, essend q Ein hungriger Philosoph versucht linke und rechte Gabel aufzunehmen, dann ißt er ein q Es gibt also je Philosoph i eine Zustandsvariable Z(i) 1<=i<=5 mit den Werten d,h,e q Weilchen, danach legt er die Gabeln zurück und denkt wieder. Aufgabe: Man finde für die Philosophen Mittagszeit bei den Philosophen Ein hungriger Philosoph ist blockiert, wenn er nicht beide Gabeln erhält. q einen funktionierenden Algorithmus !! (mit leerem Magen kann man nicht denken) Es gibt somit je Philosoph eine Semaphore S(i) 1<= i<=5 q Einfache, aber fehlerhafte Lösung: Hat ein Philosoph seine Mahlzeit beendet, so schaut er, ob seine Nachbarn jetzt essen q Philosoph denkt ... könnten und weckt sie gegebenenfalls auf nimmt linke Gabel auf nimmt rechte Gabel auf ißt von seinem Teller legt linke Gabel zurück legt rechte Gabel zurück Prof. W. Burkard 134 Prof. W. Burkard 135 Stichworte Stichworte Notizen Notizen 134 135
    • 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) Prof. W. Burkard 136 Stichworte Notizen 136
    • Speichernutzung bei Aufgaben der Speicherverwaltung Einprogramm-Betrieb Die Speicherverwaltung ist neben der Prozeßverwaltung die zweite, wesentliche Aufgabe • Es wird jeweils nur ein Programm im Hauptspeicher gehalten des Betriebssystems. • Dieser Prozeß erhält allen, vom Betriebssystem nicht benötigten Speicher • Eine Speicherverwaltung ist nicht erforderlich, für den Prozess gilt: Teilaufgaben: Prozessadressraum = realer Adressraum, also Prozessadresse = reale Adresse Gängige Varianten: • Verwaltung der freien und belegten Hauptspeicherbereiche Gerätetreiber höchste • Zuweisung von freiem Speicher an Prozesse, die diesen benötigen Betriebs- Speicheradresse im ROM Benutzer- system im • Rücknahme von Speicher von Prozessen, wenn sie diesen nicht mehr benötigen programm ROM • Durchführung von Auslagerungen zwischen Hauptspeicher und Festplatte, wenn der Benutzer- Hauptspeicher nicht groß genug ist, um alle Prozesse auf einmal zu halten programm Betriebs- Benutzer- Betriebssystem system programm erste im RAM Speicheradresse Prof. W. Burkard 137 Prof. W. Burkard 138 Stichworte Stichworte Notizen Notizen Speicher wurde aufgeteilt in... ROM -> fürs Booten RAM -> für Programme BS -> für BS reserviert 137 138
    • Algorithmen bei Fixierte Speicher-Partitionen fixierten Speicher-Partitionen Bei mehreren Warteschlangen: Bisherige Erkenntnis: Es ist sinnvoll mehrere Prozesse im Speicher zu halten Neuer Prozeß wird in diejenige Warteschlange eingereiht, in die er gerade noch passt. q Frage: Wie macht man’s am besten ? q Problem: Einfachste Lösung: Speicheraufteilung fest vorgeben 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 q freigewordene Partition passt. q Problem: Benachteiligung kleiner Prozesse, die nur selten eine größere Partition erhalten Lösungen: q Vorhalten einer ausreichenden Zahl kleiner Partitionen Punktesystem: Jeder bei der Zuteilung übersprungene Prozeß erhält einen Punkt. Bei erreichen einer Summe darf er nicht mehr übergangen werden. Prof. W. Burkard 139 Prof. W. Burkard 140 Stichworte Stichworte Notizen Notizen Partitionierung in Speichern -> Vergangenheit |_> in Festplatten -> heutzutage immer noch 139 140
    • Probleme bei der Variable Speicher-Partitionierung variablen Partitionierung Problem 1: nach kurzer Zeit ist der Speicher von ungenutzten Fragmenten (Löchern) durchsetzt Größe und Anzahl der Partitionen korrelieren mit der Größe und Anzahl der Prozesse q Lösung: ZEIT Speicherverdichtung: alle Prozesse werden zusammengeschoben, es entsteht ein einziger, großer und ungenutzter Bereich unbenutzter Speicher Problem 2: Prozesse mit dynamischem Speicherbedarf !! Lösung: • 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 Prof. W. Burkard 141 Prof. W. Burkard 142 Stichworte Stichworte Notizen Notizen Problem -> Speicherbedarf v. Programmen wächst Problem -> wird im Endeffekt durch virtuellen bei Nutzung Speicher gedeckt 141 142
    • Probleme des Swapping Swapping mittels Bitmaps Das Relokationsproblem: Der Speicher wird in Allokationseinheiten unterteilt (fragmentiert) q q Variablen und Prozeduren eines Programmes liegen im Speicher auf bestimmten In einer Tabelle (Bitmap) wird für jede Allokationseinheit ein Bit verwendet: 0=dieses q Adressen, wo sie angesprochen werden Speicherfragment ist frei, 1=belegt ABER: Diese Adressen sind von Einlagerung zu Einlagerung verschieden !! Beispiel: ein Speicher mit 5 Prozessen und 3 “Löchern”: q I I I I I I I I I I I I I I I I I I II II I I I I I I I I I I I I I I Das Schutzproblem: Wie verhindert man den (absichtlichen oder versehentlichen) Zugriff des Prozesses X q Prozeß B Prozeß C Prozeß D Pr. E Prozeß A in den Speicherbereích des Prozesses Y ?? Nachteil: 11111000 Ein Prozeß der Länge m Einheiten soll eingelagert Lösung: relative Adressierung werden. 11111111 Implementierung 1: Ersetzen aller rel. Adressen beim Laden durch korrekte abs. Adr. q Dann muß man in der Bitmap m 0-Bits in Folge 11001111 Implementierung 2: Einführung von Basis-Registern (beim PC sog. Segment-Register) finden ! ==> langsamer Algorithmus q Impl. 1 löst nicht das Schutzproblem ! ( kein Schutz bei sog. “Self-modifying code”) 11111000 q Impl. 2 löst nur dann das Schutzproblem, wenn auch Grenzregister existieren! Bitmap Prof. W. Burkard 143 Prof. W. Burkard 144 Stichworte Stichworte Notizen Notizen Auslagern -> (nicht beliebig) nur blockierte | Prozesse -> von Speicher -> zu Festplatte Problem bei Einlagerung |_> anderer Speicherort -> Lösung: dynamische Speicherverarbeitung d. Assemblers 143 144
    • Swapping mittels verketteter Listen virtueller Speicher Prozesse und Löcher werden in einer verketteten Liste verwaltet: Problem: Was tun, wenn ein Programm größer als der komplette Hauptspeicher ist ?? 1. Ansatz: Programm aufteilen ==> Overlay-Technik P05 L53 P86 P 14 4 L 18 2 Programmteil 1 startet und lädt nach Bedarf weitere Overlays hinzu Der Programmierer entscheidet, wie ein Programm zergliedert wird Das Betriebssystem liefert Systemcalls zum Nachladen von Overlays Nachteil: saubere Programmzergliederung ist aufwendige,aber brotlose Kunst P 20 6 L 28 3 P 26 2 Prozeß Loch 2. Ansatz: Man überlasse die Arbeit des Zergliederns dem Computer ! Freigabe eines Bereiches: ==> virtueller Speicher <== 1. Eintrag von P auf L ändern. Wenn Vorgänger bzw. Nachfolger == L, dann verschmelzen Idee: Einlagerung eines Prozesses der Länge m Einheiten: Hauptspeicher wird auf Festplatte simuliert und in gleich große Stücke eingeteilt (Seiten) Durchsuchen der Liste nach einem Element mit Kennung L und einer Länge >= m Der reale Hauptspeicher wird unterteilt (Seitenrahmen) und als Puffer verwendet CPU greift auf den virtuellen, (real nicht existierenden) großen Hauptspeicher zu Algorithmen: Die Zugriffe werden von einer Speicherverwaltungseinheit abgefangen. (MMU) First Fit: Suche vorne beginnend, nimm erstes, passendes Loch MMU lädt benötigte Seite in einen freien Seitenrahmen, wenn sie nicht im RAM ist Next Fit: wie First Fit, aber Suche hinter dem letzten gefundenen Loch fortsetzen MMU “verbiegt” die Original CPU-Adresse so, daß sie nun auf die richtige RAM-Adresse Best Fit: Durchsuche komplette Liste, nimm kleinstes, gerade noch passendes Loch zeigt. Worst Fit: Nimm das größte Loch und hoffe, daß der verbleibende Rest noch zu was taugt! Prof. W. Burkard 145 Prof. W. Burkard 146 Stichworte Stichworte Notizen Notizen man hat das Problem dem Anwendungsprogrammierer Problem d. Swapping: Programm so groß, dass es überlassen gar nicht in den Speicher IDEE: v.v.Sp. man simuliert Speicher auf der passt -> Lösung: virt. Sp. Festplatte und unterteilt echten Speicher und verwendet ihn als Puffer 145 146
    • virtueller Speicher Paging realer Festplatten- CPU-Karte Die Beziehung zwischen Hauptspeicher steuereinheit bzw. Chip CPU verwendet Seiten und Seitenrahmen, virtuelle Adressen CPU also zwischen virtueller Adresse und physikalischer Adresse wird durch eine Seitentabelle geschaffen MMU verwendet MMU physik. Adressen System-Bus Prof. W. Burkard 147 Prof. W. Burkard 148 Stichworte Stichworte Notizen Notizen 147 148
    • Seitentabelle zweistufige Seitentabellen in die MMU eingehende, virtuelle Adresse der CPU Virtuelle Seite = 2, wird als Für einen 4 GB großen, virtuellen Speicher bräuchte mit 16 Bit (CPU “glaubt” an 64 KB Speicher) Index auf die Seitentabelle man (Seitengröße 4 KB) über 1 Mio Tabelleneinträge !! 0I0I1I0I0I0I0I0I0I0I0I0I0I1I0I0 benutzt: Besser: EINE Tabellen mit 1024 Einträgen, die auf der Eingabe zur Ausgabe kopiert Der 12-Bit-Offset wird direkt von 1024 Tabellen zeigen, die auf die eigentlichen Seiten 0010 zeigen. 0: 010 1 1: 001 1 2: 110 1 3: 000 1 110 MMU 4: 100 1 5: 011 1 6: 000 0 7: 000 0 8: 000 0 9: 101 1 10: 000 0 11: 111 1 Present/ Resultat: Nicht benötigte Seitentabellen brauchen 12: 000 0 Absent-Bit nicht im Hauptspeicher gehalten zu werden! 13: 000 0 14: 000 0 Seitentabelle 1I1I0I0I0I0I0I0I0I0I0I0I1I0I0 UND: Erfolgt Page Fault bei PT1, so weiß das 15: 000 0 bei Betriebssystem, daß der Prozeß Speicher die MMU verlassende, reale Adresse auf dem Systembus Seitengröße 4 KB anspricht, der ihm nicht zugeordnet ist. ( 15 Bit Adreßbus-Breite, 32 KB realer Speicher) Prof. W. Burkard 149 Prof. W. Burkard 150 Stichworte Stichworte Notizen Notizen Klausur: 4GB simuliert, real 512MB Seitengröße 8KB Einstufige Seitentabelle Klausur: Interprozessmanagement Prozessverwaltung Speicherverwaltung (Swapping, ...) Einheiten schreiben! 149 150
    • Assoziativspeicher ein typischer Seitentabelleneintrag der Cache für die Seitentabelle Problem: Bei n-stufigem Paging wird aus einem CPU-Speicherzugriff eine Sequenz von Caching Referenz Modifikation Present/ Seitenrahmen- n Zugriffen auf den realen Speicher (man muß schließlich die n Tabelleneinträge lesen !) Bit Bit Bit Absent Nummer ==> 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) Caching-Bit: Caching ein/aus-schalten ( wichig bei memory-mapped I/O ) Lösung: Referenz-Bit: Bit ist gesetzt, wenn die Seite von einem Prozeß angesprochen wird. kleiner Hochgeschwindigkeits-Speicher (dann sollte das Betriebssystem die Seite möglichst nicht auslagern) wird in MMU integriert und dient als Modifikation-Bit: Seiteninhalt wurde modifiziert, vor dem Überschreiben des Zwischenspeicher für genutzte Seitenrahmens muß die Seite zurückgeschrieben werden. Seitentabelleneinträge CPU 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 MMU Seitenrahmennr: wird am höherwertigen Ende des Adressen-Offset angefügt und AS Seiten- ersetzt die virtuelle Seitennummer, um eine physikalische Adresse zu bilden tabelle Systembus Prof. W. Burkard 151 Prof. W. Burkard 152 Stichworte Stichworte Notizen Notizen 151 152
    • Trefferrate bei Assoziativspeicher der optimale Ersetzungsalgorithmus Wenn ein Seitenfehler (page fault) auftritt, wählt das Betriebssystem einen q = wieviele Speicherzugriffe werden bereits durch den Assoziativspeicher bedient Seitenrahmen aus, in den die geforderte Seite eingelagert wird Dadurch wird die vorher in diesem Seitenrahmen liegende Seite überschrieben q Durchschnittliche Zugriffszeiten auf den Hauptspeicher, wenn der Hauptspeicherzugriff 100 nsec dauert und die MMU nur 20 nsec für den Zugriff auf den Assoziativspeicher braucht: Achtung: Wurde diese vorherige Seite verändert, muß sie vor dem “Überschriebenwerden” q durch Zurückschreiben auf die Platte aktualisiert werden Überlegung: Am besten überschreibt man nicht irgendeine Seite, q 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 ” Prof. W. Burkard 153 Prof. W. Burkard 154 Stichworte Stichworte Notizen Notizen 153 154
    • Seitenersetzungsalgorithmen Seitenersetzungsalgorithmen NRU und FIFO Second Chance bzw. Uhr Betriebssystem verwendet die Bits M und R der Seitentabelle und setzt das R-Bit Abwandlung von FIFO: q q periodisch (alle n msec) zurück. Dann gibt es vier Klassen von Tabelleneinträgen: Falls das R-Bit der ältesten Seite nicht gesetzt ist, wird die Seite ersetzt Falls das R-Bit der ältesten Seite gesetzt ist, wird es auf 0 gesetzt und die älteste Seite an das Ende der Seitenliste gestellt Klasse 0: nicht referenziert, nicht modifiziert s Uhr ist nur eine andere Implementierung von Second Chance. q s Klasse 1: nicht referenziert, modifiziert s Klasse 2: referenziert, nicht modifiziert s Klasse 3: referenziert und modifiziert NRU (Not-Recently-Used): q Entferne eine zufällige Seite aus der niedrigsten, nicht leeren Klasse FIFO (First-In, First-Out): q Entferne diejenige Seite, die am längsten im Speicher ist. Prof. W. Burkard 155 Prof. W. Burkard 156 Stichworte Stichworte Notizen Notizen 155 156
    • zum Schluß: ein ganz grober Überblick zur Segmentierung Alles klar ?? 1. Wieviel Prozent der CPU-Zeit wird auf Dauer verschwendet, wenn in einem Computer 4 statt Seiten mit fest vorgegebener Länge verwende man Segmente mit variabler Programme gleichzeitig im Hauptspeicher gehalten werden können und 50% ihrer Zeit mit Länge, die vom Programmierer definiert werden können 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 msec Segmentierung = “Intra-Prozeß-Swapping” beträgt. Gehen Sie von einer Rotationszeit von 20 msec bei einer Spurkapazität von 32 Kbyte aus und berechnen Sie das Ergebnis für eine Seitengröße von 2 KB bzw. 4 KB. (Die Zusammenfassung Seiten sind zufällig auf der Platte verteilt, gelle! 3. Wie groß wäre bei einstufigem Paging die Seitentabelle eines Rechners mit 48 Bit Swapping = Ein/Auslagern kompletter Prozesse virtuellem Adreßraum bei einer Seitengröße von 16 Kbyte und einem physikalischen Paging = Ein/Auslagern von Prozeßteilen fester Größe Adreßbus mit 32 Bit Breite ? Segmentation = Ein/Auslagern von Prozeßteilen variabler Größe 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! Merke: 5. In einem Swapping-System befinden sich in dieser Reihenfolge folgende Löcher: In der Realität ( z.B. beim Pentium unter Unix-BS ) 10K,4K,20K,18K,7K,9K,12K und 15K. Welche Löcher werden in welcher Reihenfolge werden alle drei Verfahren miteinander kombiniert !!! ausgewählt, wenn die Anforderungen lauten: 12K,10K und dann 9K bei alternativer Verwendung der Algorithmen First-,Best-, Worst-, und Next-Fit ? Prof. W. Burkard 157 Prof. W. Burkard 158 Stichworte Stichworte Notizen Notizen 157 158
    • Dateien & Dateisysteme Dateinamen Dateien sind Container, in denen Daten persistent gespeichert werden können Dateisysteme verbergen die physikalische Realität einer Festplatte vor dem Anwender q Das Dateisystem bildet die abstrakte Benutzersicht auf die physikalische Realität ab. q Persistenz = Existenz der Daten unabhängig von der Existenz von Prozessen zusammengefaßte Information (Dateien) werden unter einem Namen identifiziert und q (Variablen speichern keine persistenten Daten, da sie bei Programmende nicht weiter existieren.) angesprochen (Dateiname) Dateinamen unterliegen bestimmten Regeln und Konventionen q Dateien werden vom Betriebssystem verwaltet. Der Betriebssystemteil, der sich mit der Beispiel MSDOS: “Datei-Vorname” max. 8 Zeichen, “Datei-Nachname” max. 3 Z. q Dateien-Verwaltung beschäftigt, wird auch Dateisystem bezeichnet Das Dateisystem regelt... file.bak = Sicherungskopie einer Datei s ... wie Dateien strukturiert sind file.c = C Quellcode eines Programmes s ... wie Dateien benannt werden müssen file.doc = Dokumentationsdatei, am PC meistens WORD-Datei s file.hlp = Hilfe-Datei, enthält Hilfe-Info zu bestimmten Themen/Programmen s ... den Zugriff und die Art der Benutzung von Dateien file.txt = allgemeine Text-Datei, am PC einfacher ASCII-Code s ... den Schutz von Dateien file.ddl = dynamic data library: Bibliotheksdateien unter Windows s file.dat = Datei enthält Daten, die ein Programm nutzen kann, z.B. Datenbanken s file.exe = Ausführbarer (Maschinen-) Code eines Programmes unter MSDOS/Windows s Bei der Betrachtung von Dateisystemen muß man zwischen der Sicht des Anwenders und des Entwicklers unterscheiden. Prof. W. Burkard 159 Prof. W. Burkard 160 Stichworte Stichworte Notizen Notizen 159 160
    • innerer Aufbau von Dateien Dateitypen “Gewöhnliche Dateien”: Enthalten Daten von Benutzern bzw. Programmen (a) Datei als (b) Datei als Folge (c) Datei als strukturierter q Folge von Bytes von Datensätzen Baum Verzeichnisse: Systemdateien zur Verwaltung der Struktur eines Dateisystems q zeichenorientierte Spezialdateien: Dienen zur Modellierung zeichenorientierte q Ein/Ausgabe-Geräte (Terminals, Drucker, ...) Man schreibt in eine Datei “PRN”, wenn etwas gedruckt werden soll Blockorientierte Spezialdateien: Dienen zur Modellierung von q Hintergrundspeichersystemen, z.B. Bandlaufwerken Man schreibt in eine Datei “TAPE”, wenn etwas auf Band geschrieben werden soll. Die zu schreibenden Daten werden blockweise geschrieben. Prof. W. Burkard 161 Prof. W. Burkard 162 Stichworte Stichworte Notizen Notizen 161 162
    • Dateiattribute Operationen auf Dateien CREATE = leere Datei anlegen, erschaffen q DELETE = Datei löschen q OPEN = Datei öffnen, Zugriff checken q CLOSE = Datei schließen, Ressourcenrückgabe q READ = aus der Datei lesen q WRITE = in die Datei schreiben q APPEND = an die Datei Daten anfügen q SEEK = in der Datei bestimmte Position anfahren q GET ATTRIBUTES = Dateiattribute erfragen q SET ATTRIBUTES = Dateiattribute verändern q RENAME = Datei umbenennen q Prof. W. Burkard 163 Prof. W. Burkard 164 Stichworte Stichworte Notizen Notizen 163 164
    • Hierarchische Verzeichnissysteme Pfadnamen In hierarchischen Dateisystemen dienen absolute Pfadnamen zur eindeutigen q Identifizierung einer Datei: MERKE: Absolute Pfadnamen beginnen stets mit dem Separatorzeichen Beispiel MSDOS/WIN: Separatorzeichen ist “” Beispiel absoluter Pfad: windowssystemprogrammespielesolitaire.exe relative Pfadnamen beginnen niemals mit dem Separatorzeichen und sind relativ q zur aktuellen Position im Dateibaum zu verstehen: Beispiel: Im Unterverzeichnis “Benutzer” Benutzer gebe es zwei Unterverzeichnisse “Hinz” und “Kunz”. Beide Anwender haben ihr Verzeichnis ausgebaut mit Unterverzeich- Hinz Kunz nissen “Studium” und “Diplom” Studium Studium StudiumDiplomKapitel1 ist nicht mehr eindeutig !! Diplom Diplom Prof. W. Burkard 165 Prof. W. Burkard 166 Stichworte Stichworte Notizen Notizen 165 166
    • Operationen auf Verzeichnissen Implementierung von Dateien Festplatten sind eine Ansammlung von Sektoren auf Spuren und Oberflächen q Aufgabe des Dateisystems: Verwaltung dieser Plattensektoren und Zuordnung q CREATE = Verzeichnis anlegen, erschaffen q zu Dateien und Verzeichnissen Lösung 1: Kontinuierliche Allokation der Sektoren DELETE = Verzeichnis löschen q q Vorteile: einfache Implementierung, hohe Performance OPENDIR = Verzeichnis öffnen, Zugriff checken q Nachteile: Allokation muß Dateigröße kennen, Fragmentierung der Platte CLOSEDIR = Verzeichnis schließen q Lösung 2: Allokation mittels verketteter Listen q Die ersten 2-4 Bytes eines Sektors werden als Zeiger auf den nächsten Sektor READDIR = Verzeichnis lesen q der Datei verwendet. Die restlichen Bytes eines Sektors sind die Daten. LINK = zusätzlichen Verweis auf Datei bauen q Vorteile: keine Fragmentierung der Platte Nachteil: sehr langsames Lesen bei wahlfreiem Zugriff UNLINK = Verweis auf Datei löschen q Lösung 3: Allokation mittels verketteter Liste und Einsatz einer Tabelle (Index) q Vorteil: Nachteile aus Lösung 2 sind eliminiert, dehr schnelles Lesen, da die Tabelle im Hauptspeicher gehalten wird. ==> MSDOS verwaltet Platten gemäß Lösung 3 (Die Tabelle heißt unter DOS “FAT” = File Allocation table Prof. W. Burkard 167 Prof. W. Burkard 168 Stichworte Stichworte Notizen Notizen 167 168
    • Implementierung von Implementierung von Dateien Verzeichnissen Lösung: 2 Datei A Datei B Physikalischer Block MSDOS-Verzeichnis-Eintrag q Hier beginnt... Lösung: 3 Erste Blocknummer zeigt auf den ersten Plattensektor der Datei q ...Datei A ...Datei B (freie Blöcke) in der FAT Durch das Durchlaufen der FAT werden alle weiteren Sektoren q der jeweiligen Datei gefunden Physika- lischer Prof. W. Burkard 169 Prof. W. Burkard 170 Block Stichworte Stichworte Notizen Notizen 169 170
    • Mehrfachzugriff auf Dateien Plattenmanagement oder: was ist die optimale Blockgröße Idee: Eine Datei, die zwei Anwender benutzen, soll in q Problem: Datenrate beim Zugriff und effiziente Nutzung des Plattenplatzes stehen im beiden Verzeichnisstrukturen referenziert sein, Konflikt zueinander aber physikalisch nur einmal existieren!! Beispiel: Festplatte mit 32 KByte je Spur, 16,67 msec Rotationszeit und durchschnittlich 30 Lösung 1 : sogenannter Hard-Link q msec für die Positionierung des Schreib-Lesekopfes. Angenommen, auf dieser Platte Indextabelle wird erweitert um ein Feld werden 1 KByte große Dateien gespeichert, dann ergibt dies: “Anzahl der Verweise”, Dieses Feld wird bei jedem zusätzlichen Verweis erhöht, bzw. beim Löschen dekrementiert ?? Lösung 2: sogenannte “symbolic links” q Schaffung eines speziellen Dateityps “Link”. Der zweite Verzeichniseintrag zeigt dann auf eine solche “Link”-Datei, in der nur der vollständige Name (inkl. Pfad) der eigentlich gemeinten Datei steht Prof. W. Burkard 171 Prof. W. Burkard 172 Stichworte Stichworte Notizen Notizen 171 172
    • defekte Sektoren Performancebetrachtungen Ein Festplattenzugriff ist 100.000 mal langsamer als der Zugriff auf den Hauptspeicher !!! kaum eine Festplatte wird fehlerfrei produziert. q hohe Performance = wenige Plattenzugriffe + alle Daten nahe beisammen Die Hersteller notieren auf dem Plattencover die als defekt analysierten Sektoren q Lösungen: Wie lassen sich defekte Sektoren ausgrenzen ? q Platten-Caching: “write-through” = Schreibbefehle schlagen durch auf die Platte q “write-back” = Wegschreiben verzögert, erst bei Bedarf Hardware-Lösung: q Look-ahead: Moderne Festplatten sind mit ein wenig RAM auf der Steuerplatine q = Die defekten Sektoren sind z.B. auf der letzten Spur gespeichert. ausgestattet und Lesen (bei Anforderung eines Sektors) stets komplette Spuren bzw. = Die Steuereinheit der Platte weißt jedem defekten Sektor einen guten Sektor zu. Zylinder = Jeder Sektorzugriff wird durch die Steuerung abgefangen und “umgebogen”, wenn er einen defekten Sektor referenziert. De-Fragmentier-Software: (unter Windows z.B. scandisk) q Software-Lösung: q “Räumt” die Platte auf, indem die zu einer Datei gehörenden Sektoren kontinuierlich neu Es wird eine spezielle Datei angelegt, die genau alle defekten Sektoren umfaßt. allokiert werden. Diese Datei darf nie gelesen oder geschrieben werden Problem: Backup-Programme könnten diese Datei lesen !! Prof. W. Burkard 173 Prof. W. Burkard 174 Stichworte Stichworte Notizen Notizen 173 174
    • 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. Prof. W. Burkard 175 Stichworte Notizen 175
    • Ein/Ausgabe-Geräte Steuerwerke & Schnittstellen Die Steuerung und Überwachung aller Eingabe- und Ausgabegeräte (I/O-Geräte) ist eine Geräte bestehen aus einer mechanischen und einer elektronischen Komponente q weitere wesentliche Aufgabe des Betriebssystems. Mechanik = das eigentliche Gerät s Elektronik = das Steuerwerk ( bei PC-Systemen oft auch als Einsteckkarte Hierzu gehört: s realisiert, z.B. Monitorkarte) • Anbieten einer einfach zu handhabenden, die physikalischen Details überdeckenden Schnittstelle zum realen Gerät • Aufbereiten und Weiterleiten der Kommandos an die Geräte Schnittstelle zwischen Gerät und Steuerwerk • Interrupt-Management, d.h. Abfangen und Erledigen der Unterbrechungen Schnittstelle zwischen Gerät und Steuerwerk • Fehler-Behandlung Schnittstelle zwischen Arten von I/O-Geräten: Steuerwerk und Betriebs- system • Block-orientierte Geräte, wie Festplatten, Diskettenlaufwerke, Bandlaufwerke Systembus • Zeichen-orientierte Geräte, wie Drucker, Netzwerkanschlüße, ser. Terminals • Nicht einordenbare Geräte, wie Zeitgeber, Memory-mapped (PC-) Monitore Prof. W. Burkard 176 Prof. W. Burkard 177 Stichworte Stichworte Notizen Notizen 176 177
    • Steuerwerke & Register Steuerwerke beim PC Jedes Steuerwerk besitzt einige Register (Speicherstellen mit 8-32 Bit) zur q Kommunikation mit dem Prozessor: Control-Register: Damit steuert die CPU das Gerät (mittels passender Kommandos) s Status-Register: Damit meldet das Steuerwerk der CPU bestimmte Sachverhalte s Memory-mapped-IO: Die Steuerwerksregister sind im Adreßraum des q Hauptspeichers ansprechbar IO-Mapping: Die Ein/Ausgabe-Register haben einen eigenen Adreßraum, (CPU mit q spezieller IO-Memory-Select-Leitung) Der Ablauf einer EA-Operation: q 1. CPU beginnt eine IO-Operation, indem es Kommandos in die Control-Register s schreibt. 2. Prozessor wendet sich anderen Aufgaben zu (im allg. Suspension des Prozesses) s 3. Steuerwerk erledigt die Aufgabe (z.B. Lesen eines Sektors von der Platte) s 4. Steuerwerk sendet Interrupt (Unterbrechung) an das System s 5. Durch den Start der Interrupt-Service-Routine werden die Ergebnisse durch die s CPU abgeholt (Lesen der Statusregister) Prof. W. Burkard 178 Prof. W. Burkard 179 Stichworte Stichworte Notizen Notizen 178 179
    • DMA Schichtenmodell des IO-Systems IO-Antwort IO-Anfrage Schicht Aufgabe DMA = Direct Memory Access = das Steuerwerk schreibt die vom Gerät eintreffenden Daten direkt an die von der CPU angegebene Speicheradresse Benutzerprozesse IO ausführen, formatieren, spoolen Vorteil: CPU-Entlastung und höhere Performance des Gesamtsystems Benennung, Blockierung, Schutz, geräteunabhängige Software Pufferung, Zuteilung Gerätetreiber Geräteregister setzen, Status prüfen Wecken des Treibers nach der Unterbrechungsbehandlung Aufgabenerledigung Hardware Ausführung der IO-Operation Prof. W. Burkard 180 Prof. W. Burkard 181 Stichworte Stichworte Notizen Notizen 180 181
    • Unterbrechungsbehandlung Geräte-Treiber Der gesamte geräteabhängige Code wird im Geräte-Treiber zusammengefaßt q Hat ein Prozeß eine IO-Operation angefordert, so blockiert er sich selbst durch z.B. q Aufgabe des Treibers: Abbildung der abstrakten Anfrage der geräteunabhängigen q ein Down auf eine Semaphore. (Zumindest SOLLTE es so sein...) Software auf das jeweils reale Gerät und Durchführung der erforderlichen Aktionen Das Betriebssystem teilt einem anderen Prozeß die CPU zu q Beispiel Festplatte: Wenn das Peripheriegerät die Aufgabe erledigt hat, muß es den Prozeß wecken q abstrakte Anfrage der geräteunabhängigen Software: LESE BLOCK N q ==> Unterbrechungsbehandlung: q Aktionen des Treibers: die ausgelöste Aktion (Interrupt-Service-Routine) ist Teil des Betriebssystems und q Abbildung von “BLOCK N” auf Zylinder/Spur/Sektor s entblockiert den schlafenden Prozeß. (Up auf die Semaphore, etc...) Prüfung, ob Motor korrekt läuft s Anfahren des Zylinders Problem Interrupt-Service-Routinen: s Lesen des richtigen Sektors s Hardwarenahe Routinen, daher meist in Assembler geschrieben q DMA zur angegebenen Adresse s q hochsensibler Code von zentraler Bedeutung für das Funktionieren des Rückmeldung, ob Transfer OK bzw. Fehlermeldung s Betriebssystems MERKE: q in hohem Maße zeitkritisch, da von den Geräteleistungsdaten abhängig Nur der Treiber eines Gerätes hat Kenntnis über reale Details des Steuerwerkes q kritische Bereiche dürfen nicht durch nachfolgende Interrupts unterbrochen werden und der Mechanik eines Gerätes (z.B. Festplatte: Register des Steuerwerkes, ==> Unterbrechungsmaskierung <==> NMI ( Non-maskable-Interrupt ) Interleavefaktoren, Antrieb, Kopfberuhigungszeiten, etc.) Prof. W. Burkard 182 Prof. W. Burkard 183 Stichworte Stichworte Notizen Notizen 182 183
    • geräteunabhängige Software “logische Geräte” Festplattensteuerung Der Plattentreiber entscheidet wesentlich über die Performance des Plattensubsystem Aufgabe dieser Schicht: eines Rechners einheitliche Schnittstelle zur Benutzersoftware bereitstellen und Benutzer-IO- ( Und dies teilweise unabhängig von den Leistungsdaten der Platten!! ) Requests an zuständige Treiber aufbereitet weiterleiten Durch den Treiber realisierbar: Dazu gehört: Benennung von Geräten: Umsetzung logischer Gerätenamen in Treibernamen (z.B. s ==> Minimierte Rotationswartezeiten durch Interleaving (nächste Folie) PRN => Druckertreiber für den Drucker xyz) ==> Minimierung der Plattenarmbewegungen ( Plattenarm-Scheduling-Algorithmen) Zuteilung, Freigabe, Schutz: Abweisung unberechtigter Anwender, Regelung der s ==> Optimale Fehlerbehandlung Exklusivnutzung Kompensation flüchtiger Fehler (z.B. durch Lese-Wiederholung) geräteunabhängige Blockung: z.B. 512 Byte je Block, egal welche Platte, welches Band s Kompensation falscher Positionierung (z.B. durch Rekalibration) Pufferung der Datenströme bei blockorientierten und bei zeichenorientierten Geräten s Blockieren, d.h. Nicht-Ausführen offensichtlicher Fehlanweisungen Ressourcenmanagement des logischen Gerätes: z.B. logisches Gerät hat belegte und s (z.B. Leseanforderung mit zu hoher Sektornummern) freie Speicherblöcke ==> Allokationsalgorithmus muß nicht im Treiber realisiert sein logischer Drucker entspricht 4 realen Druckern (gleiches Modell) ==> Jobverteilung ==> Hardware-orientiertes Puffern: Spur / Cylinder- Caching erfolgt im logischen Gerät ==> Plattensimulation im Hauptspeicher: RAM-Disks Prof. W. Burkard 184 Prof. W. Burkard 185 Stichworte Stichworte Notizen Notizen 184 185
    • Plattenarm-Scheduling-Algorithmen Platten-Interleaving SSF: Shortest Seek First Die Leseanforderungen werden so sortiert, daß der Schreib-Lesekopf minimale Fahrbewegungen durchführt: nach dem Lesen/Schreiben des Zylinders n wird der Zylinder m angefahren, so daß Problem beim Lesen von Plattensektoren: Im-nI minimal wird. q Nach dem Lesen eines Sektors muß dieser zunächst vom Puffer des Steuerwerkes in den Hauptspeicher kopiert werden (durch die CPU oder via DMA) q In dieser Zeit überstreift der Plattenkopf bereits den bzw. die Folgesektoren q ==> Zum Lesen des nächsten Sektors muß also eine Umdrehung gewartet werden q Problemlösung: Interleaving = Versetztes Durchnummerieren der Sektoren Interleaving mit Faktor Null: Eins: Zwei: 7 0 5 0 7 0 6 1 2 3 3 4 5 2 7 6 6 1 Problem/Ärgernis: Der Algorithmus ist bei vielbenutzten Platten unfair, er bevorzugt Zylinder in der 4 3 4 1 2 5 Plattenmitte !!! Prof. W. Burkard 186 Prof. W. Burkard 187 Stichworte Stichworte Notizen Notizen 186 187
    • Plattenarm-Scheduling Zeitgeber in DV-Systemen Elevator-Algorithm Ohne Zeitgeber kann kein Betriebssystem arbeiten: Der 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: Verwalten der Uhrzeit Prinzipieller Aufbau: q preemptive Scheduling q Profiling: Führen von Statistiken q Oszillatorquarz... Bereitstellung von (Stop-)Uhren q für Prozesse ... dekrementiert Zähler bei jeder Schwingung Interrupt bei Zähler Erreichen von 0 One-shot-mode: Uhr steht nach dem Interrupt Initialisieren Register des Zählers Square-wave-mode: Automatischer Neustart nach dem Interrupt Beispiel: Oszillator mit 1 MHz-Kristall ==> Jede Schwingung dauert 1 Mikrosekunde (1µsec) Variante des Elevator-Algorithm: Nach dem letzten Request in die eine Richtung wird der 16 Bit-Register + Zähler ==> Interrupts programmierbar von 1 bis 65536 µsec am weitesten entfernte Request bedient: “Plattenarm-Round-Robin” Prof. W. Burkard 188 Prof. W. Burkard 189 Stichworte Stichworte Notizen Notizen 188 189
    • Monitorsteuerung Alles klar ?? in PCs und Workstations 1. Eine Festplatte habe s Sektoren je Spur und arbeite bei einem Interleavefaktor f Moderne grafische Oberflächen erfordern ein Hochleistungssteuerwerk zur pixelgenauen (f>=0) optimal. Wieviele Umdrehungen benötigt man, um die Spur vollständig zu Steuerung des Monitors ==> Grafikkarten lesen ? Wieviele Umdrehungen benötigt man im schlechtesten Fall, wenn der Interleavefaktor falsch gewählt wurde für das gegebene Paar Platte/Steuerwerk ? Idee: 2. Ein Plattenarm befinde sich auf Zylinder 20. Nacheinander treffen Anfragen ein, die q Jeder Bildschirmleuchtpunkt (Pixel) wird durch 1 - 24 Bit repräsentiert. Zylinder 10,22,20,2,40,6,38 zu lesen (noch bevor der Arm lossausen konnte). q Die CPU “malt” auf dem Bildschirm, indem sie einen Pufferspeicher beschreibt Die Bewegung von einem Zylinder zum nächsten dauere 6 msec, wie lange ist die (Bildwiederholspeicher) gesammte Fahrzeit des Plattenarms bei SSF, Elevator, und bei einfachem First- q Die Monitorsteuerung (Grafikkarte) ließt den Puffer und generiert die erforderlichen come,First-serve ? Wie lauten die Reigenfolgen der angefahrenen Zylinder ? Analogsignale 3. Die Behandlung eines TimerInterrupts dauere auf einem Rechner 2 Milisekunden q Über separate Register der Grafikkarte sind weitere Einstellungen steuerbar (z.B. Anzahl (inkl. allen Aufwandes für den Prozeßwechsel etc. ) Der Timer läuft mit 60 Hz. Bits je Pixel, Bildwiederholrate, ...) Wieviel Prozent der Systemzeit wird in diesem System für den Timer “verbraten” ? Grafikkarte 4. Üblicherwesie ist das RAM heutiger Rechner mit dynamischen Speicherbausteinen “normaler” aufgebaut, die innerhalb gewisser Zeiten ein Refresh der Inhalte benötigen, weil die dual-ported-RAM Monitor- Haupt- Monitor Inhalte sonst verloren gehen. Zum Refreshen genügt bereits das Auslesen der Bildwieder- CPU Steuerwerk speicher Speicherinhalte. Skizzieren Sie eine Lösung für dieses Problem, d.h. entwerfen Sie holspeicher in groben Zügen ein Steuerwerk “ODEM-of-RAM”, das DMA-fähig ist und einen Timer und eine Interruptleitung benutzt. Systembus Prof. W. Burkard 190 Prof. W. Burkard 191 Stichworte Stichworte Notizen Notizen 190 191
    • Grundlagen & Definitionen zu Systemverklemmungen Deadlocks Def.: Betriebsmittel Def.: Deadlock Ein Betriebsmittel in einem Computer ist etwas, was zu jedem Zeitpunkt nur von einem Wenn alle Prozesse einer Menge sich gegenseitig blockieren, so nennt man dies einen einzelnen Prozeß benutzt werden kann. Deadlock. 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. Beispiele: Diskettenlaufwerk, Hauptspeicher, Datensatz einer Datenbank (also Information) Bedingungen für die Existenz eines Deadlock: unterbrechbares Betriebsmittel = Betriebsmittel kann einem Prozeß entzogen werden, ohne 1. wechselseitiger Ausschluß: Ein BM ist frei oder genau einmal belegbar daß die Arbeit des Prozesses hinfällig wird. (typisches Beispiel ist der Hauptspeicher) 2. Belegungsbedingung: Ein Prozeß kann suzzesive mehrere BM belegen 3. Nicht-Unterbrechbarkeitsbedingung: Ein belegtes BM kann nicht entzogen werden nicht unterbrechbare Betriebsmittel = Werden diese Betriebsmittel einem Prozeß entzogen, 4. zyklische Verkettung der BM-Anforderugen: Je ein Prozeß fordert ein BM an, das bereits so sind die Arbeiten des Prozesses hinfällig. Beispiel: Drucker kann nicht mitten in der durch einen anderen Prozeß belegt ist Arbeit entzogen werden. ODER KURZ: Ablauf zur Nutzung eines Betriebsmittels: => BM anfordern => BM nutzen => BM freigeben Ein Betriebsmittel, eine Zuteilung (1) und: Zugeteilt ist zugeteilt ! (3) WICHTIG: Bei fehlschlagender BM-Anforderung sollte das BS den Prozeß schlafen legen Ein Prozeß, viele Betriebsmittel (2) und: was ich will, hast du! (und umgekehrt!) (4) Prof. W. Burkard 192 Prof. W. Burkard 193 Stichworte Stichworte Notizen Notizen 192 193
    • Deadlock Darstellung von Deadlocks Lösungs-Strategien Modellierung von Prozessen, Betriebsmitteln und ihren Beziehungen durch gerichtete Graphen mit zwei Typen von Knoten Ignorieren des Problems: Methode: toi,toi,toi q Kreise: stellen die agierenden Prozesse dar Rechtecke: stellen die Betriebsmittel dar Kanten (Pfeile): gehen stets von Kreis zu Rechteck oder umgekehrt Betriebssystem erkennt und behebt Deadlocks q Kante von Rechteck zu Kreis: Kante von Kreis zu Rechteck: Betriebsmittel ist dem Prozeß zugeteilt Prozeß wartet auf die Betriebsmittelzuteilung Betriebssystem vermeidet (möglichst) Deadlocks durch q vorsichtige BM-Zuteilungen P P1 BM Elimieren von Deadlocks durch geschickte Systemkonzeption BM1 q BM2 ( die vier notwendigen Bedingungen werden verhindert) P2 BM P Deadlock Prof. W. Burkard 194 Prof. W. Burkard 195 Stichworte Stichworte Notizen Notizen 194 195
    • Warum Vogel-Strauss ?? Deadlock-Erkennung hoher Aufwand zur Eliminierung von Deadlocks q = Erkennung von Zyklen im Betriebsmittelgraphen geringe Wahrscheinlichkeiten für das Auftreten von Deadlocks q Bequemlichkeit (Arroganz ??) der Betriebssystementwickler q R A B Work-around: fehlgeschlagener Betriebsmittelzugriff wird (hin und wieder) wiederholt Algorithmus: q 1. Für jeden Knoten K des Graphen tue: Beispiel Straßenverkehr: (ebenfalls ohne Regelung): q 1.1 Setze alle Kanten auf “unmarkiert” Wer hat Vorfahrt ? E Erzeuge leere Liste L T D C S 1.2 Setze aktuellen Knoten AK = K 1.3 Füge Ak in L ein 1.4 Wenn AK zweimal in L, dann wurde ein Zyklus gefunden, ENDE 1.5 Für alle unmarkierten Kanten, die F V U G von AK ausgehen tue: 1.5.1 Markiere Kante 1.5.2 Setze Knoten am Ende der Kante = AK und gehe nach 1.3 1.6 Es gibt keinen Zyklus, ENDE W Prof. W. Burkard 196 Prof. W. Burkard 197 Stichworte Stichworte Notizen Notizen 196 197
    • Deadlock-Behebung Deadlock-Verhinderung = “wohl durchdachte” Betriebsmittel-Zuteilung = Auflösung einer entstandenen Deadlock-Situation Prozeß B “Betriebsmittel- 1. Behebung durch (manuelle) Suspension eines Prozesses: Flugbahnen” 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 ! = A+B belegen den Drucker gleichzeitig 3. Behebung durch Prozeßabbruch (Brute-force-Methode) Problem: Welchen Prozeß sollte man abbrechen ? Prozeß A => Möglichst wenig Seiteneffekte, Prozeßwiederholbarkeit muß gegeben sein! = A+B belegen den Plotter gleichzeitig Prof. W. Burkard 198 Prof. W. Burkard 199 Stichworte Stichworte Notizen Notizen 198 199
    • sichere und unsichere Zustände Dijkstras Bankier-Algorithmus In-Use-table U Def.: Ein Zustand heißt sicher, wenn... Request-table R 1. ... er kein Deadlock-Zustand ist und ... 2. ... es eine Möglichkeit gibt, alle Anforderungen bis zum Terminieren aller insgesamt Prozesse zu erfüllen verfügbare BM Akt = aktuell belegte BM belegte BM Beispiel: Ein sicherer Zustand (a) Max = maximal benötigte BM derzeit freie BM Frei = noch freie BM 1. Suche in R eine Zeile Z (z1,z2,z3,z4), so daß zi <= ai für 1<=i<=4 2. Zeile nicht gefunden: => ein kommender Deadlock ist nicht mehr abwendbar 3. Zeile gefunden: Nimm an, der gefundene Prozeß bekommt die BM, kann weiterlaufen und terminiert Beispiel: Ein unsicherer Zustand (b) 4. Dann gibt dieser Prozeß alle seine BM frei. Entferne Prozeß in R, erhöhe A 5. Wiederhole Schritte 1-4 bis ... ... R leer ist ==> Zuteilung ist sicher ... oder bis Schritt 2 eintritt, ==> Deadlockgefahr, d.h. unsichere Zuteilung Prof. W. Burkard 200 Prof. W. Burkard 201 Stichworte Stichworte Notizen Notizen 200 201
    • Deadlock-Vermeidung Two-Phase-Commit = Sicherstellen, daß die vier Bedingungen nie erfüllt sein können! Idee: Ansätze und Ideen: In einer ersten Phase werden alle Betriebsmittel zur Erledigung der Aufgabe angefordert. q 1. wechselseitiger Ausschluß: Kann eine Ressource nicht zugeteilt werden, werden alle Ressourcen wieder freigegeben q Minimierung der BM-Zuteilung, d.h. Zuteilung an möglichst wenige Prozesse und von vorne begonnen Beispiel: Druckerspooling: Das BM “Drucker” wird nur einem Prozeß (dem Spooler) Sind alle Ressourcen zugeteilt erfolgt die Erledigung der Aufgabe, danach die Freigabe q zugeteilt aller Ressourcen 2. Belegungsbedingung: Betriebsmittel “Alles-oder-nichts-Methode”: Bei Prozeßstart werden dem Prozeß alle erforderlichen Durchführung BM zugeteilt, oder der Prozeß wird suspendiert bis dies möglich ist! WICHTIG: der D Aufgabe Two-Phase-Commit ist Ph 3. Nicht-Unterbrechbarkeit: 1 C as e nur anwendbar, wenn alle es gibt prinzipiell keine Lösung, die Nicht-Unterbrechbarkeit ist ja gerade das as e Aktionen der Phase 1 Ph wesentliche Merkmal bestimmter Betriebsmittel! 2 B wieder rückgängig Two-Phase-Commit 4. zyklische Wartebedingung: gemacht werden können A Zeit 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. Prof. W. Burkard 202 Prof. W. Burkard 203 Stichworte Stichworte Notizen Notizen 202 203
    • “Verhungern” von Prozessen Alles klar ?? 1. Wann sind bei der Deadlock-Verhinderung diagonale Betriebsmittelflugbahnen denkbar ? Ein Prozeß fordert eine Ressource an, die er nie erhält. 2. Ein Computer verfügt über sechs CD-ROM-Laufwerke und es gibt n Prozesse, die um die ==> kein Deadlock im eigentlichen Sinne, aber der Prozeß ist auf Dauer festgefahren 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 ) Beispiel : 3. Kann ein System sich in einem Zustand befinden, der weder ein Deadlock- noch ein sicherer Shortest-Seek-First-Algorithmus beim Plattenzugriff: Zustand ist? Falls ja, skizzieren Sie ein Beispiel, falls nein, beweisen Sie, daß jeder Zustand entweder ein Deadlock-Zustand oder ein sicherer Zustand ist! Ein Prozeß P will z.B. den innersten Plattenzylinder lesen, nachfolgende Prozesse lesen 4. Führt es in einen Deadlock, falls der Prozeß A auf Folie 114 das letzte Bandgerät anfordert ? ständig Zylinder in der Plattenmitte. 5. Aschenputtel und der Prinz lassen sich scheiden. Sie wollen ihr Eigentum nach folgendem Resultat: Prozeß P bleibt solange suspendiert, bis keine anderen (näheren) Verfahren aufeilen. Täglich können beide in einem Brief einen Anspruch auf etwas aus ihrem Anforderungen mehr in der Warteschlange sind! Das kann u.U. dauern ! 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 Grundsätzlich gilt: haben, am nächsten Tag einen Brief senden, in dem sie ihren Anspruch zurücknehmen. Zu Algorithmen, die aus einer Warteschlange jeweils ein “Bestes Element” auswählen ihrem Eigentum gehört insbesondere ihr Hund Bello und seine Hundehütte. Da das Tier seine lassen “schlechte Elemente” verhungern, wenn beständig neue Elemente in die 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 Schlange strömen! (d.h. die Schlange nie leer wird) 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 “Gegenmittel”: temporäres Umschalten auf “First-Come,First-Serve” die Ehegatten je einen PC programmiert, der die Verhandlungen führen soll. Als beide von ihren dynamische “Verbesserung” der Elementsituation durch das Warten Reisen zurückkommen, verhandeln die Computer immer noch. Warum? Ist ein Deadlock aufgetreten? Ist ein Verhungern möglich? Diskutieren Sie. Prof. W. Burkard 204 Prof. W. Burkard 205 Stichworte Stichworte Notizen Notizen 204 205