Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: CuePlay am 29. December 2011, 01:04
-
Hallo zusammen,
besuche eine Vorlesung zu Betriebssystemen und Stelle mir da eine Frage zum Scheduling.
Wir unterscheiden dort zwischen high, medium und low level scheduling. Außerdem zwischen preemtive und non-preemtive.
Bei den non-preemtive Verfahren listen wir zum Beispiel FCFS. Dabei handelt es sich ja um einen low level scheduler. Meine Frage: Macht ein high level scheduler in dem Fall überhaupt Sinn?
Grüße
-
Ich weiß nicht wie es anderen geht, aber mir sagt Low/Medium/High Level Scheduling nichts. Wenn du erklärst, was du damit meinst, kann man vielleicht besser antworten. ;)
-
Hi,
Low level scheduling bezeichnet das Aufnehmen anstehender Prozesse in den READY state. Hier werden die Prozesse angelegt.
Medium level scheduling bezeichnet das Ein/Auslagern von Prozessen aus READY oder BLOCKED in den Hintergrund.
High level scheduling bezeichnet die eigentliche Zuweisung der CPU an einen Prozess der im READY state ist.
Gruß
-
Hi,
natuerlich macht das Sinn.
Wenn der Prozess auftaucht, wird er als Ready markiert (low-level).
Wenn du nicht nur die READY-/BLOCKED-States hast, sondern z.B. noch TERMINATED, hast du bei FCFS auch noch (medium-level).
Aber an high-level kommst du nicht vorbei, da die Prozesse trotzdem noch von READY nach RUNNING gelagert werden muessen.
Gruss,
rizor
-
Hey danke,
hatte bei meiner Erklärung Low und High level vertauscht.
Das heißt Strategien wie FCFS, RR oder andere bedienen sich alle aus den Prozessen die in READY sind? Und für das Übernehmen in den READY state ist ein anderer Scheduler verantwortlich?
Gruß
-
Hallo,
ich dachte immer es heißt - Scheduler -
Gruß
Relbmessa
-
Hallo,
ja stimmt, ist korrigiert.
-
Strategien bedienen sich überhaupt nicht, sondern Strategien werden vom Scheduler benutzt, um seine Aufgaben zu erfüllen. ;)
Aber ja, diese Strategien beschreiben alle, was ich tun soll, wenn ich x Prozesse habe, die laufen wollen (d.h. READY sind), und ich muss einen davon als den nächsten auswählen. Ich würde eigentlich sogar sagen, dass man unabhängige Sachen vermischt, wenn man präemptiv/kooperativ auf dieser Ebene betrachtet, denn das sagt eigentlich nicht aus wie ich den nächsten Prozess auswähle, sondern nur wann ich es tue.
Was genau meinst du beim "medium-level scheduler" mit dem Hintergrund, in den ein-/ausgelagert wird?
-
Ich würde eigentlich sogar sagen, dass man unabhängige Sachen vermischt, wenn man präemptiv/kooperativ auf dieser Ebene betrachtet, denn das sagt eigentlich nicht aus wie ich den nächsten Prozess auswähle, sondern nur wann ich es tue.
Ja genau.
Präemptiv -> Unterbrechbar -> Laufender Prozess wird unterbrochen wenn Zeitscheibe abgelaufen ist/Prozess mit höherer Priorität ansteht/etc.
Nicht-Präemptiv/kooperativ -> Es wird gewartet bis Prozess zu Ende gelaufen ist (oder bei kooperativ: gibt der Prozessor eventuell freiwillig den Prozessor ab)
Was genau meinst du beim "medium-level scheduler" mit dem Hintergrund, in den ein-/ausgelagert wird?
Damit meine ich, dass der Scheduler Prozesse aus der READY oder BLOCKED Schlange eventuell aus dem Hauptspeicher irgendwohin anders auslagert/suspendiert. http://www-sr.informatik.uni-tuebingen.de/fileadmin/lehre/vorlesungen/BS/folien/BS_I.2.3_Scheduling_WS10.pdf (http://www-sr.informatik.uni-tuebingen.de/fileadmin/lehre/vorlesungen/BS/folien/BS_I.2.3_Scheduling_WS10.pdf)
-
Nicht-Präemptiv/kooperativ -> Es wird gewartet bis Prozess zu Ende gelaufen ist (oder bei kooperativ: gibt der Prozessor eventuell freiwillig den Prozessor ab)
Prozess zu Ende ist ein Spezialfall von freiwilligem Abgeben, das brauchst du also nicht unbedingt zu unterscheiden.
http://www-sr.informatik.uni-tuebingen.de/fileadmin/lehre/vorlesungen/BS/folien/BS_I.2.3_Scheduling_WS10.pdf (http://www-sr.informatik.uni-tuebingen.de/fileadmin/lehre/vorlesungen/BS/folien/BS_I.2.3_Scheduling_WS10.pdf)
Okay, ich hab mir das jetzt mal angeschaut, vor allem Folie 6 scheint das zu beschreiben, was du meinst. Ich würde da eigentlich nur den kurzfristigen Scheduler wirklich als Scheduler im engeren Sinn ansehen, wie ich ihn in einem OS-Kernel habe. Das Swapping wäre für mich Teil der Speicherverwaltung, und der langfristige Scheduler vermutlich ein Userspace-Programm, das die Jobs zur richtigen Zeit startet.
-
Ok, super. Danke für die Antworten.