Hans-Georg Eßer (Dipl.-Inform. Dipl.-Math.)
Betriebssysteme / Informatik-Grundlagen
Fakultät für Informatik und Mathematik
Fakultät für Wirtschaftsingenieurwesen
Hochschule München

hm.hgesser.de


Navigation
Startseite
Impressum
Vorlesungsarchiv
Betriebs-
systeme I
SS 09
Übersicht
Folien / Audio
Moodle
Skript
Prüfungs-Blog
Evaluation
Informatik
Grund-
lagen
WS 08/09
Übersicht
Folien / Audio
Moodle
Evaluation
Betriebs-
systeme I
SS 08
Übersicht
Folien / Audio
Prüfungs-Blog
Evaluation
Betriebs-
syst. I/II
WS 06/07
Übersicht
Folien
Evaluation
Über den Dozenten
Homepage [extern]
Veröffentlichungen
Didaktik-Fortbildungen
Hochschule München
Homepage
Fakultät für Informatik und Mathematik
Fakultät für Wirtschaftsingenieurwesen

Betriebssysteme-Blog

Ihre Fragen sind in normaler Schrift dargestellt, meinen Antworten kursiv.

Context-Switch bei präemptiven Schedulern (13.07.2008)


Wie kann ein präemptiver Scheduler denn einem Prozess die CPU wieder wegnehmen?

Lässt er den Thread nur bis zu einer bestimmten Stelle laufen indem er den auszuführenden Code vor der Prozess-Aktivierung manipuliert? (also _ähnlich_ wie im Praktikum?) Oder verbindet der Scheduler den Timer mit einem Interrupt? Könnte der Prozess (bei bekanntem Interrupt) den Scheduler bzw den Interrupt manipulieren um dann alleine zu laufen?

Und wenn der Scheduler wieder an die Reihe kommt, dann wird doch sowieso ein Context-Switch gemacht dass der Scheduler selbs arbeiten kann; oder gibt es Hardwaremodelle (z.B. Hyperthreading) die dies ohne expliziten CS erledigen können?

Präemptive Scheduler kann man nur einsetzen, wenn die Hardware einen Timer-Baustein bereitstellt, der Interrupts auslöst. Wenn dieser Interrupt ausgelöst wird, wird der Scheduler aktiviert. Der entscheidet dann, ob der gerade noch laufende Prozess seine Arbeit fortsetzen kann oder ob ein anderer Prozess aktiviert wird.

Der laufende Prozess kann den Scheduler nicht manipulieren, weil er dazu in Datenstrukturen des Betriebssystems herum hantieren müsste, die er durch die virtuelle Speicherverwaltung gar nicht sieht. (Das heißt natürlich: Wenn Sie eine primitivere Speicherverwaltung ohne Schutzmechanismen einsetzen, ist ein solcher Eingriff doch möglich, aber dann ist ja jede beliebige Manipulation möglich.)

Beim Aktivieren des Schedulers über einen Timer-Interrupt gibt es zwar auch ein Sichern der Daten des laufenden Prozesses (wie bei jedem Interrupt), aber es findet im Wortsinne kein Context Switch statt, denn das würde bedeuten, zu einem anderen Prozess zu wechseln. Nur wenn der Scheduler schließlich entscheidet, einen anderen Prozess zu schedulen, kommt es zum Context Switch. Den Prozess für einen kurzen Lauf des Schedulers zu unterbrechen, dann aber wieder fortzusetzen, ist billiger als ein Prozesswechsel.

Dass spezielle Hardware dabei helfen könnte, sehe ich nicht; wenn Sie einen HT-Prozessor haben, laufen ja in beiden HT-Komponenten Prozesse, und Sie müssen in jedem Fall einen der Prozesse vorübergehend unterbrechen, um den Scheduler zu starten. (hge)

[ Pfad: | permanenter Link ]

Copyright © 2006-2008 Hans-Georg Eßer.
Anschrift: Hochschule München, Fakultät für Informatik und Mathematik, Lothstraße 34, D-80335 München