|
IBM Grossrechner: Time Sharing, Option TSOUnter IBM Grossrechner werden hier Computer der Serien /360, /370, 303x und 308x verstanden (Reihenfolge entspricht historischer Entwicklung), Für diese Rechner gibt es eine Reihe von Betriebssystemen: DOS für kleine Systeme (bis ca. 1 Mbyte Hauptspeicher) und OS für die Großen. OS bzw. speziell OS/MVS ist das von IBM am stärksten unterstützte Produkt. Um alten Kunden das Umsteigen von DOS auf MVS (Multiple Virtuell Storage) zu erleichtern, wurde das System VM (Virtuell Machine) geschaffen. VM erlaubt es, eine physikalische Maschine in mehrere logische aufzuteilen und auf jeder ein anderes Betriebssystem laufen zu lassen (wie z.B. DOS und MVS). 2. Betriebsarten Programme können in zwei verschiedenen Umgebungen ablaufen: Entweder interaktiv am Terminal oder als Batch Job. Während der Entwicklung des Systems /360 wurde zum Testen die Job-Control-Language (JCL) entwickelt. Da IBM es bis heute nicht geschafft hat, die geplante benutzerfreundliche Steuersprache zu implementieren, wird JCL immer noch benutzt, um die Verarbeitung von Batch Jobs zu kontrollieren. Da dieses Kapitel sich NICHT mit Batch Jobs beschäftigt, wird auf JCL hier nicht weiter eingegangen. Zum interaktiven Arbeiten wird unter VM das CMS (Conversational Monitor System) und unter MVS die TSO (Time Sharing Option) benutzt. Durch einige unglückliche Design Entscheidun gen ist CMS so anwendungsfreundlich geworden, daß einige Benutzer beim Umsteigen von DOS zu MVS bei VM hängengeblieben sind und nun ihre Anwendungen unter VM fahren. Am meisten installiert ist allerdings das TSO System unter MVS. 3. Dateistruktur
DieserAbschnitt beschreibt die Dateistruktur im Betriebssystem OS/MVS. Extensions
Per Konvention bestehen Dateinamen oft aus: User Name, Datei Name und Anhang (Extension). Der Anhang bezeichnet dann den Typ der Datei. Oft benutzte Extensions sind z.B.: Dateinamen werden in TSO in Apostrophen eingegeben. Beginnt der Dateiname mit dem User Namen, unter dem man sich eingeloggt hat, dann kann man Apostophe, den User Namen und den ersten Punkt weglassen. Beispiele: 'MEYER.PASSWORD.ANALYSE.ASM'oder GAMES.LOAD Units Dateien können sich auf verschiedenen Speichermedien befinden: Platten (DISK), Trommeln (DRUM), Massenspeicher (MSS), Bänder (TAPE) etc. MSS (Mass Storage Systems) sind Archive mit vielen Magnetbandpatronen, die automatisch geladen und entladen werden können. Auf 1 Patrone paßt ca. 1/2 Platte. Zum Bearbeiten werden Dateien auf sogenannte Staging Disks geladen und hinterher wieder zurückgeschrieben. Einfacher und schneller ist es, mit Hilfe des HSM (Hieraical Storage Manager) die Dateien erst auf normale Platten zu kopieren und später wieder ins MSS zurück zu migrieren (Kommandos HRECALL und HMIGRATE). An Stelle der genauen Gerätebezeichnungen lassen sich an vielen Stellen die allgemeinen Namen TAPE für alle Bandeinheiten und SYSDA für alle Plattenspeicher verwenden. Unter TSO ist normalerweise nur der Zugriff auf Plattendateien möglich. Catalog Die Dateinamen und Dateiattribute werden bei Banddateien in sogenannten Header und Trailer Labels und bei Plattendatein im VTOC gespeichert. Jede Platte besitzt ein eigenes VTOC (Volume Table Of Contents). Auf einer Platte kann jeder Name nur einmal existieren. Um den Zugriff zu erleichtern, gibt es auch noch einen Katalog. In ihm stehen Dateinamen und wo sich die jeweilige Datei befindet (Gerätetyp und Gerätebezeichnung (VOLSER oder Volume Serial). Gibt es im System mehrere Dateien gleichen Namens (z.B. auf verschiedenen Platten oder auf Platte und auf Band), kann nur eine davon im Katalog stehen. Es kann also auch unkatalogisierte Dateien geben, Genauso ist es möglich, eine nicht existierende Datei im Katalog einzutragen. Attribute (Data Set Control Block, DCB)
Jede Datei besitzt eine Reihe von Attributen. Sie werden im VTOC oder im Headerlabel gespeichert- Hier werden nur die wichtigsten besprochen: Dataset Organization (DSORG): Die meisten Dateien sind Physical Sequential (PS), Direct Access (DA) oder Partitioned Organized (PO). Ober Partitioned Datasets wird weiter unten noch gesprochen. Direct Access ist auch bei einigen PS Dateien möglich. Weiter gibt es noch Index Sequential (IS) und Virtual Sequential (VS) Dateien, auf die aber nur mit speziellen Programmen zugegriffen werden kann. Partitioned Datasets
Ein Datensatz ist immer mindestens eine Spur lang. Deswegen wurde die Partitioned Dataset Organization (DSORG=PO) eingeführt. Ein solcher Datensatz besteht aus einem Directory und durch EOFs (End Of
File) getrennte Member. Diese Member können wie normale Dateien mit den Attributen der PO Datei benutzt werden. Hierfür wird an den Dateinamen der Name des Members in Klammern angefügt. Z.B: Schutzmechanismen
Dateien können auch gegen Zugriff geschützt werden. Dies wird durch Vergabe von Passwörtern erreicht. Dieses Passwort muss bei jedem Öffnen der Datei dem System mitgeteilt werden. Es ist Schutz gegen
Beschreiben (WPWD) und sowohl gegen Schreiben als auch Lesen (RPWD) möglich. Unter TSO wird der Benutzer gefragt, wenn er das Passwort nicht mitgeliefert hat. Im Batch jedoch wird der Operator gepromptet, da es keine Möglichkeit gibt, das Passwort in der JCL mitzuliefern. Da der Operator das Passwort nicht weiss, werden nur die wenigsten Dateien so geschützt (zumindest gegen Lesen). Die Passwörter stehen in der (normalerweise) geschützten Datei'PASSWORD'. Zusätzlich wird der Zugang zum TSO durch ein User Passwort geschützt. Dieses steht zusammen mit den durch das PROFILE Kommando veränderbaren
Parametern im 'SYS1.UADS' (User Attribute Dataset). Diese Datei wird mit dem nur für einige User zugänglichern ACCOUNT Kommando gelesen und geändert. Data Definition Names (DDNAME)
Programme greifen nicht über den Dateinamen sondern über einen symbolischen File Namen (auch DDNAME genannt) auf eine Datei zu. Dies erlaubt es, mit einem Programm auf verschiedenen Dateien zu
arbeiten, ohne das Programm zu ändern und neu übersetzen zu müssen. Das dynamische Allozieren von Dateien ist im OS erst seit der Einführung von MVS möglich. Die Verknüpfung von DDNAME und DSNAME geschieht in der JCL mit dem DD (Data Definition) Befehl und in TSO mit dem ALLOC Kommando. Oft benutzte DDNamen sind:
Stirbt ein Programm mit einer Meldung wie'. Allocation for XXXXXXXX missing, so sollte man diesen DDNamen aufs Terminal allozieren, falls es ein Ausgabe File ist. Unerwünschte Eingaben legt man auf DUMMY oder DSNAME-NULLFILE' (gibt beim Lesen EOF und verschluckt Ausgaben). Bleibt ein Programm einfach stehen, so kann es sein, dass es auf Eingabe wartet. Ein EOF wird am Terminal durch die Sequenz '/*' erzeugt (ohne die Apostrophe, als einzige Eingaben in der Zeile). Werden fremde Dateien als Eingabe Files benutzt, so empfiehlt es sich, diese nur
als INPUT Datei zu allozieren:
4. TSO Kommandos
Mit dem LOGON Befehl beginnt man eine TSO Session. Er dient dazu dem System den User Namen und das Passwort mitzuteilen. Weitere evtl. nötige Angaben sind Account Nummer und Logon Prozedur. Die
Eingabe von LOGON "ret" genügt. Das Kommando fragt nach allen notwendigen Parametern. Es ist möglich, die Grösse des zur Verfügung stehenden Speichers anzugeben: SIZE(zahl), Zahl in Kbytes. Falls die Verbindung zum Rechner ohne vorheriges LOGOFF unterbrochen wurde bekommt man beim erneuten Einlog Versuch oft die Meldung: USER xxx already in use, enter LOGON or LOGOFF. Hier hilft die Angabe des
RECONNECT Parameters.
Der LOGOFF Befehl Der HELP Befehl
Der HELP (H) Befehl gibt Informationen über die einzelnen Kommandos. HELP ohne Operanden gibt eine nicht notwendig vollständige Liste aller Kommandos aus. Mit LISTDS'SYS1.HELP'MEMBERS bekommt man eine
Liste aller verfügbaren HELP Texte. Um die Informationen über ein bestimmtes Kommando zu erhalten schreibt man: HELP kommando. Die Ausgabemenge lässt sich dabei durch folgende Optionen einschränken.
Der OPERANDS Option kann eine Liste der gewünschten Operanden folgen. Ist dies nicht der Fall, so werden alle Operanden erklärt. Beispiele. Der ATTRIB Befehl
Mit dem ATTRIB (ATTR) Befehl wird eine Attribut Liste erzeugt. Wenn sie bereits existiert, dann muss sie vorher mit dem FREE Befehl wieder freigegeben werden. Die Attribut Liste wird benötigt, um einer neuen Datei beim ALLOCATE Befehl die gewünschten Attribute zu geben. Eine Attribut Liste kann mehrfach verwendet werden. Die Liste bekommt einen 1 bis 8 Zeichen langen Namen. Es sollte kein Name verwendet werden, der später als DDName benutzt wird. Der erste Operand ist der frei wählbare Name der Liste. Danach können z.B. folgende Operanden kommen: Der ALLOCATE Befehl
Das ALLOCATE (ALLOC) Kommando dient dazu, einem DDnamen eine Datei zuzuweisen. Die wichtigsten Operanden sind.
Die folgenden Operanden sollten i.A. nur für neue Dateien verwendet werden:
Allozieren einer Eingabedatei auf Fortran Einheit 1:
Allozieren einer neuen Datei für 80 Zeichen lange Zeilen.
Allozieren einer nicht katalogiserten Datei und testen, ob sie geschützt ist: Der FREE Befehl
Das FREE Kommando gibt allozierte Dateien, Files und Attribut Listen wieder frei: Es ist nie verkehrt, Dateien, die man nicht mehr braucht, wieder freizugeben, So kann man sie nicht versehentlich überschreiben. Auch kann jemand anderes diese Datei jetzt mit dem Parameter OLD allozieren, was vorher nicht möglich war. Eine einfache Methode festzustellen, ob irgend jemand gerade mit einer bestimmten Datei arbeitet, ist, diese mit OLD zu allozieren. Ist das möglich, so ist sie frei. Sonst bekommt man die Msg: DATASET allocated to another job or user. Die HRECALL und HMIGRATE Befehle
Dateien, die sich im MSS befinden, können in TSO nicht direkt verarbeitet werden. Mit HRECALL wird die Datei von MSS auf Platte bewegt. Der HSM meldet sich, wenn die Datei da ist. Wenn die Datei nicht mehr
benötigt wird, kann sie mit HMIGRATE wieder zurück migriert werden. Der DELETE Befehl
Der DELETE (DEL) Befehl löscht eine Datei aus dem Katalog. Plattendateien werden zusätzlich im VTOC gelöscht und der verwendete Platz wieder freigegeben. Der erste Operand ist der Name der zu löschenden Datei. Sollen mehrere Dateien gelöscht werden, so sind die Namen durch Kommas zu trennen und in Klammern einzufassen. Beispiel: Der RENAME Befehl
Mit RENAME (REN) können Dateien und Member umbenannt werden. Es ist im allgemeinen nicht möglich, den User Namen in Dateinamen zu ändern. Der EDIT Befehl EDIT ist ein einfacher zeilenorientierter Texteditor. Er kann an dieser Stelle nicht erklärt werden. Es werden nur zwei kurze Beispiele gegeben:
Neue Datei erstellen: Der CALL Befehl Mit CALL wird ein ausführbares Programm aufgerufen. Der erste Parameter ist der Name des Programms. Wird der User Name weggelassen und der Name nicht in Apostrophe gesetzt, so wird an den Namen die Extension LOAD angefügt. Wird kein Membername angegeben, so wird der Name TEMPNAME angenommen. Ausführbare Programme sind immer in PO Dateien gespeichert. Optional können an das Programm noch Parameter übergeben werden. Diese werden als zweiter Parameter von Apostrophen umgeben. Enthalten die Parameter Apostrophe, so sind diese doppelt zu schreiben.
CALL (GAME) ruft 'userid.LOAD(GAME)' auf Die'SYS1.LINKLIB' enthält einige rote Knöpfe, die nicht immer gesichert sind. Werden sie gedrückt, so wird die automatische softwaremassige Selbstzerstörung eingeleitet. Es empfiehlt sich, nur die Systemprogramme aufzurufen, von denen man wirklich weiss, was sie tun. Der EXEC Befehl
Das EXEC Kommando dient zum Aufrufen von Command Lists (CLIST). Dies sind Dateien, die eine Reihe von TSO Kommandos enthalten. Clisten mit Parametern beginnen mit einem PROC Befehl. Dem Keyword PROC folgt die Anzahl der unbedingt anzugebenden Operanden, Hierauf fügen die Namen der Operanden optional gefolgt von default Werten in Klammern. Beispiel: Der LISTALC Befehl Mit LISTALC (LISTA) kann man eine Liste aller allozierten Dateien und Attributlisten am Terminal erzeugen. Hierbei können die Parameter STATUS, HISTORY und SYSNAMES angegeben werden. Der MEMBERS Parameter sollte nicht benutzt werden. Ist eine Datei mit vielen Membern dabei, so kann die Liste sehr lang werden. Ausserdem muss zum Erstellen der Memberliste die Datei geöff net werden. Ist sie gegen Lesen mit einem Passwort geschützt, so muss dieses angelietert werden. Um eine Liste aller Member einer Datei zu erhalten sollte der LISTDS Befehl benutzt werden. Das Allozieren einer geschützten Datei ist auch ohne Passwort möglich. Die HISTORY Option zeigt nun an, ob und wie die Datei geschützt ist (Security: NONE, WPWD oder RPWD). Dies funktioniert nicht bei VSAM Dateien und bei Dateien, die von RACF geschützt werden. Während der normale Passwortschutz erst hinter dem OPEN SVC lauert, bewacht RACF auch schon den Eingang für das dynamische Allozieren. Der LISTCAT Befehl
LISTCAT (LISTC) liest den Katalog. Normalerweise braucht man nur den LEVEL Operanden. Dieser Operand gibt eine Liste aller Dateien die unter diesem Level im Katalog enthalten sind. Der Operand ALL sieht interessant aus. Man wird aber trotzdem nach allen Passwörtern gefragt, die man nicht sowieso schon weiss (weil es das eigene LOGON Passwort ist). Der LISTDS Befehl
Der LISTDS (LISTD) Befehl liefert im wesentlichen die gleichen Informationen wie LISTALC. Hier hat man die Möglichkeit Dateinamen als Operanden anzugeben. Man muss die Dateien also nicht erst allozieren.
Normalerweise wird LISTD benutzt, um eine Liste aller Member zu erstellen. Interessant ist die Möglichkeit, einen LEVEL anzugeben, wie z.B.: Der PROFILE Befehl
Der PROFILE (PROF) Befehl erlaubt es, eine Reihe von Parametern zu ändern. Der PREFIX(user) Operand ändert den Usernamen, der Dateinamen vorangestellt wird, die nicht in Apostrophe eingeschlossen sind.
Dies erlaubt aber keinen weiteren Zugriff zu den Dateien des anderen Users, als man ihn nicht ohnehin schon hat. Mit NOINTERCOM verbietet man den Empfang von Msgs, die von Jobs oder anderen Usern (SEND Befehl) kommen. Mit INTERCOM wird der Empfang wieder angestellt. Weitere Operanden siehe 'HELP PROF'. Wird kein Operand angegeben, so wird eine Liste der augenblicklichen Parameter ausgegeben. Der TERMINAL Befehl
Mit dem TERMINAL (TERM) Befehl kann man die Eigenschaften seines Terminals umdefinieren. Operanden sind: Beispiel: TERM LINES(24) SECONDS(30) LINESIZE(79) Eine weitere Art einen Attention Interrupt zu erzeugen ist es, nachdem das System den '***' Prompt (wegen LINES oder SECONDS) ausgegeben hat, eine Ziffer zwischen 1 und 9 einzugeben. Diese Ziffer entspricht der Zahl der zu gebenden Interrupts. Der SEND Befehl
Mit Hilfe des SEND (SE) Befehls lassen sich einzeilige Nachrichten an andere Benutzer oder an den Operator senden. Auf das Schlüsselwort SEND folgt der Text in Apostrophen. Nach dem Text muss die Angabe des Empfängers, USER(user) folgen, sonst geht der Text an die Master Konsole. Beim Senden an einen anderen User gibt es noch folgende Optionen:
Beispiele. Der Text wird am Ende automatisch um den Sendernamen verlängert. Es gibt keinen Befehl, der eine Liste aller im Moment aktiven Benutzer ausgibt. Der TEST Befehl
TEST ist ein primitiver Debugger auf Assembler Ebene. Auf die verschiedenen Unterbefehle wird hier nicht weiter eingegangen. Interessant ist die Möglichkeit, sich mit TEST den Hauptspeicher anzusehen. Mit LIST
0. LENGTH(256) C kann man sich die ersten 256 bytes ansehen. Das erste Argument hinter LIST ist die Startaddresse in Hex gefolgt von einem Punkt. Das C steht für Character, X ist HEX, 1 4-Byte Integer. Weiteres steht im Online Help. Irgenwo im low core, meist in den ersten Kbytes gibt es eine Tabelle aller Units, die im Moment Online sind. Hier findet man die VOLSER Namen aller Platten. Auf diesen kann man dann mit IEHLIST nach interessanten (und evfl. nicht katalogisierten) Dateien suchen. IEHLIST wird weiter unten beschrieben. Es gibt meistens eine Platte mit dem Namen SYSRES oder mehrere mit Namen wie SYSRSA, SYSRSB oder SYSRS1, SYSRS2... In Mehrprozessorsystemen hat meist jeder Prozessor eigene Systemplatten, eigene Passwort Datasets u.a. Was auf der einen Platte geschützt ist, muss es auf der anderen noch lange nicht sein. TEST'SYS1.OMDLIB(kommando)' CP Jetzt fragt TEST nach den Operanden für kommando (das bewirkt die CP = Command Processor Option). Danach kann mit GO das Kommando gestartet werden. Command Processors kann man nicht einfach mit CALL aufrufen. Ist die Ausführung des Befehls auch unter TEST nicht möglich, so kann man immer noch versuchen, den Befehl aus dem Editor heraus zu starten. Geht auch das nicht, so hilft manchmal der TSO submode des PL/1 Checkout Compilers PLIC. Privilegierte Befehle Befehle, die nicht jeder User ausführen kann, sind ACCOUNT und OPER. Entscheidend hierfür ist die Authorisierung im 'SYS1.UADS'- Diese zu erteilen ist gerade eine der Aufgaben von ACCOUNT. Wenn man ACCOUNT kann (ausprobieren), dann kann man alle User mit Passwörtern und anderen Attributen listen (LIST subcommand), neue User einrichten, alte löschen und einiges mehr. Mit OPER kann man Jobs Löschen und eine Reihe von Systemsachen anschauen (ist aber nicht aufregend). Man kann erheblich weniger als eine richtige Master Konsole. OPER und ACCOUNT können getrennt authorisert werden Aufrufen von Compiler und Linker Das Uebersetzen und Linken von Programmen in den diversen Sprachen wird hier nicht behandelt. Man sollte aber in den HELP Files oder in der 'SYS1.CLISTLIB' etwas darüber finden können. Die Behandlung von Assembler oder höheren Sprachen muss aus Platzgründen auch entfallen. Befehle für Batch Jobs Ein Batch Job wird mit dem SUBMIT Befehl gestartet. Mit dem STATUS Befehl lässt sich feststellen, ob der Job noch in der Queue hängt, gerade ausgeführt wird oder schon fertig ist. Mit OUTPUT lässt sich die SYSOUT Ausgabe des Jobs ansehen. Das CANCEL Kommando dient dazu, den Job aus der Queue zu entfernen. Die PURGE Option des CANCEL Befehls löscht die SYSOUT Dateien, falls der Job bereits gelaufen sein sollte. Diese Befehle werden hier nicht weiter behandelt, da zum sinnvollen Gebrauch wenigstens Grundkenntnisse in JCL notwendig sind. Ausserdem ist das SUBMIT Kommando in vielen Installationen nicht allen Usern zugänglich. 5. Verschiedenes Interessante Dateien
Die aktuellen Systemdateien befinden sich unter dem Katalogeintrag SYS1. Oft gibt es auch Dateien für SYSO oder SYS2-SYS9 für alte oder neue Versionen. Weiter interessant sind die Dateien 'SYS1.Axxxx'. Diese
sind zum Teil die Original Dateien, aus denen das aktuelle System generiert wird. Zum Beispiel enthält 'SYSI.AHELP' meistens mehr Einträge als'SYS1.HELP'. Trotzdem sind oft auch die Kommandos verfügbar,
für die es kein HELP gibt. Weitere interessante Systemdateien sind: Zu beachten ist: Alle Kommandos an IEHLIST beginnen mit einem Leerzeichen! Für diskname ist der tatsächliche Name einer Platte einzusetzen. Für diese Platte muss schon eine Allozierung bestehen, d.h. mindestens eine Datei auf dieser Platte muss unter beliebigem DDNamen alloziert sein. Für LISTCTLG muss als diskname natürlich die Platte genannt werden, auf der sich der Katalog für diesen NODE auch tatsächlich befindet. Ein Nachteil des Programms ist, dass die Ausgabezeilen bis zu 132 Zeichen lang und damit auf dem Bildschirm schwer zu lesen sind.
Disknamen kann man mit TEST herausfinden (siehe oben). Eine einfachere Möglichkeit bietet das LISTALC Kommando. Es gibt allerdings nur die Volumes der gerade allozierten Dateien aus. Da nicht alle Dateien im Katalog stehen müssen, findet man mit LISTVTOC oft Dateien, die nur durch Löschen aus dem Katalog "geschützt" sind. Es ist sogar schon vorgekommen, dass der 'SYSII.ILIADS' als 'SYS1.TESTLJADS' kopiert und
dann nicht wieder durch ein Passwort geschützt wurde.
|
[HaBi 1]
IBM Grossrechner: Time Sharing, Option TSO