| Zeit | Auslastung | Frequenz | Leistung |
|---|
| Prozess | Ankunft | Exec. Time | Start | Fertig | Warten | Turnaround | Antwort |
|---|
Vorgefertigte Szenarien fรผr den Unterricht. Zeigen klassische Scheduling-Phรคnomene.
Browserbasiertes Lehr- und Analysewerkzeug fรผr Betriebssystem-Vorlesungen. Kein Server nรถtig โ einfach die HTML-Datei im Browser รถffnen.
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.
| Begriff | Symbol | Definition | Im 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. |
| Dieser Simulator | Tanenbaum | Silberschatz | Liu & Layland / Buttazzo |
|---|---|---|---|
| Execution Time (C) | CPU burst | CPU burst time | computation time Cแตข |
| Response Time | response time | response time | response time Rแตข |
| Turnaround Time | turnaround time | turnaround time | โ |
| WCRT | โ | โ | worst-case response time R* |
| Laxity | โ | โ | laxity / slack Lแตข(t) |
Alle Felder im linken Panel des Scheduler-Tabs. Pflichtfelder: Name und Execution Time.
| Feld | Bedeutung | Hinweis |
|---|---|---|
| Name | Prozessbezeichnung | z.B. P1, ฯ1 |
| Ankunft | Arrival Time t | 0 = sofort verfรผgbar |
| Execution Time (C) | Reine CPU-Rechenzeit des Tasks (= Cแตข) | โฅ 1; wird als WCET behandelt |
| Prioritรคt | 1 = hรถchste Prioritรคt | Nur fรผr Priority-Algo relevant |
| Periode | Wiederholungsintervall fรผr periodische Tasks | Fรผr EDF/RM; beeinflusst Job-Expansion |
| Deadline | Relative Deadline ab Ankunft | Standard: = Periode (implizite Deadline) |
| Queue-Level | MLQ-Ebene (0=Highest, 1=Interactive, 2=Batch) | Nur fรผr MLQ |
| Mutex | Zugewiesenes Mutex-Objekt | Fรผr Synchronisierungs-Simulation |
| Task-Typ | Periodisch / Sporadisch (MIT) / Aperiodisch | Beeinflusst Ankunftsmuster |
| Threads | Anzahl paralleler Threads | 1โ8; fรผr Gang-Scheduling |
| WCET-Modell | WCET (deterministisch) / ACET (ร) / Zufรคllig ยฑ20% | Beeinflusst tatsรคchliche Ausfรผhrungszeit |
| Core-Affinitรคt | Bevorzugter Core bei Multi-Core | -1 = Auto (Scheduler entscheidet) |
| Algorithmus | Typ | Quantum | Geeignet fรผr |
|---|---|---|---|
| Round Robin (RR) | Preemptiv | โ | Interaktive Systeme, faire CPU-Verteilung |
| FCFS | Non-preemptiv | โ | Einfache Stapelverarbeitung; demonstriert Konvoi-Effekt |
| SJF | Non-preemptiv | โ | Minimiert ร Wartezeit; erfordert Burst-Kenntnisse |
| SRTF | Preemptiv | โ | Optimal fรผr ร Antwortzeit; kann Starvation verursachen |
| Priority | Non-preemptiv | โ | Prioritรคtsbasierte Systeme; demonstriert Starvation |
| MLQ | Multilevel | pro Queue | Gemischte Workloads (Echtzeit / Interaktiv / Batch) |
| EDF | Preemptiv | โ | Echtzeit โ optimal solange U โค 100% |
| Rate Monotonic | Preemptiv | โ | Periodische Echtzeit โ stabil, statische Prioritรคten |
| Overlay | Symbol | Beschreibung |
|---|---|---|
| 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 |
Erscheint nach jeder Simulation unterhalb des Gantts. Collapsible รผber den Titel-Balken.
| Metrik | Formel |
|---|---|
| CPU-Util. | ฮฃ(CPU-Blรถcke) / (totalTime ร Cores) |
| Durchsatz | fertige 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-Anteil | ctxN ร (ฮด_cs + ฮด_sched) / totalTime |
Header-Button ๐ฒ Taskset-Gen. Generiert zufรคllige Tasksets mit definierter Gesamtauslastung.
| Parameter | Beschreibung |
|---|---|
| n | Anzahl Tasks (2โ12) |
| U (%) | Gesamtauslastung 10โ99% |
| T_min / T_max | Periodenbereich (zufรคllig uniform verteilt) |
| Deadline-Typ | Implizit (D=T) / Constrained (DโคT) / Arbitrรคr |
| Algorithmus | Wird direkt fรผr die Simulation รผbernommen |
Erzeugt gleichmรครig verteilte Auslastungsvektoren (Bini & Buttazzo, 2005):
Die Vorschau zeigt: ฮฃ U, Liu & Layland-Schranke und EDF-Schedulierbarkeit. Mit ๐ฒ Generieren neuen Zufallssatz erzeugen, mit โ รbernehmen in den Simulator laden.
Tab โ A/B Vergleich. Fรผhrt denselben Prozess-Set mit zwei verschiedenen Algorithmen aus und stellt die Ergebnisse direkt gegenรผber.
Im Tab ๐ Statistiken. Berechnet die Worst-Case Response Time (WCRT) fรผr alle Prozesse.
hp(i) = Menge aller Tasks mit hรถherer Prioritรคt als ฯ_i.
| Spalte | Bedeutung |
|---|---|
| C | Execution Time (= WCET im Simulator) |
| T | Periode |
| D | Relative Deadline |
| U | Auslastung C/T |
| WCRT R* | Berechnete Worst-Case Antwortzeit (โ = nicht schedulable) |
| Slack | D โ R* (positiv = Puffer vorhanden) |
Overlay-Checkbox im Gantt-Overlay-Panel. Visualisiert die Laxity (Puffer bis Deadline-Miss) als farbigen Balken am unteren Rand jedes Gantt-Blocks.
| Farbe | Bedeutung |
|---|---|
| Grรผn | Hohe Laxity โ Task liegt gut im Zeitplan |
| Gelb | Mittlere Laxity โ Aufmerksamkeit empfohlen |
| Rot | Laxity โค 0 โ Deadline-Miss unvermeidlich |
Der Block mit global niedrigster Laxity wird mit โก L=X.X annotiert. Roter Rahmen = Deadline definitiv verpasst.
Im Tab ๐ Statistiken. Interaktiver Chart der Auslastungs-Schranken.
U_bound(n) = n(2^(1/n) โ 1) (โ 69.3% fรผr nโโ)U โค 100%Unterhalb des Charts kรถnnen U_i aller Tasks per Slider angepasst werden โ der Punkt wandert in Echtzeit.
Checkbox ๐ฌ Schritt-Erklรคrung in der Gantt-Steuerleiste. Zeigt fรผr jeden Simulationsschritt, warum der aktuelle Task gewรคhlt wurde.
| Algorithmus | Beispiel-Erklรคrung |
|---|---|
| FCFS | P1 ist an erster Stelle der Warteschlange (Ankunft t=0). Lรคuft bis Fertig. |
| EDF | P3 hat die frรผheste Deadline (D=8). Ready-Queue: [P1(D=12), P3(D=8)]. |
| RR | P2 ist an der Reihe. Zeitscheibe Q=2. Ready: [P1, P2, P3]. |
| RM | P2 hat kรผrzeste Periode (T=5) = hรถchste Prioritรคt. Ready: [P1(T=10), P2(T=5)]. |
| Priority | P1 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).
Header-Button ๐พ Presets. Szenarien lokal speichern, verwalten und teilen.
localStorage des Browsers gespeichert โ beim Lรถschen des Browser-Caches gehen sie verloren. Fรผr dauerhafte Archivierung regelmรครig exportieren.| Strategie | Beschreibung |
|---|---|
| Global SMP | Eine globale Ready-Queue, alle Kerne teilen sich Tasks |
| Partitioned | Feste Core-Zuweisung per Affinitรคt (kein Stealing) |
| Work Stealing | Idle-Kerne stehlen Tasks von รผberlasteten Queues |
| Gang Scheduling | Multi-Thread-Prozesse laufen auf mehreren Kernen parallel |
| G-EDF | Globales EDF: frรผheste Deadline รผber alle Kerne |
| P-EDF | Partitioniertes EDF mit Bin-Packing-Zuweisung |
Die CPU-Auslastung wird core-normalisiert berechnet: U = busy / (totalTime ร n_cores). Migrationen werden im Gantt als Pfeil dargestellt (Overlay: Core-Migrationen).
Tab โก DVFS. Simuliert dynamisches Frequenzscaling auf Basis der CPU-Auslastung.
| Governor | Verhalten |
|---|---|
| Performance | Immer f_max โ beste Leistung, hรถchster Verbrauch |
| Powersave | Immer f_min โ hรถchste Ersparnis, schlechteste Latenz |
| Ondemand | Springt bei Last > Schwelle auf f_max, sonst proportional |
| Conservative | Schrittweises Erhรถhen/Senken โ vermeidet รberschwingen |
| Schedutil | f proportional zur Scheduler-Auslastungsschรคtzung (Linux 4.7+) |
| Interactive | Hรค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).
Blockierte Prozesse erscheinen im Gantt rot gestreift. Das Protokoll-Log zeigt alle Lock/Unlock-Events.
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.
| Kategorie | Beispiele |
|---|---|
| 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 |
Periode und Task-Typ auf "Periodisch" setzen. Der Simulator expandiert automatisch Job-Instanzen bis t=60 (Hyperperiod-Fenster).
Korrekt โ die Auslastung ist core-normalisiert: U = busy / (totalTime ร n_cores). 2 Kerne mit je 80% = 80% Util., nicht 160%.
ฮด_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.
Die Fixpunktiteration divergiert โ Task nicht schedulable. Periodenharmonie prรผfen, Auslastung reduzieren, oder Task in eine niedrigere Prioritรคtsstufe verschieben.
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.
Der Browser muss Clipboard-Zugriff erlauben. Falls die automatische Kopie fehlschlรคgt, รถffnet sich ein Prompt mit der URL zum manuellen Kopieren.
Presets liegen im localStorage. Browser-Datenlรถschung oder Inkognito-Modus lรถscht sie. Regelmรครig รผber "Alle exportieren" sichern.
ftrace/perf Traces einlesen und visualisieren| Grรถรe | Formel | Anmerkung |
|---|---|---|
| Wartezeit | W_i = Turnaround_i โ C_i | Zeit in Ready-Queue |
| Turnaround | TA_i = finish_i โ arrival_i | Gesamtdurchlaufzeit |
| Response Time | R_i = firstCPU_i โ arrival_i | Reaktionszeit |
| Tardiness | tard_i = max(0, finish_i โ D_i) | Deadline-รberschreitung |
| Laxity | L_i(t) = D_i โ t โ rem_C_i | Verbleibender Puffer |
| CPU-Util. | U = ฮฃ busy / (T_max ร n_cores) | Core-normalisiert |
| Jain-Fairness | (ฮฃw_i)ยฒ / (n ร ฮฃw_iยฒ) | 1.0 = perfekt fair |
| RM-Schranke | U_max = n(2^(1/n) โ 1) | โ ln(2) โ 69.3% fรผr nโโ |
| EDF-Bedingung | ฮฃ C_i/T_i โค 1.0 | Notwendig und hinreichend |
| WCRT (RTA) | R_i = C_i + ฮฃ_{jโhp} โR_i/T_jโยทC_j | Iterativer Fixpunkt |
| DVFS-Energie | E = ฮฃ f_tยณ ยท ฮt | CMOS-Nรคherung Pโfยณ |
| Auslastung Task | U_i = C_i / T_i | Anteil der CPU pro Periode |
Der Trace-Import akzeptiert Textzeilen im Format pid,start,end oder JSON-Events. Im Linux-Trace-Modus werden kanonisch sched_switch, sched_wakeup(_new), sched_migrate_task und optional sched_eevdf_pick verarbeitet.
# pid,start,end 1,0,2.5 2,0.5,1.5 1,3,5 3,4,6
{
"events": [
{ "type": "sched_switch", "ts": 1.0, "cpu": 0, "prev_pid": 0, "next_pid": 101 },
{ "type": "sched_wakeup", "ts": 1.2, "cpu": 0, "pid": 202, "target_cpu": 1 },
{ "type": "sched_migrate_task", "ts": 1.4, "cpu": 0, "pid": 202, "orig_cpu": 0, "dest_cpu": 1 },
{ "type": "sched_eevdf_pick", "ts": 1.6, "cpu": 0, "pid": 202, "lag": 0.2, "vd": 2.7 },
{ "type": "sched_switch", "ts": 2.8, "cpu": 0, "prev_pid": 101, "next_pid": 0 }
]
}
bash-1234 [001] d..2 1234.567890: sched_switch: prev_comm=bash prev_pid=1234 prev_prio=120 prev_state=R ==> next_comm=python next_pid=2345 next_prio=120 python-2345 [001] d..2 1234.568100: sched_wakeup: comm=worker pid=3456 prio=110 target_cpu=0 python-2345 [001] d..2 1234.568500: sched_migrate_task: comm=worker pid=3456 prio=110 orig_cpu=0 dest_cpu=1 python-2345 [001] d..2 1234.568900: sched_eevdf_pick: pid=3456 lag=0.25 vd=1234.5700 python-2345 [001] d..2 1234.569200: sched_switch: prev_comm=python prev_pid=2345 prev_prio=120 prev_state=R ==> next_comm=bash next_pid=1234 next_prio=120
Generiert Tasksets mit vorgegebener Gesamtauslastung nach dem UUniFast-Algorithmus (Bini & Buttazzo).