Atarium: MiNT - Frischzellenkur für GEMDOS

Seit wir über den holprigen Weg zum TOS-Multitasking ([1]) berichtet haben, gab es einige Fortschritte: Das Atari-Unix (»ASV«) wird an Entwickler ausgeliefert und auch ein multitaskingfähiges TOS ist in Aussicht.

Des TOS-Multitaskings haben sich aber auch Dritte angenommen: Während Pascal Merle es mit »MultiGEM« gelungen ist, dem AES mehrere Hauptapplikationen unterzuschieben, ersetzt das Freeware-Projekt »MiNT« des Kanadiers Eric Smith das bislang schwächste Glied im TOS: GEMDOS.

Einiges deutet darauf hin, daß MiNT bereits jetzt vieles vorwegnimmt, was das GEMDOS im MultiTOS leisten wird (und muß). Daher möchten wir über den aktuellen Entwicklungsstand (Version 0.92) berichten. Dabei kann es sich natürlich nur um einen Überblick handeln: Schließlich ist MiNT und die zugehörige Dokumentation für jedermann frei verfügbar.

Die Bezeichnung MiNT steht für »MiNT is Not TOS« - ein rekursives Akronym, wie es sicherlich manchem Leser schon von »GNU« (GNU's Not Unix) bekannt ist. Die Ähnlichkeit kommt natürlich nicht von ungefähr: Genau wie die Programmierer der »Free Software Foundation« (FSF) mit GNU einen vollständigen und frei erhältlichen Unix-Ersatz schaffen wollen, soll »MiNT« eines Tages TOS ersetzen können. Davon ist es z. Zt. allerdings noch ein gutes Stück entfernt: im Moment werden nur Teile von BIOS, XBIOS und GEMDOS ersetzt. Was zunächst wie eine Schwäche klingen mag, bietet natürlich auch Vorteile: zum Beispiel arbeiten alle Peripheriegeräte unverändert weiter, da MiNT die schon bestehenden BIOS-Funktionen benutzt.

Schon GEMDOS hat ein Prozeßkonzept, das prinzipiell für Multitasking geeignet ist: alle prozeßspezifischen Informationen werden in der Basepage des Programms registriert. Dazu gehören Registerinhalte, Informationen über aktuelle Laufwerke und Pfade, Zeiger auf das Environment und noch einiges mehr. Zum Multitasking fehlt eigentlich nur noch ein Dispatcher, um timergesteuert zwischen verschiedenen GEMDOS-Prozessen hin- und herzuschalten. Genau dies tut MiNT, wobei natürlich die bekannte Basepage um neue Informationen erweitert wurde. Ein Grund mehr, auf keinen Fall nicht offiziell dokumentierte Teile der Basepage zu benutzen (dazu gehört alles, was zwischen »p_env« und »p_cmdlin« liegt!).

Natürlich reichen die Informationen aus der Basepage für ein komplexeres Betriebssystem nicht mehr aus. MiNT merkt sich beispielsweise zusätzlich Informationen über die Prozeßpriorität, den Benutzer und die Register einer eventuell vorhandenen FPU. Zum asynchronen Starten von Programmen - die Voraussetzung, um Programme im Hintergrund laufen zu lassen, gibt es erweiterte Modi für die GEMDOS-Funktion »Pexec()«.

Die Speicherverwaltung ist natürlich eng mit dem Prozeßmanagement verwoben und wird daher ebenfalls von MiNT übernommen. Dabei werden Alternate- und ST-RAM des TT genauso wie im TT-TOS (genauer: GEMDOS 0.19) verwaltet - der dafür verantwortliche Programmcode stammt übrigens vom Atari-Systemprogrammierer Allan Pratt selbst.

Solange ein Programm also nur dokumentierte Systemaufrufe macht, läuft es unter MiNT ganz wie gewohnt weiter. Dies wird besonders durch die extrem simple Installation von MiNT illustriert: Im einfachsten Fall kopiert man lediglich»MINT.PRG« in den AUTO-Ordner und startet das System neu. Die Initialisierung von GEM passiert dann schon als MiNT-Prozeß!

Wo mehrere Programme gleichzeitig werkeln, treten naturgemäß die GEMDOS-Fehler besonders peinlich auf. So kommt GEMDOS ins Schleudern, wenn man der Ein- und Ausgabeumlenkung mehr als nur die allereinfachsten Funktionen abtrotzen will oder gar von mehreren Prozessen aus gleichzeitig auf dieselbe Datei zugreifen will.

MiNT ersetzt kurzerhand alle zeichen- und dateiorientierten GEMDOS-Funktionen und benutzt das alte GEMDOS nur noch, um dann tatsächlich auf die Datei zuzugreifen. Die Verwaltung der Datei-Kanäle, der Standardkanäle, der Zugriffsberechtigungen und der »Usage-Counts« (wie viele Programme lesen aus dieser Datei?) werden dagegen von »MiNT« übernommen. Für den Programmierer heißt das: Die Ein-/Ausgabe-Umlenkung läuft endlich so, wie geplant; und gleich nebenbei hat man eine Testplattform für die von Atari definierten File-Locking-Funktionen.

Auch eines weiteren TOS-Problems nimmt sich »MiNT« erfolgreich an: dem fehlenden Konzept für erweiterbare und ladbare Gerätetreiber - sowohl auf Dateisystem- als auch auf BIOS-Ebene. Dazu kann MiNT beim Booten Treiber für andere Dateisystemtypen nachladen.

Je nach Dateisystemtyp stehen zusätzliche Dateiattribute wie mehrfache Datumsangaben (»access«, »create«, »modify«), Zugriffsberechtigungen (Multiuser-Betrieb) oder auch spezielle Dateitypen (symbolische Links) zu Verfügung. Daß dabei auch die 8+3-Buchstaben-Schranke fällt, versteht sich fast von selbst.

Neu eingerichtet wird Laufwerk »U:« (das »unified file system«), auf dem die anderen GEMDOS-Laufwerke als Verzeichnisse erscheinen (z. B.: U:\C\AUTO\GDOS.PRG). Zusätzlich gibt es die speziellen Unterverzeichnisse »U:\PIPE« (zur Aufnahme von Pipes), »U:\DEV« (für Gerätetreiber) und »U:\PROC« (mit Informationen über die gerade vorhandenen Prozesse).

Die Idee, Namen der Gerätetreiber als Dateien in einem Verzeichnis erscheinen zu lassen, ist ebenso bewährt wie praktisch: In allen Programmen, die den normalen Fileselektor benutzen, kann man direkt auf die Gerätedateien zugreifen (z.B. Speichern auf »U:\DEV\PRN« druckt die Datei aus). Auch der praktische Nulldevice (U:\DEV\NULL) und Einträge für die TT-spezifischen Schnittstellen sind da.

Neueren Datums ist die Idee, auch Prozeßstatusinformationen über ein Dateisystem anzuzeigen - wie bei »Helios« und »Unix System V R4«. Damit kann man sich mit den normalen Desktopfunktionen nicht nur den Zustand der laufenden Programme anzeigen lassen (Größe, Name, Prozeßnummer, verbrauchte Zeit), sondern auch Prozesse abbrechen: man zieht das Dateisymbol auf den Papierkorb. Seit Version 0.92 kann »MiNT« auch zusätzliche zeichenorientierte Gerätetreiber installieren. Damit wären Treiber für Tonausgabe (wie z. B. »/dev/audio« auf »SUN-Workstations«) oder für SCSI-Streamer leicht zu implementieren.

Auch die Möglichkeiten der Interprozess-Kommunikation können sich sehen lassen. Die Signalfunktionen entsprechen in etwa dem, was man vom BSD-Unix kennt. Damit können beispielsweise textbasierte Programme per Signal von einer Größenänderung des umgebenden Terminalfensters informiert werden. »Pipes« bzw. »Fifos« (First-in-first-out) erlauben schnelle Einweg-Kommunikation zwischen zwei Prozessen mit den gewohnten Dateifunktionen. Weitere Möglichkeiten ergeben sich durch »Shared Memory«, Message-Passing und Semaphoren. Generell ist MiNT anzumerken, daß sich der Autor sehr gut mit existierenden Unix-Systemen und den Normungsbemühungen von ISO und IEEE (siehe [2]) auskennt. Damit sind die verwendeten Systemschnittstellen so kompatibel zu anderen Systemen, wie nur eben möglich

Fazit

MiNT bringt GEMDOS ganz nah an die Funktionalität eines Unix-Systems heran - auch wenn aufgrund des Aufbaus noch Einschränkungen zu machen sind (die GEMDOS-Dateisystemfunktionen sind beispielsweise noch nicht reentrant, daher kann der Dispatcher Dateizugriffe nicht unterbrechen).

Auf GEMDOS-Ebene endet allerdings das Betriebssystemlifting. Alle darüber liegenden Betriebssystemschichten - also VDI und AES - bleiben absolut unverändert. Damit sind die Multitasking-Fähigkeiten von MiNT zunächst noch auf reine TOS-Anwendungen beschränkt.

Durch seine große Nähe zu Unix-Systemen steht für MiNT bereits eine Reihe von Portierungen von Unix-Software zu Verfügung. Ganz vorneweg wäre da »GCC« (ANSI-C-Compiler) zu nennen. Zusammen mit den MiNT-Libraries (als Quelltext verfügbar) können vorhandene Quelltexte von Unix-Software mit sehr geringem Aufwand auf MiNT übertragen werden. Die so übersetzten Programme sind zumeist unter TOS als auch unter MiNT lauffähig und nutzen die weitergehenden Fähigkeiten von MiNT ganz von alleine. Weiterhin gibt es noch etliche andere Portierungen von GNU-Software (wie »BASH« oder die GNU-File-Utilities), eine Public-Domain-Version der Korn-Shell »TCSH« (eine Weiterentwicklung der C-Shell) und »MGR«, ein multitaskingfähiges Fenstersystem.

Wer lieber bei GEM bleibt' dürfte an »MW2«, einem Abkömmling von »UW« (Unix Windows) Gefallen finden: In mehreren GEM-Fenstern können unabhängig voneinander Unix-Shells laufen. In einem Fenster »TeX« laufen lassen, im zweiten mit einem TOS-Editor einen Text editieren, im dritten eine Terminalverbindung zu einer Mailbox: MW2 kann's.

Auch MW2 stammt aus der Feder von Allan Pratt, ebenso wie Teile der »MINTSHEL« und »TOP« (ein interaktives Programm zur Anzeige des Prozeßstatus). Wie auch immer Ataris neues multitaskingfähiges TOS aussehen mag - fundamental anders als MiNT kann das neue GEMDOS kaum funktionieren. Wie auch immer MultiTOS konkret aussehen wird: mit MiNT kann man schon jetzt experimentieren und seine Programme auf potentielle Probleme abklopfen.

Und da die Quelltexte frei verfügbar sind, kann man auch gleich einen Einblick in die Interna von Betriebssystemen gewinnen. Auf jeden Fall verdient Eric Smith die Anerkennung aller, denen an der Weiterentwicklung von TOS gelegen ist. MiNT zeigt schon heute, was TOS eines Tages leisten wird.

(uw)

Quellennachweis:

[1] Julian F. Reschke »Umwege zum Multitasking«, ST-Magazin 12/1990, Seite 103
[2] The Institute of Electrical and Electronics Engineers, Inc. (IEEE): »Information technology - Portable Operating System Interface (POSIX) - Part 1: System Application Program Interface (API) ±C Language«, IEEE Std 1003.1-1990, ISO/IEC 9945-1, ISBN 1-55937-061-0


Julian F. Reschke
Aus: ST-Magazin 03 / 1992, Seite

Links

Copyright-Bestimmungen: siehe Über diese Seite