z/OS MVS Programming: Extended Addressability Guide
Previous topic |
Next topic
|
Contents
|
Contact z/OS
|
Library
|
PDF
Contents (exploded view)
z/OS MVS Programming: Extended Addressability Guide
SA23-1394-00
Abstract for MVS Programming: Extended Addressability Guide
z/OS Version 2 Release 1 summary of changes
An introduction to extended addressability
Basic concepts
Asynchronous cross memory communication
Synchronous cross memory communication
Access register ASC mode
Data-in-Virtual
Virtual lookaside facility
Data spaces and hiperspaces
Basic decision: data space or hiperspace
What can a program do with a data space or a hiperspace?
What are the differences?
Comparing data space and hiperspace use of physical storage
Which one should your program use?
An example of using a data space
An example of using a hiperspace
Choosing VIO instead of a data space or a hiperspace
Linkage stack
Linkage stack considerations for asynchronous exit routines
Instructions that add and remove a linkage stack entry
Branch and stack (BAKR) instruction
Program return (PR) instruction
Example of using the linkage stack
Contents of the linkage stack entry
Instructions that manipulate the contents of a linkage stack entry
Extract stacked registers (EREG) instruction
Extract stacked state (ESTA) instruction
Modify stacked state (MSTA) instruction
Expanding a linkage stack to a specified size
Relationship between the linkage stack and ESTAE-type recovery routines
Dumping the contents of the linkage stack
Synchronous cross memory communication
When should you use synchronous cross memory communication?
Terminology, macros, and assembler instructions
Cross memory terminology
Macros used for synchronous cross memory communication
Instructions used for cross memory communication
An overview of cross memory communication
PC routines
PC routine invocation
PC linkages
PC routine execution
Stacking pc routines
Basic pc routines
Accessing data from a pc routine
Summary of cross memory communication
The cross memory environment
Entry tables
Linkage tables
The PC number
Program authorization - PKM (PSW-key mask)
Address space authorization
Considerations before using cross memory
Environmental considerations
Restrictions
Requirements
Establishing cross memory communication
Making a PC routine available to all address spaces
Address space authorization
Linkage Index
PC routines and the entry table
Basic PC routine linkage
Making a PC routine available to selected address spaces
Basic PC Routine
Authorization Index
Address space authorization
PC routines and the entry table
Basic PC routine linkage
Stacking PC routine
Authorization index
Address space authorization
PC routines and the entry table
PC number
Examples of how to establish a cross memory environment
Example 1 - Making services available to selected address spaces
Setting Up
Establishing access
Invoking a PC routine
Removing Access
Cleaning Up
Example 2 - Making services available to all address spaces
Setting up
Establishing access
Providing Service
Removing Access
Cleaning Up
Example 3 - Providing non-space switch services
PC linkages and PC routine characteristics
PC linkage capabilities
Defining a PC routine
Definitions common to both stacking and basic PC routines
Supervisor state or problem state
Space switch or non-space switch
Problem state program authorization
Addressing mode
PSW-key mask (PKM)
Definitions for stacking PC routines only
ASC mode
Extended authorization index (EAX)
SASN value
Associated recovery routine (ARR)
PSW key
PC routine requirements
Stacking PC routines
Basic PC routines
Linkage conventions
Basic PC
User program
PC routine that receives control in supervisor state
PC Routine That Receives Control In Problem State
Stacking PC
User in Primary Mode
User In AR Mode
PC routine that receives control in primary mode
PC routine that receives control in AR mode
Resource Management
Reusing ASIDs
Coding cross memory services to avoid the loss of ASIDs from reuse
Coding to allow use of reusable ASIDs
When to use a reusable ASID
Using IEASYSxx to Avoid Running Out of ASIDs
Reassigning LXs when the LX reuse facility is enabled
Reassigning LXs when the LX Reuse Facility is not enabled:
Example of Reassigning LXs
Reusing AXs and EAXs
PC Routine Loading Recommendations
Accounting Considerations
Recovery Considerations
Using the 64-bit address space
What is the 64-bit address space?
Why would you use virtual storage above the bar?
Memory management above the bar
Limiting the use of memory objects
Memory objects
Using large pages
Using assembler instructions in the 64-bit address space
64-bit binary operations
How z/Architecture processes S/390 instructions
z/Architecture instructions that use the 64-bit GPR
64-bit addressing mode (AMODE)
Non-modal instructions
Modal instructions
Setting and checking the addressing mode
Linkage conventions
Pitfalls to avoid
IARV64 macro services
Protecting storage above the bar
Relationship between the memory object and its owner
Creating private memory objects
GETSTOR request
Example of creating a private memory object
Creating shared memory objects
GETSHARED request
SHAREMEMOBJ request
CHANGEACCESS request
Examples using IARV64 requests for shared memory objects
Example of creating and using a shared memory object – GETSHARED
Example of accessing a shared memory object – SHAREMEMOBJ
Example of changing the access of a shared memory object – CHANGEACCESS
Freeing a shared memory object
AFFINITY=LOCAL
AFFINTY=SYSTEM
Proper serialization of shared memory objects
Using a memory object
Fixing the pages of a private memory object
Example of fixing pages of a private memory object
Discarding data in a memory object
Releasing the physical resources that back pages of memory objects
Freeing a private memory object
Example of freeing a private memory object
Creating guard areas and changing their sizes
Examples of creating a memory object with a guard area
Listing information about the use of virtual storage above the bar
An example of creating, using, and freeing a private memory object
Using access registers
Using access registers for data reference
A comparison of data reference in primary and AR mode
Coding instructions in AR mode
Manipulating the contents of ARs
Access lists
Types of access lists
A Comparison of a PASN-AL and a DU-AL
Types of access list entries
Special ALET values
Special ALET Values at a Space Switch
Loading the Value of Zero into an AR
The ALESERV macro
Setting up addressability to an address/data space
Adding an entry to an access list
Example of Adding an Access List Entry for a Data Space
Example of adding an access list entry for an address space
Obtaining and passing ALETs and STOKENs
Rules for passing ALETs
Examples of establishing addressability to data spaces
Adding an Entry for the Primary Address Space to the DU-AL
Using the ALET for the Home Address Space
Deleting an entry from an access list
Example of deleting a data space entry from an access list
Example of deleting an address space entry from an access list
ALET reuse by the system
EAX-authority to an address space
Setting the EAX value
Procedures for establishing addressability to an address space
Procedures for the accessing address space
Procedures for the target address space
Changing an EAX value
Freeing an EAX value
Checking the authority of callers
Example of using TESTART
Obtaining storage outside the primary address space
What access lists can an asynchronous exit routine use?
Issuing MVS macros in AR mode
Passing parameters to MVS macros in AR mode
Formatting and displaying AR information
Creating and using data spaces
Referencing data in a data space
Relationship between the data space and its owner
Scope=single, scope=all, and scope=common data spaces
Rules for creating, deleting, and using data spaces
Example of the rules for accessing data spaces
Summary of rules for creating, deleting, and using data spaces
Creating a data space
Choosing the name of the data space
Specifying the size of the data space
Identifying the origin of the data space
Example of creating a data space
Protecting data space storage
Creating a data space of DREF storage
Establishing addressability to a data space
Example of establishing addressability to a data space
Managing data space storage
Managing data space storage across a checkpoint/restart operation
Limiting data space use
Serializing use of data space storage
Examples of moving data into and out of a data space
Using callable cell pool services to manage data space areas
Extending the current size of a data space
Deleting a data space
Example of creating, using, and deleting a data space
Creating and using SCOPE=COMMON data spaces
Attaching a subtask and sharing data spaces with it
Sharing data spaces among problem state programs with PSW key 8 through F
Mapping a data-in-virtual object to a data space
Paging data space storage areas into and out of central storage
Releasing data space storage
How SRBs use data spaces
Obtaining the TCB identifier for a task (ttoken)
Example of an srb routine using a data space
Dumping storage in a data space
Using data spaces efficiently
Creating and using hiperspaces
Managing hiperspace storage
Limiting hiperspace use
Managing hiperspace storage across a checkpoint/restart operation
Relationship between the hiperspace and its owner
Serializing use of hiperspace storage
Standard and expanded storage only hiperspaces
Standard hiperspace
Expanded storage only hiperspaces
Summary of the differences
Rules for creating, deleting, and using hiperspace
Creating a hiperspace
Choosing the name of the hiperspace
Specifying the size of the hiperspace
Protecting hiperspace storage
Identifying the origin of the hiperspace
Creating a non-shared or shared standard hiperspace
Creating an expanded storage only hiperspace
Accessing hiperspaces
How an ALET connects a program to a hiperspace
How problem state programs with PSW key 8 through F use a hiperspace
Summary of unauthorized programs' use of hiperspaces
How supervisor state or PSW key 0 through 7 programs use hiperspaces
Obtaining an ALET for a hiperspace
Example of adding an access list entry for a hiperspaces
Obtaining and passing ALETs for hiperspaces
Deleting an access list entry for a hiperspace
Example of deleting a hiperspace entry from an access list
Transferring data to and from a hiperspace
Read and write operations for standard hiperspaces
Example of creating a standard hiperspace and using It
Read and write operations for expanded storage only hiperspaces
Obtaining improved data transfer to and from a hiperspace
The move-page facility
Using the ADMF
Extending the current size of a hiperspace
Deleting a hiperspace
Releasing hiperspace storage
Using data-in-virtual with standard hiperspaces
Mapping a data-in-virtual object to a hiperspace
An example of mapping a data-in-virtual object to a hiperspace
Using a hiperspace as a data-in-virtual object
An example of a hiperspace as a data-in-virtual object
How SRBs use hiperspaces
Creating address spaces
Using the ASCRE macro to create an address space
Planning the characteristics of the address space
Identifying a procedure in SYS1.PROCLIB
The address space initialization routine
Writing an Initialization Routine
Synchronizing the Initialization Process
Establishing cross memory linkages
The new address space as service provider
The new address space as cross memory user
Passing a parameter list to the new address space
Providing an address space termination routine
Establishing attributes for address spaces
Deleting an address space
Example of creating and deleting an address space
Creating and using subspaces
What is a subspace?
Deciding whether your program should run in a subspace
Benefits of subspaces
Protecting the server program
Protecting the application program
Providing diagnosis
Limitations of subspaces
System storage requirements
Steps to manage subspaces
Updating the application server to use subspaces
Managing subspaces when performance is a priority
Managing subspaces when storage is a priority
Creating a single subspace
Determining whether subspaces are available on your system
Obtaining storage for subspaces
Storage attributes
Backing virtual storage for a subspace
Requesting subspace storage
Aligning virtual storage for a subspace
Creating the range list
Making a range of storage eligible to be assigned to a subspace
Considerations when making storage eligible to be assigned to a subspace
Task hierarchy restrictions
Effect on existing subspaces
Coding the RANGLIST parameter
Requirements of the range list for an IDENTIFY or UNIDENTIFY request
System processing of range list errors in IARSUBSP IDENTIFY request
Creating the subspaces
Saving subspace STOKENs
Establishing addressability to a subspace
Copying the DU-AL to a subtask or SRB
Searching for and extracting a subspace entry
Using special alets
Assigning storage to the subspaces
Requirements of the range list for an ASSIGN or UNASSIGN request
System processing of range list errors in IARSUBSP ASSIGN request
Branching to a subspace
Using cross memory mode with subspaces
Example of changing primary and secondary address spaces with subspaces
Running a program in a subspace
Returning to full address space addressability
Preserving the path across subspaces
Using checkpoint/restart with subspaces
Requesting additional storage while running in a subspace
Using MVS services in a subspace
Disassociating storage from the subspaces
System processing of range list errors in IARSUBSP UNASSIGN request
Removing the subspace entry from the DU-AL
Deleting the subspace
Making storage ineligible to be assigned to a subspace
System processing of range list errors in IARSUBSP UNIDENTIFY request
Releasing storage
Example of managing subspaces
Planning for recovery in a subspace environment
Planning for SPIE and ESPIE routines
Planning for ESTAE-type recovery routines and FRRs
Subspace environment at entry to recovery routines
Resetting a changed subspace environment after a recovery routine error
Passing information to a recovery routine in a subspace
Subspace environment on entry to retry routine
Diagnosing errors in a subspace environment
Diagnosing 0C4 abends
Using IPCS to diagnose program errors in a subspace
RSM component trace
Requesting a dump
Copyright IBM Corporation 1990, 2014