EUMEL-Benutzerhandbuch TEIL 1: Einführung Vorwort Lieber EUMEL-Nutzer! Ihnen liegt hier das EUMEL-Benutzerhandbuch zur Public-Domain-Version 1.7.3 vor. Es gliedert sich in mehrere Teile. Der erste Teil des Benutzerhandbuchs soll dem zukünftigen Benutzer den "Einstieg" in das EUMEL-System erleichtern. Dazu werden die wichtigsten Eigenschaften des EUMEL-Systems vorgestellt. Danach zeigen wir eine Beispielsitzung. Anschließend werden einige prinzipielle Konzepte des EUMEL-Systems vermittelt. Den Abschluß bildet ein kleines EUMEL-Wörterbuch. Die übrigen Teile des EUMEL-Benutzerhandbuchs dokumentieren jeweils ein oder mehrere abgeschlossene Einheiten des Systems. Ein EUMEL-Nutzer braucht so nur die ihn interessierenden Teile zu lesen. Ein Programmierer z.B. sollte Einführung, Supervisor/Monitor, Editor, ELAN-Compiler und Dateien durcharbeiten. Für Programmierer, die noch keine Erfahrung mit ELAN besitzen, ist der Teil "Erste Hilfe" gedacht. Weiterhin werden die Teile über Dateien und Standardpakete oft benötigt. Ein Nutzer, der vorwiegend an der Textbe- und verarbeitung interessiert ist, braucht dagegen nur Einführung, Supervisor/Monitor, Dateien, Editor und Textkosmetik. Der OPERATOR/Spooler-Teil ist nur für diejenigen Programmierer gedacht, die ein EUMEL-System betreuen. Weitere Informationen finden System-Programmierer im System-Handbuch bzw. in der Veröffentlichung des Quellcodes. 1. Eigenschaften des EUMEL-Betriebssystems Das EUMEL-Betriebssystem (Extendable multi User Microprocessor ELANsystem) ist ein Betriebssystem, das z.Z. für den Einsatz auf Mikroprozessoren vorge- sehen ist. Es weist u.a. folgende Eigenschaften auf: - Das EUMEL-System ist ein "Time sharing"-Betriebssystem, d.h. mehrere Be- nutzer können gleichzeitig an einem Rechensystem arbeiten (z.B. Programme übersetzen, bearbetten (rechnen) oder erstellen (edieren)). Dabei wird die verfügbare Rechen- und Speicherkapazität zwischen den Benutzer-Prozessen dynamisch aufgeteilt. - Jeder Benutzer richtet (mindestens) eine Task ein, in der er sich Programme und/oder Dateien halten kann, auf die andere Nutzer nicht zugreifen können. Tasks können von einem Terminal "abgekoppelt" und trotzdem - sofern aus- reichend freie Rechnerkapazität zur Verfügung steht - als Batch-Auftrag im Hintergrund weiter bearbeitet werden. - Das EUMEL-Betriebssystem ist so konzipiert, daß der Sicherheit des Systems besondere Beachtung geschenkt wurde. Zu diesem Zweck werden in bestimmten zeitlichen Abständen sogenannte Restart-Punkte auf dem externen Speicher- medium gesichert. In diesen Sicherungen wird der augenblickliche System- Zustand konserviert, so daß bei Netzausfall oder eventuellen System-Zu- sammenbrüchen der Betrieb übergangslos wieder aufgenommen werden kann, mit der Ausnahme des Verlustes der Daten, die nach dem letzten Restart-Punkt aufliefen. - "Tasks" und/oder Dateien können vor dem unbefugten Zugriff durch "Pass- words" geschützt werden. Ein weitergehender Schutz wird durch die Möglich- keit von Password-Algorithmen vom EUMEL-System angeboten, so daß den Be- langen des Datenschutzes Rechnung getragen werden kann. - Das EUMEL-Betriebssystem ist leicht erweiterbar. Da der Kern des Betriebs- systems in ELAN geschrieben ist, können Anwender selbst leicht Erweiterun- gen bzw. lokale Modifikationen in das System ein- bzw. anfügen. Dabei kön- nen bestimmte Erweiterungen nur bestimmten Benutzern oder Benutzergruppen zur Verfügung gestellt werden. Da die Programmiersprache ELAN selbst er- weiterbar ist, ist es möglich, verschiedenen Anwendern oder -gruppen unter- schiedliche Erweiterungen der Sprache anzubieten. - In dem EUMEL-Betriebssystem ist eine implizite Dateihierarchie realisiert. Dies wird erreicht, indem den Tasks Dateien zugeordnet werden. Man kann Dateien im Taskbaum von "Vater-Tasks" holen oder zu ihnen schicken. Lokale Dateien werden mit dem Beenden einer Task automatisch gelöscht, während Dateien, die längerfristig gehalten werden sollen, bei längerlebenden Tasks gehalten werden müssen. - Die Kommandosprache ("job control language") des EUMEL-Systems entspricht der ELAN-Syntax (Prozeduraufrufe). Das befreit den Anwender von der Schwierigkeit, zwei verschiedenartige Sprachen zu erlernen. Darüber hinaus können eine oder mehrere Anweisungen der Kommandosprache in ELAN-Programmen enthalten sein. Z.B. ist es möglich, Kommandos vom Editor ausführen zu lassen oder den Editor von einem Programm aus aufzurufen. - Die Dienstprogramme des EUMEL-Systems, wie z.B. der EUMEL-Editor, sind geräteunabhängig und meist erweiterbar konzipiert. Zudem sind sie auch in ELAN formuliert, so daß Änderungen und Korrekturen leicht vorgenommen werden können. - Das EUMEL-System verwaltet seinen Hauptspeicher nach dem "demand-paging"- Prinzip. Daten und/oder Programme werden daher in Seiten von 512 Bytes aufgeteilt. Nur diejenigen Seiten, die zu einem Zeitpunkt wirklich benötigt werden, befinden sich im Speicher. Dadurch kann sich das EUMEL-System auf wechselnde Speicherplatz-Anforderungen optimal einstellen. - Für alle Programme wird reentranter Code erzeugt. Somit können mehrere Benutzer Code gleichzeitig benutzen ("sharable code"), wobei der Code nur einmal vorhanden sein muß. Dies ist insbesondere für Dienstprogramme wie z.B. Compiler, Editor usw. wichtig. - Dateien können ebenfalls (wie Programme) von mehreren Benutzern gemeinsam verwendet werden, ohne daß mehrere Kopien davon hergestellt werden müssen Das System sorgt mit seinen Paging-Fähigkeiten automatisch für das "sharen" von Dateien. Erfolgt jedoch ein Schreibzugriff, so wird nur für den schreibenden Benutzer eine Kopie angelegt. - Das EUMEL-System bietet gute Textbe- und -verarbeitungsmöglichkeiten. Grundlage dafür ist der bildschirmorientierte Editor (eine Entwicklung der GMD). Der Editor erlaubt auch ein "multi window editing" und die Ausführung von beliebigen Kommandos. Zusätzlich gibt es eine Reihe von Programmen zur "Textkosmetik", die es erlauben, Texte zeilen- und seitenweise zu forma- tieren. Dabei ist es möglich, unterschiedliche Schriftarten zu verwenden. 2. Eine kleine Beispielsitzung mit EUMEL Zum ersten Kennenlernen wird hier ein Beispiel einer EUMEL-Sitzung darge- stellt. Diese Vorlage kann man am Rechner "nachspielen". Da die Reaktion des Systems hier auf dem Papier nur unvollkommen wiedergegeben werden kann, ist diese Beispielsitzung durch "trockenes" Lesen (ohne Rechner) sicherlich etwas schwieriger zu verstehen als durch Nachspielen. Alle Ausgaben des EUMEL werden mit ----> gekennzeichnet, alle Benutzereingaben haben <---- als Kennzeichen. Spezielle Tasten werden groß geschrieben, z.B. RETURN als Bezeichnung für die RETURN-Taste. Anfang Im Multi-User-System können gleichzeitig mehrere Benutzer aktiv sein. Dabei braucht jeder ein eigenes "Zimmer" im "EUMEL-Haus", in dem er arbeiten kann, ohne andere zu stören. Diese "Zimmer" heißen hier "Tasks" und haben Namen. Zu Beginn muß der Benutzer sich an seinem Bildschirm eine Task erzeugen. Dazu muß er das Betriebssystem aktivieren: <---- SV EUMEL meldet sich: EUMEL Version 1.7.3/M ----> gib supervisor kommando: Dann muß der Benutzer sich einen Tasknamen ausdenken (z.B. "ottokar") und ein Kommando zum Einrichten einer neuen Task geben: <---- begin ("ottokar") RETURN Daraufhin wird eine neue Task erzeugt, sie meldet sich: ----> gib kommando: Jetzt kann die eigentliche Sitzung beginnen. Programm erstellen Wir schreiben ein kleines Programm zur Primzahlberechnung: <---- edit ("prim") RETURN ----> neue datei einrichten (j/n) ? <---- j Es soll eine neue Datei mit dem Namen 'prim' eingerichtet werden, daher ant- worten wir mit 'j'. Die Datei ist zu Anfang leer. Der Editor zeigt nur die Überschrift, der restliche Bildschirm ist leer. Wir können jetzt unser Pro- gramm eingeben: INT VAR zahl := 3 ; WHILE zahl <= 1000 REP drucke falls primzahl ; zahl INCR 2 PER . drucke falls primzahl : INT VAR teiler := 3 ; WHILE teiler * teiler <= zahl REP IF teiler gefunden THEN LEAVE drucke falls primzahl FI ; teiler INCR 2 PER ; put (zahl) ; line . teiler gefunden : zahl MOD teiler = 0 . Bei der Eingabe des Programms können wir auch die Funktionstasten benutzen. Die genauen Funktionen sind in den folgenden Teilen des Benutzerhandbuchs erklärt. Für den Anfang gilt aber: Probieren geht über Studieren! Wir verlassen den Editor: <---- ESC q ----> gib kommando: Programm übersetzen und ausführen <---- run RETURN ----> ("prim") Der Dateiname ('prim') wird automatisch ergänzt und das Programm wird vom ELAN-Compiler übersetzt. Dabei erscheinen die Nummern der gerade übersetzten Zeilen in der linken unteren Bildecke. Wenn keine Fehler gefunden wurden, wird das Programm anschließend ausgeführt. Dann sollten die Primzahlen von 3 bis 1000 erscheinen. Ein fehlerhaftes Programm korrigieren Falls der ELAN-Compiler Fehler findet, wird das Programm nicht ausgeführt. Das System geht automatisch in den Editor, der jetzt zwei Dateien "parallel" auf dem Bildschirm zeigt. Die obere enthält die Fehlermeldungen, die untere das ELAN-Programm, so daß Korrekturen leicht möglich sind. Dabei kann man gut folgende Editor-Funktionen benutzen (ausprobieren!): ESC ESC n RETURN positioniert auf Zeile n HOP UNTEN zum Blättern HOP OBEN ESC w wechselt zur jeweils anderen Datei (z.B. um in der Fehlermeldungsdatei weiterzublättern) Nach Verlassen des Editors (ESC q) kann das Programm wieder gestartet werden. Ändern des Programms <---- edit RETURN ----> ("prim") Auch hier wird der Dateiname zum Kommando 'edit' automatisch ergänzt. Jetzt kann das Programm mit den üblichen Editor-Möglichkeiten verändert werden. Vorschläge: - Man ändere den Bereich (Vorsicht: maxint ist 32767). - Man teste die Teiler bis zur Zahl selbst hoch. - Man benutze REALs anstelle von INTs. - Man suche Zwillinge. An Editor-Möglichkeiten könnte man ausprobieren: RUBOUT löscht ein Zeichen. RUBIN schaltet den Einfügezustand ein. Das nächste RUBIN schaltet ihn wieder ab. HOP UNTEN zum Anfang des Bildschirms oder "blättern nach oben". HOP OBEN zum Ende des Bildschirms oder "blättern nach unten". HOP RUBOUT am Zeilenanfang löscht die ganze Zeile. HOP RUBIN schaltet "Zeilen einfügen" ein. Das nächste HOP RUBIN schaltet es wieder aus. Datei löschen <---- forget RETURN ----> ("prim") ----> löschen (j/n) ? <---- j ----> gib kommando: Ende einer Sitzung <---- end RETURN ----> task loeschen (j/n) ? <---- j ----> EUMEL Version 1.7.3 / M 3. Einige Eigenschaften des EUMEL-Systems In diesem Abschnitt werden wir einige Eigenschaften des EUMEL-Systems schildern, die zum korrekten Arbeiten mit dem System wichtig sind. Um das Verständnis zu erleichtern, verwenden wir für einige System-Eigenschaften Modelle, die das Verhalten des Systems an typischen Merkmalen widerspiegeln spiegeln sollen, die aber - wie bei allen Modellen - kein exaktes Abbild darstellen. Tasks, Supervisor und Monitor Zuerst versuchen wir zu erklären, wie sich ein Benutzer im EUMEL-System anmeldet und den Mechanismus, wie man bestimmte Leistungen vom System anfordert (Einige Ideen dieses ersten Abschnittes gehen auf W. Ambros, Rhein-Sieg Gymnasium, St. Augustin, zurück). Stellen wir uns das EUMEL-System als ein riesiges Verwaltungsgebäude vor, wie es in unseren Städten in den letzten Jahren überall gebaut wurde. Ein Verwaltungsangestellter beginnt frohgemut seinen ersten Arbeitstag. Da das Gebäude so riesig ist, kann er sein Zimmer nicht finden. Aber er ist pfiffig: er fragt einfach den freundlichen Pförtner, der ihn in sein Zimmer führt. So ist es im EUMEL-System: Wenn man eine Arbeit neu beginnen will, muß man sich beim Supervisor (das ist der Pförtner in unserem Modell) anmelden. Dazu muß man erstmal den Supervisor "wecken" (wie mit einer Klingel): wir drücken die Supervisor-Taste (im folgenden mit SV abgekürzt). Der Supervisor meldet sich dann mit gib supervisor kommando : Nun kann man eine Task anmelden. Das ist ein Zimmer im EUMEL-System, in dem man arbeiten kann, ohne von den anderen Benutzern gestört zu werden. Ist die Task noch nicht vorhanden, wird sie eingerichtet. Dann leitet uns der Super- visor in die angegebene Task. Der Verwaltungsangestellte ist nun vom Pförtner zu seinem Büro geleitet worden. Dort empfängt ihn der Bürovorsteher: "Was möchten Sie arbeiten?" Unser Angestellter kann nun (z.B.) sagen, daß er etwas schreiben möchte. Der Bürovorsteher führt ihn in einen speziellen Schreibraum, in dem einige spezielle Einrichtungen und Geräte für komfortables Schreiben stehen. So sieht es im EUMEL-System aus: Nachdem man eine neue Task eingerichtet hat oder eine bereits vorhandene fortsetzen will, gelangt man zum Monitor (das ist unser Bürovorsteher), der sich mit gib kommando : meldet. Nun kann man verschiedene Arbeiten verrichten, wie z.B. den Editor rufen, um einen Text oder ein Programm zu schreiben: edit ("meine datei") In diesem Schreibzimmer kann unser Angestellter irgendetwas schreiben, z.B. ein Programm, einen Liebesbrief, ein Testament oder ganz etwas anderes. Hat er eine Frage oder will er eine besondere Leistung, dann kann unser Ange- stellter den Bürovorsteher aus dem Schreibzimmer rufen. Hat er seine Schreib- arbeit beendet, geht er aus dem Zimmer und trifft dort wiederum auf den auf- merksamen Vorsteher. Ihm kann er nun sagen, daß er das Schriftstück (z.B.) drucken oder von einem Dolmetscher übersetzen lassen will. Im EUMEL-System: Im Editor schreibt man Texte oder Programme. Während man im Editor ist, kann man besondere Leistungen durch Kommandos anfordern, ohne den Editor zu ver- lassen, z.B. in einer anderen Datei nachschauen oder einen Teiltext in dem geschriebenen Schriftstück suchen. Nachdem die Arbeit beendet ist, verläßt man den Editor (ESC q) und gelangt wiederum in den Monitor. Hier kann man das Schriftstück drucken oder - im Falle eines Programms - übersetzen lassen: print ("meine datei") run ("meine datei") Hat das Programm einen Fehler, eröffnet uns der Monitor ein Fenster auf die Datei und zeigt uns gleichzeitig die Fehlermeldungen, so daß wir bequem korrigieren können. Nachdem unser Angestellter mit seinen Arbeiten fertig ist, kann er dem Vor- steher (Monitor) sagen: Ich kündige! (will nicht mehr weiterarbeiten) ('end') Bis Morgen! (will später weiterarbeiten) ('break') Merke: Der Supervisor des EUMEL-Systems regelt die Einrichtung, Zugang und Löschung von Tasks. In einer Task kann ein Benutzer arbeiten, ohne von anderen gestört zu werden. Spezielle Tasks sind für allgemeine Aufgaben vorgesehen, wie z.B. das Drucken und Sichern von Dateien. Durch den Monitor kann man Kommandos innerhalb einer Task geben. Demand Paging Nun versuchen wir einen zentralen Begriff des EUMEL-Systems zu erklären, das "demand paging". Diese Eigenschaft moderner Rechensysteme sorgt dafür, daß bei (normalerweise immer) beschränkten Speicherkapazitäten eines Rechners Programme bearbeitbar sind, die in ihrer Gesamtgröße nicht in den Speicher des Rechners passen würden. Nehmen wir wieder den Angestellten, der nun in einem Zimmer (Task) auf einem Tisch das EUMEL-Benutzerhandbuch durcharbeiten will. Stellen wir uns weiter vor, daß er das Benutzerhandbuch nicht rein "sequentiell" lesen will, sondern daß er fortwährend "blättern" muß. Eigentlich muß unser Angestellter mehrere Seiten des Benutzerhandbuchs gleichzeitig lesen. Deshalb kommt er auf die listige Idee, die Seiten, die er dringend benötigt, zu photokopieren und auf seinem Tisch nebeneinander auszubreiten, damit er nicht mehr blättern muß. Leider ist sein Tisch zu klein, um alle photokopierten Seiten darauf auszu- breiten. Durch die Sparbemühungen der Regierung ist es auch aussichtslos, sich um einen größeren Tisch zu bemühen. Aber im Titel für Verbrauchsmaterial ist genügend Geld vorhanden, so daß Papier für den Photokopierer angeschafft werden kann. Außerdem geht das Photokopieren sehr schnell, weil er den Photo- kopierer direkt neben seinen Tisch aufbaut. Darum photokopiert er nur die- jenigen Seiten, die er gerade benötigt und legt diese auf seinen Tisch. Braucht er eine neue Seite aus dem Buch und hat diese auf dem Schreibtisch keinen Platz mehr, so muß er eine auf dem Tisch liegende Seite entfernen. Geschickt wählt sich unser Angestellter eine Seite aus, von der er annimmt, daß er diese nicht so schnell wieder benötigt. Was macht er nun mit der "alten" Seite? Er könnte die kopierte Seite einfach in das Benutzerhandbuch einordnen. Aber dazu müßte er erstmal in dem Benut- zerhandbuch suchen, was ihm zuviel Mühe macht. Deshalb wirft er diese Seite einfach weg, denn er kann sie ja jederzeit wieder aus dem Handbuch kopieren. Gerade will er eine Seite wegwerfen, da fällt ihm auf, daß er das "Wegwerf"- Verfahren vielleicht nicht immer anwenden sollte. Seine Notizen, die er sich auf einigen Seiten gemacht hat, würden ja mit weggeworfen und damit ver- nichtet. Deshalb wirft er Seiten mit Notizen nicht weg, sondern tauscht diese Seiten mit den ursprünglichen Seiten im Benutzerhandbuch aus. Fassen wir zusammen: Jemand arbeitet ein Buch "durch". Er kopiert sich diejenigen Seiten, die er jeweils benötigt. Da sein Tisch zu klein ist, um alle Seiten gleichzeitig auszulegen, kann er immer nur einen Ausschnitt aus dem Buch bearbeiten, was aber ausreicht. Braucht er eine neue Seite, so muß er eine auf dem Tisch liegende Seite "verdrängen". Hat er diese Seite nicht verändert, also mit Notizen versehen, so kann er sie einfach wegwerfen. "Veränderte" Seiten ersetzt er im Buch und bewahrt sie somit auf. Ähnliches erfolgt auch im EUMEL-System: Der Zentralspeicher (der Tisch in unserem Modell) des Rechners ist meist ge- genüber dem Massenspeicher, der im EUMEL-System auch als "Hintergrund" be- zeichnet wird (Floppy oder Magnetplatte; in unserem Modell das Buch) zu klein, als daß alle Informationen gleichzeitig hineinpassen würden. Darum werden alle Informationen in sogenannte Seiten ("pages") unterteilt, die jeweils 512 Byte (ein Byte entspricht einem Zeichen) groß sind. Wird eine Information benötigt, so wird die betreffende Seite in den Speicher geholt (daher auch der Begriff "demand paging", etwa: Seitenaustausch auf An- forderung). Das geht so lange gut bis der gesamte Platz im Zentralspeicher des Rechners belegt ist. Soll nun eine neue Seite vom Massenspeicher geholt werden, weil die darin enthaltenen Informationen gebraucht werden, muß eine Seite im Zentralspeicher ersetzt werden (Fachwort: die Seite muß "verdrängt" werden). Sie kann überschrieben werden (in unserem Modell wurde sie "wegge- worfen"), wenn keine Veränderungen vorgenommen wurden, d.h. keine Schreibzu- griffe, sondern nur Lesezugriffe auf die Seite erfolgten. Wurde die Seite verändert, so muß sie auf den Hintergrund zurückkopiert werden und dort die ursprüngliche Seite ersetzen. Merke: Die Vorteile eines "demand paging" Systems sind nun offensichtlich: Es ist möglich, bei weitem größere Informationsmengen (Daten und/oder Programme) zu bearbeiten als diejenige, die eigentlich in den vor- handenen Speicher passen würde, weil tatsächlich immer nur ein Aus- schnitt der gesamten Informationsmenge zu einem Zeitpunkt bearbeitet werden muß. Bei traditionellen Systemen ist dagegen die maximale Größe von Programmen und Daten durch die physikalische Größe des Zentral- speichers beschränkt. Sharing Sharing bezeichnet die gemeinsame Nutzung von Seiten ("pages") durch mehr als einen Benutzer. Zurück zu unserem Angestellten: Dieser ist inzwischen fleißiger geworden und hat das gleiche Verfahren auf mehrere Bücher ausgedehnt, d.h. er kopiert sich diejenigen Seiten aus den Büchern, die er gerade benötigt. Bei der Ver- drängung einer Seite behält er sein altes (nicht sehr umweltfreundliches) Verfahren bei: nur die veränderten Seiten ersetzen die Original-Seiten in den Büchern (werden zurückgelegt), die anderen (nicht veränderten) weggeworfen. Aber auch andere Angestellte seines Büros haben ihn beobachtet, beneiden ihn um seine "geschickte" Arbeitstechnik und wollen mitarbeiten. Leider steht ihnen gemeinsam nur der eine Tisch zur Verfügung, der zudem in der Zwischen- zeit auch nicht größer geworden ist, weil die Sparmaßnahmen der Regierung noch immer anhalten. Darum müssen sie sich nun den einzigen Tisch teilen, auf dem sie ihre kopierten Seiten auslegen können. Im Laufe der Arbeit ergibt es sich, daß sie unterschiedliche Seiten der Bücher durcharbeiten müssen, weil sie verschieden schnell arbeiten, aber auch andere Arbeitsgebiete haben. Durch die unterschiedliche Arbeitsgeschwindigkeit ergibt es sich, daß ein Angestellter z.B. zu einem Zeitpunkt sich intensiv nur mit einer Seite be- schäftigt, ein anderer aber mehrere Seiten quasi gleichzeitig braucht. Aber oft brauchen mehrere Angestellte mehrere Seiten, so daß der verfügbare Platz auf dem Tisch bald etwas zu eng wird. Natürlich "funktioniert" unser Ver- fahren immer noch, aber es ist doch etwas langsam geworden, weil unsere Angestellten mehr mit dem Austausch von Seiten beschäftigt sind, als daß sie noch zu dem Verarbeiten der gelesenen Informationen kommen. Sie überlegen also, wie das Verfahren zu verbessern ist und kommen auf folgenden Trick: kopierte Seiten, die zwei oder mehr Angestellte zur gleichen Zeit bearbeiten wollen, brauchen nur einmal auf dem Tisch zu liegen (schließlich sind unsere Angestellten gewöhnt, in Gruppen zu arbeiten). Diese Rationalisierungs-Idee ist ja offensichtlich, denn schließlich benutzen die Angestellten die Bücher auch gemeinsam. Aber Vorsicht: wenn einer der Angestellten, die gemeinsam eine Seite bearbeiten, sich etwas auf dieser Seite notieren will, darf nicht die gemeinsam auf dem Tisch liegende Seite verwendet werden. In diesem Fall ist es notwendig, vorher eine erneute Kopie zu machen, weil andere Ange- stellte seine Notizen nicht unbedingt mitlesen sollen, also die unveränderte Seite brauchen. Und das findet im Rechner statt: Das "demand paging" Verfahren funktioniert natürlich nicht nur mit einer Datei und einem Programm, sondern auch mit mehreren Dateien und Programmen, von denen nur diejenigen Seiten in den Zentralspeicher geholt werden, die zu einem Zeitpunkt in den Rechner passen. Aber erst mit mehreren Benutzern des EUMEL-Systems entfaltet das "demand paging" Verfahren seine volle Mächtig- keit, denn alle Benutzer können Programme und/oder Dateien verarbeiten, die in der Gesamtheit nicht in den Speicher passen würden. Dabei wird eine Eigen- schaft des EUMEL-Systems gut genutzt: Alle Programme des EUMEL-Systems (und übrigens alle Programme, die der ELAN-Compiler übersetzt hat) sind reentrant, d.h. können von mehreren Benutzern gleichzeitig gelesen werden, aber brauchen nur einmal im Zentralspeicher vorhanden zu sein. Zwei oder mehr Benutzer können also eine oder mehrere Seiten gemeinsam verwenden (Fachausdruck: "sharen"), sowohl im Zentralspeicher wie auch im Massenspeicher ("Hinter- grund"). Dies gilt nicht nur für Programme, sondern auch für Daten. Erst wenn ein Benutzer eine Veränderung vornimmt, also schreibend auf die Seite zugreift, wird diese Seite (nur für diesen Benutzer!) kopiert (EUMEL-Fachaus- druck: "copy on write"). Alle anderen Benutzer arbeiten mit der unveränderten Seite weiter. Der große Vorteil dieses Verfahrens: eine redundante Speicherung von Daten und Programmen wird vermieden. Es passiert nun oft, daß ein Benutzer zu einem Zeitpunkt relativ wenig Seiten benötigt: sei es, daß er Daten mit Hilfe des Editors eingibt oder nachdenkt, sei es, daß ein Programm wenig Daten verwendet und selbst sehr kurz ist. Mit anderen Worten: die Anzahl der benötigten Seiten zu einem Zeitpunkt (Fachaus- druck: "working set") für diesen Benutzer ist klein. Dann ist es möglich, daß andere Benutzer zu diesem Zeitpunkt mehr Seiten im Zentralspeicher des Rech- ners haben. Deren "working set" ist also groß. Merke: Damit wird ein weiterer Vorteil des "demand paging" Verfahrens klar: Ein "demand paging" System stellt sich automatisch und dynamisch auf die Anforderungen von Benutzern ein, indem denjenigen Benutzern mehr Speicher zugeteilt wird, die mehr benötigen und umgekehrt. Aber auch ein Nachteil wird sichtbar: Benötigen alle Benutzer des Systems viel Zentralspeicher, dann kann es zu folgender Situation kommen: Benutzer A benötigt eine neue Seite. Das System verdrängt für diesen Zweck eine Seite, die Benutzer B gehört. Nachdem Benutzer B an die Reihe kommt, benötigt er diese Seite wieder. Das System verdrängt eine Seite des Benutzers A u.s.f.. Eine solche Situation, in der "pages" ständig in den Speicher kopiert und aus dem Speicher bei einer Seitenverdrängung auf den Hintergrund geschrieben werden muß (und somit kaum gerechnet wird), wird als "thrashing" bezeichnet. "thrashing" oder mit anderen Worten: sehr geringer Verbrauch an Rechenzeit bei gleichzeitig er- höhtem "paging"-Aufwand ist ein Anzeichen für zu hohe Anforderungen an das System (Ausweg: Erweiterung des Hauptspeichers oder Be- schleunigung des Hintergrundmediums (Platte statt Floppy) oder Reduktion der Anforderungen). Datenräume Datenräume sind die Grundlage für Dateien im EUMEL-System. Zurück zu unseren Angestellten: Nachdem die Verbesserung vorgenommen wurde, daß sich zwei oder mehr Ange- stellte eine Seite auf dem Tisch "teilen", tritt sofort ein neues Problem auf. Es kann nun nämlich passieren, daß zwei Angestellte eine Original-Seite verändern und beide in dem gleichen Buch ersetzt werden müssen. Es befinden sich somit noch mindestens zwei andere mit Notizen versehene Seiten mit gleicher Seitennummer in einem Buch. Zu allem Unglück wurde die Original- Seite ersetzt, so daß andere Angestellte nur die mit Notizen versehene Seiten erhalten können. Was ist zu tun? Das Verfahren sollte doch beibehalten werden, denn schließlich ist eine totale Abkehr von Arbeitsvorgängen für Verwaltungsangestellte nicht denkbar. Als erste Idee kommt ihnen in den Sinn, einfach alle Bücher für alle Ange- stellten zu photokopieren. Dann kann es ja nicht zu einer solchen Kollision kommen, daß zwei oder mehr Angestellte eine Seite in einem Buch ersetzen wollen, weil jeder Angestellte seine eigene Kopie besitzt. Um die ver- schiedenen Kopien eines Buches auseinander zu halten, wird von den Ange- stellten verlangt, ihre Buch-Kopie mit einem sinnvollen Namen zu versehen. Dies Verfahren funktioniert auch eine Weile, bis ein strebsamer Angestellter einen Verbesserungsvorschlag macht, der prompt mit DM 5,- honoriert wird: wie bereits mit den Seiten auf dem Tisch geschehen, ist es ja nicht not- wendig, die Bücher zu photokopieren, sondern nur die mit Notizen versehenen in einen Ordner, der entsprechend einer Buch-Kopie angelegt wird, einzu- ordnen. Alle anderen, nicht veränderten Seiten können noch immer gemeinsam benutzt werden. Und so funktioniert es nun: Bei Arbeitsbeginn finden die Angestellten einen Buchbestand vor. Um mit einem Buch arbeiten zu können, muß ein Angestellter einen Ordner für dieses Buch anlegen, in den die ggf. veränderten Seiten eingeordnet werden. Zu diesem Zweck muß jeder Ordner einen sinnvollen Namen erhalten, damit die Angestell- ten ihre Ordner auch wiederfinden. Am Anfang müssen die Angestellten Seiten der Original-Bücher kopieren. Wird eine solche Seite mit Notizen versehen, also verändert, muß sie bei einer Verdrängung in den entsprechenden Ordner eingefügt werden. Muß ein Angestellter eine neue Seite kopieren, so schaut er erst in seinem Ordner nach, ob sich die entsprechende Seite dort befindet. Damit wird garantiert, daß jeder Angestellte auch immer seine, mit Notizen versehene Seiten erhält. Befindet sich eine gesuchte Seite nicht in dem Ordner (am Arbeitsbeginn ist ein Ordner natürlich immer leer), so kopiert er sich eine Seite aus dem entsprechenden Original-Buch. In der Zwischenzeit passiert folgendes im Rechner: Eine Sammlung von Daten und/oder Programmen wird im EUMEL-System ein "Daten- raum" ("dataspace") genannt. Erhält ein Datenraum einen Namen, so wird dieser Datenraum eine Datei ("file") genannt. Angenommen, es existiert im System eine Datei mit dem Namen 'Mist', die ein Angestellter mit dem Namen 'Krümel Monster' erstellt hat. Ein anderer Benutzer mit dem Namen 'Grobi' will mit dieser Datei arbeiten. Grobi kopiert sich also diese Datei und gibt ihr den Namen 'Grobis Mist'. Durch diese Kopier-Operation wird ein neuer Datenraum angelegt, der aber anfänglich nur Verweise auf den Datenraum ent- hält, der sich unter dem Namen 'Mist' verbirgt. Der Datenraum bzw. die Seiten, die in Datei 'Mist' enthalten sind, werden also "geshared", d.h. von mehreren Benutzern gemeinsam verwendet (in unserem Beispiel von Grobi und Krümel Monster). Es erfolgt also eine logische Kopie, aber keine physika- lische! Will der Angestellte Grobi nun eine Seite der Datei 'Grobis Mist' verwenden, so erhält er natürlich die entsprechende Seite aus der Datei 'Mist'. Ver- ändert der Angestellte Grobi nun eine Seite, so wird diese veränderte Seite in dem Datenraum vermerkt, der unter dem Namen 'Grobis Mist' ansprechbar ist. Davon merkt der Benutzer 'Krümel Monster' natürlich nichts, denn er arbeitet mit den Seiten seines Datenraums weiter, die unverändert geblieben sind. Aber auch Grobi merkt nichts davon, daß Seiten soweit wie möglich gemeinsam be- nutzt werden. Merke: Durch das Konzept der Datenräume und Dateien (die nichts anderes sind als benannte Datenräume), ist es möglich, auch Daten von verschiedenen Programmen her gemeinsam zu benutzen und somit eine redundante Speicherung überflüssig zu machen. Programme sind ebenfalls in Daten- räumen gespeichert, so daß einer gemeinsamen Benutzung von z.B. Systemprogrammen durch mehrere Nutzer nichts im Wege steht. Fixpunkte In gewissen Zeitabständen wird der gesamte Systemzustand eines EUMEL-Systems gespeichert ("Fixpunkt"). Bei eventuell auftretenden Störungen kann dadurch immer bei dem letzten Fixpunkt mit der Verarbeitung fortgefahren werden. Zurück zu unseren Angestellten, die typischerweise dieses komische System weiter benutzen: Es passiert zum ersten Mal ein entsetzliches Unglück: während im Sommer mehrere Fenster geöffnet wurden, betritt der "reitende" Bürobote das Zimmer und alle Seiten werden von den Tischen und aus allen offenen Ordnern herabgeweht. Da unsere Angestellten - wie man sich leicht vorstellen kann - etwas vergeßlich sind, können sie nicht mehr rekon- struieren, welche Seiten auf den Tischen und welche sich in den Büchern bzw. Ordnern befanden. Die Arbeit von mehreren Monaten ist somit verloren! Deshalb werden Sicherheitsmaßnahmen getroffen: In regelmäßigen Zeitabständen müssen alle Angestellten ihre Arbeit unter- brechen. Dann wird von einem - extra dazu abgestellten - Angestellten Listen angelegt, in denen die Seiten auf dem Tisch, den Ordnern und den Büchern vermerkt wird. Im Falle eines erneuten Unglücks braucht man also nur die letzte dieser Listen zu konsultieren, um eine gesicherte Arbeitssituation herzustellen. Allerdings ist in einem solchen Fall diejenige Arbeit verloren, die in der Zwischenzeit seit der Erstellung der letzten Liste geleistet wurde. Aber das wird ja gerne in Kauf genommen, weil überhaupt weitergemacht werden kann und nicht die gesamte Arbeit verloren ist. Merke: In gewissen (einstellbaren, typisch: 15 Minuten) Zeitabständen wird vom EUMEL-System der gesamte Zustand des Systems gesichert. Diese Sicherung wird "Fixpunkt" genannt. Dazu ist es notwendig, daß die Verarbeitung der Programme kurz (z.Z. 0.2 Sek.) unterbrochen wird, was sich jedoch meist nicht besonders störend auswirkt. Damit ist es aber sichergestellt, daß bei einem Stromausfall, Hardware- oder Soft- warestörungen immer zu einem Zeitpunkt in der Verarbeitung "aufge- setzt" werden kann, bei dem nur diejenigen Daten verloren sind, die seit dem letzten "Fixpunkt" aufliefen. Archiv Ein weiteres Sicherungsmittel im EUMEL-System ist das Archiv, mit welchem man Dateien (also Daten und/oder Programme) extern zum EUMEL-System speichern kann. Verlassen wir nun lieber unsere Angestellten. Dieses Modell würden wir sonst übermäßig strapazieren. Wenden wir uns vielmehr einem weiteren Sicherungs- mittel des EUMEL-Systems zu, dem EUMEL-Archiv. Mit Hilfe des EUMEL-Archivs ist es möglich, Dateien auf Floppies zu schreiben und somit außerhalb des EUMEL-Systems aufzubewahren. Es ist nun möglich, mehrere Dateien auf einer Floppy zu speichern. Bloß wie funktioniert das? Ein gutes Modell des EUMEL-Archivs stellt ein Tonband oder eine Musikkassette dar. Auf diesen werden die Musikstücke (unsere Dateien) nacheinander (Fach- ausdruck: "sequentiell") aufgezeichnet, d.h. neue Musikstücke (Dateien) können immer nur angefügt werden. Ist das Tonband oder die Kassette voll beschrieben, so schaltet das Gerät meist automatisch ab. Im EUMEL-System gibt's in solchen Fällen eine Fehlermeldung. Unterschiedlich zu einem Tonband ist jedoch, daß im EUMEL-System die Namen der Dateien mit abgespeichert werden und diese Dateien - durch die Angabe des Dateinamens - gezielt vom Archiv gelesen werden können. Bei einem Ton- band oder einer Kassette muß man sich erst alle Musikstücke anhören, bis das Musikstück erreicht ist, welches benötigt wird. Dieses "sequentielle" Überlesen nicht benötigter Dateien erledigt das EUMEL-System "automatisch". Im EUMEL-System gibt es nun nicht nur die Möglichkeit, eine Datei auf ein Archiv zu schreiben oder von einem Archiv zu lesen, sondern auch mehrere Da- teien mit einem Kommando zu lesen oder zu schreiben. Zusätzlich ist es mög- lich, ein Archiv zu löschen (und dann ggf. neu zu beschreiben), wenn die "archivierten" Dateien nicht mehr benötigt werden. Nun passiert es oft, daß eine bereits archivierte Datei verändert wird und nochmals auf das Archiv geschrieben werden soll. Aber durch eine Veränderung der Datei hat diese gerade ihren Platzbedarf verändert. Somit könnte die Datei - sofern sie sich vergrössert hat - eine nachfolgende Datei auf dem Archiv u.U. teilweise überschreiben. Deshalb wurde im EUMEL-Archiv folgende Vereinbarung getroffen: Wird eine Datei nochmals auf ein Archiv geschrieben, so wird die Datei, die sich bereits auf dem Archiv befindet, als "ungültig" gekennzeichnet und die neue Version an das Ende angefügt. Nur wenn die alte Datei die letzte auf dem Archiv ist, wird sie von der neuen Version über- schrieben. Merke: Durch dieses Verfahren kann es zu einer kuriosen Situation kommen: zwei Dateien werden abwechselnd auf ein Archiv in mehreren Versionen geschrieben. Obwohl beide Dateien zusammengenommen bei weitem nicht das Archiv auffüllen würden, kommt es zum Überlauf. In einem solchen Fall muß man das Archiv löschen (wobei vorher die Dateien ggf. in das System geholt werden müssen) und beide Dateien erneut auf das Archiv schreiben. 4. Kleines #ib#EUMEL-Wörterbuch In diesem Wörterbuch werden einige der Begriffe, die häufig in diesem Be- nutzer-Handbuch verwendet werden, erläutert. Bezüge auf weitere Begriffe, die in diesem Wörterbuch stehen, werden mit den Zeichen ">" und "<" ge- klammert. Anweisung: Direktive an die Textkosmetik, welche direkt in einen Text geschrieben wird. Eine Anweisung muß in "\#" eingefaßt werden. Beachte den Unterschied zu einem Kommando. Archiv: Ein Programmsystem, um Dateien des EUMEL-Systems auf Floppys außerhalb des Systems zu speichern oder von dort wieder in das EUMEL-System zu holen. Als Archiv wird auch noch ein Speichermedium bezeichnet (in der Regel eine Diskette). Benutzer-Task: Im Gegensatz zu einer >System-Task< ist eine Benutzer-Task eine Task, die von einem Benutzer erzeugt worder ist. Sie ist entweder an ein Terminal gekoppelt oder kann unab- hängig von einem Terminal im Hintergrund bearbeitet werden. BOUND: Attribut von Variablen, das bei einer Deklaration vor die Typangabe gesetzt wird. Dient zur Aufprägung eines Daten- typs auf einen Datenraum. DATASPACE: Eine Datei ohne Namen. Datenraum: Siehe >DATASPACE<. Editor: Programm zur Eingabe und Veränderung von Texten, Daten und Programmen. ELAN: Programmiersprache des EUMEL-Systems ("ELementary LANguage"). ELAN-Compiler: Ein Programm, welches ein korrektes ELAN-Programm in ein äquivalentes, ablauffähiges Programm (im >EUMEL0-Code<) übersetzt. EUMEL0-Code: Maschinensprache des EUMEL-Systems. EUMEL-Drucker: Programm zur Ansteuerung von (unterschiedlichen) Druckern. Der EUMEL-Drucker wird durch Kommandos gesteuert und er- laubt es, unterschiedliche Drucker mit verschiedenartigen Leistungen immer gleich anzusprechen. EUMEL-Standard: Objekte (also Datentypen, Prozeduren und/oder Operatoren), die durch Pakete realisiert werden und standardmässig in jedem EUMEL-System verfügbar sind. Fixpunkt: Speicherung des aktuellen Systemzustandes in regelmäßigen Abständen. Bei Hardware- oder Softwarestörungen kann immer bei der letzten Fixpunkt-Sicherung aufgesetzt werden. Hintergrund-Task: Eine >Task<, die nicht an ein Terminal angekoppelt ist (d.h. einem Benutzer nicht direkt zugänglich), aber trotz- dem vom System bearbeitet wird oder im Wartezustand ist (warten auf einen Auftrag oder eine Ein/Ausgabe-Operation). Kommando: Ein ELAN-Programm, welches in der Regel aus einem Prozeduraufruf besteht. Ein Kommando kann vom >Monitor< oder Editor gegeben werden. Kommandos können ebenfalls in Programmen verwandt werden. Lokale Dateien: Dateien einer Benutzer-Task. Manager: Eine >Task<, die auf Aufträge wartet. Beispiele sind die Spool-Task bzw. Datei-Manager. Letzterer wird für die Haltung längerfristig benötigter Dateien gebraucht. Monitor: Der Monitor steuert die Kommunikation zwischen einem Benutzer am Terminal und dem EUMEL-Betriebssystem, nachdem der Benutzer sich mit Hilfe des >Supervisors< eine Task erschaffen hat. Die Monitor-Kommandos beziehen sich immer auf die angekoppelte Benutzer-Task. paging: Benötigte Informationen werden in Einheiten ("pages") in den Zentralspeicher des Rechners geladen. Somit ist es möglich, bei weitem größere Informationsmengen zu ver- arbeiten, als auf einmal in den Speicher des Rechners passen. OPERATOR: >Task<, mit der das EUMEL-System u.a. gestartet, "abge- schaltet" und gesichert werden kann. Scanner: Programm, um aus einem Text lexikalische Elemente ("Le- xeme") herauszublenden. In dem im >EUMEL-Standard< implementierten Scanner werden Lexeme nach der ELAN-Syntax erkannt, redundante Leerzeichen (nicht in Texten) sowie Kommentare überlesen. Sendungs-Vermittlung: Steuerung der Übermittlung von Informationen zwischen verschiedenen >Tasks<. sharing: >Datenräume< und/oder >pages< können von mehreren Benutzern gleichzeitig benutzt werden. Erst bei einer Schreibopera- tion eines Benutzers wird nur für diesen Nutzer eine Kopie der Daten angelegt. ("copy on write"). Spooler: Systemprogramm des EUMEL-Systems, welches Druckaufträge zwischenspeichert, so daß unmittelbar weiter gearbeitet werden kann. Supervisor: Kern des EUMEL-Betriebssystems auf der ELAN-Ebene zum Ver- walten von Tasks. Supervisor-Kommando: Kommando zur Steuerung (An-/Abkoppeln, Erzeugen, Benutzung) einer >Benutzer-Task<. System-Task: Eine >Task<, die für Aufrechterhaltung, Betrieb und Steu- erung des EUMEL-Systems benötigt und nicht von einem Benutzer erzeugt wird, sondern "immer" im >Taskbaum< vorhanden ist. Task: Eigenständiger Prozeß (Auftrag) im EUMEL-System. Taskbaum: Eine baumförmige Anordnung von >Tasks<, in die jede Task des EUMEL-Systems eingefügt wird. Dabei hat jede Task - mit Ausnahme des >Urvaters< - eine >Vater-Task<, und kann weitere Tasks erzeugen ("Söhne"). Textkosmetik: Programme des EUMEL-Systems, die die Gestaltung eines Textes erlauben. Urvater: Wurzel des >Task-Baums< mit dem Namen 'UR'. Vater-Dateien: Dateien einer >Vater-Task<. Vater-Task: Eine >Task<, die einer Task in direkt aufsteigender Linie im >Taskbaum< übergeordnet ist. Es wird dabei zwischen einer "unmittelbaren" (die direkt übergeordnete Vater-Task) und "mittelbaren" Vater-Tasks (Vater-Tasks, die über die unmittelbare Vater-Task erreichbar sind) unterschieden. 5. ELAN-Literatur Bittner, M., Jäckel, J., Jähnichen, S.: ELAN - Beispielsammlung. Institut für angewandte Informatik, Fachbereich 20, TU Berlin, Berlin, 1979 Hahn, R.: Höhere Programmiersprachen im Vergleich. Akademische Verlagsgesellschaft, Wiesbaden, 1981 Hahn, R., Nienaber, B.: Probleme lösen mit dem Computer. Teil 1: Einführung in die algorithmische Problemlösung. Teil 2: Werkzeuge und Methoden. Neuer Verlag Bernhard Bruscha, Tübingen, 1978 Hahn, R., Stock, P.: ELAN - Handbuch. Akademische Verlagsgesellschaft, Wiesbaden, 1979 Hommel, G., Jäckel, J., Jähnichen, S., Kleine, K., Koch, W., Koster, K.: ELAN - Sprachbeschreibung. Akademische Verlagsgesellschaft, Wiesbaden, 1979 Hommel, G., Jähnichen, S., Koch, W.: SLAN - Eine erweiterbare Sprache zur Unterstützung der strukturierten und modularen Programmierung. 4. GI Fachtagung Programmiersprachen in Erlangen, Springer Verlag, 1976 Hommel, G., Jähnichen, S., Koster, C.H.A.: Methodisches Programmieren. De Gruyter, Berlin, 1983 Klingen, L., Liedtke, J: Programmieren mit ELAN Teubner, Stuttgart, 1983 Liedtke, J.: EUMEL - Ein ELAN-System für Mikroprozessoren. GMD-Spiegel, Bonn, 1979 Voila, H.T.: A new computer routine for the generation of publishable data from nothing. Computer Quickies 48, 117 (1984)