Der Natural Buffer Pool mit gemeinsam genutztem Speicher dient als Zwischenspeicher, in den Natural katalogisierte Objekte (z.B. Programme) aus einer Natural-Systemdatei zur anschließenden Ausführung durch das Natural-Laufzeitsystem und/oder zur Objektkompilierung durch den Natural-Compiler lädt.
Da Natural ablauf-invarianten Natural-Objektcode generiert, kann eine einzige Kopie eines Naturalobjekts von mehr als einem Benutzer zeitgleich ausgeführt werden. Dazu wird jedes Objekt nur einmal von einer der Natural-Systemdateien in den Natural Buffer Pool geladen, anstatt von jedem Benutzer, der das Objekt anfordert, geladen zu werden.
Dieser Abschnitt behandelt grundlegende Gesichtspunkte für den Betrieb des Buffer Pools und veranschaulicht den Objektladevorgang:
Das Laden des Objekts in den Buffer Pool wird ausgelöst, wenn ein ausführbares Natural-Objekt zur Ausführung angefordert wird.
Wird die Ausführung eines Objekts angefordert, dann wird das entsprechende katalogisierte Objekt von der Natural-Systemdatei, in der es gespeichert ist, gelesen und in den Buffer Pool geladen, in dem es durch das Natural-Laufzeitsystem ausgeführt werden kann.
Neben ausführbaren Natural-Objekten werden auch nicht ausführbare Objekte des Objekttyps Data Area (Local, Global, Parameter) in den Buffer Pool geladen, wenn ein Natural-Objekt, das eine solche Data Area referenziert, katalogisiert oder neu katalogisiert (kompiliert) wird.
Objektausführung - Natural-Laufzeitsystem, Natural-Nukleus
Objekte werden aus dem Buffer Pool entfernt, sobald sie nicht mehr von einem Benutzer referenziert werden und der Platz zum Laden neuer Objekte benötigt wird. Dadurch wird die maximale Ausnutzung des im Buffer Pool verfügbaren Speicherplatzes gewährleistet.
Falls ein Buffer Pool Cache vorhanden ist, werden die nicht benutzten Objekte vom Buffer Pool in den Cache-Speicher ausgelagert. Wenn ein nicht benutztes Objekt auch aus dem Cache entfernt wird oder wenn kein solcher Cache existiert, wird das betreffende Objekt erneut von der entsprechenden Natural-Systemdatei geladen, sobald es wieder von einem Benutzer referenziert wird.
Das folgende Diagramm veranschaulicht den Vorgang des Ladens und Ausführens eines Natural-Programms:
Ein Benutzer setzt das Natural-Systemkommando
EXECUTE ab und fordert die Ausführung eines
Natural-Objekts des Typs Programm mit dem Namen PGM01 an.
|
|
Der Natural-Kommando-Interpreter interpretiert das Kommando und gibt die Anforderung an das Natural-Laufzeitsystem weiter. | |
Das Natural-Laufzeitsystem übergibt die Anfrage an den Object Loader. |
|
Der Object Loader weist den Buffer Pool Manager an, den Buffer
Pool (und, falls vorhanden, den Buffer Pool Cache)
nach dem Objekt
Findet der Buffer Pool Manager die Buffer-Pool-Adresse von
|
|
Der Object Loader ruft das katalogisierte Objekt von
PGM01 aus der entsprechenden Systemdatei ab.
|
|
Der Object Loader übergibt das katalogisierte Objekt von
|
|
Der Buffer Pool Manager lädt |
|
Der Buffer Pool Manager gibt die Buffer-Pool-Adresse von
PGM01 an den Object Loader zurück.
|
|
Der Object Loader übergibt die Buffer-Pool-Adresse von
|
|
Das Natural-Laufzeitsystem interpretiert den kompilierten Code
des katalogisierten Objekts PGM01 und führt ihn aus.
|
Die folgenden Abschnitte in der System-Architektur-Dokumentation nehmen Bezug auf den Natural Buffer Pool:
Natural-Laufzeitsystem - Natural-Nukleus
Katalogisierte Objekte - Natural-Compiler, Natural-Nukleus
Die folgenden Abschnitte in anderen Natural-Dokumentationen betreffen den Natural Buffer Pool:
Natural Buffer Pool - Operations-Dokumentation
Natural Storage Management - Operations-Dokumentation