From 4160a7dcc63e66db7d9437913cc534775602d23d Mon Sep 17 00:00:00 2001 From: Sebastian Preisner Date: Wed, 7 Apr 2021 13:21:47 +0200 Subject: [PATCH] Scheduling verfahren close #1 --- README.md | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 066203f..c78ba8e 100644 --- a/README.md +++ b/README.md @@ -426,7 +426,74 @@ * Verfügbarkeit für verschiedene Prozessorarchitekturen * optimierte Werkzeuge zur Entwicklung von Echtzeitanwendungen - +### Task + +* ist ein Ausführbares Programm inkl. aller dazu gahöriger aktueller Werte, Register, Variablen und Betriebsmittel (Speicher, I/O, Signale, usw.) +* Organisation in der **Task Control Block** (**TCB**) oder **Process Control Block** (**PCB**) Tabelle +* Der **PCB** enthält die Prozessinformationen sowie CPU- und Systemkontext für den jeweiligen Task. +* Die Prozessinformationen definieren den **Prozesszustand** (erzeugt, lauffähig, laufend, suspendiert, terminiert) sowie die **Prozesspriarität** (hoch, mittel, niedrig) + +### Scheduler + +* Zuordnung der Ausführungsreihenfolge von Prozessen bzw. Tasks (genannt Schedule) + * Entscheidet anhand der Prozesspriarität welchem Lauffähigen Programm die CPU zugeordnet wird. +* zentrale Instanz eines Echtzeitbetriebssystems +* **zulässig** (feasible) wenn **alle Zeitbedingungen aller Tasks** im System **erfüllt sind** (keine Deadlines werden überschritten) +* **schedulebar** heißen Systeme, die für jede mögliche Aktivierungssequenz einen zulässigen Schedule besitzen +* **präemptives** (unterbrechendes) **Sheduling**: + * von den meisten Echtzeitsystemen unterstützt + * Tasks mit höherer Priorität unterbrechen laufende Tasks mit niedrigerer Priorität +* **kooperative Scheduling**: + * Tasks geben freiwillig (zu einem ihm passenden Zeitpunkt) die CPU ab +* **Dispatcher** (Verteiler, operative Komponente): + * zuständig für den Systemkontextwechsel (context switch) + * wechsel von einem Task zu nächsten + +#### Round-Robin-Verfahren + +| Eigenschaft | Wert | +| ------------- | ------------------------------------------------------------ | +| Beschreibung | Jeder Task erhält einen gleichmäßigen Anteil der Rechenzeit. Dies **Zeitscheibe** (**time slice**) wird dabei so kurz gewählt, dass keine bemerkbaren Verzögerungen auftreten. | +| Einsatzgebiet | Mehrbenutzerbetriebssysteme/Timesharingsysteme (Linux, Windows NT, Unix...) | +| Echtzeitfähig | nein | +| | | +| | | + +#### Earliest Deadline First Scheduling-Algorithmus (EDF) + +* neigt zu überflüssigen Kontextwechsel +* unterbricht laufende Prozesse zu gunsten Prozesse mit kürzerer Laufzeit +* Berechnung der Laufzeit sporadischer Tasks ist aufwendig + +| Eigenschaft | Wert | +| ------------- | ------------------------------------------------------------ | +| Beschreibung | Task mit nächstliegender Deadline wird ausgeführt. | +| Besonderheit | Produziert für jedes schedulebare Prozesssystem einen zulässigen Schedule | +| Einsatzgebiet | findet in der Praxis kaum Verwendung | +| Echtzeitfähig | | +| | | + +### Raten-monotone Scheduling (RMS) + +| Eigenschaft | Wert | +| ------------- | ---- | +| Beschreibung | | +| Einsatzgebiet | | +| Echtzeitfähig | | +| | | +| | | + +### Multitasking + +Hierbei werden mehrere Task scheinbar parallel (gleichzeitig) verarbeitet. Dabei wird die CPU unter den Tasks zeitlich aufgeteilt. Der wechsel erfolgt dabei meist so schnell das der Eindruck entsteht, das die Tasks gleichzeitig Ablaufen. + +**Echtzeitbetriebssysteme** sind durchweg Multitasking-fähig, hierbei werden sie durch: + +* Interrupts (Unterbrechungen) +* Timeouts (Zeitabläufen) +* Input events (Eingabeereignisse) + +gesteuert. # Routing