von Bob Gezelter
Ursprünglich wollte ich diese Folge einer detaillierten Besprechung einer typischen, alltäglichen Nutzung von logischen Namen widmen. Bei der Entwicklung des Beispiels wurde mir bewußt, dass wir vorher erst einige der Optionen des Kommandos ASSIGN besprechen müssen (die Syntax von DEFINE ist ähnlich, allerdings mit vertauschten Operanden; die meisten bevorzugen eins von beiden, aus zugegebermaßen eigentümlichen Gründen). Die Besprechung der verschiedenen Qualifier und ihrer Auswirkungen wird mehr als eine Kolumne in Anspruch nehmen, so dass wir das Beispiel (das mehrere Qualifier verwendet) um zwei Folgen auf Teil 5 verschieben werden.
Es gibt diverse Qualifier, die öfter mit dem Kommando ASSIGN verwendet werden, und sie haben einen erheblichen Einflüß auf die Art und Weise, wie der logische Name dargestellt, übersetzt und benutzt wird.
In Teil 2 dieser Reihe habe ich ein Beispiel gezeigt, in dem die iterative Übersetzung verwendet wurde, um einen gemeinsamen Satz von logischen Namen als Basis zu schaffen, die auf verschiedene Dateien in verschiedenen Verzeichnisbäumen verweisen. Der iterative Übersetzungsprozeß kann genau kontrolliert werden; z.B. kann er an einem bestimmten Punkt gestoppt werden, wenn ein logischer Name angetroffen wird, dessen definierendes ASSIGN-Kommando die Option /TRANSLATION_ATTRIBUTES=TERMINAL enthielt.
An diesem Punkt sollte ich auch erwähnen, dass logische Namen, deren Wert mit einem Unterstrich "_" beginnt, von den I/O-Diensten als physische Gerätenamen behandelt werden, die nicht weiter übersetzt werden.
Außer der Option TERMINAL kann der Qualifier /TRANSLATION_ATTRIBUTES die Option CONCEALED enthalten. Diese Option kontrolliert, ob der übersetzte logische Name z.B. bei der Ausgabe des DIRECTORY-Kommandos angezeigt wird (um es klarzustellen: dies ist keine Sicherheitsmaßnahme, da die Information leicht durch das Kommando SHOW LOGICAL erlangt werden kann. Die Option vemeidet lediglich unnötigen Müll auf dem Display).
Der Qualifier /NAME_ATTRIBUTES dient zur Kontrolle der Erzeugung und Verwendung eines logischen Namens. Der Wert CONFINE verhindert das Kopieren des logischen Namens in die Prozeßtabelle eines mit SPAWN aufgerufenen Subprozesses. Offensichtlich gilt dies nicht für Tabellen, die bei einem SPAWN nicht kopiert werden, wie die Job-, Gruppen- und Systemtabellen.
Der Wert NO_ALIAS garantiert, dass kein logischer Name mit identischem Namen in einem weiter außen liegenden (d.h. weniger privilegierten) Zugriffsmodus definiert werden kann. Versuche, einen identischen, aber weniger privilegierten Namen in derselben Tabelle zu definieren liefern einen Fehler. Ein schon bestehender, weiter außen liegender Name in derselben Tabelle wird gelöscht. Diese Optionen können im selben Kommando verwendet werden: ASSIGN/NAME_ATTRIBUTES=(CONFINE,NO_ALIAS).
Wie in der ersten Folge erwähnt, ist jeder Prozeß i.allg. mit mehreren Tabellen von logischen Namen verbunden, der SYSTEM-, GROUP-, JOB- und PROCESS-Tabelle. Standardmäßig arbeitet das ASSIGN-Kommando auf der PROCESS-Tabelle. Wenn eine Nutzung der JOB-Tabelle gewünscht wird (z.B. weil der logische Name auch von einem Eltern-, Kind- oder Geschwister-Prozess im gleichen Job genutzt werden soll), kann dies mit dem Qualifier /JOB erreicht werden.
Mit dem Qualifier /SYSTEM wird der logische Name in der SYSTEM-Tabelle definiert, und ist damit allen Prozessen auf dem Knoten zugänglich. Der Qualifier /SYSTEM kann nur genutzt werden, wenn der Prozess über das Privileg SYSNAM (und/oder SYSPRV) verfügt.
Der Qualifier /GROUP arbeitet ähnlich wie /SYSTEM, ezeugt den logischen Namen aber in der GROUP-Tabelle des Prozesses, die von allen Prozessen gemeinsam genutzt wird, die sich in derselben UIC-Gruppe wie der definierende Prozess befinden. Eine Modifikation der GROUP-Tabelle erfordert das Privileg GRPNAM (und/oder GRPPRV).
Der nächste Artikel in dieser Reihe von Robert Gezelter:
Logische Namen (Teil 4)
Vorhergehende Artikel in dieser Reihe von Robert Gezelter:
Logische Namen (Teil 2)
Logische Namen (Teil 1)
Über den Autor:
Robert Gezelter ist der Gründer der Consulting-Firma, die seinen Namen trägt (www.rlgsc.com).
Die Tätigkeit seiner Firma betont detaillierte technische Expertise in den Bereichen Computer-Architekturen, Betriebssysteme, Netzwerke, Sicherheit, APIs und verwandte Themen. Mr. Gezelter hat mit OpenVMS seit der ersten Release von VAX/VMS 1978 gearbeitet.
Seine Kundenstamm umfasst sowohl kleinere Firmen wie auch Firmen in den Fortune 10, lokal, national und international.
Er ist per Email zu errreichen unter gezelter@rlgsc.com.
Original auf www.openvms.org
|