HAAGE & PARTNER COMPUTER GMBH
Ehomeneuesproduktedemospreisebestellenhändlermessenservicepost?

WarpUP Release 3 - Die Herausforderung

Dynamisches Multitasking

Fuer die Version 14 von WarpOS wurde der Multitasking-Kern (der Scheduler) neu geschrieben. WarpOS V14 unterstuetzt jetzt dynamisches Scheduling, welches von UNIX-Workstations und von der AMIGA-Software 'Executive' her bekannt ist. Damit kommen jetzt auch die AMIGA-User in den Genuss von erstklassigem Multitasking!

Die wichtigsten Leistungsmerkmale des neuen WarpOS-Schedulers sind:

  • Es werden keine statischen Prioritaeten mehr unterstuetzt, stattdessen findet die Zuteilung der Rechenzeit dynamisch statt. Jeder Task, und wenn er nur sehr unwichtig ist, bekommt immer etwas Rechenzeit ab. Das heisst, dass die Zeiten, in denen ein mit hoher Prioritaet laufender Task alle anderen Tasks blockiert, der Vergangenheit angehoeren!
  • Tasks, welche eine geringe Aktivitaet aufweisen, bekommen kurzfristig eine hohe Prioritaet und mehr Rechenzeit, sobald sie wieder in Aktion treten. Damit wird erreicht, dass Interaktionen des Benuetzers wesentlich schneller abgewickelt werden, selbst wenn der PowerPC sehr stark ausgelastet ist. Das Starten eines neuen Tasks bei starker Auslastung des PPC-Prozessors geht ebenfalls aeussert schnell. Auch die Zeiten, in denen der Benuetzer lange Zeit auf das Hochfahren von Programmen bei starker Systemauslastung warten musste, sind jetzt vorbei!
  • Die Wichtigkeit eines Tasks laesst sich jetzt von aussen einstellen (aehnlich wie bis anhin mit den Prioritaeten). Damit laesst sich einstellen, wieviel Rechenzeit ein Task erhalten soll. Bei laufendem Multitasking kann man auf diese Weise sogar die Ausfuehrungsgeschwindigkeit eines Tasks steuern! Das laesst sich sehr schoen mit den STORM-MESA-Demos demonstrieren.

  • Der Scheduler fuehrt jetzt umfangreiche Statistiken ueber die verschiedenen Tasks und ueber das gesamte System. Diese statistischen Werte lassen sich jetzt mit dem Tool-Programm 'stat' ausgeben. Es werden dabei fuer jeden Task die CPU-Auslastung, die Aktivitaet und noch weitere Werte ausgegeben.

  • Es wurden mehrere neue Tools geschrieben, welche die Handhabung der WarpOS-Tasks erleichtern, z.B. ein Tool, womit man abgestuerzte WarpOS-Programme entfernen kann ('killppc').


Das Hardware-Treiber-System

Das neue WarpUp hat wieder eine neue Struktur erhalten. Neu unterstuetzt WarpUp ein Hardware-Treiber-System mittels Treiber-Libraries ('warpHW.library'). Fuer jede PowerPC-Hardware wird jetzt ein Treiber benoetigt, um WarpOS mit der Hardware verwenden zu koennen. Jeder Treiber ist dabei unterschiedlich und nur fuer eine bestimmte Hardware bestimmt. Im aktuellen WarpUp-Paket sind Treiber-Libraries fuer die folgende Hardware enthalten:

  • CyberStormPPC
  • BlizzardPPC
  • Phase5 Developer Board


Dieses Treiber-System erlaubt es nun, jedem Hersteller von PowerPC-Hardware selbststaendig einen Treiber zu schreiben, wonach WarpOS automatisch mit der neuen Hardware funktioniert. Im WarpUp-Paket sind alle Instruktionen und ein Template-Projekt enthalten, welche notwendig sind, um einen solchen Treiber schreiben zu koennen.

Das Hardware-Treiber-System fuehrt also zu einer noch groesseren Hardware-Unabhaengigkeit von WarpUp und wir hoffen natuerlich, dass die obige Liste bald Zuwachs bekommt!

Unterstuetzung der BlizzardPPC-Hardware

WarpUp unterstuetzt jetzt auch die BlizzardPPC-Hardware. Allerdings gestaltet sich die Benuetzung von WarpUp fuer Benuetzer einer BlizzardPPC-Hardware etwas anders als wie es bisher bei der CyberStormPPC der Fall war.

Ein grosser Unterschied zwischen der BlizzardPPC und aelterer PPC-Hardware ist der, dass sich die 'ppc.library' von Phase5 im ROM der Hardware befindet und auch gleich beim Booten geoeffnet wird. Das Problem ist jetzt, dass WarpOS nicht parallel zur 'ppc.library' laufen kann, deswegen war es bisher immer notwendig, einen Reset durchzufuehren, falls die 'ppc.library' aktiviert war und WarpOS benuetzt werden sollte. Dies ist jetzt auf der BlizzardPPC zwecklos, da es keine Moeglichkeit mehr gibt, zu verhindern, dass die 'ppc.library' aktiviert ist.

Die einzige Moeglichkeit, das WarpOS zum Laufen zu bringen, ist die, dass WarpOS versucht, die 'ppc.library' und alle verwandten Resourcen so sauber wie moeglich aus dem System zu entfernen. Dies wird allerdings nicht automatisch gemacht. Eine erste Voraussetzung fuer die Aktivierung des 'Terminator'-Features ist das Setzen der Environment-Variable

'powerpc/Terminator',

was mit dem beigefuegten Installerscript erledigt werden kann. Wenn jetzt WarpOS hochfahren will, erscheint ein Requester, welcher den Benuetzer fragt, ob die 'ppc.library' und alle verwandten Resourcen entfernt werden sollen. Der Benuetzer kann dem zustimmen oder den Bootvorgang abbrechen, wonach die 'ppc.library' weiterhin aktiviert bleibt.

Das 'Terminator'-Feature kann natuerlich auch mit der bisherigen PPC-Hardware benuetzt werden, was es jetzt zumindest erlaubt, den Reset einzusparen, der notwendig war, um von ELF-Software auf WarpUp-Software zu wechseln.

Wenn die Requester mit der Zeit auf die Nerven gehen, kann man sie auch ausschalten, indem man die Environment-Variable 'powerpc/HideWarning' auf 1 setzt. Es sei hier aber darauf hingewiesen, dass, im Falle dass das 'Terminator'-Feature aktiviert ist, die 'ppc.library' ohne Vorwarnung entfernt wird, und unter Umstaenden bemerkt man das gar nicht. Deswegen sei
hier Vorsicht geboten.

Falls noch Probleme mit WarpOS und neuer PPC-Hardware auftauchen sollten (insbesondere mit neueren Flash-ROM-Versionen!) so bitten wir um Benachrichtigung, so dass man die Probleme loesen kann.

Fehlerbehebung / Detailverbesserungen

Der Release 2 verursachte bei einigen Systemen Probleme, welche auf den extrem kleinen Stack der RAMLIB zurueckzufuehren sind. Dieses Problem wurde jetzt behoben, was erwiesermassen dazu gefuehrt hat, dass WarpOS jetzt auch auf Systemen laeuft, welche diese Probleme gezeigt hatten.

Es sei hier auch erwaehnt, dass auch die powerpc.library V7 von diesen Aenderungen profitiert hat und jetzt wesentlich besser laufen sollte, die V7.2 ist im aktuellen WarpUp-Paket erhaeltlich.

Daneben wurde noch ein Fehler behoben, welche dazu fuehrte, dass die Allokation von grossen Speicherbereichen mit den WarpOS-Funktionen fehlschlugen. Dies machte sich beispielsweise bei den *STORM-MESA*-Demos bemerkbar, wenn man das Fenster stark vergroesserte.

Beim Erzeugen von PPC-Spiegel-Tasks wird jetzt, im Falle dass der 68K-Task ein CLI-Background-Task ist, nicht mehr der Prozessname als Grundlage fuer den Namen des PPC-Tasks verwendet, sondern der Name des gestarteten Programms. Dies fuehrt dazu, dass die WarpOS-Tasks bei der Ausgabe der Task-Statistiken einfacher zuzuordnen sind, da der Name des gestarteten Programms darin enthalten ist. Das funktioniert aber nur, wenn man Programme mit 'run' startet.

Entwickler-spezifisches

Die Dokumentation des WarpUp-API ist jetzt sowohl als Autodoc-Datei wie auch als AmigaGuide-Datei erhaeltlich.

Die Prototypen-Datei wurde stark restrukturiert, damit alternative Compiler besser unterstuetzt werden. Die StormC-spezifischen Erweiterungen wurden in eine externe Datei ausgelagert.

Jetzt ist auch eine FD-Datei zur powerpc.library erhaeltlich.

Das neue Tool 'throw' erlaubt es jetzt, WarpOS-Tasks, welche in eine Endlos-Schleife geraten sind, von aussen her zu unterbrechen. Dazu wird eine Instruction-Breakpoint-Exception ausgeloest, sobald der Task wieder vom Scheduler aktiviert wird. Damit kann der Entwickler auch gleich die Ursache des Problems finden, da er im ausfuehrlichen Absturzrequester viele Informationen ueber die Art des Absturzes erhaelt.

Eine neue Funktion 'GetHALInfo' erlaubt es jetzt, Informationen ueber den WarpUp-HAL einzuholen. Zur Zeit kann man damit herausfinden, wieviele emulierte Alignment-Exceptions seit dem Hochfahren von WarpOS aufgetreten sind. Diese Exceptions treten immer dann auf, wenn der PowerPC versucht, auf Fliesskomma-Werte zuzugreifen, welche sich nicht an einer durch 4
teilbaren Adresse befinden. Der WarpUp-HAL (d.h. die warp.library) faengt diese Exceptions ab und fuehrt eine Emulation durch, dies geschieht voellig transparent fuer das WarpOS (das ist schon seit der ersten Version implementiert). Damit muessen sich Applikationen, welche WarpUp unterstuetzen, keine Gedanken zu diesem Thema machen, da es aus ihrer Sicht diese Probleme gar nicht gibt. Allerdings sollte das Auftreten solcher Exceptions minimiert werden, um die Performance hoch zu halten.

Die neue Funktion 'FindTaskByID' erlaubt es jetzt, Tasks mit einer ID-Nummer zu finden. Mit dem neuen Scheduler wurden jetzt auch ID-Nummern fuer Tasks eingefuehrt, welche die Handhabung vereinfachen koennen.

Die Funktionen 'SetScheduling' und 'SetNICEValue' koennen dazu dienen, das Multitasking mit dem neuen Scheduler zu beeinflussen. Mit 'SetNICEValue' kann man den sogenannten NICE-Wert aendern, welcher die Wichtigkeit des Tasks definiert (etwas aehnliches wie die alten Prioritaeten).

Neu ist es jetzt egal, auf welcher Seite Inter-CPU-Messages freigegeben werden. Im Falle, dass die Freigabe mit der CPU passiert, welche die Message nicht alloziert hat, wird einfach ein Kontextwechsel gemacht, damit die Message auf der richtigen Seite freigegeben wird. Damit kann eine bessere Transparenz fuer den Programmierer erreicht werden.

Ein wichtiger Schritt in Richtung 'Resource-Tracking' wurde getan: jetzt werden alle Speicherbereiche, welche ein WarpOS-Task im Laufe seiner Existenz alloziert und nicht freigegeben hat, automatisch beim Beenden des Tasks freigegeben.

^top


© 1998 HAAGE & PARTNER Computer - http://www.haage-partner.com