• Keine Ergebnisse gefunden

Aufgabe1:ImplementierungdesAlmostUniversallyFairSche-duler(70%) EntwicklungeinerneuenScheduling-Policy Blatt3

N/A
N/A
Protected

Academic year: 2021

Aktie "Aufgabe1:ImplementierungdesAlmostUniversallyFairSche-duler(70%) EntwicklungeinerneuenScheduling-Policy Blatt3"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Ubungen zur Vorlesung ¨ Betriebssysteme II Sommersemester 2012

AG BS Jan Peleska Florian Lapschies

Blatt 3

Entwicklung einer neuen Scheduling-Policy

In diesem ¨ Ubungsblatt soll der Linux-Kernel um eine weitere Scheduling- Policy erweitert werden.

Der zu entwickelnde Scheduler orientiert sich konzeptuell an dem Universell stark fairen Scheduler wie ihr ihn aus Betriebssysteme I kennt. Damit dieser idealisierte Scheduler implementierbar wird, m¨ ussen wir verst¨ andlicherweise auf die Universalit¨ at verzichten und nennen den zu entwickelnden Scheduler daher Almost Universally Fair Scheduler oder kurz AUFAIR.

Das Schedulingverhalten von AUFAIR l¨ asst sich wie folgt beschreiben:

• AUFAIR l¨ asst unbeschr¨ ankt viele Prozesse zu.

• Jedem Prozess wird ein Prozessgewicht z

i

(=Priorit¨ aten) im Bereich z

i

∈ {0 . . . AU F AIR N B W EIGHT S − 1} zugeordnet. Wie beim O(1)-Scheduler ist 0 die beste Priorit¨ at.

• Initial und nach Inanspruchnahme der CPU erh¨ alt jeder Prozess ein zuf¨ alliges Prozessgewicht aus z

i

∈ {0 . . . AU F AIR N B W EIGHT S − 1}.

• Gibt es keinen rechenbereiten Prozess, wird auch keiner gescheduled.

• Hat kein rechenbereiter Prozess das Prozessgewicht 0, wird ein rechen- bereiter Prozess gescheduled, der unter den rechenbereiten Prozessen das niedrigste Prozessgewicht hat. Das Prozessgewicht aller rechenbe- reiten Prozesse, die nicht selektiert wurden, wird um eins erniedrigt.

• Hat mindestens ein rechenbereiter Prozess das Prozessgewicht 0, wird der rechenbereite Prozess selektiert, der dieses Gewicht als erstes er- halten hat.

• Wenn ein rechnender Prozess die CPU nicht freiwillig abgibt, kann er sie bis zum Ablauf einer konstanten Zeitscheibe behalten. Danach wird zwangsweise ein anderer Prozess selektiert, wenn vorhanden.

Aufgabe 1: Implementierung des Almost Universally Fair Sche- duler (70%)

Implementiert eine neue Scheduling Policy die den oben beschriebenen

Scheduling-Algorithmus realisiert.

(2)

Erstellt hierzu eine weitere Schedulingklasse mit dem Namen struct sched class aufair sched class und definiert die n¨ otigen Methoden. Eu- re Schedulingklasse soll sich in der Hierarchie der Schedulingklassen zwischen der Klasse fair sched class und der Klasse idle sched class einordnen.

Wird ein Prozess einer h¨ oheren Scheduling-Policy (z.B.: SCHED OTHER) re- chenbereit, sollen eventuell laufende AUFAIR-Prozesse die CPU abgeben.

Die maximale Zeitscheibe f¨ ur einen AUFAIR-Prozess betr¨ agt 100 Ticks.

Prozesse sollen mit dem Systemcall sched setscheduler() in eure Scheduling-Policy wechseln k¨ onnen. Definiert hierzu eure Policy als #define SCHED AUFAIR 6.

Ahnlich wie der ¨ O(1)-Scheduler verwaltet euer AUFAIR-Scheduler f¨ ur jedes Prozessgewicht eine Liste von rechenbereiten Prozessen mit genau diesem Prozessgewicht. Verwendet hierzu den Datentyp struct list head. Damit zu gegebenem Prozessgewicht die zugeh¨ orige Liste von Prozesse geliefert werden kann, soll ein Array mit der Gr¨ oße AUFAIR NB WEIGHTS die Lis- tenk¨ opfen enthalten. Damit das Erniedrigen von Prozessgewichten in kon- stanter Zeit geschieht, sollen nicht nacheinander alle Prozesse von einer Liste in die vorherige eingeh¨ angt werden. Stattdessen soll der Scheduler einen In- dex auf den Arrayeintrag f¨ ur die Priorit¨ at 0 verwalten. Beim Erniedrigen der Prozessgewichte wird dieser entsprechend versetzt. Nun soll auch das Finden eines Prozesses mit dem geringsten Prozessgewicht m¨ oglichst effizi- ent sein. Verwaltet hierzu analog zum O(1)-Scheduler eine Bitliste, in der Bits genau dann gesetzt sind, wenn mit dem zugeh¨ origen Prozessgewicht Prozesse vorhanden sind. Nutze Funktionen aus linux/bitops.h um das niedrigste Prozessgewicht zu finden. Definiere dabei AUFAIR NB WEIGHTS als 100.

Pseudo-Zufallszahlen k¨ onnt ihr euch mit random32() erzeugen lassen.

Eure Kernelerweiterung soll ¨ uber die Kernelkonfiguration (make menuconfig u.¨ a.) aktivierbar sein. Erweitert hierzu die Datei init/Kconfig, so dass wenn Euer Scheduler bei der Konfiguration ausgew¨ ahlt wurde, CONFIG SCHED AUFAIR definiert ist. Eure Erweiterungen soll nur dann mitkompiliert werden, wenn CONFIG SCHED AUFAIR gesetzt ist.

Aufgabe 2: Tests (30%)

Schreibt Tests, die nachweisen, dass euer Scheduler in der Lage ist, kei- nen, einen, drei und 120 Prozesse zu verwalten, ohne dabei die Fairness zu vernachl¨ assigen. Ruft hierbei gezielt Systemcalls auf, die auch blockieren k¨ onnen. Testet, ob Prozessen, die sich in einer Endlosschreife befinden und ihre Zeitscheibe voll ausnutzen, die CPU schließlich enzogen wird. ¨ Uber- pr¨ uft weiterhin, ob Prozesse der Klasse SCHED OTHER weiterhin gescheduled werden, wenn Prozesse der Klasse AUFAIR rechenbereit sind.

Abgabe: Bis Dienstag, 12.06.2012, in der Vorlesung.

Referenzen

ÄHNLICHE DOKUMENTE

„Wenn in einer Zahl die Einerziffer das Doppelte der Zehnerziffer ist, dann ist die Zahl durch 4 teilbar“?. Ist die

Ein Bruch wird mit einer ganzen Zahl multipliziert, indem der Zähler mit der ganzen Zahl multiplizier wird und der Nenner beibehalten wird.. Zwei Brüche werden multipliziert, indem

„Wenn auf der einen Seite ein Konsonant ist, dann steht auf der anderen Seite eine gerade Zahl“.. A K

Führen Sie nun folgende Operation wiederholt aus: Streichen Sie die letzte Ziffer und ziehen Sie von der verbliebenen Zahl das doppelte der gestrichenen Ziffer ab.. Wann können

Zur „Wenn - dann“- Aussage: „Wenn du dich beeilst, dann bekommst du noch den Zug.“ (Satz 1) ist die „nicht-oder“-Form: „Beeil dich nicht, oder du bekommst (noch) den

„Päckchenrechnen“ bekommt dann einen Sinn, wenn die SchülerInnen durch systematisches Üben eine tiefere Einsichten gewinnen können?. Setzen Sie die Kette fort, bis Sie

Erläuterung: Zwei Menschen a,b sind Aufgabengruppenpartner, in Zeichen a AGP b, wenn sie in der Vorlesung „Arithmetik als Prozess“ in diesem Semester ihre 3.Übung in einer

Bestimmen Sie nun (möglichst bequem) den Rest von n beim Teilen durch 6. „ Man bildet von einer Zahl die Quersumme ohne die letzte Ziffer, verdoppelt das Ergebnis und zieht die