Erweitern des dynamischen Subsystemkatalogs
Während des Systemlaufs kann die aktuelle dynamische Subsystem-Konfiguration von der Systembetreuung erweitert werden (Kommando ADD-SUBSYSTEM). Der Katalog für die neue Subsystem-Konfiguration muss mit SSCM generiert werden und es müssen folgende Punkte beachtet werden:
Der neue Katalog kann wahlweise größer als der alte sein (d.h. auch alle Subsysteme des alten Kataloges enthalten) oder als „Delta“-Katalog angelegt sein und lediglich die neuen Definitionen von Subsystemen enthalten.
Der „alte“ Subsystemkatalog, der während Startup benutzt wurde, wird nicht automatisch aktualisiert. Beim nächsten Startup ergeben sich folgende Möglichkeiten:
der „neue“ Katalog wird benutzt
ein ganz neu erstellter Katalog wird benutzt, in dem z.B. die nicht mehr benutzten Versionen von Subsystemen nicht mehr enthalten und Änderungen von Eigenschaften (wie z.B. CREATION-TIME) bereits vorgenommen sind
Anweisung ASSIGN-HOLDER-TASK
Die Anweisung darf nicht für alte und neue Subsysteme gegeben werden.
Beispiel
Subsysteme im alten Katalog: A, B, C
Subsysteme im neuen Katalog: A, B, C, D und Edann ist erlaubt:
//ASSIGN-HOLDER-TASK TYPE=SHARED-HOLDER(BY-SUBSYSTEMS=(A,B)) //ASSIGN-HOLDER-TASK TYPE=SHARED-HOLDER(BY-SUBSYSTEMS=(D,E))
dann ist nicht erlaubt:
//ASSIGN-HOLDER-TASK TYPE=SHARED-HOLDER(BY-SUBSYSTEMS=(A,B,E))
Anweisung SET-SUBSYSTEM-ATTRIBUTES
Der Operand CREATION-TIME für ein neues Subsystem muss verträglich sein mit den bereits existierenden Versionen des Subsystems in der alten Subsystem-Konfiguration.
Beispiel
Subsystem X in der Version 1 ist im alten Katalog deklariert mit CREATION-TIME=*AT-SUBSYSTEM-CALL. Dann kann Subsystem X in der Version 2 im neuen Katalog nur CREATION-TIME=*AT-CREATION-REQUEST haben.
Falls für ein neues Subsystem CREATION-TIME=*BEFORE-SYSTEM-READY oder *AFTER-SYSTEM-READY ist, dann wird das Subsystem nicht kreiert, da der Zeitpunkt „SYSTEM READY“ (Systemeinleitung) nicht mehr gegeben ist. Es erfolgt eine entsprechende Meldung.
Neu hinzuzufügende Subsysteme mit den Attributen MEMORY-CLASS=*LOCAL-PRIVILEGED (Klasse-5-Speicher) dürfen weder die Breite des System- bzw. Benutzer-Adressraum-Streifens noch die Lage der alten Subsysteme in diesem Streifen ändern.
Es dürfen keine Abhängigkeiten von alten zu neuen Subsystemen deklariert werden (Operanden REFERENCED-SUBSYSTEM und RELATED-SUBSYSTEM).
Beispiel
Subsysteme im alten Katalog: A, B, C
Subsysteme im neuen Katalog: A, B, C, D und EWenn X --> Y bedeutet, dass X zur Auflösung von Extern-Aufrufen Y benötigt,
dann ist
A --> D nicht erlaubt,
D --> E erlaubt,
D --> B,C erlaubt.Anweisung SEPARATE-ADDRESS-SPACE
Neue und alte Subsysteme dürfen disjunkt sein, sich also adressmäßig überschneiden.
Beispiel
Subsysteme im alten Katalog: A, B, C
Subsysteme im neuen Katalog: A, B, C, D und EWenn X --> Y bedeutet, dass X zu Y disjunkt ist,
dann ist
A --> D erlaubt,
D --> E erlaubt,
D --> B,C erlaubt
Dynamische Änderungen von Subsystem-Attributen
Mit dem Kommando MODIFY-SUBSYSTEM-PARAMETER ist es möglich, Eigenschaften von Subsystemen dynamisch zu ändern. Es ist weder ein Shutdown noch das Hinzufügen einer neuen Version des Subsystems nötig. Mit dem Kommando SAVE-SUBSYSTEM-CATALOG werden die Konfigurationsänderungen für den nächsten Startup abgespeichert.
Diese Möglichkeiten sind vor allem in folgenden Situationen hilfreich:
Um ein Subsystem stoppen zu können, müssen alle angeschlossenen Tasks ihre Verbindung abgebaut haben. Wurde das Subsystem nicht mit dem Attribut FORCED-STATE-CHANGE=*ALLOWED definiert, besteht keine Möglichkeit, das Deaktivieren des Subsystems zu beschleunigen. Ist dies aber aus bestimmten Gründen nötig, kann mit dem Kommando MODIFY-SUBSYSTEM-PARAMETER das Attribut dynamisch geändert werden.
Kommt es zu einer Memory-Pool-Kollision, weil z.B. zwei Subsysteme an derselben Adresse liegen und die Task nur eins von beiden nutzen kann, ist es mit dem Kommando MODIFY-SUBSYSTEM-PARAMETER möglich, die Adressen der Subsysteme zu ändern und so die Memory-Pool-Kollision zu vermeiden.