Autor Thema: Frage zum Scheduling  (Gelesen 6716 mal)

CuePlay

  • Beiträge: 6
    • Profil anzeigen
Gespeichert
« 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
« Letzte Änderung: 29. December 2011, 23:21 von CopperFoo »

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 29. December 2011, 19:12 »
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. ;)
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

CuePlay

  • Beiträge: 6
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 29. December 2011, 20:07 »
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ß

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 29. December 2011, 21:26 »
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
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

CuePlay

  • Beiträge: 6
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 29. December 2011, 22:36 »
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ß
« Letzte Änderung: 29. December 2011, 23:21 von CopperFoo »

Relbmessa

  • Beiträge: 73
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 29. December 2011, 23:14 »
Hallo,
ich dachte immer es heißt - Scheduler -

 Gruß
Relbmessa

CuePlay

  • Beiträge: 6
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 29. December 2011, 23:22 »
Hallo,

ja stimmt, ist korrigiert.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 29. December 2011, 23:52 »
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?
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

CuePlay

  • Beiträge: 6
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 30. December 2011, 01:02 »
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
« Letzte Änderung: 30. December 2011, 01:06 von CopperFoo »

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 30. December 2011, 01:27 »
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.

Zitat
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.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

CuePlay

  • Beiträge: 6
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 30. December 2011, 01:52 »
Ok, super. Danke für die Antworten.

 

Einloggen