Premium Partner

Betriebssystem ZHAW

Betriebssystem wird hier gelehrt --> Willkommen in der Hölle meine Damen und Herren

Betriebssystem wird hier gelehrt --> Willkommen in der Hölle meine Damen und Herren


Kartei Details

Karten 62
Sprache Deutsch
Kategorie Informatik
Stufe Universität
Erstellt / Aktualisiert 22.06.2019 / 04.09.2023
Lizenzierung Keine Angabe
Weblink
https://card2brain.ch/box/20190622_betriebssystem_zhaw
Einbinden
<iframe src="https://card2brain.ch/box/20190622_betriebssystem_zhaw/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

Scheduling

Problemstellungen um Scheduling kennen und diskutieren können

Problemstellung: Das grösste Problem des Scheduler ist, dass die benötigten Betriebsmittel für die einzelnen Prozesse nicht im Vorfeld bekannt sind. Darum lässt sich keine optimale Planung erstelle, sondern der Scheduler muss dynamisch auf geänderte Anforderungen reagieren.

Scheduler regelt die zeitliche Ausführung mehrere Prozesse in Betriebssystemen. Man kann in grob in unterbrechende(preemptive) und unterbrechende(nonpreemptive) aufteilen.

System und ihre Anforderungen an den Scheduler:

Batch-Systeme:

Ankommende Aufträge werde in eine Warteschlage eingereiht und jedes Mal, wenn in Job abgearbeitet ist, kommt der nächste aus der Schlange dran.

Interaktive Systeme (Desktop PC)

Der Benutzer legt Wert auf kurze Antwortzeit. Wenn er beispielweise in einem Texteditor eine Tastatureingabe tätigt, sollte der Text sofort erscheinen.

Real Time Systeme:

Das System muss garantieren, dass ein Prozess eine Aufgabe innerhalb einer vorgegebenen Zeitspanne abgearbeitet haben muss.

Hard --> in 100% Fällen garantiert

Soft --> Zeitlimit darf in kleinen Prozentsatz der Fälle überschritten werden.

Scheduling

Die wichtigsten Scheduling Algorithmen aufzählen, erklären und diskutieren können.

Man kann in grob in unterbrechende(preemptive) und unterbrechende(nonpreemptive) aufteilen.

Bewertungskriterien:

Antwortzeit: Wie lange geht es bis Task reagiert?

Durchsatz: Wie viel Tasks pro Zeit werden verarbeitet?

Fairness: werden Tasks vernachlässigt?

Starvation: können Tasks nie an die Reihe kommen?

Implementierung/Overhead: wie aufdenig ist die Implementierung des Verfahrens?

Nonpreemptive Scheduling

  • First Come First Served: Prozesse in ihrer Reihenfolge ihres Eingangs bearbeiten. Neuzuteilung der Prozess findet wieder statt, wenn der laufende Prozess zu warten beginnt oder seine Ausführung beendet ist.
  • Shortest Job First: Die kleine Prozesse werden bevorzugt.Es lässt sich in Fällen einsetzen, in denen die benötigte Rechenzeit für die einzelne Aufgaben aus Erfahrungswerten gut vorhergesagt werden kann
  • Priority Scheduling:Bei dieser Strategie wird jedem Prozess eine Priorität zugeordnet. Die Abarbeitung erfolgt dann in der Reihenfolge der Prioritäten.Diskussion: Prozesse mit tiefen Prioritäten können verhungern, mögliche Abhilfe --> dynamische Prioritäten, Prioritäten in Funktion der zeit anpassen.

Preemptive Scheduling

  • Round Robin:  Wie bei FCFS aber mit kurzen zeitspannen(q). Einem Prozess wird die CPU für eine Zeitspanne zugeteilt.
  • Multilevel Scheduling: In üblichen Systemen verschiedene Arten von Jobs: batch, interaktiv, systembezogen, rechenintesivJobs erhalten je nach Art verschiedene Prioritäten, für jede Priorität eine Queue, Scheduler wählt immer Jobs mit höchster Priorität
  • Multilevel Feedback Scheduling: Bei diesem Verfahren gibt es mehrere Warteschlangen unterschiedlicher Priorität. Prozesse werden in Abhängigkeit von ihrem bisherige Ressourcenverbrauch dynamisch in eine dieser Warteschlangen eingeordnet

Scheduling

Die Scheduling Verfahren der wichtigsten Betriebssysteme erklären und diskutieren können.

Unix Scheduling TRADITIONELL

Prioritäten:

  • Basiert auf Prozesstyp und Geschichte (verbrauchte CPU-Zeit)
  • Tiefer Wert = hohe Priorität

CPU und nice Komponenten so gewählt, dass Prioritätsband nicht verlassen werden kann.

Während dem Laufen:

        Wird ein Prozess mehrmals vom Zeitgeber unterbrochen(60 mal pro Sekunde)

        Der Usage Counter wird jeweils inkrementiert zu Beginn des Zeitintervalls

 

 

Unix fair Share Scheduling (FSS)

Versucht die CPU fair auf die verschiedenen Gruppen von Prozessen zu verteilen. Wenn beispielweise 4 Benutzer gleichzeitig jeweils einen Prozess ausführen teilt der Scheduler die verfügbaren CPU-Zyklen so, dass jeder Benutzer 25% aller Zyklen bekommt.

Scheduling

Problemstellungen um Real-Time Scheduling kennen und diskutieren können

Real Time Systeme (Robotik, Laborexperimente, Luftfahrt usw.)

Systeme die auf Ereignisse in der „äusseren Welt“ reagieren, Ereignisse finden in der „reellen Zeit“ statt. Es gibt Hard und Soft Real Time Systeme

Typische Eigenschaften:

  • zeitkritische Tasks wiederholen sich in regelmässigen Abständen
  • Dauer und die benötigten Betriebsmittel sind bekannt

Systeme verhalten sich korrekt, wenn

  • Das logische Resultat einer Berechnung stimmt
  • Das Resultat zum richtigen Zeitpunkt ausgeliefert wird

Hard Real Time Systeme(Flugzeugsteuerung, Landeanflug)

  • Deadlines müssen eingehalten werden, sonst Ausfall des Systems

Soft Real Time Systeme (Bank überweisung)

                Deadlines sollten eingehalten werden, sonst schwerwiegende Konsequenzen

3 Real Time Task Klassen

  • Kritische Tasks(periodische, asynchrone, sporadische Tasks)
  • Nicht kritische, aber notwendige Tasks
  • Nicht notwendige Tasks(nice to have)

Scheduling

Die wichtigsten Real-Time Scheduling Algorithmen aufzählen, erklären und diskutieren können 

Rate Monotonic Scheduling (RMS)

Für unterbrechbare, periodische Jobs. Die Prioritäten werden statisch anhand Periodendauer eines Jobs festgelegt, je kürzer Periodendauer eines Jobs, desto höher ist seine Priorität.

Task müssen unterbrechbar, periodisch und unabhängig sein.

Was ist daran so interessant? Grenze für erfolgreiches Scheduling kann berechnet werden.

Rechenzeit(C)/Periode(T) = Auslastung(U≤1)à zu optimistisch, nur bei perfektem Schedule möglich

Korrekter Scheduler für n Tasks

Garantiert bei Einhaltung folgender Grenze

Bei Einhaltung obiger Grenze:

                Schedule immer garantiert, aber eher konservativ für grosse n für 70% CPU Auslastung

Deadline Scheduling

Idee: Tasks zum richtigen Zeitpunkt starten resp. Beenden

Funktionsweise: Alle zu dem betrachteten Zeitpunkt bereitstehende Task werden nach aufsteigenden Fertigstellungsterminen geordnet.

Der Task der als erste fertig sein muss erhält den Prozessor,

 

RT-Linux

Antwortzeiten in der Grössenordnung von Mikrosekunden

  • Abhängig von Treibern: wie lange wird die CPU blockiert
  • Abhängig von anderen RT-Tasks

Kritische real-time Tasksà foreground tasks

                Threads

                Direktzugriff auf Hardware & Interrupts

Nicht kritische Tasksà background tasks

                Linux tradionell asl taks

                Visualisierung

                Vernetzung etc.

Synchronisation

Problemstellungen um Parallelverarbeitung kennen und diskutieren können  

Beispiel Vorlesung, Milch Kaufen gehen 2 Mitbewohner "Kühlschrank-Problem"

Race Condition

  • Mindestens 2 Tasks greifen auf gemeinsame Daten zu
  • Mindestens 1 Zugriff ist ein Schreibzugriff
  • Das Resultat hängt von Ausführungsreihenfolge der beteiligten Tasks ab

Mögliche Abläufe der Programme

  • Unabhängig
    • Keine gegenseitige Beeinflussung
    • Nutzung verschiedener Ressourcen
    • Keine Synchronisation/Koordination notwendig
  • Abhängig
    • Programm kooperieren
    • Nutzen Daten und Ressourcen gemeinsam
    • Zugriff muss synchronisiert bzw. koordiniert werden

Synchronisation

Das Konzept des kritischen Abschnitts erklären und diskutieren können 

Lösung für Kühlschrankproblem --> kritischer Abschnitt (abschliessbarer Kühlschrank, der, der einkaufen geht hat den Schlüssel)

Taskzugriff auf gemeinsame Daten/Ressourcen --> Task befindet sich in seinem kritischen Abschnitt

Aufenthalt im kritischen Abschnitt, muss gegenseitig ausschließend seinà zu jedem Zeitpunkt befindet sich höchstens ein Task im kritischen Abschnitt

Zutritt zum kritischen Abschnitt --> nur über „Erlaubnis“

Gegenseitiger Ausschluss --> Mutual exclusion = Mutex

 

Support für gegenseitigen Ausschluss muss folgende Anforderungen erfüllen:
- nur ein Task darf sich in seinem kritischen Abschnitt aufhalten (Tasks aus der
Menge der Tasks, die auf die gemeinsamen Daten oder Ressourcen Zugriff
haben)
- ein Task, der sich nicht im kritischen Abschnitt befindet und anhält, darf dies
nur tun ohne andere Tasks zu beeinflussen
- wartet ein Task auf Eintritt in den kritischen Abschnitt, muss ihm dieser irgend
wann auch gewährt werden
- wenn sich kein Task im kritischen Abschnitt befindet, muss jedem Task der in
den kritischen Abschnitt eintreten möchte, sofort Eintritt gewährt werden
- es dürfen keine Annahmen zur Abarbeitungsgeschwindigkeit von Tasks oder zur
Anzahl Prozessoren gemacht werden
- ein Task bleibt nur für eine endliche Zeit in seinem kritischen Abschnitt

Synchronisation

Mechanismen für die Implementation von kritischen Abschnitten und zur Lösung von Synchronisations-problemen aufzählen und erklären können 

  • Softwarelösung
  • Semaphore
  • Monitore

  • Reine Softwarelösungen
    • Software-Algorithmen, deren Korrektheit von keinen weiteren Bedingungen abhängt
  • Hardwarelösungen
    • Unterstützung durch spezielle Maschineninstruktionen
  • Lösungen mit Hilfe des Betriebssystems
    • stellen dem Anwender Funktionen und Datenstrukturen zur Verfügung
    • Semaphore, Mutexes, etc.
  • Lösungen zusammen mit Programmiersprache
    • Monitore, z.B. Java

Software Lösung 1

Mittels Busy Wait:

  • Task wartet aktiv
  • Er konsumiert Rechenzeit, bis Scheduler einen Task-Switch durchführt
  • Wird auch Spinnlock genannt

Diskussion:

  • Gegenseitiger Ausschluss wird zwar erreicht, aber Tasks können nur abwechselnd den kritischen Abschnitt durchlaufen

Semaphore

Der Semaphor ist eigentlich eine Datenstruktur(integer), die zugriff erlauben und verweigern kann auf eine Ressource in einer Multi-Processing Umgebung.

Operationen auf Semaphore:

  • Wait(S) Semaphor schliessen auch P(S), down(S)
  • Post(S) Semaphor öffnen auch V(S), Up(S),signal(S)

Vorteile:

  • Kein Busy wait
  • Wartende Tasks
    • In Queue eingereith
    • Blockieren bis Sperre Frei

Probleme:

  • Wait(s) & post(s) ev. Über mehrere Tasks verteilt
    • Schwierig den Überblick zu behalten à fehleranfällig
    • Fehler schwierig zu finden, treten nur unter bestimmten Bedingungen auf
    • Anwendung muss in allen Tasks korrekt sein

Monitore

Ist ein Softwaremodul, die Daten Prozeduren und eine Initialisierungssequenz enthält. Jedes Java Objekt ist ein Monitor. Eingänge in den Monitor sind synchronized Methoden

Funktionsweise:

  • Zugriff auf lokale Variable nur über Monitormethoden
  • Zutritt in Monitor mit Aufruf einer dieser Methoden
  • Nur ein Task kann Code innerhalb des Monitors ausführen
  • Andere Tasks: warten auf Eintritt, warten auf Bedingung im Wartebereich