Paralleles Fiasco

Eingetragen von Matthias Lange am 04 April 2007 um 17:35

Bei der Implementierungsaufgabe meiner Diplomarbeit ist heute das erste zählbare Ergebnis herausgekommen: Verschiedene Threads einer Task laufen auf unterschiedlichen Prozessoren. :-)

Doch zunächst ein kurzer Exkurs für diejenigen, die noch nicht wissen womit ich mich in meiner Diplomarbeit beschäftige. Seit letztem Jahr gibt es eine Multiprozessorvariante des Fiasco-Mikrokerns, die ein sehr einfaches Benutzermodell umsetzt. Die Limitierungen dieses Modells werden jedoch als zu restriktiv angesehen, um damit vernünftig ein System zu bauen. Daher entwickle ich die Multiprozessorvariante weiter und beseitige einige dieser Einschränkungen.

Dafür habe ich drei Modelle entworfen und in den letzten zwei Wochen angefangen das Modell 1 zu implementierten. Dieses Modell sieht vor, dass Tasks nicht mehr nur auf einen Prozessor beschränkt sind, sondern einzelne Threads zur besseren Lastverteilung auch auf andere Prozessoren verteilt werden können. Seit vorhin funktioniert das Erzeugen und Ausführen solcher Remote-Threads. Damit funktioniert der größte Teil von Modell 1 und es gibt nur noch ein paar kleinere Dinge zu untersuchen.

Nach Ostern kann es dann mit Modell 2 losgehen, wobei ich schon einige Grundlagen dafür im Modell 1 implementieren musste. Trotzdem wird diese Erweiterung noch ein ganzes Stück schwieriger zu implementieren sein. Beim Debugging wird mir Qemu wieder sehr helfen, wenn das System mal wieder an irgendeinem Punkt einfach stehen bleibt. Mein Betreuer hat schon vorgeschlagen nach Abschluss der Arbeit etwas an Fabrice Bellard zu spenden, denn ohne Qemu wäre die Entwicklung etliche Größenordnungen komplizierter.