Hier werden bald die entscheidenden Konzepte von Helium vorgestellt. Der untenstehende Text ist ein Dokument von 2006, in dem das damalige Konzept erläutert wird. Dieses ist mittlerweile teilweise veraltet.

Zum Konzept des Helium-Systems XS (geschrieben am 28. Juli 2006)

1. Grösse

Der "Kernel", der für das Laden von Programmen und die Kontrollübergabe (siehe weiter unten) zuständig ist, sollte mitsamt einem weiteren Lader in den Bootsektor einer Diskette passen. Das ganze System inkl. Anwenderprogramme, die gleich beim Start geladen werden, sollte bei einer normalen Konfiguration eine Grösse von 36 KB (zwei Zylinder einer 1.44M-Diskette bzw. vier Zylinder einer 720K-Diskette) nicht überschreiten. Dies garantiert eine sehr kurze Bootzeit.

Die Kompaktheit des Systems auf der Diskette wird einerseits durch die vollständige Programmierung in Assembler erreicht, andererseits enthalten die Binärdateien nur Maschinencode und vorbelegte Strings, aber keine Datensegmente wie z. B. ein Textspeicher in einem Editorprogramm. Strings werden ggf. nach einem einfachen Verfahren komprimiert, wobei eine Kette von gleichen Zeichen durch ein Erkennungsbyte, eine Angabe der Wiederholungen und das zu wiederholende Zeichen ersetzt wird. Besonders bei Fensterrahmen und kompletten Dialogfeldern wird damit viel Speicherplatz gespart.

2. Prozesse

Wechseln

Das Helium-System XS soll ein Betriebssystem für 8086/88-basierende Computer werden. Die 8086/88-Prozessoren sind recht langsam und kennen nur den Real Mode (1 MB adressierbarer Speicher, kein Speicherschutz vor anderen Prozessen, keine Rechtevergabe). Aus diesen Gründen kann ich nicht das übliche präemptive Multitasking mit Zeitscheiben-Einteilung verwenden. Um mit einem Computer sinnvoll arbeiten zu können, muss es möglich sein, dass mehrere Programme nebeneinander im Speicher sind und Daten austauschen können ("Zwischenablage"). Die Programme werden im Helium-System aber nicht "gleichzeitig" ausgeführt, sondern es ist immer nur ein Programm aktiv, das den ganzen Bildschirm und die gesamte Prozessorleistung innehat, bis vom Benutzer durch das Drücken einer speziellen Taste ein Menü zum Wechseln des aktiven Programms angefordert wird. Das aktuell laufende Programm wird durch ein Signal (Veränderung einer reservierten Speicherstelle) aufgefordert, seine Tätigkeit abzuschliessen und zum Menü-Programm zu springen. Der User kann auch den Abbruch des Programms mit einem weiteren Tastendruck erzwingen (wenn das Programm abgestürzt ist oder böswillig die Kontrolle nicht abgibt). Nachdem der User im Menü sein gewünschtes Programm angewählt hat, wird die Kontrolle an dieses Programm weitergegeben, und zwar an einer zuvor festgelegten Einsprungstelle, die z. B. den Bildschirm neu aufbaut und dann weiter in die normale Tasten- Abfrageschleife geht.

Erstellen

Vor dem ErstellenNach dem Erstellen
Prozess 1Prozess 1
Daten von Prozess 1Daten von Prozess 1
freiProzess 2
Daten von Prozess 2
frei

Ein im RAM gespeicherter Zeiger zeigt jeweils auf den Anfang des freien Bereichs. (Er enthält die kleinste Segmentadresse, die ab Offset 0 frei ist.) Beim Erstellen eines neuen Prozesses wird zum Zeiger die durch 16 geteilte Grösse des Programms (aufgerundet!) addiert, bevor das Programm geladen wird. Nach dem Laden kann sich das Programm ein Datensegment reservieren, entweder durch direktes Erhöhen des Zeigers oder durch den Aufruf einer entsprechenden "Kernel"-Routine.

Beenden

Nachdem der Prozess mit einem Signal benachrichtigt und nochmals aufgerufen worden ist, wird er folgendermassen aus dem Speicher entfernt:

Vor dem BeendenNach dem Beenden
Prozess 1Prozess 1
Daten von Prozess 1Daten von Prozess 1
Prozess 2Prozess 3
Daten von Prozess 2Daten von Prozess 3
Prozess 3frei
Daten von Prozess 3
frei

Das heisst: Der ganze Speicherinhalt ausser dem freien Bereich wird über den zu beendenden Prozess nach "vorne" geschoben. Vom Zeiger auf den freien Bereich wird die durch 16 geteilte Grösse des entfernten Programms subtrahiert. (Diese wichtige Grösse könnte schon im Header einer Programmdatei stehen.)

Dieser Vorgang muss nur dann ausgeführt werden, wenn es für einen neuen Prozess zuwenig RAM hat. Normalerweise bleiben die Prozesse für die gesamte Einschaltdauer des Systems so im RAM stehen, wie sie geladen wurden. Auch beim Herunterfahren wird diese Verschieberoutine NICHT ausgeführt.

3. Systemstart

4. Anwendungsprogramme

Dateiveränderung

Um möglichst wenig Speicherplatz zu belegen und gleichzeitig möglichst grosse Dateien bearbeiten zu können, werde ich dateiverarbeitende Anwendungen (Editor, Textverarbeitung, Tabellenkalkulation, Datenbank, Zeichenprogramm) so aufbauen, dass sich jeweils nur ein Teil der zu bearbeitenden Datei im RAM befindet. Dieser Teil verhält sich ähnlich wie das scrollende Editorfenster in Bezug auf die Datei: Beim Scrollen werden neue Blöcke der Datei eingelesen und alte entfernt. Der RAM ist also nur eine Art Cache, nicht ein Behälter für die ganze Datei.

Für ein möglichst fliessendes Scrollen wird das Dateisystem eine Funktion enthalten, die dem Computer nur den Befehl gibt, etwas von der Diskette zu lesen, dann aber sofort zum Programm zurückkehrt. Nach einiger Zeit ist der gelesene Block an der gewünschten Stelle im RAM.

Wenn der zugewiesene RAM-Speicer ca. doppelt so viele Daten aufnehmen kann wie der Bildschirm, dann kann das Programm schon einige Blöcke weiter lesen als auf dem Bildschirm angezeigt sind. Wenn der Benutzer scrollt, werden diese vorausgelesenen Blöcke neu dargestellt, und der Editor liest weitere Blöcke mit der Funktion "Verzögertes Lesen" des Dateisystems ein. Der Benutzer muss somit nie auf den Abschluss einer Diskettenfunktion warten, ausser wenn er schnell über einen weiten Bereich der Datei scrollt.

Durch dieses Prinzip unterscheidet sich der XS-Editor von einem Editor in anderen Systemen: Während ein anderer Editor eine Datei erst speichert, wenn er durch dem Benutzer dazu aufgefordert wird, speichert der XS-Editor sofort bzw. beim nächsten Scrollen änderungen auf der Diskette. Wer eventuell etwas rückgängig machen will, muss den Editor so einstellen, dass entweder beim öffnen der Datei automatisch die Datei in eine Datei mit .BAK-Suffix kopiert werden soll oder immer eine Kopie mit .TMP-Suffix gebildet und editiert wird.

Design der Oberfläche

Die Benutzeroberfläche einer Anwendung wird folgendermassen aufgebaut sein:

Dialogfelder werden wieder mit den F-Tasten (nicht etwa durch Pfeiltasten angesteuerte Schaltflächen und Boxen !) bedient.
Beispiel:
Fehlerfenster

5. Herunterfahren

Theoretisch ist das System so konzipiert, dass der Computer einfach mit dem Netzschalter ausgeschaltet werden könnte, sofern das Laufwerkslicht des Diskettenlaufwerks nicht leuchtet. Es entsteht dabei KEIN inkonsistentes Dateisystem.

Anwendungen wie ein Editor haben jedoch einen Teil der Datei möglicherweise noch nicht gespeichert. Durch einen Aufruf des Menüs zum Programmwechsel sichert die aktuelle Anwendung ihre Datei, und der Computer kann durch einen Menü-Eintrag abgeschaltet werden (eventuell Meldung "Sie können jetzt ausschalten").

Stand 30. Mai 2008, 23:00:00