Der virtuelle Adressraum ist eine Folge von lückenlos aufsteigenden virtuellen Adressen, beginnend bei 0.
Die Größe des virtuellen Adressraums kann für /390-Server eingestellt werden und beträgt maximal 2 GByte, siehe Bild 4. Der Benutzeradressraum für x86-Server ist in der Größe von zwei Gbyte generiert und kann nicht verändert werden.
Da Befehle nur ausführbar sind, wenn sie und ihre Operanden im Hauptspeicher stehen, ist es notwendig, die virtuellen Adressen des Adressraums in reale Hauptspeicheradressen umzuwandeln (siehe "Adressumsetzung"). Die Umsetzung geschieht zum Zeitpunkt der Programmausführung.
BS2000 verwaltet den virtuellen Adressraum seitenweise. Eine Seite umfasst 4 KByte (4096 Byte), d.h. der Anwender kann mit seinen Programmen Speicherplatz in Einheiten zu je 4 KByte anfordern und belegen.
Jeder Task wird bei ihrer Erzeugung ein eigener virtueller Adressraum zugeordnet.
Der virtuelle Adressraum wird in sechs Speicherklassen unterteilt, die unterschiedliche Attribute (Merkmale) haben. Jede Seite kann eindeutig einer dieser Klassen zugeordnet werden.
Die Klassen 5 und 6 stellen zusammen den tasklokalen Anteil des virtuellen Adressraums dar, wobei jedoch nur Klasse-6-Speicher vom Anwender für seine Programme und Daten adressierbar ist (Benutzeradressraum). Im Klasse-5-Speicher legt das System Tabellen an, die es zur Kommunikation mit der Anwendertask benötigt. Auf diesen Speicherbereich kann in der Regel vom nichtprivilegierten Anwender nicht zugegriffen werden. Eine Ausnahme bilden z.B. nichtprivilegierte DSSM-Subsysteme, die ebenfalls in den Klasse-5-Speicher geladen werden können. Die Klassen 1 bis 4 sind privilegiert, wobei die Klasse 4 neben Systemtabellen auch Subsysteme und ablaufinvariante Programme des Benutzers aufnehmen kann. Die Klassen 1, 2 und 3 sind nur für das System verfügbar.
Einteilung in Speicherklassen
Speicherklasse | Attribute | Inhalt und Verfügbarkeit |
6 |
|
|
5 |
|
|
4 |
|
|
3 |
|
|
2 |
|
|
1 |
|
|
Tabelle 6: Definition der Speicherklassen
Virtueller Adressraum auf /390-Servern
Bild 4 zeigt die Aufteilung des virtuellen Adressraums bei einer Größe von 2 GByte (Standard-Einstellung).
Bild 4: Aufteilung des virtuellen Adressraums (/390-Server)
Größe des Benutzeradressraums
Benutzeradressraum (Klasse-6-Speicher) und tasklokaler Systemadressraum (Klasse-5-Speicher) teilen sich ober- und unterhalb der 16-MByte-Grenze je einen Adressraumbereich. Zwischen Klasse-5- und Klasse-6-Speicher gibt es keine festen Grenzen. Die jeweilige Grenze variiert in Abhängigkeit von den Speicheranforderungen für jede der beiden Speicherklassen und ist daher in beide Richtungen verschiebbar. Die maximale Größe des Benutzeradressraums ist also zeitlich veränderlich und hängt vom aktuellen Klasse-5-Speicherbedarf ab, der sich aus den vorangegangenen Aktivitäten der Anwendertask ergibt. Allerdings ist stets je 1/8 des gemeinsamen Bereichs für Klasse-5-Speicher reserviert; Klasse-6-Speicher kann nie den gesamten Bereich einnehmen.
Abgesehen davon gibt es drei Faktoren, die die Größe des Benutzeradressraums bestimmen:
die Einstellung der Größe des Benutzeradressraums (/390-Server)
Der Benutzeradressraum ist in der Größe von 1808 Mbyte generiert.
Mit der Prozedur SYSPRC.BS2000-EXEC.version kann vom ausgelieferten BS2000-Standard-EXEC ein BS2000-EXEC mit anderem Benutzer- und Gesamtadressraum abgeleitet werden, siehe Handbuch „Systeminstallation“ [11].
Bei dem Standardwert von 1808 MByte (bzw. 896 MByte oder 448 MByte) für die Größe des tasklokalen Adressraums (das entspricht einem Gesamtadressraum von 2048 MByte (bzw. 1024 MByte oder 512 MByte)), wird 1/8 für den Klasse-5-Speicher reserviert. Damit verbleibt für den Klasse-6-Speicher oberhalb 16 MByte eine Größe von 1568 MByte (bzw. 770 MByte oder 378 MByte).die Systemeinleitung
Die Größe des Shared-Code-Bereichs unterhalb 16 MByte kann über den Parameterservice bei der Systemeinleitung eingestellt werden. Die Standardeinstellung beträgt 2 MByte. Ferner ermittelt DSSM während der Systemeinleitung über alle Subsysteme hinweg den Gesamtbedarf an Klasse-5-Speicher mit SCOPE=*GLOBAL. Ein entsprechend großer Bereich wird (zusätzlich zu dem allgemeinen Anteil von 1/8) für Klasse-5-Speicher reserviert, kann aber tasklokal mit /RELEASE-SUBSYSTEM-SPACE wieder freigegeben werden. Insgesamt verbleibt für den Klasse-6-Speicher bei SHRSIZE=2 MByte eine Größe von etwa 12 MByte.der Benutzerkatalog
Im Benutzereintrag ist das Kontingent (in MByte) festgelegt, das dem Benutzer für Allokierungen im virtuellen Adressraum zur Verfügung steht. Es umfasst die Speicheranforderungen im Klasse-6-Speicher des Benutzeradressraums und in den Data Spaces, die vom Benutzer angelegt wurden. Dieser Wert bezieht sich jedoch nur auf den Umfang des angeforderten Klasse-6-Speichers, nicht auf seine Lage (ober- oder unterhalb 16 MByte).
In der Ausgabe des Kommandos SHOW-USER-ATTRIBUTES enthält das Feld ADDRESS-SPACE-LIMIT die maximal erlaubte Größe des Klasse-6-Speichers für die Benutzerkennung (siehe Handbuch „Kommandos“ [19]).