EUMEL-Benutzerhandbuch TEIL 12: SPOOLER / OPERATOR 1. Spooler-Übersicht Ein "Spooler" ist eine Warteschlange von Datenräumen#ie# (Dateien) vor einem "Worker": +------------+ +------------+ -----> | | | | -----> | spooler | ------------> | worker | -----> | | | | +------------+ +------------+ Der Spooler puffert Dateien, die von beliebigen Tasks geschickt werden kön- nen, in seiner Warteschlange und gibt sie der Reihe nach dem Worker zur eigentlichen Verarbeitung. Ein typischer Einsatzfall (aber nicht der einzige) für ein solches System ist der EUMEL-Drucker in Multi-User-Systemen. Unab- hängig davon, ob der Drucker gerade aktiv ist und wieviele Dateien noch auf den Ausdruck warten, kann man seine Datei dem Druckspooler schicken und sofort danach weiterarbeiten. Da jeder Spooler und auch jeder Worker eine eigene Task ist, können Spooler nur im Multi-User-Systemen eingesetzt werden. Im folgenden wird nur die anwenderseitige Schnittstelle eines Spoolers be- schrieben. Merke: Ein Spooler puffert Dateien für einen Worker. 2. Die Benutzung eines Spoolers Jeder Spooler im System ist eine eigene Task und hat dementsprechend einen Tasknamen, über den er angesprochen werden kann. So heißt der Druckspooler beispielsweise " PRINTER". Jede Task kann jedem Spooler durch Aufruf von 'save' eine Datei schicken. Beispiel: save ("datei name", task ("spooler name")) (Vergl. auch TEIL 7). In der Regel ist ein SPOOLER für (mindestens) einen Drucker in einem EUMEL-System vorhanden. Dieser kann über den internen Task-Bezeichner 'print' angesprochen werden. Beispiel: save ("datei name", printer) Eine so übergebene Datei kann man durch erase ("datei name", printer) aus der Warteschlange löschen. (Natürlich nur solange sie sich noch in dieser Warteschlange befindet). Dabei kann man nur auf solche Dateien zugreifen, die aus der eigenen Task stammen. Durch Aufruf von list (printer) wird die aktuelle Warteschlange des angegebenen Spoolers auf dem Terminal angezeigt, so daß man sich über die Anzahl der Dateien und die Position der eigenen Dateien im Spooler informieren kann. Aufbauend auf diesen allgemeinen Kommandos können weitere für spezielle Spooler programmiert werden. So gibt es für den Spooler 'printer' die Proze- duren print und print ("datei name") die im wesentlichen auf save ("datei name", printer) zurückgeführt werden. Merke: Einem SPOOLER kann man eine (oder mehrere) Dateien mit 'save' schicken. Mit 'list' kann man sich über die Dateien im SPOOLER informieren. Einem Drucker-SPOOLER übergibt man mit 'print' eine Datei. 3. Privilegierte Spooler-Kommandos Gewisse Kommandos können einer #ib#Spooler-Task#ie# direkt im Dialog (ähn- lich wie im 'maintenance'-Zustand eines globalen Datei-Managers) gegeben werden. Dazu muß der Spooler mit 'continue' an ein Terminal geholt werden. Ist der SPOOLER durch ein Paßwort, so sind diese privilegierten Kommandos nicht für jeden Benutzer zugänglich. break PROC break Zweck: Beendet den Dialogzustand des Spoolers. Der Spooler koppelt sich vom Terminal ab und geht in seinen normalen Verarbeitungsmodus über. first PROC first Zweck: Vorziehen einer Datei in der Warteschlange auf den ersten Platz. Alle Dateien von der zweiten an werden im Dialog zum Vorziehen angeboten. start PROC start Zweck: Die (vorher gestoppte) Worker-Task wird neu kreiert und ge- startet. stop PROC stop Zweck: Die Worker-Task wird abgebrochen und gelöscht. Damit wird auch ein von ihr belegetes Terminal wieder frei. Hinweis: Die Kommandos 'start/stop' sind gut dazu geeignet, die Verarbeitung einer Datei durch einen Worker (z.B. Druckoutput) abzubrechen, bei Hardwareeingriffen zu stoppen oder Worker (wie z.B. Drucker) nur zeitweise zu betreiben. Hinweis: Wenn der Worker mit Verzögerung abgebrochen werden soll, kann man den Spooler an ein Terminal holen und dann so lange mit der Eingabe von 'stop' warten, bis der Worker mit der gerade bearbeiteten Datei fertig ist. Der Spooler kann in dieser Zeit nicht von anderen Tasks oder dem Worker angesprochen werden. 4. Der OPERATOR Im folgenden Abschnitt wird die standardmäßig implementierte Task OPERATOR erläutert. Erweiterungsmöglichkeiten sind im Systemhandbuch beschrieben. Dem OPERATOR stehen gewisse privilegierte Kommandos zur Verfügung. Diese Kom- mandos (System abschalten, fremde Tasks löschen u.a) werden vom "normalen" Benutzer des Multi-User-Systems nicht benötigt. Sie sind nur für den "Operateur" interessant. Es empfiehlt sich, OPERATOR mit einem Paßwort zu versehen, damit die priviligierten Kommandos nicht jedem Benutzer zur Ver- fügung stehen. Einschalten des EUMEL-Systems Wie ein EUMEL-System eingeschaltet wird, kann hier nicht beschrieben werden, weil dies abhängig von speziellen Rechnern ist (Lage des Ein/Aus-Schalters u.a.m.). Üblicherweise liefern die Hersteller für diesen Zweck bei der Aus- lieferung Anweisungen mit. Nach Einschalten des Rechnersystems befindet man sich in der Task OPERATOR. Diese Task dient zum kontrollierten Ein- und Ausschalten des EUMEL-Systems. Nach dem Einschalten wird man automatisch von der Task OPERATOR nach dem aktuellen Datum und der Uhrzeit gefragt. Nach Eingabe dieser Werte erfolgt gib kommando : Der Benutzer befindet sich also in der Monitor-Ebene (vergl. dazu auch TEIL 2). Um die Task OPERATOR vom Terminal abzukoppeln, gibt man break Nach Betätigen der SV-Taste erscheint dann gib supervisor kommando : Nun kann man mit 'begin' oder 'continue' eine neue Task einrichten oder mit einer alten Task in der Arbeit fortfahren. Merke: Nach dem Einschalten gibt man das Datum und die Uhrzeit an. Dann koppelt man die Task OPERATOR mit 'break' ab. EUMEL-System ausschalten Nachdem die Arbeiten in der Benutzer-Task beendet wurden, koppelt man die Task mit break vom Terminal ab oder beendet die Task mit end Achtung: Bei 'end' werden alle Dateien der Task gelöscht. Nach Betätigen der SV-Taste kann nun ein Supervisor-Kommando gegeben werden. Um das EUMEL-System kontrolliert auszuschalten, muß man die Task OPERATOR wieder an das Terminal holen. Das erfolgt mit continue ("OPERATOR") Die OPERATOR-Task meldet sich mit gib kommando : Nun kann man das Kommando shutup geben, welches das System kontrolliert abschließt. 'shutup' garantiert, daß alle Dateien auf dem Hintergrund des EUMEL-Systems gesichert werden. Wird das EUMEL-System ohne 'shutup' ausgeschaltet (z.B. indem der Rechner einfach ausgeschaltet wird), können die Informationen, die seit dem letzten Fixpunkt (üblicherweise 15 Minuten) aufgelaufen sind, verloren sein. Merke: In der Task OPERATOR wird mit dem Kommando 'shutup' das EUMEL-System kontrolliert abgeschaltet. Übersicht über die #ib#OPERATOR-Kommandos end PROC end (TASK CONST task) Zweck: Löschen der Task 'task'. Hierbei findet keine Paßwortüberprüfung statt. Darum sollte die Task OPERATOR auch mit einem Paßwort versehen sein, weil man vom OPERATOR jede Task löschen kann. Beispiel: end (task ("hugo")) (* oder: *) end (/"hugo") set date PROC set date Zweck: Einstellen des Datums und der Uhrzeit. Das Erfragen der Werte erfolgt interaktiv. shutup PROC shutup Zweck: Kontrolliertes Herunterfahren des gesamten Systems. Alle Tasks bleiben mit ihren Daten erhalten. Beim Start des Systems meldet sich die OPERATOR-Task wieder auf dem gleichen Terminal. Das Kommando sollte deshalb möglichst nur am Terminal 0 gegeben werden. Nach dem Start sollte der OPERATOR mit 'break' vom Terminal abgekoppelt werden.