Hochschule Muenchen Logo

Scheduling Simulator

v2 Bereit
๐Ÿ“Š Scheduler
๐Ÿ–ฅ Multi-Core
โšก DVFS
๐Ÿ”’ Synchronisierung
๐Ÿ“ˆ Statistiken
โš– A/B Vergleich
๐Ÿ“– Handbuch
Prozess hinzufรผgenโ–ผ
Algorithmus Round Robinโ–ผ
Round Robin
Preemptiv
FCFS
Non-preemptiv
SJF
Non-preemptiv
SRTF
Preemptiv
Priority
Non-preemptiv
Linux CFS
vruntime
Linux EEVDF
eligible VD
SCHED_FIFO
Linux RT
SCHED_RR
Linux RT
SCHED_DEADLINE
Linux RT
MLQ
Multilevel
MLFQ
Feedback
EDF
Echtzeit
Rate Mono.
Echtzeit
LLF
Least Laxity
Presets:
Gantt-Overlayโ–ผ
Prozesse 0โ–ผ
Sync-Ressourcen โ–ผ
Keine Sync-Ressourcen
โ„น Algorithmus-Info โ–ผ
Speed:
Zeit: 0 | Schritt: 0/0
100%
Multi-Core Konfiguration
Cores: 2
Global SMP
Globale Queue
Partitioned
Core-Affinitรคt
Work Stealing
Idleโ†’Steal
Gang Sched.
Parallel
G-EDF
Global EDF
P-EDF
Partitioned EDF
Mit fixem Seed sind tie-breaks und Zufallsanteile reproduzierbar.
Load Balancing
Migrationen: 0
ร˜ Core-Auslastung: โ€”
Algorithmus-Info
Wรคhle eine Strategie fรผr Details.
Zeit: 0 | Schritt: 0/0
Entscheidung: โ€”
Skalierungs- und Strategieanalyse
Skalierungsstudie noch nicht ausgefรผhrt.
Strategievergleich noch nicht ausgefรผhrt.
Core Status
Per-Core Ready Queues
NUMA Topologie
Scheduling-Overhead
Migration Events
Migration Timeline
Warnungen & Antipatterns
Noch keine Analyse.
DVFS Algorithmus
Performance
f=max immer
Powersave
f=min immer
Ondemand
Reaktiv
Conservative
Graduell
Schedutil
Util-basiert
Interactive
Latenz-opt.
25%
100%
70%
Energie-Statistik
โ€”
Energie (J)
โ€”
Einsparung
โ€”
ร˜ Frequenz
โ€”
Perf.-Verlust
Algorithmus-Beschreibung
Performance
Lรคuft immer bei maximaler Frequenz. Beste Performance, hรถchster Energieverbrauch.
Geeignet fรผr Latenz-kritische Systeme.
Frequenz-Verlauf & CPU-Last รผber Zeit
Frequenz-Tabelle
ZeitAuslastungFrequenzLeistung
Sync-Konfiguration
Sync-Metriken
Klicke "Sync aufbauen".
Deadlock-Erkennung

โš  Deadlock erkannt!

โœ“ Kein Deadlock erkannt
Mutex
Semaphore
Condition Variables
RW-Lock
Producer-Consumer
Sync Event Log
โ€”
ร˜ Wartezeit
โ€”
ร˜ Turnaround
โ€”
ร˜ Antwortzeit
โ€”
CPU-Auslastung
โ€”
Durchsatz
โ€”
Ctx Switches
๐Ÿ‘ฉโ€๐Ÿซ Lehrenden-Analytics
Noch keine Daten erfasst.
Prozess-Details
ProzessAnkunftExec. TimeStartFertigWartenTurnaroundAntwort
Algorithmus-Vergleich (ร˜ Wartezeit)
๐ŸŽฒ Stochastische Workloads (Monte Carlo)
Monte-Carlo zeigt Verteilungen statt Einzelwerten: starte die Analyse mit dem aktuellen Setup.
๐ŸŽฏ Multi-Objective Optimization (Pareto)
Pareto-Front zeigt nicht-dominierte Trade-offs zwischen Latenz, Durchsatz, Energie und Deadline-Misses.
๐Ÿงญ Real OS Mapping
Wird nach der nรคchsten Simulation mit einem praxisnahen OS-Mapping befรผllt.
๐Ÿ“ Schedulierbarkeits-Rechner
๐Ÿงฎ WCRT-Analyse (Response Time Analysis)
Simulation ausfรผhren, dann WCRT berechnen.
๐Ÿงช Modular Regression & Parity
Noch nicht ausgefรผhrt.
Algorithmus A RR
Algorithmus B EDF
Verwendet die Prozesse aus dem Scheduler-Tab. Prozesse zuerst dort laden/erstellen.
โš–
Wรคhle zwei Algorithmen und klicke "Vergleichen"

๐Ÿ“– Scheduling Simulator โ€” Handbuch

Browserbasiertes Lehr- und Analysewerkzeug fรผr Betriebssystem-Vorlesungen. Kein Server nรถtig โ€” einfach die HTML-Datei im Browser รถffnen.

Kernfunktionen

โš™ 8 Scheduling-Algorithmen
FCFS, SJF, SRTF, RR, Priority, MLQ, EDF, Rate Monotonic
๐Ÿ–ฅ Multi-Core (bis 8 Kerne)
6 Strategien: SMP, Partitioned, Work Stealing, Gang, G-EDF, P-EDF
๐Ÿ“Š Analyse-Suite
WCRT, Laxity-Heatmap, Histogramm, Jitter, Fairness-Index
๐ŸŽฒ Taskset-Generator
UUniFast-Algorithmus, Schedulierbarkeits-Rechner
โšก DVFS-Energiesimulation
6 Governor-Strategien, P-States, Pโˆfยณ-Modell
๐Ÿ“‚ 14 Lehr-Beispiele
Mit Beobachtungs-Leitfaden, Experimenten & Theorie

Begriffe & Definitionen

Scheduling-Literatur verwendet teils unterschiedliche Begriffe fรผr รคhnliche Konzepte. Diese Tabelle klรคrt die wichtigsten Terme โ€” insbesondere die Unterscheidung zwischen Execution Time, WCET und verwandten GrรถรŸen.

ZeitgrรถรŸen eines Tasks

BegriffSymbolDefinitionIm Simulator
Execution Time
auch: CPU-Burst, Compute Time
C / Cแตข Die reine CPU-Rechenzeit, die ein Task von dem Moment an benรถtigt, in dem er die CPU zugeteilt bekommt, bis er seinen Berechnungsanteil abgeschlossen hat. Enthรคlt keine Warte- oder I/O-Zeiten. Feld โ€žExecution Time (C)" beim Anlegen eines Prozesses. Wird als fixer WCET-Wert behandelt (deterministisches Modell).
WCET
Worst-Case Execution Time
C Die maximale Execution Time รผber alle mรถglichen Eingaben und Codepfade. Sicherheitskritische Echtzeitsysteme garantieren Schedulierbarkeit nur dann, wenn Cแตข = WCET verwendet wird. Die tatsรคchliche Ausfรผhrungszeit liegt oft darunter (ACET). Im deterministischen Modell gilt: Execution Time = WCET. Mit Modell โ€žACET" oder โ€žZufรคllig ยฑ20 %" werden auch kรผrzere Ausfรผhrungszeiten simuliert.
ACET
Average-Case Execution Time
Cฬ„ Durchschnittliche Execution Time unter realistischer Last. Fรผr Schedulierbarkeitsanalysen ungeeignet โ€” nur fรผr Leistungsmessungen sinnvoll. Auswรคhlbar รผber โ€žWCET/ACET-Modell" beim Anlegen eines Prozesses.
Response Time
auch: Antwortzeit
R Zeit vom Aktivierungszeitpunkt (Arrival) bis zum ersten CPU-Zugriff des Tasks. Misst die Wartezeit in der Ready-Queue vor der ersten Ausfรผhrung.
R = firstCPU โˆ’ arrival
Spalten Min/ร˜/Max Resp. im Metriken-Panel. Im Gantt als blaue Pfeil-Linie darstellbar (Overlay โ€žReaktionszeit").
WCRT
Worst-Case Response Time
R* Analytisch garantierte maximale Antwortzeit unter einem gegebenen Scheduler, berechnet รผber die Response-Time-Analysis (RTA). Ein Task ist schedulierbar, wenn R* โ‰ค D (Deadline).
Rแตข = Cแตข + ฮฃโฑผโˆˆhp(i) โŒˆRแตข/TโฑผโŒ‰ยทCโฑผ
Tab ๐Ÿ“ˆ Statistiken โ†’ ๐Ÿงฎ WCRT-Analyse. Zeigt R* und Slack = D โˆ’ R* pro Task.
Turnaround Time
auch: Durchlaufzeit
TAT Zeit vom Aktivierungszeitpunkt bis zur vollstรคndigen Fertigstellung des Tasks. Enthรคlt Warte- und Ausfรผhrungszeit.
TAT = finish โˆ’ arrival = Wait + C
Spalte Turnar. im Metriken-Panel.
Waiting Time
auch: Wartezeit
W Zeit, die ein Task in der Ready-Queue verbringt, ohne die CPU zu nutzen.
W = TAT โˆ’ C
Spalte Wait im Metriken-Panel. Gelb markiert wenn รผberdurchschnittlich hoch.
Laxity / Slack
auch: Spielraum
L(t) Verbleibender Zeitpuffer bis zur Deadline unter Berรผcksichtigung der noch nรถtigen Rechenzeit.
L(ฯ„แตข, t) = Dแตข โˆ’ t โˆ’ rem_Cแตข
L = 0: Task muss sofort laufen, sonst Deadline-Miss.
Gantt-Overlay โšก Kritischer Pfad (Laxity-Heatmap): rot = Lโ‰ค0, gelb = kritisch, grรผn = sicher.
Tardiness
auch: Verspรคtung
รœberschreitung der Deadline.
tardiness = max(0, finish โˆ’ deadline)
Spalte Tardin. im Metriken-Panel, rot markiert wenn > 0.

Abgrenzung: Execution Time vs. Response Time

Hรคufige Verwechslung: โ€žWie lange lรคuft der Task?" bezieht sich auf die Execution Time C (reine CPU-Zeit). โ€žWie lange dauert es, bis der Task fertig ist?" bezieht sich auf die Turnaround Time (Warten + Rechnen). โ€žWie lange wartet er, bis er das erste Mal die CPU bekommt?" ist die Response Time.
Arrival โ”€โ”€[Response Time R]โ”€โ”€โ–ถ firstCPU โ”€โ”€[Execution Time C]โ”€โ”€โ–ถ finish           โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€[Turnaround Time TAT]โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜           โ””โ”€โ”€[Waiting Time W]โ”€โ”€โ”˜

Termini in verschiedenen Quellen

Dieser SimulatorTanenbaumSilberschatzLiu & Layland / Buttazzo
Execution Time (C)CPU burstCPU burst timecomputation time Cแตข
Response Timeresponse timeresponse timeresponse time Rแตข
Turnaround Timeturnaround timeturnaround timeโ€”
WCRTโ€”โ€”worst-case response time R*
Laxityโ€”โ€”laxity / slack Lแตข(t)

Tabs & Navigation

TabInhalt
๐Ÿ“Š SchedulerHauptansicht: Prozesse anlegen, Algorithmus wรคhlen, Gantt animieren, Metriken analysieren
๐Ÿ–ฅ Multi-CoreParallele Ausfรผhrung auf 1โ€“8 Kernen mit verschiedenen Scheduling-Strategien
โšก DVFSEnergiesimulation mit Frequenz-Governor und P-State-Konfiguration
๐Ÿ”’ SynchronisierungMutex, Semaphor, Producer/Consumer, Deadlock-Demo
๐Ÿ“ˆ StatistikenTabellarische Auswertung, WCRT-Analyse, Schedulierbarkeits-Rechner
โš– A/B VergleichZwei Algorithmen direkt gegenรผberstellen โ€” Gantt, Metriken, Diagramm
๐Ÿ“– HandbuchDiese Seite
Tipp: Im Header befinden sich: ๐Ÿ’พ Presets (Szenarien speichern/laden/teilen), ๐ŸŽฒ Taskset-Gen, ๐Ÿ“‚ Beispiele, Export/Import und Reset.

Prozesse anlegen

Alle Felder im linken Panel des Scheduler-Tabs. Pflichtfelder: Name und Execution Time.

FeldBedeutungHinweis
NameProzessbezeichnungz.B. P1, ฯ„1
AnkunftArrival Time t0 = sofort verfรผgbar
Execution Time (C)Reine CPU-Rechenzeit des Tasks (= Cแตข)โ‰ฅ 1; wird als WCET behandelt
Prioritรคt1 = hรถchste PrioritรคtNur fรผr Priority-Algo relevant
PeriodeWiederholungsintervall fรผr periodische TasksFรผr EDF/RM; beeinflusst Job-Expansion
DeadlineRelative Deadline ab AnkunftStandard: = Periode (implizite Deadline)
Queue-LevelMLQ-Ebene (0=Highest, 1=Interactive, 2=Batch)Nur fรผr MLQ
MutexZugewiesenes Mutex-ObjektFรผr Synchronisierungs-Simulation
Task-TypPeriodisch / Sporadisch (MIT) / AperiodischBeeinflusst Ankunftsmuster
ThreadsAnzahl paralleler Threads1โ€“8; fรผr Gang-Scheduling
WCET-ModellWCET (deterministisch) / ACET (ร˜) / Zufรคllig ยฑ20%Beeinflusst tatsรคchliche Ausfรผhrungszeit
Core-AffinitรคtBevorzugter Core bei Multi-Core-1 = Auto (Scheduler entscheidet)

Schnelles Setup

  1. Name und Execution Time eingeben โ†’ + Prozess hinzufรผgen
  2. Fรผr Echtzeit: Periode und Deadline setzen, Task-Typ auf "Periodisch"
  3. โœ Icon zum Bearbeiten, ร— zum Lรถschen
  4. Farbe รผber den Color-Picker anpassen

Scheduling-Algorithmen

AlgorithmusTypQuantumGeeignet fรผr
Round Robin (RR)Preemptivโœ“Interaktive Systeme, faire CPU-Verteilung
FCFSNon-preemptivโ€”Einfache Stapelverarbeitung; demonstriert Konvoi-Effekt
SJFNon-preemptivโ€”Minimiert ร˜ Wartezeit; erfordert Burst-Kenntnisse
SRTFPreemptivโ€”Optimal fรผr ร˜ Antwortzeit; kann Starvation verursachen
PriorityNon-preemptivโ€”Prioritรคtsbasierte Systeme; demonstriert Starvation
MLQMultilevelpro QueueGemischte Workloads (Echtzeit / Interaktiv / Batch)
EDFPreemptivโ€”Echtzeit โ€” optimal solange U โ‰ค 100%
Rate MonotonicPreemptivโ€”Periodische Echtzeit โ€” stabil, statische Prioritรคten

Konfigurations-Parameter

  • Quantum: Zeitscheibe fรผr RR (Standard: 2). GrรถรŸeres Q โ†’ weniger Ctx-Switches, schlechtere Response-Zeit
  • Cores: Anzahl simulierter CPU-Kerne (1โ€“8) โ€” beeinflusst CPU-Auslastungsberechnung
  • ฮด_cs: Kontextwechsel-Overhead (wird als grauer Block in den Gantt eingefรผgt)
  • ฮด_sched: Scheduler-Overhead pro Dispatch-Entscheidung
U = CPU_busy_time / (totalTime ร— numCores)

Gantt-Diagramm & Overlays

Steuerleiste

  • โฎ โ–ถ โญ โ€” Schritt zurรผck / Play-Pause / Schritt vor
  • Speed-Slider โ€” Animationsgeschwindigkeit
  • Core-Ansicht โ€” Zeigt Core-Zuweisung farbig (bei Multi-Core)
  • ๐Ÿ’ฌ Schritt-Erklรคrung โ€” Zeigt Scheduling-Entscheidungsgrund รผber dem Gantt

Ein-/Ausblendbare Overlays

OverlaySymbolBeschreibung
Sync-Ereignisseโ€”Gelb = kritischer Abschnitt (Mutex gehalten), Rot gestreift = blockiert
DVFS-Frequenzโ€”Frequenzรคnderungen als farbiger Streifen unter den Blรถcken
Ressourcen-Zeileโ€”Extra Zeile pro Mutex zeigt Lock-Zeiten
Deadlinesโ—†Diamant + gestrichelte Linie bei absoluter Deadline
Ankunftszeitenโ–ผGrรผnes Dreieck bei jeder Job-Ankunft
Deadline-Missesโœ•Rote รœberlappungsmarkierung + โœ• bei Deadline-Verletzung
Perioden-Grenzenโ”ŠVertikale gestrichelte Linien an jedem Periodenende
Reaktionszeitโ†”Gestrichelte Linie von Ankunft bis erstem CPU-Zugriff (R=N Label)
Ctx-Switch-Overheadโง–Grauer/Lila Block = Overhead-Zeit (nicht produktiv)
Kritischer PfadโšกLaxity-Heatmap am Blockrand: grรผn=sicher, rot=kritisch

Metriken-Panel

Erscheint nach jeder Simulation unterhalb des Gantts. Collapsible รผber den Titel-Balken.

Zusammenfassungs-Chips

MetrikFormel
CPU-Util.ฮฃ(CPU-Blรถcke) / (totalTime ร— Cores)
Durchsatzfertige Prozesse / totalTime
ร˜ Wartezeitฮฃ(Turnaround_i โˆ’ C_i) / n
ร˜ Responseฮฃ(firstCPU_i โˆ’ arrival_i) / n
ร˜ Turnaroundฮฃ(finish_i โˆ’ arrival_i) / n
Tardiness ฮฃฮฃ max(0, finish_i โˆ’ deadline_i)
Jain Fairness(ฮฃw_i)ยฒ / (n ร— ฮฃw_iยฒ) โ€” 1.0 = perfekt fair
OH-AnteilctxN ร— (ฮด_cs + ฮด_sched) / totalTime

Grafiken im Panel

  • Response-Zeit Histogramm โ€” Verteilung der Response-Zeiten (erscheint ab โ‰ฅ 3 Job-Instanzen). Gelbe Linie = Mittelwert, grรผne Linie = Median.
  • Jitter-Verlaufskurve โ€” Response-Zeit je Job-Instanz รผber die Zeit fรผr periodische Tasks (erscheint ab โ‰ฅ 2 Instanzen).

๐ŸŽฒ Taskset-Generator (UUniFast)

Header-Button ๐ŸŽฒ Taskset-Gen. Generiert zufรคllige Tasksets mit definierter Gesamtauslastung.

Parameter

ParameterBeschreibung
nAnzahl Tasks (2โ€“12)
U (%)Gesamtauslastung 10โ€“99%
T_min / T_maxPeriodenbereich (zufรคllig uniform verteilt)
Deadline-TypImplizit (D=T) / Constrained (Dโ‰คT) / Arbitrรคr
AlgorithmusWird direkt fรผr die Simulation รผbernommen

UUniFast-Algorithmus

Erzeugt gleichmรครŸig verteilte Auslastungsvektoren (Bini & Buttazzo, 2005):

sumU = U_total for i = 1 to n-1: nextSumU = sumU ร— rand(0,1)^(1/(n-i)) U_i = sumU - nextSumU sumU = nextSumU U_n = sumU

Die Vorschau zeigt: ฮฃ U, Liu & Layland-Schranke und EDF-Schedulierbarkeit. Mit ๐ŸŽฒ Generieren neuen Zufallssatz erzeugen, mit โœ“ รœbernehmen in den Simulator laden.

โš– A/B Vergleichsmodus

Tab โš– A/B Vergleich. Fรผhrt denselben Prozess-Set mit zwei verschiedenen Algorithmen aus und stellt die Ergebnisse direkt gegenรผber.

Workflow

  1. Prozesse im Scheduler-Tab anlegen (oder Beispiel laden)
  2. A/B-Tab รถffnen โ†’ Algorithmus A und B wรคhlen
  3. Quantums fรผr beide einstellen
  4. โš– Vergleichen klicken

Ausgabe

  • Gantt-Vergleich: Beide Timelines nebeneinander
  • Metriken-Tabelle: Alle Kennwerte, Gewinner grรผn hervorgehoben, Spalte "Besser": A / B / =
  • Balkendiagramm: ร˜ Wartezeit, ร˜ Response, ร˜ Turnaround, Ctx-Switches
Tipp: Lade ein Lehr-Beispiel (z.B. "Konvoi-Effekt") und vergleiche dann FCFS vs. SJF โ€” der Effekt ist unmittelbar sichtbar.

๐Ÿงฎ WCRT-Analyse (Response Time Analysis)

Im Tab ๐Ÿ“ˆ Statistiken. Berechnet die Worst-Case Response Time (WCRT) fรผr alle Prozesse.

Algorithmus (Audsley / Tindell / Joseph)

R_i^(0) = C_i R_i^(k+1) = C_i + ฮฃ_{j โˆˆ hp(i)} โŒˆ R_i^(k) / T_j โŒ‰ ร— C_j Konvergiert โ†’ R* wenn R^(k+1) = R^(k) Schedulable โ†” R* โ‰ค D_i

hp(i) = Menge aller Tasks mit hรถherer Prioritรคt als ฯ„_i.

Ausgabe-Spalten

SpalteBedeutung
CExecution Time (= WCET im Simulator)
TPeriode
DRelative Deadline
UAuslastung C/T
WCRT R*Berechnete Worst-Case Antwortzeit (โˆž = nicht schedulable)
SlackD โˆ’ R* (positiv = Puffer vorhanden)
Hinweis: RTA gilt exakt fรผr feste Prioritรคten (RM, Priority). Fรผr EDF gilt: schedulable genau dann wenn ฮฃ U_i โ‰ค 1.

โšก Kritischer Pfad / Laxity-Heatmap

Overlay-Checkbox im Gantt-Overlay-Panel. Visualisiert die Laxity (Puffer bis Deadline-Miss) als farbigen Balken am unteren Rand jedes Gantt-Blocks.

Laxity(ฯ„_i, t) = deadline(ฯ„_i) โˆ’ t โˆ’ remaining_C(ฯ„_i)
FarbeBedeutung
GrรผnHohe Laxity โ€” Task liegt gut im Zeitplan
GelbMittlere Laxity โ€” Aufmerksamkeit empfohlen
RotLaxity โ‰ค 0 โ€” Deadline-Miss unvermeidlich

Der Block mit global niedrigster Laxity wird mit โšก L=X.X annotiert. Roter Rahmen = Deadline definitiv verpasst.

Anwendung: Bei EDF/RM aktivieren. Laxity = 0 bedeutet: dieser Task muss sofort laufen. Vergleiche Algorithmen: Welcher hรคlt die Laxity stabiler?

๐Ÿ“ Schedulierbarkeits-Rechner

Im Tab ๐Ÿ“ˆ Statistiken. Interaktiver Chart der Auslastungs-Schranken.

Anzeige

  • Lila Kurve โ€” Liu & Layland RM-Schranke: U_bound(n) = n(2^(1/n) โˆ’ 1) (โ†’ 69.3% fรผr nโ†’โˆž)
  • Grรผne Linie โ€” EDF-Schranke: U โ‰ค 100%
  • Punkt โ€” Aktueller Taskset: grรผn = RM schedulable, gelb = nur EDF, rot = รœberlast

Interaktive Slider

Unterhalb des Charts kรถnnen U_i aller Tasks per Slider angepasst werden โ€” der Punkt wandert in Echtzeit.

RM schedulable โ†” ฮฃ U_i โ‰ค n(2^(1/n) โˆ’ 1) EDF schedulable โ†” ฮฃ U_i โ‰ค 1.0

๐Ÿ’ฌ Schritt-Erklรคrung

Checkbox ๐Ÿ’ฌ Schritt-Erklรคrung in der Gantt-Steuerleiste. Zeigt fรผr jeden Simulationsschritt, warum der aktuelle Task gewรคhlt wurde.

Beispiele nach Algorithmus

AlgorithmusBeispiel-Erklรคrung
FCFSP1 ist an erster Stelle der Warteschlange (Ankunft t=0). Lรคuft bis Fertig.
EDFP3 hat die frรผheste Deadline (D=8). Ready-Queue: [P1(D=12), P3(D=8)].
RRP2 ist an der Reihe. Zeitscheibe Q=2. Ready: [P1, P2, P3].
RMP2 hat kรผrzeste Periode (T=5) = hรถchste Prioritรคt. Ready: [P1(T=10), P2(T=5)].
PriorityP1 hat hรถchste Prioritรคt (Prio=1). Ready: [P1(P=1), P3(P=3)].

Bei Overhead-Blรถcken wird Typ und Dauer angezeigt (ฮด_cs oder ฮด_sched).

๐Ÿ’พ Preset-Bibliothek

Header-Button ๐Ÿ’พ Presets. Szenarien lokal speichern, verwalten und teilen.

Features

  • Speichern: Aktuelles Szenario mit Namen versehen โ†’ sofort in der Liste
  • Laden/Lรถschen: Per Knopfdruck in der Liste
  • Export: Alle Presets als JSON-Datei herunterladen
  • Import: JSON-Datei einlesen und mit bestehenden zusammenfรผhren
  • ๐Ÿ”— Share-URL: Generiert eine URL mit dem aktuellen Szenario als Base64-Hash. Beim ร–ffnen des Links wird es automatisch geladen.
Tipp: Presets werden im localStorage des Browsers gespeichert โ€” beim Lรถschen des Browser-Caches gehen sie verloren. Fรผr dauerhafte Archivierung regelmรครŸig exportieren.

๐Ÿ–ฅ Multi-Core Simulation

StrategieBeschreibung
Global SMPEine globale Ready-Queue, alle Kerne teilen sich Tasks
PartitionedFeste Core-Zuweisung per Affinitรคt (kein Stealing)
Work StealingIdle-Kerne stehlen Tasks von รผberlasteten Queues
Gang SchedulingMulti-Thread-Prozesse laufen auf mehreren Kernen parallel
G-EDFGlobales EDF: frรผheste Deadline รผber alle Kerne
P-EDFPartitioniertes EDF mit Bin-Packing-Zuweisung
Schnell-Setup: Im Scheduler-Tab Cores > 1 setzen โ†’ โ–ถ Simulieren โ†’ nutzt automatisch Global SMP.

Die CPU-Auslastung wird core-normalisiert berechnet: U = busy / (totalTime ร— n_cores). Migrationen werden im Gantt als Pfeil dargestellt (Overlay: Core-Migrationen).

โšก DVFS (Dynamic Voltage/Frequency Scaling)

Tab โšก DVFS. Simuliert dynamisches Frequenzscaling auf Basis der CPU-Auslastung.

P โˆ fยณ (CMOS-Nรคherung) Energie E = ฮฃ P(f_t) ร— ฮ”t
GovernorVerhalten
PerformanceImmer f_max โ€” beste Leistung, hรถchster Verbrauch
PowersaveImmer f_min โ€” hรถchste Ersparnis, schlechteste Latenz
OndemandSpringt bei Last > Schwelle auf f_max, sonst proportional
ConservativeSchrittweises Erhรถhen/Senken โ€” vermeidet รœberschwingen
Schedutilf proportional zur Scheduler-Auslastungsschรคtzung (Linux 4.7+)
InteractiveHรคlt f_max solange kรผrzlich Burst-Aktivitรคt โ€” gut fรผr GUIs

P-States als kommagetrennte MHz-Liste konfigurierbar (z.B. 400,800,1200,1600,2000).

๐Ÿ”’ Synchronisierung

  • Mutex-Simulation: Bis zu 3 Mutexes, Lock/Unlock-Protokoll, kritische Abschnitte im Gantt gelb
  • Semaphor-Demo: Producer/Consumer mit konfigurierbarer PuffergrรถรŸe
  • Deadlock-Generierung: Erzeugt zyklische Wartebedingung โ†’ DFS-Erkennung
  • Prioritรคtsinversion: Niedrig-prioritรคrer Task hรคlt Mutex, den ein hochprioritรคrer benรถtigt

Blockierte Prozesse erscheinen im Gantt rot gestreift. Das Protokoll-Log zeigt alle Lock/Unlock-Events.

Import / Export

  • โฌ‡ Export: Speichert Prozesse, Konfiguration und Simulations-Meta als JSON-Datei
  • โฌ† Import: Lรคdt eine exportierte JSON-Datei und stellt den Zustand wieder her
  • ๐Ÿ’พ Presets: Fรผr dauerhaftes Speichern und Teilen (siehe Preset-Bibliothek)
Tipp: Exportiere interessante Konfigurationen vor dem Experimentieren, um zur Ausgangslage zurรผckzukehren.

๐Ÿ“‚ Lehr-Beispiele

14 vorgefertigte Szenarien in 6 Kategorien. ร–ffnen รผber den Header-Button ๐Ÿ“‚ Beispiele. Nach dem Laden erscheint rechts ein Analyse-Leitfaden mit Beobachtungshinweisen, klickbaren Experiment-Buttons und Theorie-Hintergrund.

KategorieBeispiele
Klassisch๐Ÿš› Konvoi-Effekt ยท โœ‚ SJF vs. SRTF ยท ๐Ÿ”„ Round Robin Quantum ยท ๐Ÿฝ Starvation ยท ๐Ÿ“š MLQ
Synchronisierung๐Ÿ”„ Prioritรคtsinversion ยท โš™ Kontextwechsel-Overhead
Echtzeitโฑ EDF vs. RM ยท ๐Ÿ’ซ Sporadische Tasks ยท ๐Ÿ“Š RM Auslastungsgrenze
Multi-Core๐Ÿ–ฅ Global SMP vs. Work Stealing ยท ๐Ÿ“ˆ Skalierung 1โ†’4 Kerne
DVFSโšก Energie-Tradeoff Governor-Vergleich
Analyse๐Ÿ“‰ Jitter-Analyse Periodische Tasks

โ“ Hรคufige Fragen

EDF simuliert keine Wiederholungen?

Periode und Task-Typ auf "Periodisch" setzen. Der Simulator expandiert automatisch Job-Instanzen bis t=60 (Hyperperiod-Fenster).

CPU-Util. bei Multi-Core erscheint zu niedrig?

Korrekt โ€” die Auslastung ist core-normalisiert: U = busy / (totalTime ร— n_cores). 2 Kerne mit je 80% = 80% Util., nicht 160%.

Kontextwechsel-Overhead hat keinen sichtbaren Effekt?

ฮด_cs und ฮด_sched werden als graue Blรถcke injiziert. Bei FCFS gibt es wenige Switches โ†’ kaum Overhead. Bei RR mit kleinem Quantum sehr deutlich sichtbar.

WCRT zeigt โˆž?

Die Fixpunktiteration divergiert โ†’ Task nicht schedulable. Periodenharmonie prรผfen, Auslastung reduzieren, oder Task in eine niedrigere Prioritรคtsstufe verschieben.

Taskset-Generator erzeugt nicht die gewรผnschte Auslastung?

UUniFast kann bei einzelnen Tasks U_i > 1 liefern (wird automatisch verworfen + neu generiert). Bei U > 95% oder sehr kleinen Perioden kรถnnen viele Versuche nรถtig sein โ€” einfach nochmals auf "Generieren" klicken.

Share-URL funktioniert nicht?

Der Browser muss Clipboard-Zugriff erlauben. Falls die automatische Kopie fehlschlรคgt, รถffnet sich ein Prompt mit der URL zum manuellen Kopieren.

Preset verschwunden nach Browser-Update?

Presets liegen im localStorage. Browser-Datenlรถschung oder Inkognito-Modus lรถscht sie. RegelmรครŸig รผber "Alle exportieren" sichern.

๐Ÿ’ก Erweiterungsideen

Analyse & Visualisierung

  • Anomalie-Detektor: Automatische Warnung bei Graham-Anomalien (Multi-Core)
  • Parameter-Sweep: n Runs mit variierendem Quantum/Prioritรคt โ†’ Metrik-Kurven
  • SVG/PNG-Export: Gantt als Vektorgrafik herunterladen
  • Trace-Import: Reale Linux ftrace/perf Traces einlesen und visualisieren

Algorithmen

  • MLFQ: Multi-Level Feedback Queue mit dynamischer Prioritรคtsanpassung
  • CBS: Constant Bandwidth Server โ€” reservierungsbasiertes Scheduling
  • LLF: Least Laxity First โ€” echtzeitoptimal, wechselt bei Laxity-Gleichstand
  • Mixed-Criticality: Verschiedene Kritikalitรคtsstufen (VESTAL-Modell)

Echtzeit

  • Processor Demand Criterion: EDF-Schedulierbarkeit fรผr beliebige Deadlines
  • Hyperperiod-Simulation: Automatisch LCM(Tโ‚,โ€ฆ,Tโ‚™) als Simulationsfenster
  • Jitter-Propagation: Ausgangsjitter eines Tasks als Eingangsjitter des nรคchsten

Pรคdagogik

  • Quiz-Modus: Multiple-Choice Fragen zum beobachteten Gantt
  • Undo/Redo: Prozessรคnderungen rรผckgรคngig machen
  • Mehrsprachigkeit: Englische UI-Variante (i18n)
  • Permalink/Embed: Einbettbarer iFrame-Modus fรผr Folien

โˆ‘ Formelreferenz

GrรถรŸeFormelAnmerkung
WartezeitW_i = Turnaround_i โˆ’ C_iZeit in Ready-Queue
TurnaroundTA_i = finish_i โˆ’ arrival_iGesamtdurchlaufzeit
Response TimeR_i = firstCPU_i โˆ’ arrival_iReaktionszeit
Tardinesstard_i = max(0, finish_i โˆ’ D_i)Deadline-รœberschreitung
LaxityL_i(t) = D_i โˆ’ t โˆ’ rem_C_iVerbleibender Puffer
CPU-Util.U = ฮฃ busy / (T_max ร— n_cores)Core-normalisiert
Jain-Fairness(ฮฃw_i)ยฒ / (n ร— ฮฃw_iยฒ)1.0 = perfekt fair
RM-SchrankeU_max = n(2^(1/n) โˆ’ 1)โ†’ ln(2) โ‰ˆ 69.3% fรผr nโ†’โˆž
EDF-Bedingungฮฃ C_i/T_i โ‰ค 1.0Notwendig und hinreichend
WCRT (RTA)R_i = C_i + ฮฃ_{jโˆˆhp} โŒˆR_i/T_jโŒ‰ยทC_jIterativer Fixpunkt
DVFS-EnergieE = ฮฃ f_tยณ ยท ฮ”tCMOS-Nรคherung Pโˆfยณ
Auslastung TaskU_i = C_i / T_iAnteil der CPU pro Periode