Latenzen

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Latenzen
Moin,

kann uns jemand die Unterschiede von und insbesondere die Zusammenhänge zwischen Einlastungs-, Einplanungs und Unterbrechungslatenz erklären? :wand: :wand: :wand:

Wir wären sehr dankbar.


Erst kommt die Einplanung und dann die Einlastung.
Wie wäre es mit der Zeit zwischen Einplanung und Einlastung?


Das ist schon klar :*)

Wir meinen vor allem Folie 9-19. Wie ist das Bild zu verstehen? Warum sind bei voll verdrängend die Balken genausolang wie bei verdrängend, aber es gibt anscheinend nur eine Unterbrechungs-, aber keine Einlastungs- und Einplanungslatenz?!


also ich versuchs mal zu erklaeren - ist nicht mein Spezialgebiet und hab’ mit wosch die Antwort nicht abgestimmt:

Unterbrechungslatenz (Interrupt Latency):
Zeit zwischen Intterrupt-Signalisierung (Geraet zieht an der Interrupt-Leitung) und Loslaufen der Interrupt-Service-Routine (ISR) im Kern
(kann sich z.B. durch Interrupt-Sperren verzoegern, enthaelt aber auf jeden Fall
den konstanten? Aufwand fuer Register retten und den Sprung in die ISR)

Einplanungslatenz (scheduling latency):
Die ISR stellt evtl. fest, dass ein Prozess jetzt weiterlaufen koennte. Damit muss er jetzt
in den Zustand bereit ueberfuehrt werden (d.h. in die Warteschlange der bereiten Prozesse
an der richtigen Stelle eingetragen werden). Das wird nicht unbedingt direkt nach der
Interruptbearbeitung gemacht, sondern erst zu einem spaeteren Zeitpunkt (der Interrupt
kann ja irgendwo dazwischen gehauen haben, wo so eine Aktion gerade stoeren wuerde).

Einlastungslatenz (dispatch latency):
Bis ein bereiter Pozess dann tatsaechlich laufend wird, kann nochmal dauern.
Zuerst muss er tatsaechlich aus der Menge der bereiten Prozesse ausgewaehlt werden (das
koennte auch noch scheduling latency sein?), dann muss der gerade laufende Prozess einen
Punkt erreichen, an dem er den Prozessor ueberhaupt abgeben kann (Prozessumschaltungen
macht man in der regel nur an einigen wenigen Stellen im Systemkern weil ja alle Datenstrukturen
in einem konsistenten Zustand sein muessen) und dann muss man auch noch die
Umschaltung selbst machen.

Wenn man im Netz und in der Literatur nach den Begriffen sucht, dann findet man allerdings
durchaus unterschiedliche Definitionen. In sofern sollte man mit den obigen Beschreibungen
etwas vorsichitg sein - gerade bei scheduling/dispatch latency laesst sich die Grenze nicht
scharf ziehen (z.B. wird bei manchen Systemen die Scheduling-Entscheidung erst getroffen,
wenn der zu verdraengende Prozess an einem Verdraengungspunkt angekommen ist,
waehrend man bei anderen Systemen diese Entschjeidung evtl. schon nach dem Bereit-setzen
des aufgweckten Prozesses trifft und dann nur noch drauf wartet, dass der gerade aktive
Prozess das Feld raeumt.

Das rechte Bild auf Seite 9-19 versteh ich so, dass man bei voll-verdraengend bei einem
Interrupt ohne weitere Ruecksicht die Umschaltung einfach durchzieht. Also der aufgeweckte
Prozess wird in den Zustand bereit gesetzt und dann wird auf ihn umgeschaltet. Egal wo
der gerade unterbrochene Prozess grade war und ob der das jetzt passend findet.


Aber mit den Latenzzeiten sind die Zeiten gemeint um von einer Ebene / Aktion zur tieferen Ebene / nächsten Aktion gelangt und nicht, bis man wieder zurück auf dieser Ebene ist, wenn ich das richtig verstanden habe.


Danke für die ausführliche Erklärung. Jetzt ist es auch uns klar :wink: