Scheduling
-
Der Scheduler von PrettyOS in task.c basiert auf dem sehr einfach zu realisierenden Round-Robin-Prinzip:
// task switch current_task = current_task->next; // der Nächste bitte if(!current_task) current_task = ready_queue; // kein Nächster da? Dann vorne anfangen
Welche Scheduling-Strategie sollte man mittelfristig anstreben?
Kennt sich jemand mit der Implementierung von CFS (Completely Fair Scheduler, Ingo Molnar) aus? Würde das überhaupt Sinn machen? Oder sollte man besser den Typ BFS (Brain F u c k Scheduler) verwenden? Es wird bereits ein Patch für den Desktop angeboten (2.6.31-sched-bfs-221.patch).
http://www.linux-community.de/Internal/Nachrichten/Ingo-Molnar-meldet-sich-zum-Brain-Fuck-Scheduler-zu-Wort <--- im Link "love" durch f u c k (zusammen geschrieben) austauschen (forum bullshit!)Ingo Molnar ... bietet Kolivas deshalb an, mit ihm zusammen zu arbeiten und schließt seine Mail mit: „Wir werden BFS bei guten Ideen und Code folgen und diese in den Hauptzweig übernehmen.“
BFS könnte demnach der aktuell genialste Denkansatz sein.
-
In task.h findet man in struct task folgendes Attribut:
uint16_t priority; // Indicates how often this task gets the CPU
Bisher wird dies im Scheduler noch nicht genutzt.